Dear all,
I am developing a Monte Carlo code using OpenCL and I have a weird problem when I test my code across different OS. My main developing platform is an iMac Retina 5K, late 2015, with an Intel Core i5 CPU and AMD Radeon R9 M380 GPU, running Xcode 8.0 under OSX 10.11.6 (El Capitan). I also tested successfully my program under GNU/Linux CentOS with the last Intel OpenCL SDK and runtime drivers.
However, when I switch to Windows the program fails to build the program and finally crashes. With a Lenovo Thinkpad Twist, Windows 8.1, VS2015, Intel Parallel Studio XE 2015 and the last Intel OpenCL SDK and drivers when I arrive to the clBuildProgram stage I get the following message:
Number of OpenCL platforms found: 2 [0] Intel(R) OpenCL [Selected] [1] Experimental OpenCL 2.1 CPU Only Platform Platform for OpenCL execution: 0 CL_PLATFORM_PROFILE: FULL_PROFILE CL_PLATFORM_VERSION: OpenCL 1.2 CL_PLATFORM_NAME: Intel(R) OpenCL CL_PLATFORM_VENDOR: Intel(R) Corporation Number of allocated OpenCL devices in context: 1 CPU detected Device name is Intel(R) Core(TM) i5-3317U CPU @ 1.70GHz Device vendor is Intel(R) Corporation Context was created successfully Successfully created command queue for device 0 Preferred work group size for device 0 : 1024 Number of histories for device 0 : 20480 0x00C939AA (0x00000001 0x01231168 0x01231B88 0x00EAF994), main() + 0x206A bytes( s), C:\Users\Edgardo\documents\visual studio 2015\Projects\ocl_mc\ocl_mc\ocl_mai n.c, line 652 + 0x42 byte(s) 0x00CA277E (0x2092C01A 0x00C91032 0x00C91032 0x7EF1F000), invoke_main() + 0x1E b ytes(s), f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl, line 64 + 0x1B byte(s) 0x00CA25CA (0x00EAF9A4 0x00CA2798 0x00EAF9B8 0x75FE7C04), __scrt_common_main_seh () + 0x15A bytes(s), f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl, lin e 255 + 0x5 byte(s) 0x00CA245D (0x00EAF9B8 0x75FE7C04 0x7EF1F000 0x75FE7BE0), __scrt_common_main() + 0xD bytes(s), f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl, line 300 0x00CA2798 (0x7EF1F000 0x75FE7BE0 0x56524FEF 0x00EAFA00), mainCRTStartup() + 0x8 bytes(s), f:\dd\vctools\crt\vcstartup\src\startup\exe_main.cpp, line 17 0x75FE7C04 (0x7EF1F000 0x576B038D 0x00000000 0x00000000), BaseThreadInitThunk() + 0x24 bytes(s) 0x7729AB8F (0xFFFFFFFF 0x77280009 0x00000000 0x00000000), RtlInitializeException Chain() + 0x8F bytes(s) 0x7729AB5A (0x00C91032 0x7EF1F000 0x00000000 0x00000000), RtlInitializeException Chain() + 0x5A bytes(s)
We have tested the program with other platforms with the same result. The kernel compiles and executes without issues under OSX and GNU/Linux, the latter with the Intel OpenCL SDK and runtime drivers, but as we switch to a Windows environment we obtain the above message. Any clues with this?, thanks for your help!!
PD: strangely, if I write from scratch the kernel using VS the error vanishes. That is my last resort (writing the entire kernel again for Windows), but I would like to know why this error happens and of course how to avoid it.