I am running SDK 2.5 on a Windows 7 box with an HD 5870 (the primary adapter) and a FirePro V8750 (secondary). clGetDeviceInfo() on the 5870 shows OpenCL 1.1 while the V8750 shows version 1.0 (in code box below). The V8750 also returns "ATI RV770" as its name, which is a little unsettling but the V8750 has an RV770 as its core so I guess that's OK. Also, in order to activate the secondary card, I did the 3 resistors in the DVI-VGA adaptor trick that I saw somewhere in this forum.
My kernel builds and runs fine when I target the 5870. When targeting the the V8750, the build is OK but clEnqueueNDRangeKernel() returns -45, which is CL_INVALID_PROGRAM_EXECUTABLE.
I suspect this has something to do with the V8750 as being version 1.0 instead of 1.1. Is there a way to force the build to be a 1.0 build? According to the OpenCL spec the only valid version option for clBuildProgram() is "-cl-std=CL1.1", so there doesn't appear to be a way to force it to build a 1.0-compatible executable. It seems to imply that it will build to whatever the device's CL_DEVICE_OPENCL_C_VERSION is but I don't really know if that's the case.
Is there a way to upgrade the V8750 to 1.1-compatible? I've loaded the latest driver, am running the latest SDK, etc.
Num available OpenCl devices = 16 Device 0 settings: Device type = GPU Vendor = Advanced Micro Devices, Inc. Name = Cypress Global memory size = 800 MB Local memory size = 32 KB Max workgroup size = 256 Max dimensions = 3 Max workitem sizes = 256,256,256 Version = OpenCL 1.1 AMD-APP-SDK-v2.5 (684.213) OpenCL C Version = OpenCL C 1.1 Device 1 settings: Device type = GPU Vendor = Advanced Micro Devices, Inc. Name = ATI RV770 Global memory size = 1024 MB Local memory size = 16 KB Max workgroup size = 256 Max dimensions = 3 Max workitem sizes = 256,256,256 Version = OpenCL 1.0 AMD-APP-SDK-v2.5 (684.213) OpenCL C Version = OpenCL C 1.0 Error: Enqueueing my_kernel onto command queue. Status = -45