0
我有一個在我的MAC上完美運行的OpenCL代碼。但是,當我把它移植到一個EC2實例g2.2xlarge,它有很多的調試後給人的在OpenCL內核中聲明數組不工作。 (clBuildProgram(-11))
Exception
ERROR: clBuildProgram(-11)
現在,我發現,內核有語法錯誤。進一步縮小了下來後,我發現該錯誤是在下面的行:
int size_a = POP_SIZE/4/numberOfDevices;
int aliveIndividualsIndex[size_a];
如果我嘗試:
int aliveIndividualsIndex[40];
然後它的EC2實例了。
爲什麼MAC和EC2實例如何處理相同的內核代碼?爲什麼其中一個人會識別代碼,另一個人爲什麼會發出語法錯誤?我如何解決它?因爲我需要使用[size_a]。
他們都在使用OpenCL 1.2。如果您需要關於gcc或g ++或其他任何版本的更多信息,請問,我會提供。
它是:
現在,您可以在內核中聲明數組不可能在CL中創建動態運行時數組,應該在編譯時知道內存佔用情況,以便爲內核分配適當的內存。如果代碼在一些平臺下沒有失敗,就好像它使用寬容的編譯器,因爲它將在CPU上運行。 – DarkZeros