-
Notifications
You must be signed in to change notification settings - Fork 0
/
perf.h
79 lines (64 loc) · 1.66 KB
/
perf.h
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
#pragma once
#include "cublas_v2.h"
#include "matrix.h"
struct Counts {
int hypotheses;
int batch_size;
int batches;
int measurements;
int dim;
int combinations;
int building_blocks;
int hpc;
Counts() = default;
Counts(int dim, int building_blocks, int combinations, int measurements);
};
struct Matrices {
float **aps, **cps, *A, *C;
};
struct Costs {
float *rss, *smape;
};
struct CublasStuff {
cublasHandle_t handle;
int info;
int lda;
};
struct GPUHypothesis {
int d;
float *coefficients;
float *exponents;
float *smape;
float *rss;
unsigned char *combination;
};
struct CPUHypothesis {
int d;
float coefficients[5];
float exponents[10];
float smape;
float rss;
unsigned char combination[25];
void download(GPUHypothesis g_hypo);
void print();
};
template<int D>
CPUHypothesis find_hypothesis_templated(
Counts counts,
unsigned char *combinations_array,
int *end_indices,
const CPUMatrix &measurements
);
extern "C" CPUHypothesis find_hypothesis(const CPUMatrix &measurements);
template<int D>
void solve(CublasStuff cbstuff, Counts counts, Matrices mats, int offset, const int *end_indices, int solve_count);
size_t calculate_memory_usage(Counts counts);
CublasStuff create_cublas_stuff(Counts counts);
Matrices create_matrices(Counts counts);
Costs create_costs(Counts counts);
GPUHypothesis create_gpu_hypothesis(int d);
CPUHypothesis create_cpu_hypothesis(int d);
void destroy_cublas_stuff(CublasStuff cbstuff);
void destroy_matrices(Matrices mats);
void destroy_costs(Costs costs);
void destroy_gpu_hypothesis(GPUHypothesis g_hypo);