Kokkos Core Kernels Package  Version of the Day
Kokkos_Profiling_ProfileSection.hpp
1 /*
2  //@HEADER
3  // ************************************************************************
4  //
5  // Kokkos v. 3.0
6 // Copyright (2020) National Technology & Engineering
7 // Solutions of Sandia, LLC (NTESS).
8  //
9  // Under the terms of Contract DE-NA0003525 with NTESS,
10  // the U.S. Government retains certain rights in this software.
11  //
12  // Redistribution and use in source and binary forms, with or without
13  // modification, are permitted provided that the following conditions are
14  // met:
15  //
16  // 1. Redistributions of source code must retain the above copyright
17  // notice, this list of conditions and the following disclaimer.
18  //
19  // 2. Redistributions in binary form must reproduce the above copyright
20  // notice, this list of conditions and the following disclaimer in the
21  // documentation and/or other materials provided with the distribution.
22  //
23  // 3. Neither the name of the Corporation nor the names of the
24  // contributors may be used to endorse or promote products derived from
25  // this software without specific prior written permission.
26  //
27  // THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY
28  // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
30  // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE
31  // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
32  // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
33  // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
34  // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
35  // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
36  // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
37  // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38  //
39  // Questions? Contact Christian R. Trott (crtrott@sandia.gov)
40  //
41  // ************************************************************************
42  //@HEADER
43  */
44 
45 #ifndef KOKKOSP_PROFILE_SECTION_HPP
46 #define KOKKOSP_PROFILE_SECTION_HPP
47 
48 #include <Kokkos_Macros.hpp>
49 #include <impl/Kokkos_Profiling_Interface.hpp>
50 #include <impl/Kokkos_Profiling.hpp>
51 
52 #include <string>
53 
54 namespace Kokkos {
55 namespace Profiling {
56 
57 class ProfilingSection {
58  public:
59  ProfilingSection(const std::string& sectionName) : secName(sectionName) {
60  if (Kokkos::Profiling::profileLibraryLoaded()) {
61  Kokkos::Profiling::createProfileSection(secName, &secID);
62  }
63  }
64 
65  void start() {
66  if (Kokkos::Profiling::profileLibraryLoaded()) {
67  Kokkos::Profiling::startSection(secID);
68  }
69  }
70 
71  void stop() {
72  if (Kokkos::Profiling::profileLibraryLoaded()) {
73  Kokkos::Profiling::stopSection(secID);
74  }
75  }
76 
77  ~ProfilingSection() {
78  if (Kokkos::Profiling::profileLibraryLoaded()) {
79  Kokkos::Profiling::destroyProfileSection(secID);
80  }
81  }
82 
83  std::string getName() { return secName; }
84 
85  uint32_t getSectionID() { return secID; }
86 
87  protected:
88  const std::string secName;
89  uint32_t secID;
90 };
91 
92 } // namespace Profiling
93 } // namespace Kokkos
94 
95 #endif
Definition: dummy.cpp:3