[Openmp-commits] [PATCH] D94731: [libomptarget][nvptx] Reduce calls to cuda header
Jon Chesterfield via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Thu Jan 14 18:16:53 PST 2021
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG214387c2c694: [libomptarget][nvptx] Reduce calls to cuda header (authored by JonChesterfield).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D94731/new/
https://reviews.llvm.org/D94731
Files:
openmp/libomptarget/deviceRTLs/nvptx/src/target_impl.cu
Index: openmp/libomptarget/deviceRTLs/nvptx/src/target_impl.cu
===================================================================
--- openmp/libomptarget/deviceRTLs/nvptx/src/target_impl.cu
+++ openmp/libomptarget/deviceRTLs/nvptx/src/target_impl.cu
@@ -56,7 +56,6 @@
}
// In Cuda 9.0, __ballot(1) from Cuda 8.0 is replaced with __activemask().
-
DEVICE __kmpc_impl_lanemask_t __kmpc_impl_activemask() {
#if CUDA_VERSION >= 9000
return __activemask();
@@ -66,7 +65,6 @@
}
// In Cuda 9.0, the *_sync() version takes an extra argument 'mask'.
-
DEVICE int32_t __kmpc_impl_shfl_sync(__kmpc_impl_lanemask_t Mask, int32_t Var,
int32_t SrcLane) {
#if CUDA_VERSION >= 9000
@@ -86,14 +84,7 @@
#endif // CUDA_VERSION
}
-DEVICE void __kmpc_impl_syncthreads() {
- // Use original __syncthreads if compiled by nvcc or clang >= 9.0.
-#if !defined(__clang__) || __clang_major__ >= 9
- __syncthreads();
-#else
- asm volatile("bar.sync %0;" : : "r"(0) : "memory");
-#endif // __clang__
-}
+DEVICE void __kmpc_impl_syncthreads() { __syncthreads(); }
DEVICE void __kmpc_impl_syncwarp(__kmpc_impl_lanemask_t Mask) {
#if CUDA_VERSION >= 9000
@@ -145,11 +136,11 @@
DEVICE void __kmpc_impl_set_lock(omp_lock_t *lock) {
// TODO: not sure spinning is a good idea here..
while (__kmpc_atomic_cas(lock, UNSET, SET) != UNSET) {
- clock_t start = clock();
- clock_t now;
+ int32_t start = __nvvm_read_ptx_sreg_clock();
+ int32_t now;
for (;;) {
- now = clock();
- clock_t cycles = now > start ? now - start : now + (0xffffffff - start);
+ now = __nvvm_read_ptx_sreg_clock();
+ int32_t cycles = now > start ? now - start : now + (0xffffffff - start);
if (cycles >= __OMP_SPIN * GetBlockIdInKernel()) {
break;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D94731.316823.patch
Type: text/x-patch
Size: 1814 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20210115/e67259a9/attachment-0001.bin>
More information about the Openmp-commits
mailing list