-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathlapacke_client.c
102 lines (102 loc) · 2.51 KB
/
lapacke_client.c
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
typedef lapack_int (CALLBACK* PFNLAPACKE_sgesvd)( /* LAPACKE_sgesvd */
int /* matrix_layout */,
char /* jobu */,
char /* jobvt */,
lapack_int /* m */,
lapack_int /* n */,
float * /* a */,
lapack_int /* lda */,
float * /* s */,
float * /* u */,
lapack_int /* ldu */,
float * /* vt */,
lapack_int /* ldvt */,
float * /* superb */
);
static PFNLAPACKE_sgesvd _g_LAPACKE_sgesvd = NULL;
lapack_int LAPACKE_sgesvd(
int matrix_layout,
char jobu,
char jobvt,
lapack_int m,
lapack_int n,
float * a,
lapack_int lda,
float * s,
float * u,
lapack_int ldu,
float * vt,
lapack_int ldvt,
float * superb
)
{
if(_h_openblas==NULL || _g_LAPACKE_sgesvd==NULL) {
return 0;
}
return _g_LAPACKE_sgesvd(
matrix_layout,
jobu,
jobvt,
m,
n,
a,
lda,
s,
u,
ldu,
vt,
ldvt,
superb
);
}
typedef lapack_int (CALLBACK* PFNLAPACKE_dgesvd)( /* LAPACKE_dgesvd */
int /* matrix_layout */,
char /* jobu */,
char /* jobvt */,
lapack_int /* m */,
lapack_int /* n */,
double * /* a */,
lapack_int /* lda */,
double * /* s */,
double * /* u */,
lapack_int /* ldu */,
double * /* vt */,
lapack_int /* ldvt */,
double * /* superb */
);
static PFNLAPACKE_dgesvd _g_LAPACKE_dgesvd = NULL;
lapack_int LAPACKE_dgesvd(
int matrix_layout,
char jobu,
char jobvt,
lapack_int m,
lapack_int n,
double * a,
lapack_int lda,
double * s,
double * u,
lapack_int ldu,
double * vt,
lapack_int ldvt,
double * superb
)
{
if(_h_openblas==NULL || _g_LAPACKE_dgesvd==NULL) {
return 0;
}
return _g_LAPACKE_dgesvd(
matrix_layout,
jobu,
jobvt,
m,
n,
a,
lda,
s,
u,
ldu,
vt,
ldvt,
superb
);
}