[Openmp-commits] [PATCH] D65836: Factor architecture dependent code	out of loop.cu
    Johannes Doerfert via Phabricator via Openmp-commits 
    openmp-commits at lists.llvm.org
       
    Wed Aug  7 13:41:13 PDT 2019
    
    
  
jdoerfert added inline comments.
================
Comment at: openmp/libomptarget/deviceRTLs/nvptx/src/loop.cu:392
   INLINE static uint64_t NextIter() {
-    unsigned int active = __ACTIVEMASK();
-    int leader = __ffs(active) - 1;
----------------
JonChesterfield wrote:
> jdoerfert wrote:
> > I would prefer `__SHFL_SYNC` `__ACTIVEMASK` etc. also to be function calls to `__kmpc_XXXX` functions but I won't require it.
> Likewise. They're currently defined in `omptarget-nvptx.h`. I'd like to move them into target_impl and replace the macros with inline functions.
> 
> That'll raise the question of how to handle implementations for different cuda versions, which I'd like to avoid for this first patch.
Agreed, let's do it later but eventually.
We can have the #ifdef cascade for cuda versions but that should be in the cuda subfolder (target_impl.h for example) and the "general logic" contains proper calls.
================
Comment at: openmp/libomptarget/deviceRTLs/nvptx/src/target_impl.h:39
+
+INLINE int __kmpc_impl_popc(uint32_t x) { return __popc(x); }
+
----------------
JonChesterfield wrote:
> jdoerfert wrote:
> > `int` -> `(u)int32_t` ?
> The cuda functions (plus `__ffsll` etc) return `int`. I'd slightly prefer `uint32_t` (on the basis that these can't return a negative integer). I'm happy either way.
I think we should make it clear what we expect wrt. bit-width if we have an expectation. Given the `(u)int32` floating around I'd say we do have some expectations/restrictions.
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D65836/new/
https://reviews.llvm.org/D65836
    
    
More information about the Openmp-commits
mailing list