From fc3ca6c41c8e67f0f50f7e23af7dc3ba5d6196cf Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Fri, 21 Jun 2024 12:25:38 -0400 Subject: [PATCH 01/37] Start adding JLArrays extension --- NDTensors/Project.toml | 4 ++++ NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl | 3 +++ 2 files changed, 7 insertions(+) create mode 100644 NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl diff --git a/NDTensors/Project.toml b/NDTensors/Project.toml index 3b7dfce715..5abbfa3f88 100644 --- a/NDTensors/Project.toml +++ b/NDTensors/Project.toml @@ -36,6 +36,7 @@ AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" +JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" MappedArrays = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" Metal = "dde4c033-4e86-420c-a63e-0dd931031962" Octavian = "6fd5a793-0b7e-452c-907f-f8bfe9c57db4" @@ -47,6 +48,7 @@ NDTensorsAMDGPUExt = ["AMDGPU", "GPUArraysCore"] NDTensorsCUDAExt = ["CUDA", "GPUArraysCore"] NDTensorsGPUArraysCoreExt = "GPUArraysCore" NDTensorsHDF5Ext = "HDF5" +NDTensorsJLArraysExt = ["JLArrays", "GPUArraysCore"] NDTensorsMappedArraysExt = ["MappedArrays"] NDTensorsMetalExt = ["GPUArraysCore", "Metal"] NDTensorsOctavianExt = "Octavian" @@ -70,6 +72,7 @@ GPUArraysCore = "0.1" HDF5 = "0.14, 0.15, 0.16, 0.17" HalfIntegers = "1" InlineStrings = "1" +JLArrays = "0.1" LinearAlgebra = "1.6" MacroTools = "0.5" MappedArrays = "0.4" @@ -95,6 +98,7 @@ AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" +JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" Metal = "dde4c033-4e86-420c-a63e-0dd931031962" Octavian = "6fd5a793-0b7e-452c-907f-f8bfe9c57db4" TBLIS = "48530278-0828-4a49-9772-0f3830dfa1e9" diff --git a/NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl b/NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl new file mode 100644 index 0000000000..3d4591d730 --- /dev/null +++ b/NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl @@ -0,0 +1,3 @@ +module NDTensorsJLArraysExt + +end \ No newline at end of file From 0c9aae6a46d5e23f3960d851740dc09d19320e2e Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Fri, 21 Jun 2024 22:50:46 +0200 Subject: [PATCH 02/37] Bump version --- NDTensors/Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NDTensors/Project.toml b/NDTensors/Project.toml index 5abbfa3f88..363b115bab 100644 --- a/NDTensors/Project.toml +++ b/NDTensors/Project.toml @@ -1,7 +1,7 @@ name = "NDTensors" uuid = "23ae76d9-e61a-49c4-8f12-3f1a16adf9cf" authors = ["Matthew Fishman "] -version = "0.3.34" +version = "0.3.35" [deps] Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" From 506a071efa8c3e3743eb06f89f1f470ed032d338 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Fri, 21 Jun 2024 22:50:52 +0200 Subject: [PATCH 03/37] format --- NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl b/NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl index 3d4591d730..416a0d20e8 100644 --- a/NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl +++ b/NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl @@ -1,3 +1,3 @@ module NDTensorsJLArraysExt -end \ No newline at end of file +end From c4dad6320d6c52ffed566ecfe6b0e49fcc087ffa Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Fri, 21 Jun 2024 22:51:09 +0200 Subject: [PATCH 04/37] Add JLArrays to test to see what we need to add in NDTensors --- NDTensors/test/NDTensorsTestUtils/device_list.jl | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/NDTensors/test/NDTensorsTestUtils/device_list.jl b/NDTensors/test/NDTensorsTestUtils/device_list.jl index 56c44d5fc4..de4639bafb 100644 --- a/NDTensors/test/NDTensorsTestUtils/device_list.jl +++ b/NDTensors/test/NDTensorsTestUtils/device_list.jl @@ -23,6 +23,10 @@ if "cutensor" in ARGS || "all" in ARGS Pkg.add("cuTENSOR") using CUDA, cuTENSOR end +if "jlarrays" in ARGS || "all" in ARGS + Pkg.add("JLArrays") + using JLArrays +end function devices_list(test_args) devs = Vector{Function}(undef, 0) @@ -47,5 +51,10 @@ function devices_list(test_args) if "metal" in test_args || "all" in test_args push!(devs, NDTensors.MetalExtensions.mtl) end + + if "jlarrays" in test_args || "all" in test_args + push!(devs, JLArrays.jl) + end + return devs end From f23d305836b92a92de6cbbcbf6a437c591699b07 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Fri, 21 Jun 2024 23:07:20 +0200 Subject: [PATCH 05/37] Add registryt to `TypeParameterAcessors --- .../ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl | 2 +- NDTensors/ext/NDTEnsorsJLArraysExt/set_types.jl | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 NDTensors/ext/NDTEnsorsJLArraysExt/set_types.jl diff --git a/NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl b/NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl index 416a0d20e8..ad71cae66b 100644 --- a/NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl +++ b/NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl @@ -1,3 +1,3 @@ module NDTensorsJLArraysExt - +include("set_types.jl") end diff --git a/NDTensors/ext/NDTEnsorsJLArraysExt/set_types.jl b/NDTensors/ext/NDTEnsorsJLArraysExt/set_types.jl new file mode 100644 index 0000000000..c859d8acc3 --- /dev/null +++ b/NDTensors/ext/NDTEnsorsJLArraysExt/set_types.jl @@ -0,0 +1,10 @@ +# TypeParameterAccessors definitions +using NDTensors.TypeParameterAccessors: TypeParameterAccessors, Position +using NDTensors.GPUArraysCoreExtensions: storagemode +using JLArrays: JLArrays, JLArray + +function TypeParameterAccessors.default_type_parameters(::Type{<:JLArray}) + return (Float64, 1) +end +TypeParameterAccessors.position(::Type{<:JLArray}, ::typeof(eltype)) = Position(1) +TypeParameterAccessors.position(::Type{<:JLArray}, ::typeof(ndims)) = Position(2) From 822411cb08bab3e7ce211bdc7336079c5c4a128c Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Sat, 22 Jun 2024 19:41:03 +0200 Subject: [PATCH 06/37] Fix spelling --- NDTensors/ext/NDTEnsorsJLArraysExt/set_types.jl | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/NDTensors/ext/NDTEnsorsJLArraysExt/set_types.jl b/NDTensors/ext/NDTEnsorsJLArraysExt/set_types.jl index c859d8acc3..b47a06ca76 100644 --- a/NDTensors/ext/NDTEnsorsJLArraysExt/set_types.jl +++ b/NDTensors/ext/NDTEnsorsJLArraysExt/set_types.jl @@ -1,10 +1,7 @@ # TypeParameterAccessors definitions using NDTensors.TypeParameterAccessors: TypeParameterAccessors, Position -using NDTensors.GPUArraysCoreExtensions: storagemode -using JLArrays: JLArrays, JLArray +using JLArrays: JLArray function TypeParameterAccessors.default_type_parameters(::Type{<:JLArray}) return (Float64, 1) end -TypeParameterAccessors.position(::Type{<:JLArray}, ::typeof(eltype)) = Position(1) -TypeParameterAccessors.position(::Type{<:JLArray}, ::typeof(ndims)) = Position(2) From e213bff9efe701465c4b6542fc0527170a8e098f Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Sat, 22 Jun 2024 19:41:32 +0200 Subject: [PATCH 07/37] remove unnecessary functions --- NDTensors/ext/NDTensorsAMDGPUExt/set_types.jl | 3 +-- NDTensors/ext/NDTensorsCUDAExt/set_types.jl | 6 ------ NDTensors/ext/NDTensorsMetalExt/set_types.jl | 7 ------- 3 files changed, 1 insertion(+), 15 deletions(-) diff --git a/NDTensors/ext/NDTensorsAMDGPUExt/set_types.jl b/NDTensors/ext/NDTensorsAMDGPUExt/set_types.jl index 59ed52b5d0..b701eafa04 100644 --- a/NDTensors/ext/NDTensorsAMDGPUExt/set_types.jl +++ b/NDTensors/ext/NDTensorsAMDGPUExt/set_types.jl @@ -6,6 +6,5 @@ using AMDGPU: AMDGPU, ROCArray function TypeParameterAccessors.default_type_parameters(::Type{<:ROCArray}) return (Float64, 1, AMDGPU.Mem.HIPBuffer) end -TypeParameterAccessors.position(::Type{<:ROCArray}, ::typeof(eltype)) = Position(1) -TypeParameterAccessors.position(::Type{<:ROCArray}, ::typeof(ndims)) = Position(2) + TypeParameterAccessors.position(::Type{<:ROCArray}, ::typeof(storagemode)) = Position(3) diff --git a/NDTensors/ext/NDTensorsCUDAExt/set_types.jl b/NDTensors/ext/NDTensorsCUDAExt/set_types.jl index 5c3d52a141..d2e5fb56d7 100644 --- a/NDTensors/ext/NDTensorsCUDAExt/set_types.jl +++ b/NDTensors/ext/NDTensorsCUDAExt/set_types.jl @@ -3,12 +3,6 @@ using CUDA: CUDA, CuArray using NDTensors.TypeParameterAccessors: TypeParameterAccessors, Position using NDTensors.GPUArraysCoreExtensions: storagemode -function TypeParameterAccessors.position(::Type{<:CuArray}, ::typeof(eltype)) - return Position(1) -end -function TypeParameterAccessors.position(::Type{<:CuArray}, ::typeof(ndims)) - return Position(2) -end function TypeParameterAccessors.position(::Type{<:CuArray}, ::typeof(storagemode)) return Position(3) end diff --git a/NDTensors/ext/NDTensorsMetalExt/set_types.jl b/NDTensors/ext/NDTensorsMetalExt/set_types.jl index 72cdbd607b..761fa089d4 100644 --- a/NDTensors/ext/NDTensorsMetalExt/set_types.jl +++ b/NDTensors/ext/NDTensorsMetalExt/set_types.jl @@ -4,13 +4,6 @@ using Metal: Metal, MtlArray using NDTensors.TypeParameterAccessors: TypeParameterAccessors, Position using NDTensors.GPUArraysCoreExtensions: storagemode -## TODO remove TypeParameterAccessors when SetParameters is removed -function TypeParameterAccessors.position(::Type{<:MtlArray}, ::typeof(eltype)) - return Position(1) -end -function TypeParameterAccessors.position(::Type{<:MtlArray}, ::typeof(ndims)) - return Position(2) -end function TypeParameterAccessors.position(::Type{<:MtlArray}, ::typeof(storagemode)) return Position(3) end From 7068a63191114aa078ea634c63150262ec02368f Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Sat, 22 Jun 2024 19:41:52 +0200 Subject: [PATCH 08/37] format --- NDTensors/test/NDTensorsTestUtils/device_list.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NDTensors/test/NDTensorsTestUtils/device_list.jl b/NDTensors/test/NDTensorsTestUtils/device_list.jl index de4639bafb..d45561c0f8 100644 --- a/NDTensors/test/NDTensorsTestUtils/device_list.jl +++ b/NDTensors/test/NDTensorsTestUtils/device_list.jl @@ -51,10 +51,10 @@ function devices_list(test_args) if "metal" in test_args || "all" in test_args push!(devs, NDTensors.MetalExtensions.mtl) end - + if "jlarrays" in test_args || "all" in test_args push!(devs, JLArrays.jl) end - + return devs end From b8b46a36f79e11b40e57b56d90cf952a131e4d87 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Sat, 22 Jun 2024 19:43:12 +0200 Subject: [PATCH 09/37] Remove dir --- NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl | 3 --- NDTensors/ext/NDTEnsorsJLArraysExt/set_types.jl | 7 ------- 2 files changed, 10 deletions(-) delete mode 100644 NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl delete mode 100644 NDTensors/ext/NDTEnsorsJLArraysExt/set_types.jl diff --git a/NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl b/NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl deleted file mode 100644 index ad71cae66b..0000000000 --- a/NDTensors/ext/NDTEnsorsJLArraysExt/NDTensorsJLArraysExt.jl +++ /dev/null @@ -1,3 +0,0 @@ -module NDTensorsJLArraysExt -include("set_types.jl") -end diff --git a/NDTensors/ext/NDTEnsorsJLArraysExt/set_types.jl b/NDTensors/ext/NDTEnsorsJLArraysExt/set_types.jl deleted file mode 100644 index b47a06ca76..0000000000 --- a/NDTensors/ext/NDTEnsorsJLArraysExt/set_types.jl +++ /dev/null @@ -1,7 +0,0 @@ -# TypeParameterAccessors definitions -using NDTensors.TypeParameterAccessors: TypeParameterAccessors, Position -using JLArrays: JLArray - -function TypeParameterAccessors.default_type_parameters(::Type{<:JLArray}) - return (Float64, 1) -end From fd0866e063effc829533adbf7bbdb233511c3711 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Sat, 22 Jun 2024 19:43:39 +0200 Subject: [PATCH 10/37] rename folder --- NDTensors/ext/NDTensorsJLArraysExt/NDTensorsJLArraysExt.jl | 3 +++ NDTensors/ext/NDTensorsJLArraysExt/set_types.jl | 7 +++++++ 2 files changed, 10 insertions(+) create mode 100644 NDTensors/ext/NDTensorsJLArraysExt/NDTensorsJLArraysExt.jl create mode 100644 NDTensors/ext/NDTensorsJLArraysExt/set_types.jl diff --git a/NDTensors/ext/NDTensorsJLArraysExt/NDTensorsJLArraysExt.jl b/NDTensors/ext/NDTensorsJLArraysExt/NDTensorsJLArraysExt.jl new file mode 100644 index 0000000000..ad71cae66b --- /dev/null +++ b/NDTensors/ext/NDTensorsJLArraysExt/NDTensorsJLArraysExt.jl @@ -0,0 +1,3 @@ +module NDTensorsJLArraysExt +include("set_types.jl") +end diff --git a/NDTensors/ext/NDTensorsJLArraysExt/set_types.jl b/NDTensors/ext/NDTensorsJLArraysExt/set_types.jl new file mode 100644 index 0000000000..b47a06ca76 --- /dev/null +++ b/NDTensors/ext/NDTensorsJLArraysExt/set_types.jl @@ -0,0 +1,7 @@ +# TypeParameterAccessors definitions +using NDTensors.TypeParameterAccessors: TypeParameterAccessors, Position +using JLArrays: JLArray + +function TypeParameterAccessors.default_type_parameters(::Type{<:JLArray}) + return (Float64, 1) +end From 2caf2d11da62da9c7ce8a54fcaa1fbf2fc00d5cb Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Sat, 22 Jun 2024 19:45:10 +0200 Subject: [PATCH 11/37] [no ci] alphabetize libraries Co-authored-by: Matt Fishman --- NDTensors/Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NDTensors/Project.toml b/NDTensors/Project.toml index 363b115bab..1e3d7c43a4 100644 --- a/NDTensors/Project.toml +++ b/NDTensors/Project.toml @@ -48,7 +48,7 @@ NDTensorsAMDGPUExt = ["AMDGPU", "GPUArraysCore"] NDTensorsCUDAExt = ["CUDA", "GPUArraysCore"] NDTensorsGPUArraysCoreExt = "GPUArraysCore" NDTensorsHDF5Ext = "HDF5" -NDTensorsJLArraysExt = ["JLArrays", "GPUArraysCore"] +NDTensorsJLArraysExt = ["GPUArraysCore", "JLArrays"] NDTensorsMappedArraysExt = ["MappedArrays"] NDTensorsMetalExt = ["GPUArraysCore", "Metal"] NDTensorsOctavianExt = "Octavian" From 0f1f2771fb865260687af80c0f82edbaa1333c76 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Sun, 23 Jun 2024 22:48:16 +0200 Subject: [PATCH 12/37] Add JLArrays as dep and move CUDA to extras --- NDTensors/test/Project.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NDTensors/test/Project.toml b/NDTensors/test/Project.toml index d2c66c4051..bc773d869c 100644 --- a/NDTensors/test/Project.toml +++ b/NDTensors/test/Project.toml @@ -1,7 +1,6 @@ [deps] Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" -CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" Compat = "34da2185-b29b-5c13-b0c7-acf172513d20" Dictionaries = "85a47980-9c8c-11e8-2b9f-f7ca1fa99fb4" @@ -9,6 +8,7 @@ EllipsisNotation = "da5c29d0-fa7d-589e-88eb-ea29b0a81949" FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b" GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" ITensors = "9136182c-28ba-11e9-034c-db9fb085ebd5" +JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" MappedArrays = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" NDTensors = "23ae76d9-e61a-49c4-8f12-3f1a16adf9cf" @@ -29,5 +29,6 @@ cuTENSOR = "2.0" [extras] AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" +CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Metal = "dde4c033-4e86-420c-a63e-0dd931031962" cuTENSOR = "011b41b2-24ef-40a8-b3eb-fa098493e9e1" From 95881d5dbbfb86825314845bdc59b1070ea5c13a Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Sun, 23 Jun 2024 23:10:43 +0200 Subject: [PATCH 13/37] Moving to make JLArrays always run --- NDTensors/test/NDTensorsTestUtils/device_list.jl | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/NDTensors/test/NDTensorsTestUtils/device_list.jl b/NDTensors/test/NDTensorsTestUtils/device_list.jl index d45561c0f8..befdea3a3b 100644 --- a/NDTensors/test/NDTensorsTestUtils/device_list.jl +++ b/NDTensors/test/NDTensorsTestUtils/device_list.jl @@ -1,5 +1,7 @@ -using NDTensors: NDTensors using Pkg: Pkg +using JLArrays +using NDTensors: NDTensors + if "cuda" in ARGS || "all" in ARGS ## Right now adding CUDA during Pkg.test results in a ## compat issues. I am adding it back to test/Project.toml @@ -23,15 +25,12 @@ if "cutensor" in ARGS || "all" in ARGS Pkg.add("cuTENSOR") using CUDA, cuTENSOR end -if "jlarrays" in ARGS || "all" in ARGS - Pkg.add("JLArrays") - using JLArrays -end function devices_list(test_args) devs = Vector{Function}(undef, 0) if isempty(test_args) || "base" in test_args push!(devs, NDTensors.cpu) + # push!(devs, jl) end if "cuda" in test_args || "cutensor" in test_args || "all" in test_args @@ -52,9 +51,5 @@ function devices_list(test_args) push!(devs, NDTensors.MetalExtensions.mtl) end - if "jlarrays" in test_args || "all" in test_args - push!(devs, JLArrays.jl) - end - return devs end From 0acdaec8c4f3f5933486f5ea3b5ab909053ea1d0 Mon Sep 17 00:00:00 2001 From: kmp5VT Date: Sun, 23 Jun 2024 17:28:06 -0400 Subject: [PATCH 14/37] Add cuda to see if theres still issues on Jenkins (my machine is fine) --- NDTensors/test/NDTensorsTestUtils/device_list.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NDTensors/test/NDTensorsTestUtils/device_list.jl b/NDTensors/test/NDTensorsTestUtils/device_list.jl index befdea3a3b..df2c59ff70 100644 --- a/NDTensors/test/NDTensorsTestUtils/device_list.jl +++ b/NDTensors/test/NDTensorsTestUtils/device_list.jl @@ -5,7 +5,7 @@ using NDTensors: NDTensors if "cuda" in ARGS || "all" in ARGS ## Right now adding CUDA during Pkg.test results in a ## compat issues. I am adding it back to test/Project.toml - # Pkg.add("CUDA") + Pkg.add("CUDA") using CUDA end if "rocm" in ARGS || "all" in ARGS From a4687bd0c8193a6f2e9777f9cacf1e7b8cacd02a Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Sun, 23 Jun 2024 23:48:20 +0200 Subject: [PATCH 15/37] Fix import --- NDTensors/test/NDTensorsTestUtils/device_list.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NDTensors/test/NDTensorsTestUtils/device_list.jl b/NDTensors/test/NDTensorsTestUtils/device_list.jl index df2c59ff70..9de04b2d07 100644 --- a/NDTensors/test/NDTensorsTestUtils/device_list.jl +++ b/NDTensors/test/NDTensorsTestUtils/device_list.jl @@ -1,5 +1,5 @@ using Pkg: Pkg -using JLArrays +using JLArrays: JLArrays using NDTensors: NDTensors if "cuda" in ARGS || "all" in ARGS From cdee270c824c003c8f095ad95ef42a135c7699bb Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Sun, 23 Jun 2024 23:56:10 +0200 Subject: [PATCH 16/37] Add Extension functions to JLArrays --- .../NDTensorsJLArraysExt.jl | 5 ++ NDTensors/ext/NDTensorsJLArraysExt/copyto.jl | 30 ++++++++++++ .../ext/NDTensorsJLArraysExt/indexing.jl | 19 ++++++++ .../ext/NDTensorsJLArraysExt/linearalgebra.jl | 16 +++++++ NDTensors/ext/NDTensorsJLArraysExt/mul.jl | 47 +++++++++++++++++++ .../ext/NDTensorsJLArraysExt/permutedims.jl | 24 ++++++++++ 6 files changed, 141 insertions(+) create mode 100644 NDTensors/ext/NDTensorsJLArraysExt/copyto.jl create mode 100644 NDTensors/ext/NDTensorsJLArraysExt/indexing.jl create mode 100644 NDTensors/ext/NDTensorsJLArraysExt/linearalgebra.jl create mode 100644 NDTensors/ext/NDTensorsJLArraysExt/mul.jl create mode 100644 NDTensors/ext/NDTensorsJLArraysExt/permutedims.jl diff --git a/NDTensors/ext/NDTensorsJLArraysExt/NDTensorsJLArraysExt.jl b/NDTensors/ext/NDTensorsJLArraysExt/NDTensorsJLArraysExt.jl index ad71cae66b..b4d63b7045 100644 --- a/NDTensors/ext/NDTensorsJLArraysExt/NDTensorsJLArraysExt.jl +++ b/NDTensors/ext/NDTensorsJLArraysExt/NDTensorsJLArraysExt.jl @@ -1,3 +1,8 @@ module NDTensorsJLArraysExt +include("copyto.jl") +include("indexing.jl") +include("linearalgebra.jl") +include("mul.jl") +include("permutedims.jl") include("set_types.jl") end diff --git a/NDTensors/ext/NDTensorsJLArraysExt/copyto.jl b/NDTensors/ext/NDTensorsJLArraysExt/copyto.jl new file mode 100644 index 0000000000..e0fe1eb99d --- /dev/null +++ b/NDTensors/ext/NDTensorsJLArraysExt/copyto.jl @@ -0,0 +1,30 @@ +using JLArrays: JLArray +using NDTensors.Expose: Exposed, expose, unexpose +using LinearAlgebra: Adjoint + +# Same definition as `CuArray`. +function Base.copy(src::Exposed{<:JLArray,<:Base.ReshapedArray}) + return reshape(copy(parent(src)), size(unexpose(src))) +end + +function Base.copy( + src::Exposed{ + <:JLArray,<:SubArray{<:Any,<:Any,<:Base.ReshapedArray{<:Any,<:Any,<:Adjoint}} + }, +) + return copy(@view copy(expose(parent(src)))[parentindices(unexpose(src))...]) +end + +# Catches a bug in `copyto!` in CUDA backend. +function Base.copyto!(dest::Exposed{<:JLArray}, src::Exposed{<:JLArray,<:SubArray}) + copyto!(dest, expose(copy(src))) + return unexpose(dest) +end + +# Catches a bug in `copyto!` in JLArray backend. +function Base.copyto!( + dest::Exposed{<:JLArray}, src::Exposed{<:JLArray,<:Base.ReshapedArray} +) + copyto!(dest, expose(parent(src))) + return unexpose(dest) +end diff --git a/NDTensors/ext/NDTensorsJLArraysExt/indexing.jl b/NDTensors/ext/NDTensorsJLArraysExt/indexing.jl new file mode 100644 index 0000000000..0f6eeb0469 --- /dev/null +++ b/NDTensors/ext/NDTensorsJLArraysExt/indexing.jl @@ -0,0 +1,19 @@ +using JLArrays: JLArray +using GPUArraysCore: @allowscalar +using NDTensors: NDTensors +using NDTensors.Expose: Exposed, expose, unexpose + +function Base.getindex(E::Exposed{<:JLArray}) + return @allowscalar unexpose(E)[] +end + +function Base.setindex!(E::Exposed{<:JLArray}, x::Number) + @allowscalar unexpose(E)[] = x + return unexpose(E) +end + +function Base.getindex(E::Exposed{<:JLArray,<:Adjoint}, i, j) + return (expose(parent(E))[j, i])' +end + +Base.any(f, E::Exposed{<:JLArray,<:NDTensors.Tensor}) = any(f, data(unexpose(E))) diff --git a/NDTensors/ext/NDTensorsJLArraysExt/linearalgebra.jl b/NDTensors/ext/NDTensorsJLArraysExt/linearalgebra.jl new file mode 100644 index 0000000000..4edabb6ad2 --- /dev/null +++ b/NDTensors/ext/NDTensorsJLArraysExt/linearalgebra.jl @@ -0,0 +1,16 @@ +using Adapt: adapt +using JLArrays: JLMatrix +using NDTensors: NDTensors +using NDTensors.Expose: Expose, expose, ql, ql_positive +using NDTensors.GPUArraysCoreExtensions: cpu +using NDTensors.TypeParameterAccessors: unwrap_array_type + +## TODO currently AMDGPU doesn't have ql so make a ql function +function Expose.ql(A::Exposed{<:JLMatrix}) + Q, L = ql(expose(cpu(A))) + return adapt(unwrap_array_type(A), Matrix(Q)), adapt(unwrap_array_type(A), L) +end +function Expose.ql_positive(A::Exposed{<:JLMatrix}) + Q, L = ql_positive(expose(cpu(A))) + return adapt(unwrap_array_type(A), Matrix(Q)), adapt(unwrap_array_type(A), L) +end diff --git a/NDTensors/ext/NDTensorsJLArraysExt/mul.jl b/NDTensors/ext/NDTensorsJLArraysExt/mul.jl new file mode 100644 index 0000000000..ac42e1b814 --- /dev/null +++ b/NDTensors/ext/NDTensorsJLArraysExt/mul.jl @@ -0,0 +1,47 @@ +using JLArrays: JLArray +using LinearAlgebra: LinearAlgebra, mul!, transpose +using NDTensors.Expose: Exposed, expose, unexpose + +# This was calling generic matrix multiplication. +# TODO: Raise an issue with `CUDA.jl`. +function LinearAlgebra.mul!( + CM::Exposed{<:JLArray,<:LinearAlgebra.Transpose}, + AM::Exposed{<:JLArray}, + BM::Exposed{<:JLArray}, + α, + β, +) + mul!(transpose(CM), transpose(BM), transpose(AM), α, β) + return unexpose(CM) +end + +# This was calling generic matrix multiplication. +# TODO: Raise an issue with `CUDA.jl`. +function LinearAlgebra.mul!( + CM::Exposed{<:JLArray,<:LinearAlgebra.Adjoint}, + AM::Exposed{<:JLArray}, + BM::Exposed{<:JLArray}, + α, + β, +) + mul!(CM', BM', AM', α, β) + return unexpose(CM) +end + +## Fix issue in CUDA.jl where it cannot distinguish Transpose{Reshape{Adjoint{JLArray}}} +## as a JLArray and calls generic matmul +function LinearAlgebra.mul!( + CM::Exposed{<:JLArray}, + AM::Exposed{<:JLArray}, + BM::Exposed{ + <:JLArray, + <:LinearAlgebra.Transpose{ + <:Any,<:Base.ReshapedArray{<:Any,<:Any,<:LinearAlgebra.Adjoint} + }, + }, + α, + β, +) + mul!(CM, AM, expose(transpose(copy(expose(parent(BM))))), α, β) + return unexpose(CM) +end diff --git a/NDTensors/ext/NDTensorsJLArraysExt/permutedims.jl b/NDTensors/ext/NDTensorsJLArraysExt/permutedims.jl new file mode 100644 index 0000000000..4bbd5833c4 --- /dev/null +++ b/NDTensors/ext/NDTensorsJLArraysExt/permutedims.jl @@ -0,0 +1,24 @@ +using JLArrays: JLArray +using LinearAlgebra: Adjoint +using NDTensors.Expose: Exposed, expose, unexpose + +function Base.permutedims!( + Edest::Exposed{<:JLArray,<:Base.ReshapedArray}, Esrc::Exposed{<:JLArray}, perm +) + Aperm = permutedims(Esrc, perm) + copyto!(expose(parent(Edest)), expose(Aperm)) + return unexpose(Edest) +end + +## Found an issue in CUDA where if Edest is a reshaped{<:Adjoint} +## .= can fail. So instead force Esrc into the shape of parent(Edest) +function Base.permutedims!( + Edest::Exposed{<:JLArray,<:Base.ReshapedArray{<:Any,<:Any,<:Adjoint}}, + Esrc::Exposed{<:JLArray}, + perm, + f, +) + Aperm = reshape(permutedims(Esrc, perm), size(parent(Edest))) + parent(Edest) .= f.(parent(Edest), Aperm) + return unexpose(Edest) +end From bdacf0e0256691cbcbe656ed1bad8fa98fc9117b Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Thu, 27 Jun 2024 18:23:09 +0200 Subject: [PATCH 17/37] Fix the linear algebra and add jl to base tests --- .../ext/NDTensorsJLArraysExt/linearalgebra.jl | 34 ++++++++++++++++--- .../test/NDTensorsTestUtils/device_list.jl | 4 +-- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/NDTensors/ext/NDTensorsJLArraysExt/linearalgebra.jl b/NDTensors/ext/NDTensorsJLArraysExt/linearalgebra.jl index 4edabb6ad2..04cd6a4885 100644 --- a/NDTensors/ext/NDTensorsJLArraysExt/linearalgebra.jl +++ b/NDTensors/ext/NDTensorsJLArraysExt/linearalgebra.jl @@ -1,16 +1,40 @@ using Adapt: adapt -using JLArrays: JLMatrix +using JLArrays: JLArray, JLMatrix +using LinearAlgebra: LinearAlgebra, Hermitian, Symmetric, qr, eigen using NDTensors: NDTensors -using NDTensors.Expose: Expose, expose, ql, ql_positive +using NDTensors.Expose: Expose, expose, qr, qr_positive, ql, ql_positive using NDTensors.GPUArraysCoreExtensions: cpu using NDTensors.TypeParameterAccessors: unwrap_array_type -## TODO currently AMDGPU doesn't have ql so make a ql function +## TODO this function exists because of the same issue below. when +## that issue is resolved we can rely on the abstractarray version of +## this operation. +function Expose.qr(A::Exposed{<:JLArray}) + Q, L = qr(unexpose(A)) + return adapt(unwrap_array_type(A), Matrix(Q)), adapt(unwrap_array_type(A), L) +end +## TODO this should work using a JLArray but there is an error converting the Q from its packed QR from +## back into a JLArray see https://github.com/JuliaGPU/GPUArrays.jl/issues/545. To fix call cpu for now +function Expose.qr_positive(A::Exposed{<:JLArray}) + Q, L = qr_positive(expose(cpu(A))) + return adapt(unwrap_array_type(A), copy(Q)), adapt(unwrap_array_type(A), L) +end + function Expose.ql(A::Exposed{<:JLMatrix}) Q, L = ql(expose(cpu(A))) - return adapt(unwrap_array_type(A), Matrix(Q)), adapt(unwrap_array_type(A), L) + return adapt(unwrap_array_type(A), copy(Q)), adapt(unwrap_array_type(A), L) end function Expose.ql_positive(A::Exposed{<:JLMatrix}) Q, L = ql_positive(expose(cpu(A))) - return adapt(unwrap_array_type(A), Matrix(Q)), adapt(unwrap_array_type(A), L) + return adapt(unwrap_array_type(A), copy(Q)), adapt(unwrap_array_type(A), L) +end + +function LinearAlgebra.eigen(A::Exposed{<:JLMatrix, <:Symmetric}) + q,l = (eigen(expose(cpu(A)))) + return adapt.(unwrap_array_type(A), (q,l)) end + +function LinearAlgebra.eigen(A::Exposed{<:JLMatrix, <:Hermitian}) + q,l = (eigen(expose(Hermitian(cpu(unexpose(A).data))))) + return adapt.(JLArray, (q,l)) +end \ No newline at end of file diff --git a/NDTensors/test/NDTensorsTestUtils/device_list.jl b/NDTensors/test/NDTensorsTestUtils/device_list.jl index 9de04b2d07..cbabf14a18 100644 --- a/NDTensors/test/NDTensorsTestUtils/device_list.jl +++ b/NDTensors/test/NDTensorsTestUtils/device_list.jl @@ -1,5 +1,5 @@ using Pkg: Pkg -using JLArrays: JLArrays +using JLArrays: JLArrays, jl using NDTensors: NDTensors if "cuda" in ARGS || "all" in ARGS @@ -30,7 +30,7 @@ function devices_list(test_args) devs = Vector{Function}(undef, 0) if isempty(test_args) || "base" in test_args push!(devs, NDTensors.cpu) - # push!(devs, jl) + push!(devs, jl) end if "cuda" in test_args || "cutensor" in test_args || "all" in test_args From d2be3b37c68e3a5587ed4d8d6c56e31dd2ec1a6b Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Thu, 27 Jun 2024 18:44:07 +0200 Subject: [PATCH 18/37] format --- .../ext/NDTensorsJLArraysExt/linearalgebra.jl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/NDTensors/ext/NDTensorsJLArraysExt/linearalgebra.jl b/NDTensors/ext/NDTensorsJLArraysExt/linearalgebra.jl index 04cd6a4885..4d594050f1 100644 --- a/NDTensors/ext/NDTensorsJLArraysExt/linearalgebra.jl +++ b/NDTensors/ext/NDTensorsJLArraysExt/linearalgebra.jl @@ -29,12 +29,12 @@ function Expose.ql_positive(A::Exposed{<:JLMatrix}) return adapt(unwrap_array_type(A), copy(Q)), adapt(unwrap_array_type(A), L) end -function LinearAlgebra.eigen(A::Exposed{<:JLMatrix, <:Symmetric}) - q,l = (eigen(expose(cpu(A)))) - return adapt.(unwrap_array_type(A), (q,l)) +function LinearAlgebra.eigen(A::Exposed{<:JLMatrix,<:Symmetric}) + q, l = (eigen(expose(cpu(A)))) + return adapt.(unwrap_array_type(A), (q, l)) end -function LinearAlgebra.eigen(A::Exposed{<:JLMatrix, <:Hermitian}) - q,l = (eigen(expose(Hermitian(cpu(unexpose(A).data))))) - return adapt.(JLArray, (q,l)) -end \ No newline at end of file +function LinearAlgebra.eigen(A::Exposed{<:JLMatrix,<:Hermitian}) + q, l = (eigen(expose(Hermitian(cpu(unexpose(A).data))))) + return adapt.(JLArray, (q, l)) +end From 942851418ca3294ef3d4263df6ad8d64097c550b Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Thu, 27 Jun 2024 18:45:53 +0200 Subject: [PATCH 19/37] Try activate before update registry --- jenkins/Jenkinsfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/jenkins/Jenkinsfile b/jenkins/Jenkinsfile index c50a7c874c..07e4e8b550 100644 --- a/jenkins/Jenkinsfile +++ b/jenkins/Jenkinsfile @@ -27,7 +27,7 @@ pipeline { } steps { sh ''' - julia -e 'using Pkg; Pkg.Registry.update(); Pkg.update(); Pkg.activate(temp=true); Pkg.develop(path="./NDTensors"); Pkg.develop(path="."); Pkg.test("NDTensors"; test_args=["cuda"])' + julia -e 'using Pkg; Pkg.activate(temp=true); Pkg.Registry.update(); Pkg.update(); Pkg.develop(path="./NDTensors"); Pkg.develop(path="."); Pkg.test("NDTensors"; test_args=["cuda"])' ''' } } @@ -51,7 +51,7 @@ pipeline { } steps { sh ''' - julia -e 'using Pkg; Pkg.Registry.update(); Pkg.update(); Pkg.activate(temp=true); Pkg.develop(path="./NDTensors"); Pkg.develop(path="."); Pkg.test("NDTensors"; test_args=["cuda"])' + julia -e 'using Pkg; Pkg.activate(temp=true); Pkg.Registry.update(); Pkg.update(); Pkg.develop(path="./NDTensors"); Pkg.develop(path="."); Pkg.test("NDTensors"; test_args=["cuda"])' ''' } } @@ -75,7 +75,7 @@ pipeline { } steps { sh ''' - julia -e 'using Pkg; Pkg.Registry.update(); Pkg.update(); Pkg.activate(temp=true); Pkg.develop(path="./NDTensors"); Pkg.develop(path="."); Pkg.test("NDTensors"; test_args=["cutensor"])' + julia -e 'using Pkg; Pkg.activate(temp=true); Pkg.Registry.update(); Pkg.update(); Pkg.develop(path="./NDTensors"); Pkg.develop(path="."); Pkg.test("NDTensors"; test_args=["cutensor"])' ''' } } From 9165664c34724bf130ef9f9f9b34034eeee680db Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Thu, 27 Jun 2024 23:27:49 +0200 Subject: [PATCH 20/37] Move cuda back to deps --- NDTensors/test/Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NDTensors/test/Project.toml b/NDTensors/test/Project.toml index bc773d869c..6aec54c435 100644 --- a/NDTensors/test/Project.toml +++ b/NDTensors/test/Project.toml @@ -3,6 +3,7 @@ Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" Compat = "34da2185-b29b-5c13-b0c7-acf172513d20" +CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Dictionaries = "85a47980-9c8c-11e8-2b9f-f7ca1fa99fb4" EllipsisNotation = "da5c29d0-fa7d-589e-88eb-ea29b0a81949" FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b" @@ -29,6 +30,5 @@ cuTENSOR = "2.0" [extras] AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" -CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Metal = "dde4c033-4e86-420c-a63e-0dd931031962" cuTENSOR = "011b41b2-24ef-40a8-b3eb-fa098493e9e1" From 1cd131dc91562b2b6dd73fa6b7f0b5ea2799cc0f Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Fri, 28 Jun 2024 09:54:54 +0200 Subject: [PATCH 21/37] There is some issues with JLArrays on lower versions of Julia --- NDTensors/test/NDTensorsTestUtils/device_list.jl | 7 ++++++- NDTensors/test/Project.toml | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/NDTensors/test/NDTensorsTestUtils/device_list.jl b/NDTensors/test/NDTensorsTestUtils/device_list.jl index cbabf14a18..e798d04c46 100644 --- a/NDTensors/test/NDTensorsTestUtils/device_list.jl +++ b/NDTensors/test/NDTensorsTestUtils/device_list.jl @@ -23,6 +23,7 @@ if "cutensor" in ARGS || "all" in ARGS Pkg.rm("TensorOperations") end Pkg.add("cuTENSOR") + Pkg.add("CUDA") using CUDA, cuTENSOR end @@ -30,7 +31,11 @@ function devices_list(test_args) devs = Vector{Function}(undef, 0) if isempty(test_args) || "base" in test_args push!(devs, NDTensors.cpu) - push!(devs, jl) + ## Skip jl on lower versions of Julia for now + ## all linear algebra is failing on Julia 1.6 with JLArrays + if VERSION > v"1.7" + push!(devs, jl) + end end if "cuda" in test_args || "cutensor" in test_args || "all" in test_args diff --git a/NDTensors/test/Project.toml b/NDTensors/test/Project.toml index 6aec54c435..bc773d869c 100644 --- a/NDTensors/test/Project.toml +++ b/NDTensors/test/Project.toml @@ -3,7 +3,6 @@ Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" Compat = "34da2185-b29b-5c13-b0c7-acf172513d20" -CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Dictionaries = "85a47980-9c8c-11e8-2b9f-f7ca1fa99fb4" EllipsisNotation = "da5c29d0-fa7d-589e-88eb-ea29b0a81949" FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b" @@ -30,5 +29,6 @@ cuTENSOR = "2.0" [extras] AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" +CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Metal = "dde4c033-4e86-420c-a63e-0dd931031962" cuTENSOR = "011b41b2-24ef-40a8-b3eb-fa098493e9e1" From 8a32daf7a4fb05d47874259566fa36f25522b9f8 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Tue, 2 Jul 2024 10:44:32 +0200 Subject: [PATCH 22/37] add back cuda --- NDTensors/test/Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NDTensors/test/Project.toml b/NDTensors/test/Project.toml index bc773d869c..ef1954abb3 100644 --- a/NDTensors/test/Project.toml +++ b/NDTensors/test/Project.toml @@ -1,6 +1,7 @@ [deps] Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" +CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" Compat = "34da2185-b29b-5c13-b0c7-acf172513d20" Dictionaries = "85a47980-9c8c-11e8-2b9f-f7ca1fa99fb4" @@ -29,6 +30,5 @@ cuTENSOR = "2.0" [extras] AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" -CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Metal = "dde4c033-4e86-420c-a63e-0dd931031962" cuTENSOR = "011b41b2-24ef-40a8-b3eb-fa098493e9e1" From ad020662861d1304ca87ed4d4f61917e00a0aafa Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Tue, 2 Jul 2024 11:47:02 +0200 Subject: [PATCH 23/37] Having JLArrays when testing GPUs creates an issue in test --- NDTensors/test/NDTensorsTestUtils/device_list.jl | 5 ++++- NDTensors/test/Project.toml | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/NDTensors/test/NDTensorsTestUtils/device_list.jl b/NDTensors/test/NDTensorsTestUtils/device_list.jl index e798d04c46..875eab94a9 100644 --- a/NDTensors/test/NDTensorsTestUtils/device_list.jl +++ b/NDTensors/test/NDTensorsTestUtils/device_list.jl @@ -1,5 +1,4 @@ using Pkg: Pkg -using JLArrays: JLArrays, jl using NDTensors: NDTensors if "cuda" in ARGS || "all" in ARGS @@ -26,6 +25,10 @@ if "cutensor" in ARGS || "all" in ARGS Pkg.add("CUDA") using CUDA, cuTENSOR end +if isempty(ARGS) || "base" in ARGS + Pkg.add("JLArrays") + using JLArrays: jl +end function devices_list(test_args) devs = Vector{Function}(undef, 0) diff --git a/NDTensors/test/Project.toml b/NDTensors/test/Project.toml index ef1954abb3..b1826e9588 100644 --- a/NDTensors/test/Project.toml +++ b/NDTensors/test/Project.toml @@ -9,7 +9,6 @@ EllipsisNotation = "da5c29d0-fa7d-589e-88eb-ea29b0a81949" FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b" GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" ITensors = "9136182c-28ba-11e9-034c-db9fb085ebd5" -JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" MappedArrays = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" NDTensors = "23ae76d9-e61a-49c4-8f12-3f1a16adf9cf" @@ -30,5 +29,6 @@ cuTENSOR = "2.0" [extras] AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" +JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" Metal = "dde4c033-4e86-420c-a63e-0dd931031962" cuTENSOR = "011b41b2-24ef-40a8-b3eb-fa098493e9e1" From 8534859349f538db65a2a8aec0193f9c45385589 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Tue, 2 Jul 2024 12:16:17 +0200 Subject: [PATCH 24/37] Not using JLArrays in early versions of Julia --- NDTensors/test/NDTensorsTestUtils/device_list.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NDTensors/test/NDTensorsTestUtils/device_list.jl b/NDTensors/test/NDTensorsTestUtils/device_list.jl index 875eab94a9..2555bde22d 100644 --- a/NDTensors/test/NDTensorsTestUtils/device_list.jl +++ b/NDTensors/test/NDTensorsTestUtils/device_list.jl @@ -25,7 +25,7 @@ if "cutensor" in ARGS || "all" in ARGS Pkg.add("CUDA") using CUDA, cuTENSOR end -if isempty(ARGS) || "base" in ARGS +if isempty(ARGS) || VERSION > v"1.7" Pkg.add("JLArrays") using JLArrays: jl end From e2aa1948d6a3c3a1e6aaf09c953248141a957ed8 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Tue, 2 Jul 2024 14:54:09 +0200 Subject: [PATCH 25/37] Move CUDA to extra --- NDTensors/test/Project.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NDTensors/test/Project.toml b/NDTensors/test/Project.toml index b1826e9588..0213caf7ad 100644 --- a/NDTensors/test/Project.toml +++ b/NDTensors/test/Project.toml @@ -1,7 +1,6 @@ [deps] Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" -CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" Compat = "34da2185-b29b-5c13-b0c7-acf172513d20" Dictionaries = "85a47980-9c8c-11e8-2b9f-f7ca1fa99fb4" @@ -24,11 +23,12 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" [compat] -Metal = "1.1.0" cuTENSOR = "2.0" +Metal = "1.1.0" [extras] AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" +CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" Metal = "dde4c033-4e86-420c-a63e-0dd931031962" cuTENSOR = "011b41b2-24ef-40a8-b3eb-fa098493e9e1" From 107840546763c8983bafc7e0636aad58636607e8 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Tue, 2 Jul 2024 17:45:24 +0200 Subject: [PATCH 26/37] Add JLArrays back to deps --- NDTensors/test/NDTensorsTestUtils/device_list.jl | 6 ++---- NDTensors/test/Project.toml | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/NDTensors/test/NDTensorsTestUtils/device_list.jl b/NDTensors/test/NDTensorsTestUtils/device_list.jl index 2555bde22d..0b42644410 100644 --- a/NDTensors/test/NDTensorsTestUtils/device_list.jl +++ b/NDTensors/test/NDTensorsTestUtils/device_list.jl @@ -25,10 +25,8 @@ if "cutensor" in ARGS || "all" in ARGS Pkg.add("CUDA") using CUDA, cuTENSOR end -if isempty(ARGS) || VERSION > v"1.7" - Pkg.add("JLArrays") - using JLArrays: jl -end + +using JLArrays: jl function devices_list(test_args) devs = Vector{Function}(undef, 0) diff --git a/NDTensors/test/Project.toml b/NDTensors/test/Project.toml index 0213caf7ad..5244d98895 100644 --- a/NDTensors/test/Project.toml +++ b/NDTensors/test/Project.toml @@ -8,6 +8,7 @@ EllipsisNotation = "da5c29d0-fa7d-589e-88eb-ea29b0a81949" FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b" GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" ITensors = "9136182c-28ba-11e9-034c-db9fb085ebd5" +JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" MappedArrays = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" NDTensors = "23ae76d9-e61a-49c4-8f12-3f1a16adf9cf" @@ -29,6 +30,5 @@ Metal = "1.1.0" [extras] AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" -JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" Metal = "dde4c033-4e86-420c-a63e-0dd931031962" cuTENSOR = "011b41b2-24ef-40a8-b3eb-fa098493e9e1" From f47cf11fb8f21a17a4c9d762214b5684a3a52ea1 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Wed, 3 Jul 2024 10:14:17 +0200 Subject: [PATCH 27/37] Bump CUDA test from 1.6 to 1.8 --- jenkins/Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jenkins/Jenkinsfile b/jenkins/Jenkinsfile index 07e4e8b550..3863d4682e 100644 --- a/jenkins/Jenkinsfile +++ b/jenkins/Jenkinsfile @@ -7,7 +7,7 @@ pipeline { stages { stage('GPU Testing') { parallel { - stage('NDTensorsCUDAExt julia-1.6') { + stage('NDTensorsCUDAExt julia-1.8') { options { timeout(time: 45, unit: 'MINUTES') } @@ -16,7 +16,7 @@ pipeline { label 'gpu&&v100' filename 'Dockerfile' dir 'jenkins' - additionalBuildArgs '--build-arg JULIA=1.6' + additionalBuildArgs '--build-arg JULIA=1.8' args '--gpus "device=0"' } } From 094c3e3bd465b0c60c347d8adc844d1234a4bd01 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Tue, 9 Jul 2024 19:05:15 +0200 Subject: [PATCH 28/37] Small fix --- NDTensors/test/NDTensorsTestUtils/device_list.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NDTensors/test/NDTensorsTestUtils/device_list.jl b/NDTensors/test/NDTensorsTestUtils/device_list.jl index 0b42644410..d0cda58b16 100644 --- a/NDTensors/test/NDTensorsTestUtils/device_list.jl +++ b/NDTensors/test/NDTensorsTestUtils/device_list.jl @@ -26,7 +26,7 @@ if "cutensor" in ARGS || "all" in ARGS using CUDA, cuTENSOR end -using JLArrays: jl +using JLArrays: JLArrays, jl function devices_list(test_args) devs = Vector{Function}(undef, 0) From 1a14a339acd7a55f05dcbfd97a63d090102a1155 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Thu, 5 Sep 2024 10:26:42 -0400 Subject: [PATCH 29/37] Sparse arrays compat for lower versions --- NDTensors/Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NDTensors/Project.toml b/NDTensors/Project.toml index 85e8c1bc08..582db6330a 100644 --- a/NDTensors/Project.toml +++ b/NDTensors/Project.toml @@ -81,7 +81,7 @@ Octavian = "0.3" PackageExtensionCompat = "1" Random = "1.6" SimpleTraits = "0.9.4" -SparseArrays = "1.6" +SparseArrays = "<0.0.1, 1.6" SplitApplyCombine = "1.2.2" StaticArrays = "0.12, 1.0" Strided = "2" From 0aee39493ab01f9bf0ec74dcbfffc705898bf9fe Mon Sep 17 00:00:00 2001 From: Matt Fishman Date: Thu, 5 Sep 2024 11:07:50 -0400 Subject: [PATCH 30/37] Allow LinearAlgebr v0 --- NDTensors/Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NDTensors/Project.toml b/NDTensors/Project.toml index 582db6330a..13a08dbfae 100644 --- a/NDTensors/Project.toml +++ b/NDTensors/Project.toml @@ -73,7 +73,7 @@ HDF5 = "0.14, 0.15, 0.16, 0.17" HalfIntegers = "1" InlineStrings = "1" JLArrays = "0.1" -LinearAlgebra = "1.6" +LinearAlgebra = "<0.0.1, 1.6" MacroTools = "0.5" MappedArrays = "0.4" Metal = "1" From 4e5c6223c0db5cbce30fb0189434e4030aabe157 Mon Sep 17 00:00:00 2001 From: Matt Fishman Date: Thu, 5 Sep 2024 11:08:14 -0400 Subject: [PATCH 31/37] Allow Random v0 --- NDTensors/Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NDTensors/Project.toml b/NDTensors/Project.toml index 13a08dbfae..120ea70a7a 100644 --- a/NDTensors/Project.toml +++ b/NDTensors/Project.toml @@ -79,7 +79,7 @@ MappedArrays = "0.4" Metal = "1" Octavian = "0.3" PackageExtensionCompat = "1" -Random = "1.6" +Random = "<0.0.1, 1.6" SimpleTraits = "0.9.4" SparseArrays = "<0.0.1, 1.6" SplitApplyCombine = "1.2.2" From 6027cb60f8c44dc202e65b29daf784efdd1270ee Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Wed, 18 Sep 2024 14:53:48 -0400 Subject: [PATCH 32/37] Update to tests --- NDTensors/test/NDTensorsTestUtils/device_list.jl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/NDTensors/test/NDTensorsTestUtils/device_list.jl b/NDTensors/test/NDTensorsTestUtils/device_list.jl index 53b78c99a0..9294956fc2 100644 --- a/NDTensors/test/NDTensorsTestUtils/device_list.jl +++ b/NDTensors/test/NDTensorsTestUtils/device_list.jl @@ -5,22 +5,23 @@ if "cuda" in ARGS || "all" in ARGS ## Right now adding CUDA during Pkg.test results in a ## compat issues. I am adding it back to test/Project.toml Pkg.add("CUDA") - using CUDA + using CUDA: CUDA end if "rocm" in ARGS || "all" in ARGS ## Warning AMDGPU does not work in Julia versions below 1.8 Pkg.add("AMDGPU") - using AMDGPU + using AMDGPU: AMDGPU end if "metal" in ARGS || "all" in ARGS ## Warning Metal does not work in Julia versions below 1.8 Pkg.add("Metal") - using Metal + using Metal: Metal end if "cutensor" in ARGS || "all" in ARGS - Pkg.add("cuTENSOR") Pkg.add("CUDA") - using CUDA, cuTENSOR + Pkg.add("cuTENSOR") + using CUDA: CUDA + using cuTENSOR: cuTENSOR end using JLArrays: JLArrays, jl From 12f43cbfba5de03a1041d2884e18e2bd36d7a02c Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Wed, 18 Sep 2024 14:55:57 -0400 Subject: [PATCH 33/37] typo --- NDTensors/ext/NDTensorsJLArraysExt/mul.jl | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/NDTensors/ext/NDTensorsJLArraysExt/mul.jl b/NDTensors/ext/NDTensorsJLArraysExt/mul.jl index ac42e1b814..5b04e75df6 100644 --- a/NDTensors/ext/NDTensorsJLArraysExt/mul.jl +++ b/NDTensors/ext/NDTensorsJLArraysExt/mul.jl @@ -2,8 +2,6 @@ using JLArrays: JLArray using LinearAlgebra: LinearAlgebra, mul!, transpose using NDTensors.Expose: Exposed, expose, unexpose -# This was calling generic matrix multiplication. -# TODO: Raise an issue with `CUDA.jl`. function LinearAlgebra.mul!( CM::Exposed{<:JLArray,<:LinearAlgebra.Transpose}, AM::Exposed{<:JLArray}, @@ -15,8 +13,6 @@ function LinearAlgebra.mul!( return unexpose(CM) end -# This was calling generic matrix multiplication. -# TODO: Raise an issue with `CUDA.jl`. function LinearAlgebra.mul!( CM::Exposed{<:JLArray,<:LinearAlgebra.Adjoint}, AM::Exposed{<:JLArray}, @@ -28,7 +24,7 @@ function LinearAlgebra.mul!( return unexpose(CM) end -## Fix issue in CUDA.jl where it cannot distinguish Transpose{Reshape{Adjoint{JLArray}}} +## Fix issue in JLArrays.jl where it cannot distinguish Transpose{Reshape{Adjoint{JLArray}}} ## as a JLArray and calls generic matmul function LinearAlgebra.mul!( CM::Exposed{<:JLArray}, From 638377c1d039d55661202b2cb5d09526bf1c47f7 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Thu, 19 Sep 2024 19:54:34 -0400 Subject: [PATCH 34/37] Remove Jenkins CUDA 1.8 --- jenkins/Jenkinsfile | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/jenkins/Jenkinsfile b/jenkins/Jenkinsfile index 3863d4682e..5ac7f6a62b 100644 --- a/jenkins/Jenkinsfile +++ b/jenkins/Jenkinsfile @@ -7,30 +7,6 @@ pipeline { stages { stage('GPU Testing') { parallel { - stage('NDTensorsCUDAExt julia-1.8') { - options { - timeout(time: 45, unit: 'MINUTES') - } - agent { - dockerfile { - label 'gpu&&v100' - filename 'Dockerfile' - dir 'jenkins' - additionalBuildArgs '--build-arg JULIA=1.8' - args '--gpus "device=0"' - } - } - environment { - HOME = pwd(tmp:true) - OMP_NUM_THREADS = 4 - JULIA_NUM_THREADS = 4 - } - steps { - sh ''' - julia -e 'using Pkg; Pkg.activate(temp=true); Pkg.Registry.update(); Pkg.update(); Pkg.develop(path="./NDTensors"); Pkg.develop(path="."); Pkg.test("NDTensors"; test_args=["cuda"])' - ''' - } - } stage('NDTensorsCUDAExt julia-1.10') { options { timeout(time: 45, unit: 'MINUTES') From 42084871e8f15d4dd265a45b09338a2e575353b0 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Sun, 22 Sep 2024 16:42:09 -0400 Subject: [PATCH 35/37] Move default_typeparameters to AbstractArray --- NDTensors/ext/NDTensorsAMDGPUExt/set_types.jl | 6 ++++-- NDTensors/ext/NDTensorsCUDAExt/set_types.jl | 6 ++++-- NDTensors/ext/NDTensorsJLArraysExt/set_types.jl | 7 ------- .../lib/TypeParameterAccessors/src/base/abstractarray.jl | 2 ++ NDTensors/src/lib/TypeParameterAccessors/src/base/array.jl | 2 -- 5 files changed, 10 insertions(+), 13 deletions(-) delete mode 100644 NDTensors/ext/NDTensorsJLArraysExt/set_types.jl diff --git a/NDTensors/ext/NDTensorsAMDGPUExt/set_types.jl b/NDTensors/ext/NDTensorsAMDGPUExt/set_types.jl index b701eafa04..dd4f39c046 100644 --- a/NDTensors/ext/NDTensorsAMDGPUExt/set_types.jl +++ b/NDTensors/ext/NDTensorsAMDGPUExt/set_types.jl @@ -1,10 +1,12 @@ # TypeParameterAccessors definitions -using NDTensors.TypeParameterAccessors: TypeParameterAccessors, Position +using NDTensors.TypeParameterAccessors: + TypeParameterAccessors, Position, default_type_parameters using NDTensors.GPUArraysCoreExtensions: storagemode using AMDGPU: AMDGPU, ROCArray +using GPUArraysCore: AbstractGPUArray function TypeParameterAccessors.default_type_parameters(::Type{<:ROCArray}) - return (Float64, 1, AMDGPU.Mem.HIPBuffer) + return (default_type_parameters(AbstractGPUArray)..., AMDGPU.Mem.HIPBuffer) end TypeParameterAccessors.position(::Type{<:ROCArray}, ::typeof(storagemode)) = Position(3) diff --git a/NDTensors/ext/NDTensorsCUDAExt/set_types.jl b/NDTensors/ext/NDTensorsCUDAExt/set_types.jl index d2e5fb56d7..af749661e8 100644 --- a/NDTensors/ext/NDTensorsCUDAExt/set_types.jl +++ b/NDTensors/ext/NDTensorsCUDAExt/set_types.jl @@ -1,12 +1,14 @@ # TypeParameterAccessors definitions using CUDA: CUDA, CuArray -using NDTensors.TypeParameterAccessors: TypeParameterAccessors, Position +using NDTensors.TypeParameterAccessors: + TypeParameterAccessors, Position, default_type_parameters using NDTensors.GPUArraysCoreExtensions: storagemode +using GPUArraysCore: AbstractGPUArray function TypeParameterAccessors.position(::Type{<:CuArray}, ::typeof(storagemode)) return Position(3) end function TypeParameterAccessors.default_type_parameters(::Type{<:CuArray}) - return (Float64, 1, CUDA.Mem.DeviceBuffer) + return (default_type_parameters(AbstractGPUArray)..., CUDA.Mem.DeviceBuffer) end diff --git a/NDTensors/ext/NDTensorsJLArraysExt/set_types.jl b/NDTensors/ext/NDTensorsJLArraysExt/set_types.jl deleted file mode 100644 index b47a06ca76..0000000000 --- a/NDTensors/ext/NDTensorsJLArraysExt/set_types.jl +++ /dev/null @@ -1,7 +0,0 @@ -# TypeParameterAccessors definitions -using NDTensors.TypeParameterAccessors: TypeParameterAccessors, Position -using JLArrays: JLArray - -function TypeParameterAccessors.default_type_parameters(::Type{<:JLArray}) - return (Float64, 1) -end diff --git a/NDTensors/src/lib/TypeParameterAccessors/src/base/abstractarray.jl b/NDTensors/src/lib/TypeParameterAccessors/src/base/abstractarray.jl index 57657f70f4..14286b65cb 100644 --- a/NDTensors/src/lib/TypeParameterAccessors/src/base/abstractarray.jl +++ b/NDTensors/src/lib/TypeParameterAccessors/src/base/abstractarray.jl @@ -76,6 +76,8 @@ end position(type::Type{<:AbstractArray}, ::typeof(eltype)) = Position(1) position(type::Type{<:AbstractArray}, ::typeof(ndims)) = Position(2) +default_type_parameters(::Type{<:AbstractArray}) = (Float64, 1) + for wrapper in [:PermutedDimsArray, :(Base.ReshapedArray), :SubArray] @eval begin position(type::Type{<:$wrapper}, ::typeof(eltype)) = Position(1) diff --git a/NDTensors/src/lib/TypeParameterAccessors/src/base/array.jl b/NDTensors/src/lib/TypeParameterAccessors/src/base/array.jl index 47770f17f6..247c73ba1f 100644 --- a/NDTensors/src/lib/TypeParameterAccessors/src/base/array.jl +++ b/NDTensors/src/lib/TypeParameterAccessors/src/base/array.jl @@ -1,4 +1,2 @@ position(::Type{<:Array}, ::typeof(eltype)) = Position(1) position(::Type{<:Array}, ::typeof(ndims)) = Position(2) - -default_type_parameters(::Type{<:Array}) = (Float64, 1) From 14922b1063676c02d8876d3403aaae8d7fa022f2 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Mon, 23 Sep 2024 10:42:24 -0400 Subject: [PATCH 36/37] Remove file --- NDTensors/ext/NDTensorsJLArraysExt/NDTensorsJLArraysExt.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/NDTensors/ext/NDTensorsJLArraysExt/NDTensorsJLArraysExt.jl b/NDTensors/ext/NDTensorsJLArraysExt/NDTensorsJLArraysExt.jl index b4d63b7045..8de2f1dcfd 100644 --- a/NDTensors/ext/NDTensorsJLArraysExt/NDTensorsJLArraysExt.jl +++ b/NDTensors/ext/NDTensorsJLArraysExt/NDTensorsJLArraysExt.jl @@ -4,5 +4,4 @@ include("indexing.jl") include("linearalgebra.jl") include("mul.jl") include("permutedims.jl") -include("set_types.jl") end From 38092d8110a6b7f7176c1419e9338822a58df4f0 Mon Sep 17 00:00:00 2001 From: Karl Pierce Date: Tue, 24 Sep 2024 16:02:43 -0400 Subject: [PATCH 37/37] AbstractGPUArrays -> AbstractArray --- NDTensors/ext/NDTensorsAMDGPUExt/set_types.jl | 3 +-- NDTensors/ext/NDTensorsCUDAExt/set_types.jl | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/NDTensors/ext/NDTensorsAMDGPUExt/set_types.jl b/NDTensors/ext/NDTensorsAMDGPUExt/set_types.jl index dd4f39c046..759b140926 100644 --- a/NDTensors/ext/NDTensorsAMDGPUExt/set_types.jl +++ b/NDTensors/ext/NDTensorsAMDGPUExt/set_types.jl @@ -3,10 +3,9 @@ using NDTensors.TypeParameterAccessors: TypeParameterAccessors, Position, default_type_parameters using NDTensors.GPUArraysCoreExtensions: storagemode using AMDGPU: AMDGPU, ROCArray -using GPUArraysCore: AbstractGPUArray function TypeParameterAccessors.default_type_parameters(::Type{<:ROCArray}) - return (default_type_parameters(AbstractGPUArray)..., AMDGPU.Mem.HIPBuffer) + return (default_type_parameters(AbstractArray)..., AMDGPU.Mem.HIPBuffer) end TypeParameterAccessors.position(::Type{<:ROCArray}, ::typeof(storagemode)) = Position(3) diff --git a/NDTensors/ext/NDTensorsCUDAExt/set_types.jl b/NDTensors/ext/NDTensorsCUDAExt/set_types.jl index af749661e8..bab1149890 100644 --- a/NDTensors/ext/NDTensorsCUDAExt/set_types.jl +++ b/NDTensors/ext/NDTensorsCUDAExt/set_types.jl @@ -3,12 +3,11 @@ using CUDA: CUDA, CuArray using NDTensors.TypeParameterAccessors: TypeParameterAccessors, Position, default_type_parameters using NDTensors.GPUArraysCoreExtensions: storagemode -using GPUArraysCore: AbstractGPUArray function TypeParameterAccessors.position(::Type{<:CuArray}, ::typeof(storagemode)) return Position(3) end function TypeParameterAccessors.default_type_parameters(::Type{<:CuArray}) - return (default_type_parameters(AbstractGPUArray)..., CUDA.Mem.DeviceBuffer) + return (default_type_parameters(AbstractArray)..., CUDA.Mem.DeviceBuffer) end