Hi, I tried implementing a simple lock/mutex using OpenCL atomic functions. The following kernel demonstrates the general idea: __kernel void lock() { volatile __local int mutex; // Every thread waits until it gets the lock. int done = 0; while (!done) { // Try to get the lock int lock = !atomic_cmpxchg(&(mutex), 0, 1); if (lock) { done = 1; // Release the lock atomic_xchg(&(mutex), 0); } } return; } On my Nvidia GPU, the kernel works fine. However, on the latest Intel OCL SDK (version 2.0.31360.31426 on x64 Linux, running on Xeon CPU) the kernel seems to deadlock. Am I missing something here? Max
Weird behaviour of atomic functions
Reportez-vous à notre Notice d'optimisation pour plus d'informations sur les choix et l'optimisation des performances dans les produits logiciels Intel.


