@@ -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
@@ -306,6 +306,27 @@ arrayts = (Array, JLArray)
306
306
@test @views (at[Block (1 , 2 )]) isa Adjoint
307
307
end
308
308
end
309
+ @testset " adapt" begin
310
+ a = BlockSparseArray {elt} (undef, [2 , 2 ], [2 , 2 ])
311
+ a_12 = randn (elt, 2 , 2 )
312
+ a[Block (1 , 2 )] = a_12
313
+ a_jl = adapt (JLArray, a)
314
+ @test a_jl isa BlockSparseMatrix{elt,JLMatrix{elt}}
315
+ @test blocktype (a_jl) == JLMatrix{elt}
316
+ @test blockstoredlength (a_jl) == 1
317
+ @test a_jl[Block (1 , 2 )] isa JLMatrix{elt}
318
+ @test adapt (Array, a_jl[Block (1 , 2 )]) == a_12
319
+
320
+ a = BlockSparseArray {elt} (undef, [2 , 2 ], [2 , 2 ])
321
+ a_12 = randn (elt, 2 , 2 )
322
+ a[Block (1 , 2 )] = a_12
323
+ a_jl = adapt (JLArray, @view (a[:, :]))
324
+ @test a_jl isa SubArray{elt,2 ,<: BlockSparseMatrix{elt,JLMatrix{elt}} }
325
+ @test blocktype (a_jl) == JLMatrix{elt}
326
+ @test blockstoredlength (a_jl) == 1
327
+ @test a_jl[Block (1 , 2 )] isa JLMatrix{elt}
328
+ @test adapt (Array, a_jl[Block (1 , 2 )]) == a_12
329
+ end
309
330
@testset " Tensor algebra" begin
310
331
a = dev (BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ])))
311
332
@views for b in [Block (1 , 2 ), Block (2 , 1 )]
@@ -1149,15 +1170,19 @@ arrayts = (Array, JLArray)
1149
1170
# Not testing other element types since they change the
1150
1171
# spacing so it isn't easy to make the test general.
1151
1172
1152
- a = BlockSparseMatrix {elt,arrayt{elt,2}} (undef, [2 , 2 ], [2 , 2 ])
1153
- @allowscalar a[1 , 2 ] = 12
1154
- @test sprint (show, " text/plain" , a) ==
1155
- " $(summary (a)) :\n $(zero (eltype (a))) $(eltype (a)(12 )) │ ⋅ ⋅ \n $(zero (eltype (a))) $(zero (eltype (a))) │ ⋅ ⋅ \n ───────────┼──────────\n ⋅ ⋅ │ ⋅ ⋅ \n ⋅ ⋅ │ ⋅ ⋅ "
1173
+ a′ = BlockSparseMatrix {elt,arrayt{elt,2}} (undef, [2 , 2 ], [2 , 2 ])
1174
+ @allowscalar a′[1 , 2 ] = 12
1175
+ for a in (a′, @view (a′[:, :]))
1176
+ @test sprint (show, " text/plain" , a) ==
1177
+ " $(summary (a)) :\n $(zero (eltype (a))) $(eltype (a)(12 )) │ ⋅ ⋅ \n $(zero (eltype (a))) $(zero (eltype (a))) │ ⋅ ⋅ \n ───────────┼──────────\n ⋅ ⋅ │ ⋅ ⋅ \n ⋅ ⋅ │ ⋅ ⋅ "
1178
+ end
1156
1179
1157
- a = BlockSparseArray {elt,3,arrayt{elt,3}} (undef, [2 , 2 ], [2 , 2 ], [2 , 2 ])
1158
- @allowscalar a[1 , 2 , 1 ] = 121
1159
- @test sprint (show, " text/plain" , a) ==
1160
- " $(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 ⋅ ⋅ ⋅ ⋅ "
1180
+ a′ = BlockSparseArray {elt,3,arrayt{elt,3}} (undef, [2 , 2 ], [2 , 2 ], [2 , 2 ])
1181
+ @allowscalar a′[1 , 2 , 1 ] = 121
1182
+ for a in (a′, @view (a′[:, :, :]))
1183
+ @test sprint (show, " text/plain" , a) ==
1184
+ " $(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 ⋅ ⋅ ⋅ ⋅ "
1185
+ end
1161
1186
end
1162
1187
end
1163
1188
@testset " TypeParameterAccessors.position" begin
0 commit comments