@@ -34,7 +34,7 @@ using BlockSparseArrays:
34
34
sparsemortar,
35
35
view!
36
36
using GPUArraysCore: @allowscalar
37
- using JLArrays: JLArray
37
+ using JLArrays: JLArray, JLMatrix
38
38
using LinearAlgebra: Adjoint, Transpose, dot, mul!, norm
39
39
using SparseArraysBase: SparseArrayDOK, SparseMatrixDOK, SparseVectorDOK, storedlength
40
40
using TensorAlgebra: contract
@@ -315,6 +315,27 @@ arrayts = (Array, JLArray)
315
315
@test @views (at[Block (1 , 2 )]) isa Adjoint
316
316
end
317
317
end
318
+ @testset " adapt" begin
319
+ a = BlockSparseArray {elt} (undef, [2 , 2 ], [2 , 2 ])
320
+ a_12 = randn (elt, 2 , 2 )
321
+ a[Block (1 , 2 )] = a_12
322
+ a_jl = adapt (JLArray, a)
323
+ @test a_jl isa BlockSparseMatrix{elt,JLMatrix{elt}}
324
+ @test blocktype (a_jl) == JLMatrix{elt}
325
+ @test blockstoredlength (a_jl) == 1
326
+ @test a_jl[Block (1 , 2 )] isa JLMatrix{elt}
327
+ @test adapt (Array, a_jl[Block (1 , 2 )]) == a_12
328
+
329
+ a = BlockSparseArray {elt} (undef, [2 , 2 ], [2 , 2 ])
330
+ a_12 = randn (elt, 2 , 2 )
331
+ a[Block (1 , 2 )] = a_12
332
+ a_jl = adapt (JLArray, @view (a[:, :]))
333
+ @test a_jl isa SubArray{elt,2 ,<: BlockSparseMatrix{elt,JLMatrix{elt}} }
334
+ @test blocktype (a_jl) == JLMatrix{elt}
335
+ @test blockstoredlength (a_jl) == 1
336
+ @test a_jl[Block (1 , 2 )] isa JLMatrix{elt}
337
+ @test adapt (Array, a_jl[Block (1 , 2 )]) == a_12
338
+ end
318
339
@testset " Tensor algebra" begin
319
340
a = dev (BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ])))
320
341
@views for b in [Block (1 , 2 ), Block (2 , 1 )]
@@ -1158,15 +1179,19 @@ arrayts = (Array, JLArray)
1158
1179
# Not testing other element types since they change the
1159
1180
# spacing so it isn't easy to make the test general.
1160
1181
1161
- a = BlockSparseMatrix {elt,arrayt{elt,2}} (undef, [2 , 2 ], [2 , 2 ])
1162
- @allowscalar a[1 , 2 ] = 12
1163
- @test sprint (show, " text/plain" , a) ==
1164
- " $(summary (a)) :\n $(zero (eltype (a))) $(eltype (a)(12 )) │ ⋅ ⋅ \n $(zero (eltype (a))) $(zero (eltype (a))) │ ⋅ ⋅ \n ───────────┼──────────\n ⋅ ⋅ │ ⋅ ⋅ \n ⋅ ⋅ │ ⋅ ⋅ "
1182
+ a′ = BlockSparseMatrix {elt,arrayt{elt,2}} (undef, [2 , 2 ], [2 , 2 ])
1183
+ @allowscalar a′[1 , 2 ] = 12
1184
+ for a in (a′, @view (a′[:, :]))
1185
+ @test sprint (show, " text/plain" , a) ==
1186
+ " $(summary (a)) :\n $(zero (eltype (a))) $(eltype (a)(12 )) │ ⋅ ⋅ \n $(zero (eltype (a))) $(zero (eltype (a))) │ ⋅ ⋅ \n ───────────┼──────────\n ⋅ ⋅ │ ⋅ ⋅ \n ⋅ ⋅ │ ⋅ ⋅ "
1187
+ end
1165
1188
1166
- a = BlockSparseArray {elt,3,arrayt{elt,3}} (undef, [2 , 2 ], [2 , 2 ], [2 , 2 ])
1167
- @allowscalar a[1 , 2 , 1 ] = 121
1168
- @test sprint (show, " text/plain" , a) ==
1169
- " $(summary (a)) :\n [:, :, 1] =\n $(zero (eltype (a))) $(eltype (a)(121 )) ⋅ ⋅ \n $(zero (eltype (a))) $(zero (eltype (a))) ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n\n [:, :, 2] =\n $(zero (eltype (a))) $(zero (eltype (a))) ⋅ ⋅ \n $(zero (eltype (a))) $(zero (eltype (a))) ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n\n [:, :, 3] =\n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n\n [:, :, 4] =\n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ "
1189
+ a′ = BlockSparseArray {elt,3,arrayt{elt,3}} (undef, [2 , 2 ], [2 , 2 ], [2 , 2 ])
1190
+ @allowscalar a′[1 , 2 , 1 ] = 121
1191
+ for a in (a′, @view (a′[:, :, :]))
1192
+ @test sprint (show, " text/plain" , a) ==
1193
+ " $(summary (a)) :\n [:, :, 1] =\n $(zero (eltype (a))) $(eltype (a)(121 )) ⋅ ⋅ \n $(zero (eltype (a))) $(zero (eltype (a))) ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n\n [:, :, 2] =\n $(zero (eltype (a))) $(zero (eltype (a))) ⋅ ⋅ \n $(zero (eltype (a))) $(zero (eltype (a))) ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n\n [:, :, 3] =\n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n\n [:, :, 4] =\n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ "
1194
+ end
1170
1195
end
1171
1196
end
1172
1197
@testset " TypeParameterAccessors.position" begin
0 commit comments