Skip to content
Draft
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
33 changes: 19 additions & 14 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,6 @@ set(pgen
${default_pgen}
CACHE STRING "Problem generator")

set(gui
${default_gui}
CACHE BOOL "Use GUI [nttiny]")
set(output
${default_output}
CACHE BOOL "Enable output")
Expand All @@ -70,7 +67,7 @@ if(${DEBUG} STREQUAL "OFF")
set(CMAKE_BUILD_TYPE
Release
CACHE STRING "CMake build type")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNDEBUG")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNDEBUG -O3")
else()
set(CMAKE_BUILD_TYPE
Debug
Expand Down Expand Up @@ -170,21 +167,29 @@ endif()

link_libraries(${DEPENDENCIES})

set(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/)
add_subdirectory(${SRC_DIR}/global ${CMAKE_CURRENT_BINARY_DIR}/global)
add_subdirectory(${SRC_DIR}/metrics ${CMAKE_CURRENT_BINARY_DIR}/metrics)
add_subdirectory(${SRC_DIR}/kernels ${CMAKE_CURRENT_BINARY_DIR}/kernels)
add_subdirectory(${SRC_DIR}/archetypes ${CMAKE_CURRENT_BINARY_DIR}/archetypes)
add_subdirectory(${SRC_DIR}/framework ${CMAKE_CURRENT_BINARY_DIR}/framework)
add_subdirectory(${SRC_DIR}/output ${CMAKE_CURRENT_BINARY_DIR}/output)

# ------------------------------- Main source ------------------------------ #
if(NOT ${pgen} STREQUAL ${default_pgen})
set_problem_generator(${pgen})
add_subdirectory(${SRC_DIR}/engines ${CMAKE_CURRENT_BINARY_DIR}/engines)
add_subdirectory(${SRC_DIR} ${CMAKE_CURRENT_BINARY_DIR}/src)
endif()

if(TESTS)
# ---------------------------------- Tests --------------------------------- #
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/tests.cmake)
elseif(BENCHMARK)
endif()

if(BENCHMARK)
# ------------------------------ Benchmark --------------------------------- #
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/benchmark.cmake)
else()
# ----------------------------------- GUI ---------------------------------- #
if(${gui})
find_or_fetch_dependency(nttiny FALSE QUIET)
endif()

# ------------------------------- Main source ------------------------------ #
set_problem_generator(${pgen})
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src src)
endif()

include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/report.cmake)
11 changes: 0 additions & 11 deletions cmake/benchmark.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,6 @@

set(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)

add_subdirectory(${SRC_DIR}/global ${CMAKE_CURRENT_BINARY_DIR}/global)
add_subdirectory(${SRC_DIR}/metrics ${CMAKE_CURRENT_BINARY_DIR}/metrics)
add_subdirectory(${SRC_DIR}/kernels ${CMAKE_CURRENT_BINARY_DIR}/kernels)
add_subdirectory(${SRC_DIR}/archetypes ${CMAKE_CURRENT_BINARY_DIR}/archetypes)
add_subdirectory(${SRC_DIR}/framework ${CMAKE_CURRENT_BINARY_DIR}/framework)

if(${output})
add_subdirectory(${SRC_DIR}/output ${CMAKE_CURRENT_BINARY_DIR}/output)
add_subdirectory(${SRC_DIR}/checkpoint ${CMAKE_CURRENT_BINARY_DIR}/checkpoint)
endif()

set(exec benchmark.xc)
set(src ${CMAKE_CURRENT_SOURCE_DIR}/benchmark/benchmark.cpp)

Expand Down
35 changes: 30 additions & 5 deletions cmake/report.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ if(${PGEN_FOUND})
"${Blue}"
PGEN_REPORT
0)
elseif(${TESTS})
endif()

