Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

Journeyman III

atomic_xchg not recognized by compiler

Windows Vista, ATI SKD2.2, Driver 10.7b, Vis Studio 2008
all with current updates

I have Vis Studio set up to run the OpenCL compiler as part of the build process and I get a clean compile. When I call clBuildProgram, however, I get an error -

     "atomic_xchg" declared implicitly.

The program contains

int4 link;
int4 src = ....;
int foo = ...;
atomic_xchg(&q[src.x], foo);

and q is an input parameter __global int * q


Why does it compile outside my program, but not called from within? Could I somehow be calling the OpenCL 1.0 rather than 1.1 compiler somehow? I uninstalled everything along the way to installing 2.2, so I don't see where the old compiler would come from.

I've searched my hard disk and have only one file named clc.exe, dated 8/9/2010, 12:34PM. Is this what gets called by clBuildProgram?

Also, I notice that the openclsdk_.vsprops  files have changes the paths where to look for the various .lib files. I can replace my old copies of this file with the new, but the change doesn't seem to impact the project settings.

5 Replies


are you able to run the samples.If yes plz send the Output of clInfo sample.


Originally posted by: himanshu.gautam drstrip,


are you able to run the samples.If yes plz send the Output of clInfo sample.


I ran clInfo and I immediately saw what you were driving at. For the target device I get -

  Version:                                       OpenCL 1.0 ATI-Stream-v2.2 (302)

ie, OpenCL 1.1 is apparently not supported on this device (a Firestream 9270), nor is it supported on my other device, a FirePro 3750.

So the next question is - will these devices ever be supported at the 1.1 level, or does the hardware not permit it?

This page - - lists both of my devices as being supported by SDK 2.2 and makes no mention that any devices are not supported at the OpenCL 1.1 level.


Both of those devices are based on the RV770 core, which does not have the requisite hardware to support OpenCL 1.1.

Presumably that means there is no way to do any  sort of atomic operation on these devices. Right?


That is correct, the hardware in that generation did not support any atomic operations.