1
- const GPUComponentArray = ComponentArray{T,N,<: GPUArrays.AbstractGPUArray ,Ax} where {T,N,Ax}
2
- const GPUComponentVector{T,Ax} = ComponentArray{T,1 ,<: GPUArrays.AbstractGPUVector ,Ax}
3
- const GPUComponentMatrix{T,Ax} = ComponentArray{T,2 ,<: GPUArrays.AbstractGPUMatrix ,Ax}
1
+ const AbstractGPUArrayOrAdj = Union{<: GPUArrays.AbstractGPUArray{T, N} , Adjoint{T, <: GPUArrays.AbstractGPUArray{T, N} }, Transpose{T, <: GPUArrays.AbstractGPUArray{T, N} }} where {T, N}
2
+ const GPUComponentArray = ComponentArray{T,N,<: AbstractGPUArrayOrAdj{T, N} ,Ax} where {T,N,Ax}
3
+ const GPUComponentVector{T,Ax} = ComponentArray{T,1 ,<: AbstractGPUArrayOrAdj{T, 1} ,Ax}
4
+ const GPUComponentMatrix{T,Ax} = ComponentArray{T,2 ,<: AbstractGPUArrayOrAdj{T, 2} ,Ax}
4
5
const GPUComponentVecorMat{T,Ax} = Union{GPUComponentVector{T,Ax},GPUComponentMatrix{T,Ax}}
5
6
6
7
GPUArrays. backend (x:: ComponentArray ) = GPUArrays. backend (getdata (x))
25
26
26
27
LinearAlgebra. dot (x:: GPUComponentArray , y:: GPUComponentArray ) = dot (getdata (x), getdata (y))
27
28
LinearAlgebra. norm (ca:: GPUComponentArray , p:: Real ) = norm (getdata (ca), p)
28
- LinearAlgebra. rmul! (ca:: GPUComponentArray , b:: Number ) = GPUArrays. generic_rmul! (ca, b)
29
+ function LinearAlgebra. rmul! (ca:: GPUComponentArray , b:: Number )
30
+ GPUArrays. generic_rmul! (getdata (ca), b)
31
+ return ca
32
+ end
29
33
30
34
function Base. map (f, x:: GPUComponentArray , args... )
31
35
data = map (f, getdata (x), getdata .(args)... )
78
82
function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
79
83
A:: GPUComponentVecorMat ,
80
84
B:: GPUComponentVecorMat , a:: Number , b:: Number )
81
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
82
- end
83
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
84
- A:: GPUComponentVecorMat ,
85
- B:: LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
86
- a:: Number , b:: Number )
87
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
88
- end
89
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
90
- A:: GPUComponentVecorMat ,
91
- B:: LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat} ,
92
- a:: Number , b:: Number )
93
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
85
+ return GPUArrays. generic_matmatmul! (C, getdata (A), getdata (B), a, b)
94
86
end
95
87
96
88
function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
97
- A:: GPUComponentVecorMat ,
98
- B:: LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
99
- a:: Number , b:: Number )
100
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
101
- end
102
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
103
- A:: GPUComponentVecorMat ,
104
- B:: LinearAlgebra.Transpose {<: Any ,<: GPUComponentVecorMat
105
- }, a:: Number , b:: Number )
106
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
107
- end
108
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
109
- A:: LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
110
- B:: GPUComponentVecorMat , a:: Number , b:: Number )
111
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
112
- end
113
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
114
- A:: LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat} ,
115
- B:: GPUComponentVecorMat , a:: Number , b:: Number )
116
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
117
- end
118
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
119
- A:: LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
89
+ A:: AbstractGPUArrayOrAdj ,
120
90
B:: GPUComponentVecorMat , a:: Number , b:: Number )
121
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
122
- end
123
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
124
- A:: LinearAlgebra.Transpose {<: Any ,<: GPUComponentVecorMat
125
- }, B:: GPUComponentVecorMat ,
126
- a:: Number , b:: Number )
127
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
128
- end
129
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
130
- A:: LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
131
- B:: LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
132
- a:: Number , b:: Number )
133
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
134
- end
135
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
136
- A:: LinearAlgebra.Transpose {<: Any ,<: GPUComponentVecorMat
137
- },
138
- B:: LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat} ,
139
- a:: Number , b:: Number )
140
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
141
- end
142
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
143
- A:: LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
144
- B:: LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
145
- a:: Number , b:: Number )
146
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
147
- end
148
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
149
- A:: LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat} ,
150
- B:: LinearAlgebra.Transpose {<: Any ,<: GPUComponentVecorMat
151
- }, a:: Number , b:: Number )
152
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
153
- end
154
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
155
- A:: LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
156
- B:: LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
157
- a:: Number , b:: Number )
158
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
159
- end
160
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
161
- A:: LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat} ,
162
- B:: LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat} ,
163
- a:: Number , b:: Number )
164
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
165
- end
166
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
167
- A:: LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
168
- B:: LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
169
- a:: Number , b:: Number )
170
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
171
- end
172
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
173
- A:: LinearAlgebra.Transpose {<: Any ,<: GPUComponentVecorMat
174
- },
175
- B:: LinearAlgebra.Transpose {<: Any ,<: GPUComponentVecorMat
176
- }, a:: Number , b:: Number )
177
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
91
+ return GPUArrays. generic_matmatmul! (C, A, getdata (B), a, b)
178
92
end
179
93
180
94
function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
181
95
A:: GPUComponentVecorMat ,
182
- B:: GPUComponentVecorMat , a:: Real , b:: Real )
183
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
184
- end
185
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
186
- A:: GPUComponentVecorMat ,
187
- B:: LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat} , a:: Real ,
188
- b:: Real )
189
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
190
- end
191
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
192
- A:: GPUComponentVecorMat ,
193
- B:: LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat} ,
194
- a:: Real , b:: Real )
195
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
196
- end
197
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
198
- A:: GPUComponentVecorMat ,
199
- B:: LinearAlgebra.Transpose {<: Any ,<: GPUComponentVecorMat
200
- }, a:: Real , b:: Real )
201
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
202
- end
203
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
204
- A:: LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
205
- B:: GPUComponentVecorMat , a:: Real , b:: Real )
206
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
207
- end
208
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
209
- A:: LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat} ,
210
- B:: GPUComponentVecorMat , a:: Real , b:: Real )
211
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
212
- end
213
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
214
- A:: LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
215
- B:: GPUComponentVecorMat , a:: Real , b:: Real )
216
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
217
- end
218
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
219
- A:: LinearAlgebra.Transpose {<: Any ,<: GPUComponentVecorMat
220
- }, B:: GPUComponentVecorMat ,
221
- a:: Real , b:: Real )
222
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
223
- end
224
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
225
- A:: LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
226
- B:: LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat} , a:: Real ,
227
- b:: Real )
228
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
229
- end
230
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
231
- A:: LinearAlgebra.Transpose {<: Any ,<: GPUComponentVecorMat
232
- },
233
- B:: LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat} ,
234
- a:: Real , b:: Real )
235
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
236
- end
237
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
238
- A:: LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
239
- B:: LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
240
- a:: Real , b:: Real )
241
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
242
- end
243
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
244
- A:: LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat} ,
245
- B:: LinearAlgebra.Transpose {<: Any ,<: GPUComponentVecorMat
246
- }, a:: Real , b:: Real )
247
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
248
- end
249
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
250
- A:: LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
251
- B:: LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat} , a:: Real ,
252
- b:: Real )
253
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
254
- end
255
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
256
- A:: LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat} ,
257
- B:: LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat} ,
258
- a:: Real , b:: Real )
259
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
260
- end
261
- function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
262
- A:: LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
263
- B:: LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat} ,
264
- a:: Real , b:: Real )
265
- return GPUArrays. generic_matmatmul! (C, A, B, a, b)
96
+ B:: AbstractGPUArrayOrAdj , a:: Number , b:: Number )
97
+ return GPUArrays. generic_matmatmul! (C, getdata (A), B, a, b)
266
98
end
99
+
267
100
function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
268
- A:: LinearAlgebra.Transpose {<: Any ,<: GPUComponentVecorMat
269
- },
270
- B:: LinearAlgebra.Transpose {<: Any ,<: GPUComponentVecorMat
271
- }, a:: Real , b:: Real )
101
+ A:: AbstractGPUArrayOrAdj ,
102
+ B:: AbstractGPUArrayOrAdj , a:: Number , b:: Number )
272
103
return GPUArrays. generic_matmatmul! (C, A, B, a, b)
273
- end
104
+ end
0 commit comments