Index: libomptarget/deviceRTLs/nvptx/src/loop.cu =================================================================== --- libomptarget/deviceRTLs/nvptx/src/loop.cu +++ libomptarget/deviceRTLs/nvptx/src/loop.cu @@ -757,8 +757,16 @@ // Atomic max of iterations. uint64_t *varArray = (uint64_t *)array; uint64_t elem = varArray[i]; +#if defined(__CUDA_ARCH__) && __CUDA_ARCH__ >= 350 (void)atomicMax((unsigned long long int *)Buffer, (unsigned long long int)elem); +#else + uint64_t old_value = *Buffer; + while (old_value < elem && !atomicCAS((unsigned long long *)Buffer, + (unsigned long long)old_value, + (unsigned long long)elem)) { + }; +#endif // Barrier. syncWorkersInGenericMode(NumThreads);