Changeset View
Changeset View
Standalone View
Standalone View
openmp/libomptarget/deviceRTLs/common/src/loop.cu
Show First 20 Lines • Show All 787 Lines • ▼ Show 20 Lines | if (gtid == 0) | ||||
*Buffer = 0; // Reset to minimum loop iteration value. | *Buffer = 0; // Reset to minimum loop iteration value. | ||||
// Barrier. | // Barrier. | ||||
syncWorkersInGenericMode(NumThreads); | syncWorkersInGenericMode(NumThreads); | ||||
// Atomic max of iterations. | // Atomic max of iterations. | ||||
uint64_t *varArray = (uint64_t *)array; | uint64_t *varArray = (uint64_t *)array; | ||||
uint64_t elem = varArray[i]; | uint64_t elem = varArray[i]; | ||||
(void)__kmpc_atomic_max((unsigned long long int *)Buffer, | (void)__kmpc_atomic_max(Buffer, elem); | ||||
JonChesterfield: Buffer and elem are already uint64_t, and unsigned long long == 8 bytes on nvptx and amdgcn, so… | |||||
(unsigned long long int)elem); | |||||
// Barrier. | // Barrier. | ||||
syncWorkersInGenericMode(NumThreads); | syncWorkersInGenericMode(NumThreads); | ||||
// Read max value and update thread private array. | // Read max value and update thread private array. | ||||
varArray[i] = *Buffer; | varArray[i] = *Buffer; | ||||
// Barrier. | // Barrier. | ||||
syncWorkersInGenericMode(NumThreads); | syncWorkersInGenericMode(NumThreads); | ||||
} | } | ||||
} | } |
Buffer and elem are already uint64_t, and unsigned long long == 8 bytes on nvptx and amdgcn, so I'm not sure why there was a cast here.