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.


  • Leith Bade

    I still get the mismatch warning:
    [WARNING]#00000003#Tue Dec 22 19:08:29 2009#The vendor of your OpenCL DLL (Advanced Micro Devices, Inc.) does not match your graphics card vendor (NVIDIA)

  • From what I know, you can’t use the AMD OpenCL implementation with a NVIDIA board even if you only want to test the OpenCL CPU support.

  • Leith Bade

    From the ATI release notes:
    Updated OpenCL™ runtime to conditionally load ATI CAL runtime libraries to allow execution on compatible CPUs without ATI Catalyst™ installed.

    All the samples run fine with the –device cpu extension on my laptop with Intel Core 2 Duo T5600 @ 1.83GHz and a NVIDIA GeForce Go 7300.

  • I’ll try to investigate…

  • ca$per

    About the NVidia and AMD, i’ve allready mentioned that it’s working with AMD CPU + NVidia GPU. But i’ve tested that with Beta version of Stream SDK.

  • @ca$per > you’ve done the AMD CPU + NVidia GPU test with GPU Caps ?

  • Balaji

    Hi to all, im using an intel cpu and Nvidia GPU, i have tried different things but still the GPU caps viewer doesnt show the opencl for CPU!!! I have already installed the ati stream sdk 2.0 completely!! any workaround for that?

  • I’m working on the support of AMD OpenCL CPU support (ATI Stream sdk v2.0.0) with a NVIDIA video card:

    GPU Caps Viewer 1.8.2 + GeForce GTS 250 + ATI Stream SDK v2.0.0

    Currently I see only the AMD platform (instead of two OpenCL platforms: NV and AMD) and I have some problems to build OpenCL kernels…

  • ca$per

    2 JeGX: oops. Sorry. I must’ve missunderstood what you were talking about. I made them to work just on my own.

  • Balaji

    Hi JeGX, where did you get that version of 1.8.2??? and can you tell me have you installed any other thatn ati stream sdk 2.0 package??

  • @Balaji: the version 1.8.2 is the forthcoming version but currently is not available because I’m working on. As soon as I resolve my problems, I release it.

    To use AMD CL implementation, I installed the ati stream sdk v2.0.0 and renamed NVIDIA OpenCL.dll to use AMD ICD…

  • Balaji

    To use AMD CL implementation, I installed the ati stream sdk v2.0.0 and renamed NVIDIA OpenCL.dll to use AMD ICD…

    Hi thanks 4 the info mate, can u tell it a bit elaborate? Nvidia opencll.dll is in the system32 folder am i right?

  • Leith Bade

    Check this registry key:

    It should contain a list of the OpenCL ICD’s. This is what the offical OpenCL.dll searches.

    Does it have both ATI & NVIDIA DLLs listed in there?
    On my laptop it has:

    Also you can use Dependency Walker to get a list of DLLs that are loaded both statically and via LoadModule(). This should show you which version of OpenCL you are loading, and what ICD’s OpenCL.dll loads.

  • Leith Bade

    On my other PC with a newer NVIDIA driver I get:

    Sorry but I don’t have a PC with a DX10 NVIDIA GPU to test CUDA + Stream SDK.

    Another interesting observation… the ATI Stream SDK installer doesn’t always properly install. If you are missing the C:\Program Files (x86)\ATI Stream\bin folder run the MSIs in C:\C:\ATI\SUPPORT\streamsdk_2-0-0_XXXX\Packages\Apps\ folder.

  • Love the app but have questions…

    Questions remaining for me are…

    “My OpenCL extensions are 10 -vs- his 8. Odd…” from post #2 is still unexplained. Is this driver controlled, and why did it change? What exactly are OpenCL Extensions?

    My 280’s fan controller issue from post #4. That bothers me. I think that is most likely driver issue?
    That only happens on these tests:
    OpenGL 3.x – Illuminated Torus.
    OpenGL 2.1 – Furry Cube.
    OpenGL 2.1 – HDR, DoF and RadialBlur.
    OpenGL 2.1 – HW Geometry Instancing.

    And why I can’t run these tests due to ‘OpenCL context: found 0 OpenCL GPU device. Bye…’.?
    OpenGL 3.x + OpenCL GPU – 4D Quaternion Julia Set.
    OpenGL 3.x + OpenCL CPU – 4D Quaternion Julia Set.
    OpenGL 3.x + OpenCL GPU – 1M Particles.
    OpenGL 3.x + OpenCL CPU – 1M Particles.
    OpenGL 3.x + OpenCL CPU – Mesh Deformer.
    OpenGL 3.x + OpenCL CPU – Post FX.

    Any test with CPU in it was the kiss of death!

  • jm

    new version doesnt work either on my dell xps m1430, windows 7 x64 ultimate, nvidia geforce 8600m gt

  • jm

    Start_Disable_OpenCL_Support.bat —-> doesnt work for me, i havent used another version of this program, can u give the link for the version 1.7.0?

  • @jm: here is the link to GPU Caps 1.7.0.

  • @Talonman: OpenCL extensions are the same thing than OpenGL extensions. There is an OpenCL core with a set of functions and extensions allow to extend this set of functions. An example is the interoperability between OpenCL and OpenGL also called GL Interop. The GL Interop is not include in the core functions but can be used thanks to the cl_khr_gl_sharing extension. To see the complete list of CL extensions, just click on [More OpenCL information…] in the OpenCL tab.
    By the way, could you post a screen of your 10 CL extensions ?

    Indeed, I think your fan problem comes from a driver issue. Do you have the same kind of pb with FurMark ?

    On a NVIDIA system, with NVIDIA’s OpenCL implementation, there is no OpenCL CPU support. Only AMD provides an OpenCL CPU code path. So either you have to plug a Radeon or like I’m trying to do, use AMD’s CL on a NV system…

    Quaternion Julia 4D and 1M Particle are the only demos that use GL Interop if cl_khr_gl_sharing is exposed. So perhaps, there’s a driver issue with cl_khr_gl_sharing on win 7. With GPU Caps 1.8.1, GL Interop is disabled by default so you should be able to see both demos. And if you want to enable GL Interop, just start GPU Caps 1.8.1 with the batch Start_OpenCL_With_GLInterop.bat.

  • @Leith Bade
    OpenCL - Windows Registry - NVIDIA + AMD

    For the ICD, if manually rename and manage them and I tested with AMD and NV OpenCL.dll and in both cases only one platform is detected. When I’ll find the solution to my kernel building bug, maybe I’ll find also the solution to see both patforms…

  • AMD OpenCL CPU codepath running on a NVIDIA system…. :)

    AMD OpenCL CPU on NVIDIA system

  • Vlad

    Still going into an infinite loop even with “Start_Disable_OpenCL_Support.bat.”
    Haven’t been able to use this program yet ;(
    my current HW is 2x 9800GTX on 186.18. I am not willing to change drivers as this and 180.48 are the only drivers that work on my system.

  • @Vlad: try GPU Caps 1.7.0 and let me know.

  • jm

    @JeGX: The version 1.7.0 works for me, thx!

  • Athlonite

    hey Jegex i just updated to this version and all the demos work great cheers and have a happy holiday

  • Thank you for your response…

    With the latest version, all GPU tests are now working fine for me…

    The CPU tests don’t, but you have given the reason why. I hope OpenCL CPU support is in the future for Nvidia.

    On my fan issue, Furmark os OK… (Post #12)

  • Update: All fan controller issues gone. :)

    Now if the app would use both sides of my 295, and 280 for calculating, the perfect! 😉

  • opps…

    I meant to say the perfect app would be made.

  • @jm and Vlad: I found the bug. It occurs with versions of NV display drivers that only support OpenGL 3.0 (these drivers don’t support GL 3.1 nor GL 3.2 ) like the R186.18. The bugfix will be released with GPU Caps 1.8.2…

  • @Talonman: I’ll add multi-GPU support for OpenCL demos in a future version. I want to stabilize this single GPU version before.

  • Vlad

    cool thanks for that. can’t wait for 1.8.2

  • Pingback: GPU Caps Viewer 1.8.0 With OpenCL API Support and DEMOS | The Geeks Of 3D - 3D Tech News

  • Talonman

    This is my current workload utilization, spanning my 295 and 280 on this latest version.

    %’s are listed in this order: First 1/2 of my 295, Second 1/2 of my 295, and 280 dedicated PhysX processor.

    OpenGL 3.x + OpenCL GPU – 4D Quaternion Julia Set 0%, 0%, and 93%.

    OpenGL 3.x + OpenCL GPU – 1M Particles 0%, 18%, and 5%.

    OpenGL 3.x + OpenCL GPU – Mesh Deformer 0%, 41%, and 37%.

    OpenGL 3.x + OpenCL GPU – Post FX 0%, 5%, and 81%.

    OpenGL 3.x – Illuminated Torus 0%, 98%, and 0%.

    OpenGL 3.x – Triangle of Death 0%, 42%, and 0%.

    OpenGL 2.1 – Furry Cube 0%, 97%, and 0%.

    OpenGL 2.1 – HDR, DoF and RadialBlur 0%, 98%, and 0%.

    OpenGL 2.1 – HW Geometry Instancing 0%, 97%, and 0%.

    OpenGL 2.1 – Soft Shadows 0%, 95%, and 0%.

    OpenGL 2.1 – GLSL Point Sprite Particles 0%, 37%, and 0%.

    OpenGL 2.1 – Vertex Displacement Mapping 0%, 96%, and 0%.

    OpenGL 2.1 – CEL-SHADING 0%, 53%, and 0%.

    OpenGL 1.2 – Simple Mesh 0%, 50%, and 0%.

    FYI – 3 Tests are now using 2 GPU’s.

  • Talonman

    One last thought… Add a script running all GPU tests, give us a score, and we have us a new OpenCL benchmark app.

  • Talonman

    More trivia: FurMark also uses more than 1 GPU…

    I figured it might be for the same reason.

  • Talonman

    Opps… I meant to say FluidMark.

    It also puts a slight load on the PhysX GPU.

    FurMark is just simply using SLI.

  • Pingback: Ananth’s very own blog » Blog Archive » ATI Stream SDK on non-AMD machines

  • Pingback: [TEST] GPU Computing – GeForce and Radeon OpenCL Test (Part 4 and Conclusion) - 3D Tech News, Pixel Hacking, Data Visualization and 3D Programming -