Skip to content

Commit 6654291

Browse files
Version-related fixes to MPSNDArray (#537)
1 parent ede2dfd commit 6654291

File tree

2 files changed

+24
-17
lines changed

2 files changed

+24
-17
lines changed

lib/mps/ndarray.jl

+9-7
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,15 @@ export MPSNDArray
4545
res = @objc [ndarr::id{MPSNDArray} userBuffer]::id{MTLBuffer}
4646
return res == nil ? nothing : MTLBuffer(res)
4747
end
48-
function resourceSize(ndarr::MPSNDArray)
49-
return @objc [ndarr::id{MPSNDArray} resourceSize]::NSUInteger
50-
end
51-
function descriptor(ndarr::MPSNDArray)::MPSNDArrayDescriptor
52-
res = @objc [ndarr::id{MPSNDArray} descriptor]::id{MPSNDArrayDescriptor}
53-
return res == nil ? nothing : MPSNDArrayDescriptor(res)
54-
end
48+
end
49+
50+
function resourceSize(ndarr::MPSNDArray)
51+
return @objc [ndarr::id{MPSNDArray} resourceSize]::NSUInteger
52+
end
53+
54+
function descriptor(ndarr::MPSNDArray)::MPSNDArrayDescriptor
55+
res = @objc [ndarr::id{MPSNDArray} descriptor]::id{MPSNDArrayDescriptor}
56+
return res == nil ? nothing : MPSNDArrayDescriptor(res)
5557
end
5658

5759
function Base.size(ndarr::MPSNDArray)

test/mps/ndarray.jl

+15-10
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@
22
# matrix descriptor
33
#
44
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+
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"15"
33+
@test desc1.preferPackedRows == false
34+
35+
desc2.preferPackedRows = true
36+
@test desc2.preferPackedRows == true
37+
end
3138
end
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"15"
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

Comments
 (0)