forked from lanl/CLAMR
-
Notifications
You must be signed in to change notification settings - Fork 1
/
QUO.hpp
125 lines (95 loc) · 3.96 KB
/
QUO.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/*
* Copyright (c) 2011-2019, Triad National Security, LLC.
* All rights Reserved.
*
* CLAMR -- LA-CC-11-094
*
* Copyright 2011-2019. Triad National Security, LLC. This software was produced
* under U.S. Government contract 89233218CNA000001 for Los Alamos National
* Laboratory (LANL), which is operated by Triad National Security, LLC
* for the U.S. Department of Energy. The U.S. Government has rights to use,
* reproduce, and distribute this software. NEITHER THE GOVERNMENT NOR
* TRIAD NATIONAL SECURITY, LLC MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR
* ASSUMES ANY LIABILITY FOR THE USE OF THIS SOFTWARE. If software is modified
* to produce derivative works, such modified software should be clearly marked,
* so as not to confuse it with the version available from LANL.
*
* Additionally, redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the Triad National Security, LLC, Los Alamos
* National Laboratory, LANL, the U.S. Government, nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE TRIAD NATIONAL SECURITY, LLC AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
* NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TRIAD NATIONAL
* SECURITY, LLC OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* Author: Samuel K. Gutierrez
*/
#ifndef QUO_HPP_INCLUDED
#define QUO_HPP_INCLUDED
#include "quo.h"
#include <exception>
#include <string>
#include <iostream>
#include <cstdlib>
class QUOException : public std::exception {
private:
std::string whatString;
QUOException(void);
public:
~QUOException(void) throw() { ; }
QUOException(std::string fileName,
int lineNo,
const std::string &errMsg);
virtual const char *what(void) const throw();
};
class QUO {
private:
// the quo context
QUO_context context;
public:
QUO(void) { this->context = NULL; }
~QUO(void) { this->context = NULL; }
void create(void);
void free(void);
int nnumanodes(void);
int nsockets(void);
int ncores(void);
int npus(void);
int nnodes(void);
bool bound(void);
int id(void);
int nqids(void);
std::string stringifyCBind(void);
int nObjsByType(QUO_obj_type_t type);
int *qidsInType(QUO_obj_type_t inType,
int typeIndex);
int nObjsInType(QUO_obj_type_t inType,
int typeIndex,
QUO_obj_type_t type);
bool cpuSetInType(QUO_obj_type_t inType,
int typeIndex);
void bindPush(QUO_bind_push_policy_t policy,
QUO_obj_type_t type,
int obj_index);
void bindPop(void);
void barrier(void);
bool autoDistrib(QUO_obj_type_t distrib_over_this,
int max_qids_per_res_type);
};
#endif //QUO_HPP_INCLUDED