On Sep 25, 2020, at 8:09 PM, Barry Smith <bsm...@petsc.dev<mailto:bsm...@petsc.dev>> wrote:
Configure by default should find out the available GPU and build for that sm_* it should not require the user to set this (how the heck is the user going to know what to set?) If I remember correctly there is a utility available that gives this information. For generic builds like in package distributions I don't know how it should work, ideally all the possibilities would be available in the library and at run time the correct one will be utilized. For package distribution we should add as many possibilities as possible. To have maximum compatibility on CUDA 11, we can add -gencode=arch=compute_52,code=sm_52 \ -gencode=arch=compute_60,code=sm_60 \ -gencode=arch=compute_61,code=sm_61 \ -gencode=arch=compute_70,code=sm_70 \ -gencode=arch=compute_75,code=sm_75 The downside is longer compilation time and fatter binary. Hong (Mr.) Barry On Sep 25, 2020, at 5:49 PM, Mark Adams <mfad...@lbl.gov<mailto:mfad...@lbl.gov>> wrote: '--CUDAFLAGS=-arch=sm_70', seems to fix this. On Fri, Sep 25, 2020 at 6:31 PM Mark Adams <mfad...@lbl.gov<mailto:mfad...@lbl.gov>> wrote: I see kokkos and hyper have a sm_70 flag, but I don't see one for PETSc. It looks like you have to specify this to get modern atomics to work in Cuda. I get: /ccs/home/adams/petsc/include/petscaijdevice.h(99): error: no instance of overloaded function "atomicAdd" matches the argument list argument types are: (double *, double) I tried using a Kokkos configuration, thinking I could get these sm_70 flags, but that did not work. Any ideas? Mark