initialize
#
Defined in header <Kokkos_Core.hpp>
Usage:
Kokkos::initialize(argc, argv);
Kokkos::initialize(Kokkos::InitializationSettings() // (since 3.7)
.set_disable_warnings(true)
.set_num_threads(8)
.set_map_device_id_by("random"));
Initializes the Kokkos execution environment.
This function must be called before any other Kokkos API functions or
constructors. There are a small number of exceptions, such as
Kokkos::is_initialized
and Kokkos::is_finalized
.
Kokkos can be initialized at most once; subsequent calls are erroneous.
The function has two overloads.
The first one takes the same two parameters as main()
corresponding to
the command line arguments passed to the program from the environment in which
the program is run. Kokkos parses the arguments for the flags that it
recognizes. Whenever a Kokkos flag is seen, it is removed from argv
, and
argc
is decremented.
The second one takes a Kokkos::InitializationSettings class object
which allows for programmatic control of arguments.
Kokkos::InitializationSettings is implicitly
constructible from the Kokkos::InitArguments
deprecated in version 3.7.
Interface#
Kokkos::initialize(int& argc, char* argv[]); // (1)
Kokkos::initialize(InitArguments const& arguments); // (until 3.7) (2)
Kokkos::initialize(InitializationSettings const& settings); // (since 3.7) (3)
Parameters#
argc
: Non-negative value, representing the number of command line arguments passed to the program.argv
: Pointer to the first element of an array ofargc + 1
pointers, of which the last one is null and the previous, if any, point to null-terminated multibyte strings that represent the arguments passed to the program.arguments
: (deprecated since version 3.7) C-stylestruct
object is converted toKokkos::InitializationSettings
for backward compatibility.settings
:class
object that contains settings to control the initialization of Kokkos.
Requirements#
Kokkos::finalize
must be called afterKokkos::initialize
.Kokkos::initialize
generally should be called afterMPI_Init
when Kokkos is initialized within an MPI context.User-initiated Kokkos objects cannot be constructed until after
Kokkos::initialize
is called.Kokkos::initialize
may not be called after a call toKokkos::finalize
.
Semantics#
After calling
Kokkos::initialize
,Kokkos::is_initialized()
should return true.
Example#
#include <Kokkos_Core.hpp>
int main(int argc, char* argv[]) {
Kokkos::initialize(argc, argv);
{ // scope to ensure that my_view destructor is called before Kokkos::finalize
Kokkos::View<double*> my_view("my_view", 10);
} // scope of my_view ends here
Kokkos::finalize();
}