Skip to content

Common Issues and Errors

Matt Norman edited this page Aug 2, 2022 · 2 revisions

Missing variable is: CMAKE_CUDA_COMPILE_WHOLE_COMPILATION

To fix this, call enable_language(CUDA) in your main CMakeLists.txt before calling add_subdirectory(yakl)

Segmentation faults / invalid memory address errors that only show up on the GPU

It's likely you are using data inside a kernel that is not in local scope. You could have data from global scope, a name space scope (outside of functions or classes), or the local class scope. You need to use the YAKL_SCOPE macro before using that data in a kernel, e.g.:

YAKL_SCOPE( data , ::data                ); // OR
YAKL_SCOPE( data , my::name::space::data ); // OR
YAKL_SCOPE( data , this->data            );

Every MPI task is writing to stdout

Please add the CPP macro -DHAVE_MPI to the YAKL_[ARCH]_FLAGS CMake variable (or add it to the compiler flags in a regular makefile). Then, YAKL will only print to stdout from task 0.

CUDA has a long-standing bug where you cannot launch a parallel_for from a function that uses std::enable_if

Clone this wiki locally