forked from parnet/plugin_AMDSolver
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdriver.hpp
More file actions
54 lines (41 loc) · 1.03 KB
/
driver.hpp
File metadata and controls
54 lines (41 loc) · 1.03 KB
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
#pragma once
namespace ug{
class AMD_Rocalution {
public:
static AMD_Rocalution& instance() {
static AMD_Rocalution instance; // Created on first use
return instance;
}
void init(){
if(!initialized){
rocalution::set_device_rocalution(0);
int rank = 0;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
rocalution::init_rocalution(rank);
std::cout << "get_arch_rocalution: " << rocalution::get_arch_rocalution() << std::endl;
initialized = true;
}
}
void finish(){
if(initialized){
rocalution::stop_rocalution();
initialized = false;
}
}
private:
AMD_Rocalution() = default;
~AMD_Rocalution() {
if (initialized) {
rocalution::stop_rocalution();
}
}
bool initialized = false;
};
// lua methods to call
void rocalution_init(){
AMD_Rocalution::instance().init();
}
void rocalution_stop(){
AMD_Rocalution::instance().finish();
}
}