On a 64-bit Windows 7, I have used both the MinGW (32-bit) and Cygwin toolchains to compile OpenCL code -- and it compiles fine and executes fine on my 2 GPUs (discrete Radeon HD 6770 and APU-integrated 6550), but whenever I choose the CPU as the device (A8-3850), building the kernel fails and returns the error code CL_INVALID_KERNEL_NAME and the build log doesn't contain any information, just "Internal Error: as failed " (presumably there are strings missing or overwritten).
While I was working on getting everything compiled, I observed that some of the host function names were a little odd -- like "main@32" or something, so this might be an oddity of Windows that contorts function names -- but I have no idea how to adjust for this (since I can't find any sort of "verbose" compilation option for AMD's platform like -v or -cl-nv-verbose )
Also, I don't know if the problem has something to do with 32-bitness -- the CPU and OS are 64-bit, but whenever I try to compile something with cygwin's GCC or MinGW, it gives me an "unimplemented 64-bit mode" even though it appears I have the 64-bit compilers installed and I am specifying the -m64 flag. Of course, compiling and running the host application with -m32 works -- and the Kernels can execute on the [32-bit] GPUs
Any help on how to find out what could be wrong with the kernel name? (Vanilla OpenCL C, same directory, works as expected with GPU but not CPU)