we want to utilize OpenCL on our server which is equipped with a OEM GeForce GT 120 onboard graphics card. The server itself is the latest XServe model from Apple.
According to all specs, as well from NVidia and from Apple, the GT 120 cards are supported for OpenCL and/or CUDA operation.
Nevertheless, we can’t acquire a GPU device and are bound to the CPU device.
According to NVidias device ID list from March 2010, the GT 120 boards have the device ID 0x0646.
But our server shows the device ID 0x0656 instead, although the name of the card is GT 120…
I think there was a hardware revision for the server OEM card for Apple, thus it shows another device ID.
The card is well usable for all OpenGL-driven GPU accelerated things, what we are already using with it for, so I think that the card has unintentionally no support for OpenCL GPU devices? Just a missing device ID on the software side or is it really meant to be like this?
AFAIK, NVIDIA just helps Apple to implement the drivers.
For OpenCL support your really should contact Apple but I’m not sure if they support XServer anymore because they anounced the whole program reached EOL.
With a PC server that would not occur because you simply could swap the old GPU by the new one, grab the newest Forceware drivers directly from NVIDIA’s web and voilá, problem solved.
NVIDIA don’t distribute the OpenCL driver for OS X. The standard “retail” driver bundle you can download from NVIDIAs site contains only the video driver, display driver and OpenGL driver. The CUDA driver is distributed separately in the OS X CUDA toolkit from NVIDIA, but the same doesn’t apply to OpenCL. The OpenCL driver is Apple developed and maintained. If you are having problems with it, you will need to ask Apple about it. If they can’t or won’t help you, then you are out of luck.
Whether the OS X OpenCL framework supports a given device is determined internally by Apple’s OpenCL framework. The framework has its own hardware inspection code (not the same as the standard OpenCL ICD selection mechanism). It is that hardware inspection code which does not recognize that your GT120 should be supported by the Apple developed and distributed PTX driver library. Apple supply their own PTX library, AMD IL library and their own clang based CPU driver library with their OpenCL framework. None of the current hardware vendors (NVIDIA, AMD or Intel) have anything to do with supporting any of them.
The fact you have working OpenGL acceleration with the card means that the NVIDIA supplied driver components include the device ID correctly. But that is completely independent from OpenCL. You are going to have to ask Apple to fix this.
Well yes, it’s Apple’s software that does something “wrong”. I don’t decline this. And in the Apple Forums, it revealed that the GT 120 (device ID according to NVIDIA’s list: 0x0646) is well supported, like in the Mac Pro, where this cards actually reports 0x0646. Which might be the reason that Apple is officially supporting the GT 120 with its OpenCL framework.
The problem is, that the onboard GT 120 of the XServe uses another ID (0x0656) and therefore, OpenCL does not run. Has Apple build the card themselve and just uses another device ID? Or is it a missing information in the NVIDIA list that in turn can’t be implemented to be detected by Apple’s software development? Of course, Apple could have checked the device ID on their Servers themselve.
And in fact I don’t care why this is the case. All I care about is if a software update (by Apple of course…) would/could enable the GPU for use with OpenCL or if this changed device ID indicates some reason because it should explicitly not be supported from the hardware side (NVIDIA’s responsebility, I think…).
Right. And the solution is to have Apple fix their OpenCL framework to recognize the device.
To the best of my knowledge Apple don’t build any cards. They are all OEMd. But Apple control the EFI firmware a card requires to boot on an Intel Mac, so I find it hard to believe that they are not aware of a given device ID. The actual OS X OpenCL implementation for NVIDIA GPUs just uses the same driver runtime JIT compiler that shader language does, and it should work on any NVIDIA card made in the last four years. There should be no hardware impediments to running OpenCL on the cards. My guess is that this hardware ID just slipped through software QC inside Apple.
If you are a registered Apple developer, I would suggest raising a bug report against the OpenCL SDK to get this fixed. There is nothing NVIDIA can help you with in this case.