Tpetra parallel linear algebra Version of the Day
Loading...
Searching...
No Matches
Tpetra_Details_Behavior.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Tpetra: Templated Linear Algebra Services Package
4//
5// Copyright 2008 NTESS and the Tpetra contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef TPETRA_DETAILS_BEHAVIOR_HPP
11#define TPETRA_DETAILS_BEHAVIOR_HPP
12
13#include <stddef.h>
14#include <string>
15
19
20namespace Tpetra {
21namespace Details {
22
92class Behavior {
93 public:
100 static bool debug();
101
107 static bool debug(const char name[]);
108
114 static bool verbose();
115
121 static bool verbose(const char name[]);
122
124 static void disable_verbose_behavior();
125
127 static void enable_verbose_behavior();
128
132 static bool timing();
133
139 static bool timing(const char name[]);
140
142 static void disable_timing();
143
145 static void enable_timing();
146
155 static bool assumeMpiIsGPUAware();
156
158 static bool cudaLaunchBlocking();
159
168 static int TAFC_OptimizationCoreCount();
169
176 static size_t verbosePrintCountThreshold();
177
190 static size_t rowImbalanceThreshold();
191
203 static bool useMergePathMultiVector();
204
206 static bool hierarchicalUnpack();
207
209 static size_t hierarchicalUnpackBatchSize();
210
212 static size_t hierarchicalUnpackTeamSize();
213
222
228
235
241 static bool fusedResidual();
242
247 static bool skipCopyAndPermuteIfPossible();
248
254
259 static bool enableGranularTransfers();
260
265 static std::string defaultSendType();
266
272 static bool timeKokkosDeepCopy();
273
280 static bool timeKokkosDeepCopyVerbose1();
281
288 static bool timeKokkosDeepCopyVerbose2();
289
294 static bool timeKokkosFence();
295
301 static bool timeKokkosFunctions();
302
307 static size_t spacesIdWarnLimit();
308
310 static void reject_unrecognized_env_vars();
311};
312
313} // namespace Details
314} // namespace Tpetra
315
316#endif // TPETRA_DETAILS_BEHAVIOR_HPP
Description of Tpetra's behavior.
static bool timing()
Whether Tpetra is in timing mode.
static void enable_verbose_behavior()
Enable verbose mode, programatically.
static void disable_timing()
Disable timing, programatically.
static bool cudaLaunchBlocking()
Whether the CUDA_LAUNCH_BLOCKING environment variable has been set.
static bool timeKokkosDeepCopyVerbose2()
Adds verbose output to Kokkos deep_copy timers by appending source, destination, and size....
static void reject_unrecognized_env_vars()
Search the environment for TPETRA_ variables and reject unrecognized ones.
static bool timeKokkosFence()
Add Teuchos timers for all host calls to Kokkos::fence().
static bool timeKokkosDeepCopy()
Add Teuchos timers for all host calls to Kokkos::deep_copy(). This is especially useful for identifyi...
static bool fusedResidual()
Fusing SpMV and update in residual instead of using 2 kernel launches. Fusing kernels implies that no...
static bool hierarchicalUnpack()
Unpack rows of a matrix using hierarchical unpacking.
static size_t spacesIdWarnLimit()
Warn if more than this many Kokkos spaces are accessed.
static bool assumeMpiIsGPUAware()
Whether to assume that MPI is CUDA aware.
static bool debug()
Whether Tpetra is in debug mode.
static int TAFC_OptimizationCoreCount()
MPI process count above which Tpetra::CrsMatrix::transferAndFillComplete will attempt to do advanced ...
static bool enableGranularTransfers()
Speed up transfers by overlapping computation and communication.
static bool overlapCommunicationAndComputation()
Overlap communication and computation.
static void enable_timing()
Enable timing, programatically.
static bool profilingRegionUseTeuchosTimers()
Use Teuchos::Timer in Tpetra::ProfilingRegion.
static bool profilingRegionUseKokkosProfiling()
Use Kokkos::Profiling in Tpetra::ProfilingRegion.
static bool verbose()
Whether Tpetra is in verbose mode.
static bool timeKokkosFunctions()
Add Teuchos timers for all host calls to Kokkos::parallel_for(), Kokkos::parallel_reduce() and Kokkos...
static bool useMergePathMultiVector()
Whether to use the cuSPARSE merge path algorithm to perform sparse matrix-multivector products,...
static size_t multivectorKernelLocationThreshold()
the threshold for transitioning from device to host
static size_t verbosePrintCountThreshold()
Number of entries below which arrays, lists, etc. will be printed in debug mode.
static bool timeKokkosDeepCopyVerbose1()
Adds verbose output to Kokkos deep_copy timers by appending source and destination....
static size_t hierarchicalUnpackBatchSize()
Size of batch for hierarchical unpacking.
static void disable_verbose_behavior()
Disable verbose mode, programatically.
static size_t rowImbalanceThreshold()
Threshold for deciding if a local matrix is "imbalanced" in the number of entries per row....
static bool skipCopyAndPermuteIfPossible()
Skip copyAndPermute if possible.
static size_t hierarchicalUnpackTeamSize()
Size of team for hierarchical unpacking.
static std::string defaultSendType()
Default send type.
Implementation details of Tpetra.
Namespace Tpetra contains the class and methods constituting the Tpetra library.