Tpetra parallel linear algebra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
src
Tpetra_Details_Profiling.cpp
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
#include "
Tpetra_Details_Profiling.hpp
"
11
#include "
Tpetra_Details_Behavior.hpp
"
12
// I don't like including everything, but currently (as of 19 Apr
13
// 2017), Kokkos does not provide a public header file to get just the
14
// Profiling hooks. Users are just supposed to include
15
// Kokkos_Core.hpp.
16
#include "Kokkos_Core.hpp"
17
18
namespace
Tpetra
{
19
namespace
Details
{
20
21
ProfilingRegion::ProfilingRegion
()
22
: kokkos_region_active_(false) {
23
}
24
25
ProfilingRegion::ProfilingRegion
(
const
char
name[]) {
26
kokkos_region_active_ =
false
;
27
if
(
Behavior::profilingRegionUseKokkosProfiling
()) {
28
kokkos_region_active_ =
true
;
29
::Kokkos::Profiling::pushRegion(name);
30
}
31
if
(
Behavior::profilingRegionUseTeuchosTimers
())
32
tm = Teuchos::rcp(
new
Teuchos::TimeMonitor(*Teuchos::TimeMonitor::getNewTimer(name)));
33
}
34
35
ProfilingRegion::ProfilingRegion
(
const
char
name[],
const
char
group[]) {
36
kokkos_region_active_ =
false
;
37
const
bool
timeit =
Behavior::timing
(group);
38
if
(timeit) {
39
if
(
Behavior::profilingRegionUseKokkosProfiling
()) {
40
kokkos_region_active_ =
true
;
41
::Kokkos::Profiling::pushRegion(name);
42
}
43
if
(
Behavior::profilingRegionUseTeuchosTimers
())
44
tm = Teuchos::rcp(
new
Teuchos::TimeMonitor(*Teuchos::TimeMonitor::getNewTimer(name)));
45
}
46
}
47
48
ProfilingRegion::~ProfilingRegion
() {
49
if
(
Behavior::profilingRegionUseKokkosProfiling
() && kokkos_region_active_) {
50
::Kokkos::Profiling::popRegion();
51
}
52
}
53
54
}
// namespace Details
55
}
// namespace Tpetra
Tpetra_Details_Behavior.hpp
Declaration of Tpetra::Details::Behavior, a class that describes Tpetra's behavior.
Tpetra_Details_Profiling.hpp
Declaration of Tpetra::Details::Profiling, a scope guard for Kokkos Profiling.
Tpetra::Details::Behavior::timing
static bool timing()
Whether Tpetra is in timing mode.
Definition
Tpetra_Details_Behavior.cpp:259
Tpetra::Details::Behavior::profilingRegionUseTeuchosTimers
static bool profilingRegionUseTeuchosTimers()
Use Teuchos::Timer in Tpetra::ProfilingRegion.
Definition
Tpetra_Details_Behavior.cpp:368
Tpetra::Details::Behavior::profilingRegionUseKokkosProfiling
static bool profilingRegionUseKokkosProfiling()
Use Kokkos::Profiling in Tpetra::ProfilingRegion.
Definition
Tpetra_Details_Behavior.cpp:377
Tpetra::Details::ProfilingRegion::ProfilingRegion
ProfilingRegion()
Default constructor does not construct a region.
Definition
Tpetra_Details_Profiling.cpp:21
Tpetra::Details::ProfilingRegion::~ProfilingRegion
~ProfilingRegion()
Close region to profile.
Definition
Tpetra_Details_Profiling.cpp:48
Tpetra::Details
Nonmember function that computes a residual Computes R = B - A * X.
Definition
Tpetra_KokkosRefactor_Details_MultiVectorLocalDeepCopy.hpp:17
Tpetra
Namespace Tpetra contains the class and methods constituting the Tpetra library.
Generated by
1.17.0