22#  matrix descriptor
33# 
44using  Metal,Test;
5- using  . MPS:  MPSNDArrayDescriptor, MPSDataType, lengthOfDimension, userBuffer, descriptor, resourceSize
5+ using  . MPS:  MPSNDArrayDescriptor, MPSDataType, lengthOfDimension, descriptor, resourceSize
6+ @static  if  Metal. macos_version () >=  v "" 
7+     using  . MPS:  userBuffer
8+ end 
9+ 
610@testset  " MPSNDArrayDescriptor" begin 
711    T =  Float32
812    DT =  convert (MPSDataType, T)
913
1014    desc1 =  MPSNDArrayDescriptor (T,1 ,2 ,3 ,4 ,5 )
1115    @test  desc1 isa  MPSNDArrayDescriptor
1216    @test  desc1. dataType ==  DT
13-     @test  desc1. preferPackedRows ==  false 
1417    @test  desc1. numberOfDimensions ==  5 
1518
1619    @test  lengthOfDimension (desc1,4 ) ==  5 
@@ -25,9 +28,13 @@ using .MPS: MPSNDArrayDescriptor, MPSDataType, lengthOfDimension, userBuffer, de
2528    @test  desc2. numberOfDimensions ==  4 
2629    desc2. numberOfDimensions =  6 
2730    @test  desc2. numberOfDimensions ==  6 
28-     desc2. preferPackedRows =  true 
29-     @test  desc2. preferPackedRows ==  true 
3031
32+     @static  if  Metal. macos_version () >=  v "" 
33+         @test  desc1. preferPackedRows ==  false 
34+ 
35+         desc2. preferPackedRows =  true 
36+         @test  desc2. preferPackedRows ==  true 
37+     end 
3138end 
3239
3340
@@ -51,6 +58,8 @@ using .MPS: MPSNDArray
5158    @test  ndarr1. label ==  " Test1" 
5259    @test  ndarr1. numberOfDimensions ==  5 
5360    @test  ndarr1. parent ===  nothing 
61+     @test  descriptor (ndarr1) isa  MPSNDArrayDescriptor
62+     @test  resourceSize (ndarr1) isa  UInt
5463    @test  size (ndarr1) ==  (5 ,4 ,3 ,2 ,1 )
5564
5665    ndarr2 =  MPSNDArray (dev, 4 )
@@ -62,26 +71,22 @@ using .MPS: MPSNDArray
6271    @test  ndarr2. label ==  " Test2" 
6372    @test  ndarr2. numberOfDimensions ==  1 
6473    @test  ndarr2. parent ===  nothing 
74+     @test  descriptor (ndarr2) isa  MPSNDArrayDescriptor
75+     @test  resourceSize (ndarr2) isa  UInt
6576
6677    arr3 =  MtlArray (ones (Float16, 2 ,3 ,4 ))
6778    @test_throws  " First dimension of input MtlArray must have a byte size divisible by 16" MPSNDArray (arr3)
6879
6980    arr4 =  MtlArray (ones (Float16, 8 ,3 ,2 ))
7081
7182    @static  if  Metal. macos_version () >=  v "" 
72-         @test  descriptor (ndarr1) isa  MPSNDArrayDescriptor
73-         @test  resourceSize (ndarr1) isa  UInt
7483        @test  userBuffer (ndarr1) ===  nothing 
75- 
76-         @test  descriptor (ndarr2) isa  MPSNDArrayDescriptor
77-         @test  resourceSize (ndarr2) isa  UInt
7884        @test  userBuffer (ndarr2) ===  nothing 
7985
8086        ndarr4 =  MPSNDArray (arr4)
8187
8288        arr5 =  MtlArray (arr4)
8389        @test  arr4 ==  arr5
84- 
8590    else 
8691        @test_throws  " Creating an MPSNDArray that shares data with user-provided MTLBuffer is only supported in macOS v15+" MPSNDArray (arr4)
8792    end 
0 commit comments