GPU Caps Viewer 1.8.1 Updated for ATI Stream SDK v2.0.0

GPU Caps Viewer 1.8.1

Here is a new version of GPU Caps Viewer in order to reflect the changes in OpenCL due to the release of the new version of ATI Stream SDK.

UPDATE (2009.12.28)

The new GPU Caps Viewer 1.8.2 is available HERE. This version 1.8.2 fixes the startup infinite wait-state that occurs for some systems…

Webmasters: hotlinking is not allowed, please use the post url as download link.

GPU Caps 1.8.1 Win32 installer:
Download GPU Caps Viewer 1.8.1 Version 1.8.1

GPU Caps 1.8.1 ZIP archive:
Download GPU Caps Viewer 1.8.1 (ZIP) Version 1.8.1

The main change concerns the function clCreateContextFromType() that allows to create an OpenCL context. In GPU Caps 1.8.0, a CL context was created with:

ctx = clCreateContextFromType(

Now the SDK v2.0.0 proposes an OpenCL ICD (Installable Client Driver) like NVIDIA. Just look at the size of the OpenCL.dll: in the previous SDK, we had a 6MB OpenCL.dll and now we have a 50KB OpenCL.dll (and the 6MB DLL code is now relocated in a file called atiocl.dll). And from this page, the code written with previous beta releases of the ATI Stream SDK v2.0 require changes to comply with the OpenCL ICD requirements:

Your application is now responsible for selecting which of the OpenCL platforms present on a system it wishes to use, instead of just requesting the system default.

So in the new GPU Caps 1.8.1, the CL context is created with a code like this one:

cl_uint numPlatforms;
cl_platform_id platform = NULL;
clGetPlatformIDs(0, NULL, &numPlatforms);
if (0 < numPlatforms) 
    cl_platform_id* platforms = 
                        new cl_platform_id[numPlatforms];
    clGetPlatformIDs(numPlatforms, platforms, NULL);
    for (unsigned i = 0; i < numPlatforms; ++i) 
        char pbuf[100];

        platform = platforms[i];
        if (!strcmp(pbuf, "Advanced Micro Devices, Inc.")) 
    delete[] platforms;
cl_context_properties cps[3] = 
cl_context_properties* cprops = 
                    (NULL == platform) ? NULL : cps;
ctx = clCreateContextFromType(

The ATI Stream SDK also introduced a preview of CL / GL interoperability support (extension cl_khr_gl_sharing). This extension is not listed in CL extension list:

GPU Caps 1.8.1 - OpenCL extension list - ATI Stream SDK v2.0.0

Here is the explanation:

Since conformance logs have not been submitted for this feature, cl_khr_gl_sharing will not be present in the CL_PLATFORM_EXTENSIONS or CL_DEVICE_EXTENSIONS string. To access this feature,follow the specification as described in section 9.11 of the OpenCL™ 1.0 Specification (revision 48).

cl_khr_gl_sharing is then supported but not officially. Actually (I had this information from AMD), image functions related to GL interop are not implemented like clEnqueueCopyBufferToImage(). And Julia 4D uses this function when GL interop is enabled. That's why you have a black screen in Julia 4D when GL interop is enabled with a Radeon... I wonder why AMD has added this buggy / incomplete GL interop support...

Due to some instability with GL interop, I disabled this interoperability support by default. To enable and test GL interop, just start GPU Caps with the batch file Start_OpenCL_With_GLInterop.bat.

GPU Caps 1.8.x has some known issues: in some situations, the initial hardware scanning encounters an infinite wait state maybe due to OpenCL initialization.
Since I'm not able to reproduce the problem, I added a command line parameter to disable OpenCL support. You can start GPU Caps with this parameter by launching the batch file called Start_Disable_OpenCL_Support.bat. Please give me your feedback about this option.

GPU Caps 1.8.1 Changelog:

  • Change: added the use of the GL interop preview available in ATI Stream SDK v2.0.0 for Julia 4D and 1M Particle demos. But due to some instability, the GL interop is not enabled by default. To enable GL interop, start GPU Caps with the batch file Start_OpenCL_With_GLInterop.bat.
  • New: added a command line parameter to disable OpenCL support (/disable_cl_support).
  • Bugfix: added the specification of context properties in clCreateContextFromType (instead of NULL) for ATI Stream SDK v2.0.0.

↑ Grab this Headline Animator