From 72d16d579ca14c7b1344d8ed32de6085f1fe24cf Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Sat, 24 Jun 2023 16:32:01 -0600 Subject: [PATCH] Minor clean-up to the Kokkos initialization. --- source/base/mpi.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/source/base/mpi.cc b/source/base/mpi.cc index 87307b1074..179f7515f2 100644 --- a/source/base/mpi.cc +++ b/source/base/mpi.cc @@ -781,9 +781,10 @@ namespace Utilities // argv has argc+1 elements and the last one is a nullptr. For appending // one element we thus create a new argv by copying the first argc // elements, append the new option, and then a nullptr. - std::vector argv_new(argc + 2); + std::vector argv_new; for (int i = 0; i < argc; ++i) - argv_new[i] = argv[i]; + argv_new.push_back(argv[i]); + std::stringstream threads_flag; #if KOKKOS_VERSION >= 30700 threads_flag << "--kokkos-num-threads=" << MultithreadInfo::n_threads(); @@ -791,12 +792,13 @@ namespace Utilities threads_flag << "--kokkos-threads=" << MultithreadInfo::n_threads(); #endif const std::string threads_flag_string = threads_flag.str(); - argv_new[argc] = const_cast(threads_flag_string.c_str()); - argv_new[argc + 1] = nullptr; + argv_new.push_back(const_cast(threads_flag_string.c_str())); + argv_new.push_back(nullptr); + // The first argument in Kokkos::initialize is of type int&. Hence, we // need to define a new variable to pass to it (instead of using argc+1 // inline). - int argc_new = argc + 1; + int argc_new = argv_new.size() - 1; Kokkos::initialize(argc_new, argv_new.data()); } -- 2.39.5