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}
45const GPUComponentVecorMat{T,Ax} = Union{GPUComponentVector{T,Ax},GPUComponentMatrix{T,Ax}}
56
67GPUArrays. backend (x:: ComponentArray ) = GPUArrays. backend (getdata (x))
2526
2627LinearAlgebra. dot (x:: GPUComponentArray , y:: GPUComponentArray ) = dot (getdata (x), getdata (y))
2728LinearAlgebra. 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
2933
3034function Base. map (f, x:: GPUComponentArray , args... )
3135 data = map (f, getdata (x), getdata .(args)... )
7882function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
7983 A:: GPUComponentVecorMat ,
8084 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)
9486end
9587
9688function 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 ,
12090 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)
17892end
17993
18094function LinearAlgebra. mul! (C:: GPUComponentVecorMat ,
18195 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)
26698end
99+
267100function 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 )
272103 return GPUArrays. generic_matmatmul! (C, A, B, a, b)
273- end
104+ end
0 commit comments