@@ -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
@@ -315,6 +315,27 @@ arrayts = (Array, JLArray)
315315 @test @views (at[Block (1 , 2 )]) isa Adjoint
316316 end
317317 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
318339 @testset " Tensor algebra" begin
319340 a = dev (BlockSparseArray {elt} (undef, ([2 , 3 ], [3 , 4 ])))
320341 @views for b in [Block (1 , 2 ), Block (2 , 1 )]
@@ -1158,15 +1179,19 @@ arrayts = (Array, JLArray)
11581179 # Not testing other element types since they change the
11591180 # spacing so it isn't easy to make the test general.
11601181
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
11651188
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
11701195 end
11711196 end
11721197 @testset " TypeParameterAccessors.position" begin
0 commit comments