cancel
Showing results for 
Search instead for 
Did you mean: 

OpenCL

dipak
Staff
Staff

Re: LLVM error when compiling kernel

Hi endoerner,

An internal bug report has been filed to the compiler team, and we will keep you updated.

Regards,

endoerner
Adept I

Re: LLVM error when compiling kernel

Hi dipak,

have had been any progress on this matter?... I would like to ask if this is a problem with the gpu driver or the amd sdk?... because maybe one could try to install an older driver/sdk in the meanwhile...

thanks a lot for your help!

0 Kudos
Reply
dipak
Staff
Staff

Re: LLVM error when compiling kernel

Hi endoerner,

Sorry, I forgot to give you the update.

As per the latest status report, the reported bug has been successfully reproduced by the verification team with the latest driver (an internal one) and it'll be forwarded to corresponding dev team.

AFAIK, this problem is related to driver (more specifically compiler), not SDK. So, if you want to try out some older versions, you can but I'm not sure. Please let us know if any older version works for you.

Regards,

0 Kudos
Reply
endoerner
Adept I

Re: LLVM error when compiling kernel

To all that may be interested:

I realized several tests with different AMD drivers and OpenCL SDK suites and I was able to run again this RNG without problems, the hardware was:

CPU: AMD Phenom II X6 1100T

GPU: AMD Radeon HD 7970 (Tahiti)

OS: Windows 7 Professional, x64

OpenCL SDK´s : AMD APP v2.9 and Intel OpenCL SDK 2014 beta + Intel CPU only runtime 2013 (yup, I was able to install the Intel SDK on a AMD only machine... hehehe, you need the CPU only runtime first)

IDE: VS2012

I tested different driver versions, from 12.1 up to 12.10:

* For AMD Catalyst 12.10 the mwc64x RNG works flawlessly as used to be...

* from 12.1 to 12.8 the GPU is not able to execute this piece of code:

uint2 MWC_SeedImpl_Mod64(ulong A, ulong M, uint vecSize, uint vecOffset, ulong streamBase, ulong streamGap)

{

  enum{ MWC_BASEID = 4077358422479273989UL };

  ulong dist=streamBase + (get_global_id(0)*vecSize+vecOffset)*streamGap;

  ulong m=MWC_PowMod64(A, dist, M);

  ulong x=MWC_MulMod64(MWC_BASEID, m, M);

  return (uint2)((uint)(x/A), (uint)(x%A)); // ED: this line triggers an exception

}

it seems that the older drivers are not able to handle the division or modulo operation between two ulong constants, therefore one has to convert x and A constants to uint before the operations.

So as a resume the winner combination is:

AMD Catalyst v12.10

AMD APP SDK v2.9

I did not adventured installing more recent drivers, I did not want to take the risk to have again the execution error, and, at least for me, this drivers are not sooo old... if someone wants to test be welcome. At least in the meanwhile I can work with this RNG...

0 Kudos
Reply