if(${TESTS})
set(TEST_NAMES "")
foreach(test_dir IN LISTS TEST_DIRECTORIES)
get_property(
Expand All @@ -18,14 +20,38 @@ elseif(${TESTS})
list(APPEND TEST_NAMES ${LOCAL_TEST_NAMES})
endforeach()
printchoices(
"Test cases"
"Tests"
"TESTS"
"${ON_OFF_VALUES}"
"ON"
"OFF"
"${Green}"
TESTS_REPORT_1
46)
printchoices(
""
""
"${TEST_NAMES}"
""
"${ColorReset}"
""
TESTS_REPORT
TESTS_REPORT_2
0)
# remove only first line of TESTS_REPORT_2
string(REPLACE "\n" ";" TESTS_REPORT_2_LIST "${TESTS_REPORT_2}")
list(REMOVE_AT TESTS_REPORT_2_LIST 0)
string(REPLACE ";" "\n" TESTS_REPORT_2 "${TESTS_REPORT_2_LIST}")
set(TESTS_REPORT "${TESTS_REPORT_1}\n${TESTS_REPORT_2}")
else()
printchoices(
"Tests"
"TESTS"
"${ON_OFF_VALUES}"
"OFF"
"OFF"
"${Green}"
TESTS_REPORT
46)
endif()

printchoices(
Expand Down Expand Up @@ -120,9 +146,8 @@ string(APPEND REPORT_TEXT ${DASHED_LINE_SYMBOL} "\n" "Configurations" "\n")

if(${PGEN_FOUND})
string(APPEND REPORT_TEXT " " ${PGEN_REPORT} "\n")
elseif(${TESTS})
string(APPEND REPORT_TEXT " " ${TESTS_REPORT} "\n")
endif()
string(APPEND REPORT_TEXT " " ${TESTS_REPORT} "\n")

string(
APPEND
Expand Down
7 changes: 0 additions & 7 deletions cmake/tests.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,6 @@ enable_testing()

set(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)

add_subdirectory(${SRC_DIR}/global ${CMAKE_CURRENT_BINARY_DIR}/global)
add_subdirectory(${SRC_DIR}/metrics ${CMAKE_CURRENT_BINARY_DIR}/metrics)
add_subdirectory(${SRC_DIR}/kernels ${CMAKE_CURRENT_BINARY_DIR}/kernels)
add_subdirectory(${SRC_DIR}/archetypes ${CMAKE_CURRENT_BINARY_DIR}/archetypes)
add_subdirectory(${SRC_DIR}/framework ${CMAKE_CURRENT_BINARY_DIR}/framework)
add_subdirectory(${SRC_DIR}/output ${CMAKE_CURRENT_BINARY_DIR}/output)

set(TEST_DIRECTORIES "")

if(NOT ${mpi})
Expand Down
14 changes: 7 additions & 7 deletions dev/nix/kokkos.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,26 @@

let
name = "kokkos";
pversion = "5.0.0";
pversion = "5.0.1";
compilerPkgs = {
"HIP" = with pkgs.rocmPackages; [
llvm.llvm
clang
rocm-core
clr
rocthrust
rocprim
rocminfo
rocm-smi
pkgs.llvmPackages_19.clang-tools
pkgs.clang-tools
];
"CUDA" = with pkgs.cudaPackages; [
llvmPackages_19.clang-tools
pkgs.clang-tools
cudatoolkit
cuda_cudart
pkgs.gcc13
];
"NONE" = [
pkgs.llvmPackages_19.clang-tools
pkgs.clang-tools
pkgs.gcc13
];
};
Expand All @@ -41,7 +41,7 @@ let
"-D Kokkos_ENABLE_HIP=ON"
"-D Kokkos_ARCH_${getArch { }}=ON"
"-D GPU_TARGETS=${builtins.replaceStrings [ "amd_" ] [ "" ] (pkgs.lib.toLower (getArch { }))}"
"-D CMAKE_CXX_COMPILER=hipcc"
"-D CMAKE_CXX_COMPILER=clang++"
];
"CUDA" = [
"-D Kokkos_ENABLE_CUDA=ON"
Expand All @@ -57,7 +57,7 @@ pkgs.stdenv.mkDerivation rec {
src = pkgs.fetchgit {
url = "https://github.com/kokkos/kokkos/";
rev = "${pversion}";
sha256 = "sha256-C4DarqnEcdF3+19TPqcM0A9bcQSkKTJkB8b7OkzC7T8=";
sha256 = "sha256-ChpwGBwE7sNovjdAM/iCeOqqwGufKxAh5vQ3qK6aFBU=";
};

nativeBuildInputs = with pkgs; [
Expand Down
4 changes: 2 additions & 2 deletions dev/nix/shell.nix
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ let
CC = "gcc";
};
HIP = {
CXX = "hipcc";
CC = "hipcc";
CXX = "clang++";
CC = "clang";
};
CUDA = { };
};
Expand Down
9 changes: 0 additions & 9 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,6 @@

set(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR})

# dependencies
add_subdirectory(${SRC_DIR}/global ${CMAKE_CURRENT_BINARY_DIR}/global)
add_subdirectory(${SRC_DIR}/metrics ${CMAKE_CURRENT_BINARY_DIR}/metrics)
add_subdirectory(${SRC_DIR}/kernels ${CMAKE_CURRENT_BINARY_DIR}/kernels)
add_subdirectory(${SRC_DIR}/archetypes ${CMAKE_CURRENT_BINARY_DIR}/archetypes)
add_subdirectory(${SRC_DIR}/framework ${CMAKE_CURRENT_BINARY_DIR}/framework)
add_subdirectory(${SRC_DIR}/engines ${CMAKE_CURRENT_BINARY_DIR}/engines)
add_subdirectory(${SRC_DIR}/output ${CMAKE_CURRENT_BINARY_DIR}/output)

set(ENTITY ${PROJECT_NAME}.xc)
set(SOURCES ${SRC_DIR}/entity.cpp)

Expand Down
7 changes: 7 additions & 0 deletions src/engines/engine.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,13 @@ namespace ntt {
virtual void step_forward(timer::Timers&, Domain<S, M>&) = 0;

void run();

auto engineParams() const -> prm::Parameters {
auto parameters = prm::Parameters {};
parameters.set("dt", static_cast<real_t>(dt));
parameters.set("time", static_cast<simtime_t>(time));
return parameters;
}
};

template <SimEngine::type S, class M>
Expand Down
46 changes: 24 additions & 22 deletions src/engines/grpic.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -637,28 +637,30 @@ namespace ntt {
}
if (dim == in::x1) {
if (g != gr_bc::curr) {
Kokkos::parallel_for(
"MatchBoundaries",
CreateRangePolicy<M::Dim>(range_min, range_max),
kernel::bc::MatchBoundaries_kernel<S, decltype(m_pgen.init_flds), M, in::x1>(
domain.fields.em,
m_pgen.init_flds,
domain.mesh.metric,
xg_edge,
ds,
tags,
domain.mesh.flds_bc()));
Kokkos::parallel_for(
"MatchBoundaries",
CreateRangePolicy<M::Dim>(range_min, range_max),
kernel::bc::MatchBoundaries_kernel<S, decltype(m_pgen.init_flds), M, in::x1>(
domain.fields.em0,
m_pgen.init_flds,
domain.mesh.metric,
xg_edge,
ds,
tags,
domain.mesh.flds_bc()));
if constexpr (arch::traits::pgen::HasInitFlds<pgen_t>) {
Kokkos::parallel_for(
"MatchBoundaries",
CreateRangePolicy<M::Dim>(range_min, range_max),
kernel::bc::MatchBoundaries_kernel<S, decltype(m_pgen.init_flds), M, in::x1>(
domain.fields.em,
m_pgen.init_flds,
domain.mesh.metric,
xg_edge,
ds,
tags,
domain.mesh.flds_bc()));
Kokkos::parallel_for(
"MatchBoundaries",
CreateRangePolicy<M::Dim>(range_min, range_max),
kernel::bc::MatchBoundaries_kernel<S, decltype(m_pgen.init_flds), M, in::x1>(
domain.fields.em0,
m_pgen.init_flds,
domain.mesh.metric,
xg_edge,
ds,
tags,
domain.mesh.flds_bc()));
}
} else {
Kokkos::parallel_for(
"AbsorbCurrents",
Expand Down
Loading