Opened 11 years ago

Last modified 11 years ago

#1234 new Defect

OpenCL was not made for AMD/ATI, please change behaviour.

Reported by: dE Owned by: romw
Priority: Undetermined Milestone: Undetermined
Component: Client - Setup Version: 7.0.58
Keywords: Cc:

Description

It appears to be that for some reasons, the boinc community assumed OpenCL is something GPU only and confined to AMD products (Nvidia using CUDA).

But of course, devs know that OpenCL is a cross platform/hardware API which can be implemented by any piece of hardware (keyboard, mouse, UPS, monitor, pendrive etc...) manufactured by any vendor.

So why is it that, Boinc appears to check specifically for Nvidia/ATI to enable accelerated computation?

Instead, it should check for libOpenCL.so (on Linux), then verify and benchmark the API provided by it to decide if the box is OpenCL capable or not.

Change History (1)

comment:1 Changed 11 years ago by romw

We support OpenCL on Nvidia, AMD, and Intel based GPUs. We also still support OpenCL 1.0, 1.1, and 1.2. Initial implementations of OpenCL 1.0 had different calling conventions between the Nvidia and AMD OpenCL library.

We also support Nvidia's and AMD's native GPGPU software stack. Support for the native implementations came before the OpenCL standard was really useable as a cross vendor framework.

To avoid over-committing a resource we have to match up the native GPGPU software stack entry to the corresponding OpenCL software stack entry.

It also turns out that the different GPUs have different acceleration characteristics. Nvidia and AMD support different parts of the standard in different ways. What is fast with one vendor is slow with the other.

So the BOINC framework provides projects with a way to easily deal with all these variations. They can choose to support all combinations with just one binary or have a customized binary for each variation.

As far as using a CPU as an OpenCL device goes. It hasn't been requested by the projects. You would generally pay a 10% to 15% overhead in using the OpenCL APIs on a CPU relative to just using the standard OS APIs.

Note: See TracTickets for help on using tickets.