Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cmake/SetupBOUTThirdParty.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ if(BOUT_HAS_CUDA)
# compile features, set for the bout++ target.
set_source_files_properties(${BOUT_SOURCES_CXX} PROPERTIES LANGUAGE CUDA)
find_package(CUDAToolkit)
target_link_libraries(bout++ PUBLIC CUDA::cufft CUDA::cusparse)
set_target_properties(bout++ PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
set_target_properties(bout++ PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(bout++ PROPERTIES LINKER_LANGUAGE CUDA)
Expand Down
6 changes: 6 additions & 0 deletions examples/hasegawa-wakatani/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,9 @@ if(NOT TARGET bout++::bout++)
endif()

bout_add_example(hasegawa-wakatani SOURCES hw.cxx)

if(BOUT_HAS_CUDA)
set_source_files_properties(hw.cxx PROPERTIES LANGUAGE CUDA)
target_link_options(hasegawa-wakatani
PRIVATE "-L${CUDAToolkit_ROOT}/targets/x86_64-linux/lib")
endif()
2 changes: 2 additions & 0 deletions include/bout/fieldops.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,9 @@ struct BinaryExpr {
} else if constexpr (is_expr_constant_v<R>) {
return lhs.numberParallelSlices();
} else {
#ifndef __CUDA_ARCH__
ASSERT2(lhs.numberParallelSlices() == rhs.numberParallelSlices());
#endif
return lhs.numberParallelSlices();
}
}
Expand Down
Loading
Loading