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.
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.