10#ifndef TEUCHOS_XMLPERFTESTARCHIVE_HPP
11#define TEUCHOS_XMLPERFTESTARCHIVE_HPP
25#if defined __ECC || defined __ICC || defined __INTEL_COMPILER
26 #define TEUCHOS_COMPILER_NAME "Intel C++"
28 #define TEUCHOS_COMPILER_VERSION __ICC
30 #if defined __INTEL_COMPILER
31 #define TEUCHOS_COMPILER_VERSION __INTEL_COMPILER
33 #define TEUCHOS_COMPILER_VERSION __ECC
36 #define TEUCHOS_COMPILER_INTEL 1
39#if defined __IBMC__ || defined __IBMCPP__
40 #define TEUCHOS_COMPILER_NAME "IBM C++"
42 #define TEUCHOS_COMPILER_VERSION __IBMC__
44 #define TEUCHOS_COMPILER_VERSION __IBMCPP__
46 #define TEUCHOS_COMPILER_IBM 1
49#if defined __APPLE_CC__
51 #define TEUCHOS_COMPILER_APPLECC 1
55 #define TEUCHOS_COMPILER_NAME "Clang"
56 #define TEUCHOS_COMPILER_VERSION __clang_major__*100+__clang_minor__*10+__clang_patchlevel__
57 #define TEUCHOS_COMPILER_CLANG 1
60#if defined __GNUC__ && !defined TEUCHOS_COMPILER_NAME && !defined __clang__
61 #define TEUCHOS_COMPILER_NAME "Gnu GCC"
62 #define TEUCHOS_COMPILER_VERSION __GNUC__*100+__GNUC_MINOR__*10+__GNUC_PATCHLEVEL__
63 #define TEUCHOS_COMPILER_GCC 1
66#if defined __PGIC__ && !defined TEUCHOS_COMPILER_NAME
67 #define TEUCHOS_COMPILER_NAME "PGI C++"
68 #define TEUCHOS_COMPILER_VERSION __PGIC__*100+__PGIC_MINOR__*10+__PGIC_PATCHLEVEL__
69 #define TEUCHOS_COMPILER_PGI 1
73 #define TEUCHOS_DEVICE_COMPILER_NAME "NVIDIA NVCC"
74 #define TEUCHOS_DEVICE_COMPILER_VERSION __NVCC__
77#if !defined TEUCHOS_COMPILER_NAME
78 #define TEUCHOS_COMPILER_NAME "Unknown compiler"
81#if !defined TEUCHOS_COMPILER_VERSION
82 #define TEUCHOS_COMPILER_VERSION 0
85#if !defined TEUCHOS_DEVICE_COMPILER_NAME
86 #define TEUCHOS_DEVICE_COMPILER_NAME TEUCHOS_COMPILER_NAME
89#if !defined TEUCHOS_DEVICE_COMPILER_VERSION
90 #define TEUCHOS_DEVICE_COMPILER_VERSION TEUCHOS_COMPILER_VERSION
99struct ValueTolerance {
107 ValueTolerance(
double val,
double tol);
108 ValueTolerance(
double val,
double low,
double up);
110 ValueTolerance(std::string str);
112 bool operator ==(ValueTolerance& rhs);
114 std::string as_string();
115 void from_string(
const std::string& valtol_str);
130 XMLTestNode(
const std::string &tag);
133 void addDouble (
const std::string& name,
double val);
134 void addInt (
const std::string& name,
int val);
135 void addBool (
const std::string& name,
bool val);
136 void addValueTolerance(
const std::string& name,
ValueTolerance val);
137 void addString (
const std::string& name, std::string val);
140 void addAttribute (
const std::string& name, T val) {
141 for (
size_t i = 0; i < name.length (); i++) {
142 if (name[i] ==
' ') {
146 std::ostringstream strs;
148 XMLTestNode entry (name);
153 bool hasChild(
const std::string &name)
const;
155 void appendContentLine(
const size_t& i,
const std::string &str);
157 XMLTestNode getChild(
const std::string &name)
const;
159 XMLTestNode getChild(
const int &i)
const;
163 bool hasSameElements(XMLTestNode
const & lhs)
const;
188 PerfTestNewMachine, PerfTestNewConfiguration,
189 PerfTestNewTest, PerfTestNewTestConfiguration,
190 PerfTestUpdatedTest};
240 XMLTestNode new_test,
241 const std::string filename,
242 const std::string ext_hostname = std::string ());
Teuchos header file which uses auto-configuration information to include necessary C++ headers.
An object representation of a subset of XML data.
Ptr< T > ptr(T *p)
Create a pointer to an object from a raw pointer.
The XMLObjectImplem class takes care of the low-level implementation details of XMLObject.
void addChild(const XMLObject &child)
Add a child node to the node.
void addContent(const std::string &contentLine)
Add a line of character content.
XMLObject()
Empty constructor.
Subclass of XMLObject used by the performance archive.
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...
XMLTestNode PerfTest_MachineConfig()
PerfTest_MachineConfig generates a basic machine configuration XMLTestNode.
PerfTestResult
ReturnValues for PerfTest_CheckOrAdd_Test.
PerfTestResult PerfTest_CheckOrAdd_Test(XMLTestNode machine_config, XMLTestNode new_test, const std::string filename, const std::string ext_hostname)
Check whether a test is present and match an existing test in an archive.
ValueTolerance is a struct to keep a tuple of value and a tolerance. The tolerance can be either expr...