FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
libgpuarray/src/gpuarray_buffer_blas.c at master · jrao1/libgpuarray · GitHub
jrao1
/
libgpuarray
Public
forked from
Theano/libgpuarray
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
libgpuarray
/
src
/
gpuarray_buffer_blas.c
Copy path
More file actions
More file actions
Latest commit
History
History
History
248 lines (223 loc) · 9.34 KB
Breadcrumbs
libgpuarray
/
src
/
gpuarray_buffer_blas.c
Copy path
File metadata and controls
248 lines (223 loc) · 9.34 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
#include
"private.h"
#include
<gpuarray/error.h>
int
gpublas_setup
(
gpucontext
*
ctx
) {
if
(
ctx
->
blas_ops
==
NULL
)
return
GA_UNSUPPORTED_ERROR
;
return
ctx
->
blas_ops
->
setup
(
ctx
);
}
void
gpublas_teardown
(
gpucontext
*
ctx
) {
if
(
ctx
->
blas_ops
!=
NULL
)
return
ctx
->
blas_ops
->
teardown
(
ctx
);
}
const
char
*
gpublas_error
(
gpucontext
*
ctx
) {
if
(
ctx
->
blas_ops
!=
NULL
)
return
ctx
->
blas_ops
->
error
(
ctx
);
return
"No blas ops available, API error."
;
}
int
gpublas_hdot
(
size_t
N
,
gpudata
*
X
,
size_t
offX
,
size_t
incX
,
gpudata
*
Y
,
size_t
offY
,
size_t
incY
,
gpudata
*
Z
,
size_t
offZ
) {
return
gpudata_context
(
X
)
->
blas_ops
->
hdot
(
N
,
X
,
offX
,
incX
,
Y
,
offY
,
incY
,
Z
,
offZ
);
}
int
gpublas_sdot
(
size_t
N
,
gpudata
*
X
,
size_t
offX
,
size_t
incX
,
gpudata
*
Y
,
size_t
offY
,
size_t
incY
,
gpudata
*
Z
,
size_t
offZ
) {
return
gpudata_context
(
X
)
->
blas_ops
->
sdot
(
N
,
X
,
offX
,
incX
,
Y
,
offY
,
incY
,
Z
,
offZ
);
}
int
gpublas_ddot
(
size_t
N
,
gpudata
*
X
,
size_t
offX
,
size_t
incX
,
gpudata
*
Y
,
size_t
offY
,
size_t
incY
,
gpudata
*
Z
,
size_t
offZ
) {
return
gpudata_context
(
X
)
->
blas_ops
->
ddot
(
N
,
X
,
offX
,
incX
,
Y
,
offY
,
incY
,
Z
,
offZ
);
}
int
gpublas_hgemv
(
cb_order
order
,
cb_transpose
transA
,
size_t
M
,
size_t
N
,
float
alpha
,
gpudata
*
A
,
size_t
offA
,
size_t
lda
,
gpudata
*
X
,
size_t
offX
,
int
incX
,
float
beta
,
gpudata
*
Y
,
size_t
offY
,
int
incY
) {
return
gpudata_context
(
A
)
->
blas_ops
->
hgemv
(
order
,
transA
,
M
,
N
,
alpha
,
A
,
offA
,
lda
,
X
,
offX
,
incX
,
beta
,
Y
,
offY
,
incY
);
}
int
gpublas_sgemv
(
cb_order
order
,
cb_transpose
transA
,
size_t
M
,
size_t
N
,
float
alpha
,
gpudata
*
A
,
size_t
offA
,
size_t
lda
,
gpudata
*
X
,
size_t
offX
,
int
incX
,
float
beta
,
gpudata
*
Y
,
size_t
offY
,
int
incY
) {
return
gpudata_context
(
A
)
->
blas_ops
->
sgemv
(
order
,
transA
,
M
,
N
,
alpha
,
A
,
offA
,
lda
,
X
,
offX
,
incX
,
beta
,
Y
,
offY
,
incY
);
}
int
gpublas_dgemv
(
cb_order
order
,
cb_transpose
transA
,
size_t
M
,
size_t
N
,
double
alpha
,
gpudata
*
A
,
size_t
offA
,
size_t
lda
,
gpudata
*
X
,
size_t
offX
,
int
incX
,
double
beta
,
gpudata
*
Y
,
size_t
offY
,
int
incY
) {
return
gpudata_context
(
A
)
->
blas_ops
->
dgemv
(
order
,
transA
,
M
,
N
,
alpha
,
A
,
offA
,
lda
,
X
,
offX
,
incX
,
beta
,
Y
,
offY
,
incY
);
}
int
gpublas_hgemm
(
cb_order
order
,
cb_transpose
transA
,
cb_transpose
transB
,
size_t
M
,
size_t
N
,
size_t
K
,
float
alpha
,
gpudata
*
A
,
size_t
offA
,
size_t
lda
,
gpudata
*
B
,
size_t
offB
,
size_t
ldb
,
float
beta
,
gpudata
*
C
,
size_t
offC
,
size_t
ldc
) {
return
gpudata_context
(
A
)
->
blas_ops
->
hgemm
(
order
,
transA
,
transB
,
M
,
N
,
K
,
alpha
,
A
,
offA
,
lda
,
B
,
offB
,
ldb
,
beta
,
C
,
offC
,
ldc
);
}
int
gpublas_sgemm
(
cb_order
order
,
cb_transpose
transA
,
cb_transpose
transB
,
size_t
M
,
size_t
N
,
size_t
K
,
float
alpha
,
gpudata
*
A
,
size_t
offA
,
size_t
lda
,
gpudata
*
B
,
size_t
offB
,
size_t
ldb
,
float
beta
,
gpudata
*
C
,
size_t
offC
,
size_t
ldc
) {
return
gpudata_context
(
A
)
->
blas_ops
->
sgemm
(
order
,
transA
,
transB
,
M
,
N
,
K
,
alpha
,
A
,
offA
,
lda
,
B
,
offB
,
ldb
,
beta
,
C
,
offC
,
ldc
);
}
int
gpublas_dgemm
(
cb_order
order
,
cb_transpose
transA
,
cb_transpose
transB
,
size_t
M
,
size_t
N
,
size_t
K
,
double
alpha
,
gpudata
*
A
,
size_t
offA
,
size_t
lda
,
gpudata
*
B
,
size_t
offB
,
size_t
ldb
,
double
beta
,
gpudata
*
C
,
size_t
offC
,
size_t
ldc
) {
return
gpudata_context
(
A
)
->
blas_ops
->
dgemm
(
order
,
transA
,
transB
,
M
,
N
,
K
,
alpha
,
A
,
offA
,
lda
,
B
,
offB
,
ldb
,
beta
,
C
,
offC
,
ldc
);
}
int
gpublas_hger
(
cb_order
order
,
size_t
M
,
size_t
N
,
float
alpha
,
gpudata
*
X
,
size_t
offX
,
int
incX
,
gpudata
*
Y
,
size_t
offY
,
int
incY
,
gpudata
*
A
,
size_t
offA
,
size_t
lda
) {
return
gpudata_context
(
X
)
->
blas_ops
->
hger
(
order
,
M
,
N
,
alpha
,
X
,
offX
,
incX
,
Y
,
offY
,
incY
,
A
,
offA
,
lda
);
}
int
gpublas_sger
(
cb_order
order
,
size_t
M
,
size_t
N
,
float
alpha
,
gpudata
*
X
,
size_t
offX
,
int
incX
,
gpudata
*
Y
,
size_t
offY
,
int
incY
,
gpudata
*
A
,
size_t
offA
,
size_t
lda
) {
return
gpudata_context
(
X
)
->
blas_ops
->
sger
(
order
,
M
,
N
,
alpha
,
X
,
offX
,
incX
,
Y
,
offY
,
incY
,
A
,
offA
,
lda
);
}
int
gpublas_dger
(
cb_order
order
,
size_t
M
,
size_t
N
,
double
alpha
,
gpudata
*
X
,
size_t
offX
,
int
incX
,
gpudata
*
Y
,
size_t
offY
,
int
incY
,
gpudata
*
A
,
size_t
offA
,
size_t
lda
) {
return
gpudata_context
(
X
)
->
blas_ops
->
dger
(
order
,
M
,
N
,
alpha
,
X
,
offX
,
incX
,
Y
,
offY
,
incY
,
A
,
offA
,
lda
);
}
int
gpublas_hgemmBatch
(
cb_order
order
,
cb_transpose
transA
,
cb_transpose
transB
,
size_t
M
,
size_t
N
,
size_t
K
,
float
alpha
,
gpudata
*
*
A
,
size_t
*
offA
,
size_t
lda
,
gpudata
*
*
B
,
size_t
*
offB
,
size_t
ldb
,
float
beta
,
gpudata
*
*
C
,
size_t
*
offC
,
size_t
ldc
,
size_t
batchCount
,
int
flags
) {
if
(
flags
!=
0
)
return
GA_INVALID_ERROR
;
if
(
batchCount
==
0
)
return
GA_NO_ERROR
;
return
gpudata_context
(
A
[
0
])
->
blas_ops
->
hgemmBatch
(
order
,
transA
,
transB
,
M
,
N
,
K
,
alpha
,
A
,
offA
,
lda
,
B
,
offB
,
ldb
,
beta
,
C
,
offC
,
ldc
,
batchCount
);
}
int
gpublas_sgemmBatch
(
cb_order
order
,
cb_transpose
transA
,
cb_transpose
transB
,
size_t
M
,
size_t
N
,
size_t
K
,
float
alpha
,
gpudata
*
*
A
,
size_t
*
offA
,
size_t
lda
,
gpudata
*
*
B
,
size_t
*
offB
,
size_t
ldb
,
float
beta
,
gpudata
*
*
C
,
size_t
*
offC
,
size_t
ldc
,
size_t
batchCount
,
int
flags
) {
if
(
flags
!=
0
)
return
GA_INVALID_ERROR
;
if
(
batchCount
==
0
)
return
GA_NO_ERROR
;
return
gpudata_context
(
A
[
0
])
->
blas_ops
->
sgemmBatch
(
order
,
transA
,
transB
,
M
,
N
,
K
,
alpha
,
A
,
offA
,
lda
,
B
,
offB
,
ldb
,
beta
,
C
,
offC
,
ldc
,
batchCount
);
}
int
gpublas_dgemmBatch
(
cb_order
order
,
cb_transpose
transA
,
cb_transpose
transB
,
size_t
M
,
size_t
N
,
size_t
K
,
double
alpha
,
gpudata
*
*
A
,
size_t
*
offA
,
size_t
lda
,
gpudata
*
*
B
,
size_t
*
offB
,
size_t
ldb
,
double
beta
,
gpudata
*
*
C
,
size_t
*
offC
,
size_t
ldc
,
size_t
batchCount
,
int
flags
) {
if
(
flags
!=
0
)
return
GA_INVALID_ERROR
;
if
(
batchCount
==
0
)
return
GA_NO_ERROR
;
return
gpudata_context
(
A
[
0
])
->
blas_ops
->
dgemmBatch
(
order
,
transA
,
transB
,
M
,
N
,
K
,
alpha
,
A
,
offA
,
lda
,
B
,
offB
,
ldb
,
beta
,
C
,
offC
,
ldc
,
batchCount
);
}
int
gpublas_hgemvBatch
(
cb_order
order
,
cb_transpose
transA
,
size_t
M
,
size_t
N
,
float
alpha
,
gpudata
*
*
A
,
size_t
*
offA
,
size_t
lda
,
gpudata
*
*
x
,
size_t
*
offX
,
size_t
incX
,
float
beta
,
gpudata
*
*
y
,
size_t
*
offY
,
size_t
incY
,
size_t
batchCount
,
int
flags
) {
if
(
batchCount
==
0
)
return
GA_NO_ERROR
;
return
gpudata_context
(
A
[
0
])
->
blas_ops
->
hgemvBatch
(
order
,
transA
,
M
,
N
,
alpha
,
A
,
offA
,
lda
,
x
,
offX
,
incX
,
beta
,
y
,
offY
,
incY
,
batchCount
,
flags
);
}
int
gpublas_sgemvBatch
(
cb_order
order
,
cb_transpose
transA
,
size_t
M
,
size_t
N
,
float
alpha
,
gpudata
*
*
A
,
size_t
*
offA
,
size_t
lda
,
gpudata
*
*
x
,
size_t
*
offX
,
size_t
incX
,
float
beta
,
gpudata
*
*
y
,
size_t
*
offY
,
size_t
incY
,
size_t
batchCount
,
int
flags
) {
if
(
batchCount
==
0
)
return
GA_NO_ERROR
;
return
gpudata_context
(
A
[
0
])
->
blas_ops
->
sgemvBatch
(
order
,
transA
,
M
,
N
,
alpha
,
A
,
offA
,
lda
,
x
,
offX
,
incX
,
beta
,
y
,
offY
,
incY
,
batchCount
,
flags
);
}
int
gpublas_dgemvBatch
(
cb_order
order
,
cb_transpose
transA
,
size_t
M
,
size_t
N
,
double
alpha
,
gpudata
*
*
A
,
size_t
*
offA
,
size_t
lda
,
gpudata
*
*
x
,
size_t
*
offX
,
size_t
incX
,
double
beta
,
gpudata
*
*
y
,
size_t
*
offY
,
size_t
incY
,
size_t
batchCount
,
int
flags
) {
if
(
batchCount
==
0
)
return
GA_NO_ERROR
;
return
gpudata_context
(
A
[
0
])
->
blas_ops
->
dgemvBatch
(
order
,
transA
,
M
,
N
,
alpha
,
A
,
offA
,
lda
,
x
,
offX
,
incX
,
beta
,
y
,
offY
,
incY
,
batchCount
,
flags
);
}
int
gpublas_hgerBatch
(
cb_order
order
,
size_t
M
,
size_t
N
,
float
alpha
,
gpudata
*
*
x
,
size_t
*
offX
,
size_t
incX
,
gpudata
*
*
y
,
size_t
*
offY
,
size_t
incY
,
gpudata
*
*
A
,
size_t
*
offA
,
size_t
lda
,
size_t
batchCount
,
int
flags
) {
if
(
batchCount
==
0
)
return
GA_NO_ERROR
;
return
gpudata_context
(
x
[
0
])
->
blas_ops
->
hgerBatch
(
order
,
M
,
N
,
alpha
,
x
,
offX
,
incX
,
y
,
offY
,
incY
,
A
,
offA
,
lda
,
batchCount
,
flags
);
}
int
gpublas_sgerBatch
(
cb_order
order
,
size_t
M
,
size_t
N
,
float
alpha
,
gpudata
*
*
x
,
size_t
*
offX
,
size_t
incX
,
gpudata
*
*
y
,
size_t
*
offY
,
size_t
incY
,
gpudata
*
*
A
,
size_t
*
offA
,
size_t
lda
,
size_t
batchCount
,
int
flags
) {
if
(
batchCount
==
0
)
return
GA_NO_ERROR
;
return
gpudata_context
(
x
[
0
])
->
blas_ops
->
sgerBatch
(
order
,
M
,
N
,
alpha
,
x
,
offX
,
incX
,
y
,
offY
,
incY
,
A
,
offA
,
lda
,
batchCount
,
flags
);
}
int
gpublas_dgerBatch
(
cb_order
order
,
size_t
M
,
size_t
N
,
double
alpha
,
gpudata
*
*
x
,
size_t
*
offX
,
size_t
incX
,
gpudata
*
*
y
,
size_t
*
offY
,
size_t
incY
,
gpudata
*
*
A
,
size_t
*
offA
,
size_t
lda
,
size_t
batchCount
,
int
flags
) {
if
(
batchCount
==
0
)
return
GA_NO_ERROR
;
return
gpudata_context
(
x
[
0
])
->
blas_ops
->
dgerBatch
(
order
,
M
,
N
,
alpha
,
x
,
offX
,
incX
,
y
,
offY
,
incY
,
A
,
offA
,
lda
,
batchCount
,
flags
);
}
Back
|
FazBrowse Home
|
New Git URL