2
2
# matrix descriptor
3
3
#
4
4
using 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 " 15"
7
+ using . MPS: userBuffer
8
+ end
9
+
6
10
@testset " MPSNDArrayDescriptor" begin
7
11
T = Float32
8
12
DT = convert (MPSDataType, T)
9
13
10
14
desc1 = MPSNDArrayDescriptor (T,1 ,2 ,3 ,4 ,5 )
11
15
@test desc1 isa MPSNDArrayDescriptor
12
16
@test desc1. dataType == DT
13
- @test desc1. preferPackedRows == false
14
17
@test desc1. numberOfDimensions == 5
15
18
16
19
@test lengthOfDimension (desc1,4 ) == 5
@@ -25,9 +28,13 @@ using .MPS: MPSNDArrayDescriptor, MPSDataType, lengthOfDimension, userBuffer, de
25
28
@test desc2. numberOfDimensions == 4
26
29
desc2. numberOfDimensions = 6
27
30
@test desc2. numberOfDimensions == 6
28
- desc2. preferPackedRows = true
29
- @test desc2. preferPackedRows == true
30
31
32
+ @static if Metal. macos_version () >= v " 15"
33
+ @test desc1. preferPackedRows == false
34
+
35
+ desc2. preferPackedRows = true
36
+ @test desc2. preferPackedRows == true
37
+ end
31
38
end
32
39
33
40
@@ -51,6 +58,8 @@ using .MPS: MPSNDArray
51
58
@test ndarr1. label == " Test1"
52
59
@test ndarr1. numberOfDimensions == 5
53
60
@test ndarr1. parent === nothing
61
+ @test descriptor (ndarr1) isa MPSNDArrayDescriptor
62
+ @test resourceSize (ndarr1) isa UInt
54
63
@test size (ndarr1) == (5 ,4 ,3 ,2 ,1 )
55
64
56
65
ndarr2 = MPSNDArray (dev, 4 )
@@ -62,26 +71,22 @@ using .MPS: MPSNDArray
62
71
@test ndarr2. label == " Test2"
63
72
@test ndarr2. numberOfDimensions == 1
64
73
@test ndarr2. parent === nothing
74
+ @test descriptor (ndarr2) isa MPSNDArrayDescriptor
75
+ @test resourceSize (ndarr2) isa UInt
65
76
66
77
arr3 = MtlArray (ones (Float16, 2 ,3 ,4 ))
67
78
@test_throws " First dimension of input MtlArray must have a byte size divisible by 16" MPSNDArray (arr3)
68
79
69
80
arr4 = MtlArray (ones (Float16, 8 ,3 ,2 ))
70
81
71
82
@static if Metal. macos_version () >= v " 15"
72
- @test descriptor (ndarr1) isa MPSNDArrayDescriptor
73
- @test resourceSize (ndarr1) isa UInt
74
83
@test userBuffer (ndarr1) === nothing
75
-
76
- @test descriptor (ndarr2) isa MPSNDArrayDescriptor
77
- @test resourceSize (ndarr2) isa UInt
78
84
@test userBuffer (ndarr2) === nothing
79
85
80
86
ndarr4 = MPSNDArray (arr4)
81
87
82
88
arr5 = MtlArray (arr4)
83
89
@test arr4 == arr5
84
-
85
90
else
86
91
@test_throws " Creating an MPSNDArray that shares data with user-provided MTLBuffer is only supported in macOS v15+" MPSNDArray (arr4)
87
92
end
0 commit comments