Supporting OpenCL on your own hardware

Say you have a device which is extremely good in numerical trigoniometrics (including integrals, transformations, etc to support mainly Fourier transforms) by using massive parallelism. You also have an optimised library which takes care of the transfer to the device and the handling of trigoniometric math.

Then you find out that the strength of your company is not the device alone, but also the powerful and easy-to-use library. You also find out that companies are willing to pay for the library, if it would work with other devices too. From your own helpdesk you hear that most questions are about extending the library with specialised functions. Giving this information, you define new customer groups for device-only and library-only – so just by adopting a standard you can increase revenue. Read below which steps you have to take to adopt OpenCL.

OpenCL as intermediate language

OpenCL could function very well as an intermediate language. It is an open standard (no royalties need to be paid and specifications are freely available), so ownership of the software is not given away while it is plugged in a larger ecosphere. The specifications need to be implemented including compiler – this is quite some work, as you can understand. By aiming at the same audience in version 1 (less support for the non-trigonometric functions), you can separate the library and the device with minimal overhead. This can be done without telling anybody, as it is an open standard. But mentioning you use OpenCL is not allowed, yet.

Claiming the library supports OpenCL

The moment you want to sell your library as a separate product, claim it supports OpenCL and use the logo on your product, you need to sign a form and send it to Apple. That is all. You are responsible yourself it actually supports other devices – not supporting devices well or not being explicit about which devices have been tested, will not do good for your name. This includes testing a lot of devices (and optimising the kernels for them) – I see that most target the well-known ones (recent Intel/AMD CPUs and NVidia/AMD GPUs of 2010 and later).

Claiming the device supports OpenCL

Claiming the device supports OpenCL need to follow a few more steps, the so called Khronos Conformance Process. As you also gain access to any available sample implementations by becoming a member, you might want to do this before implementing the specifications.

First you need to contact Khronos, sign a agreement and pay a fee to enter the process. This is US$ 15 000 for unlimited products per version – so if OpenCL 1.3 or 2.0 comes out, you need to pay the fee again, regardless if you have one or ten devices and the number of tests you do (so in other words you can submit unlimited conformance results for that version). Conformance fees for an API cover any number of product submissions using any version of that API up to the paid API Level (some exceptions can apply). From that moment you are allowed to use the name OpenCL, but not the logo for the device. This is handy if you want to tell you are working on it for marketing purposes. Academic members pay US$ 1500 and Khronos members pay US$ 10 000. You can also become a member of Khronos for US$ 10 000 a year, giving you the right to join a working group and voting rights – but to be clear, you do NOT need to be a member to adopt OpenCL (or any other Khronos technology).

Second you need to run a suite of tests provided by Khronos. If your drivers work and you send back the results, you can fully use logo and trademark (with small disclaimer). After a peer-review of the results with positive results, you can fully use the OpenCL-logo for your device and are listed on the Khronos website.

Final words

What I wanted to show here is what the “open” in OpenCL actually means, while showing how accessible the Khronos group is to new adopters of its technologies. Simply put: anybody can join, if you follow the guidelines and pay for the costs. So anybody can compete in the field, bringing more specialised and faster products.

 

Related Posts

nvidia logo

NVIDIA enables OpenCL 2.0 beta-support

...  drivers for Windows NVIDIA mentions support for OpenCL 2.0. This has been the first time in 3 years since OpenCL 2.0 has been launched, ...

quartus

Install (Intel) Altera Quartus 16.0.2 OpenCL on Ubuntu 14.04 Linux

...  at StreamHPC we work at various devices that have OpenCL support. You've read most about GPUs and CPUs on our blog, even ...

IMG_20160829_172857_cropped

Get ready for conversions of large-scale CUDA software to AMD hardware

...  translating several types of software to AMD, targeting OpenCL (and HSA). The main problem was that manual porting limits the size ...

opencl20

Overview of OpenCL 2.0 hardware support, samples, blogs and drivers

...  were too busy lately to tell you about it: OpenCL 2.0 is getting ready for prime time! As it makes use of the more ...