@@ -34,7 +34,7 @@ using BlockSparseArrays:
3434 sparsemortar,
3535 view!
3636using GPUArraysCore: @allowscalar
37- using JLArrays: JLArray
37+ using JLArrays: JLArray, JLMatrix
3838using LinearAlgebra: Adjoint, Transpose, dot, mul!, norm
3939using SparseArraysBase: SparseArrayDOK, SparseMatrixDOK, SparseVectorDOK, storedlength
4040using TensorAlgebra: contract
@@ -306,6 +306,27 @@ arrayts = (Array, JLArray)
306306 @test @views (at[Block (1 , 2 )]) isa Adjoint
307307 end
308308 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
309330 @testset " Tensor algebra" begin
310331 a = dev (BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ])))
311332 @views for b in [Block (1 , 2 ), Block (2 , 1 )]
@@ -1149,15 +1170,19 @@ arrayts = (Array, JLArray)
11491170 # Not testing other element types since they change the
11501171 # spacing so it isn't easy to make the test general.
11511172
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
11561179
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
11611186 end
11621187 end
11631188 @testset " TypeParameterAccessors.position" begin
0 commit comments