diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index a71ced78e..4bf62cd01 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -1,9 +1,38 @@ steps: + - label: "CPU: Run tests on v{{matrix.version}}" + matrix: + setup: + version: + - "1.9" + - "1" + plugins: + - JuliaCI/julia#v1: + version: "{{matrix.version}}" + - JuliaCI/julia-coverage#v1: + codecov: true + dirs: + - KomaMRICore/src + - KomaMRICore/ext + command: | + julia -e 'println("--- :julia: Instantiating project") + using Pkg + Pkg.develop([ + PackageSpec(path=pwd(), subdir="KomaMRIBase"), + PackageSpec(path=pwd(), subdir="KomaMRICore"), + ])' + + julia -e 'println("--- :julia: Running tests") + using Pkg + Pkg.test("KomaMRICore"; coverage=true, julia_args=`--threads=auto`)' + agents: + queue: "juliagpu" + timeout_in_minutes: 120 + - label: "AMDGPU: Run tests on v{{matrix.version}}" matrix: setup: version: - - "1.10" + - "1" plugins: - JuliaCI/julia#v1: version: "{{matrix.version}}" @@ -16,11 +45,14 @@ steps: julia -e 'println("--- :julia: Instantiating project") using Pkg Pkg.develop([ - PackageSpec(path=pwd(), subdir="."), PackageSpec(path=pwd(), subdir="KomaMRIBase"), PackageSpec(path=pwd(), subdir="KomaMRICore"), ])' + julia --project=KomaMRICore/test -e 'println("--- :julia: Add AMDGPU to test environment") + using Pkg + Pkg.add("AMDGPU")' + julia -e 'println("--- :julia: Running tests") using Pkg Pkg.test("KomaMRICore"; coverage=true, test_args=["AMDGPU"])' @@ -34,6 +66,7 @@ steps: setup: version: - "1.9" + - "1" plugins: - JuliaCI/julia#v1: version: "{{matrix.version}}" @@ -46,11 +79,14 @@ steps: julia -e 'println("--- :julia: Instantiating project") using Pkg Pkg.develop([ - PackageSpec(path=pwd(), subdir="."), PackageSpec(path=pwd(), subdir="KomaMRIBase"), PackageSpec(path=pwd(), subdir="KomaMRICore"), ])' + julia --project=KomaMRICore/test -e 'println("--- :julia: Add CUDA to test environment") + using Pkg + Pkg.add("CUDA")' + julia -e 'println("--- :julia: Running tests") using Pkg Pkg.test("KomaMRICore"; coverage=true, test_args=["CUDA"])' @@ -64,6 +100,7 @@ steps: setup: version: - "1.9" + - "1" plugins: - JuliaCI/julia#v1: version: "{{matrix.version}}" @@ -71,11 +108,14 @@ steps: julia -e 'println("--- :julia: Instantiating project") using Pkg Pkg.develop([ - PackageSpec(path=pwd(), subdir="."), PackageSpec(path=pwd(), subdir="KomaMRIBase"), PackageSpec(path=pwd(), subdir="KomaMRICore"), ])' + julia --project=KomaMRICore/test -e 'println("--- :julia: Add Metal to test environment") + using Pkg + Pkg.add("Metal")' + julia -e 'println("--- :julia: Running tests") using Pkg Pkg.test("KomaMRICore"; test_args=["Metal"])' @@ -90,6 +130,7 @@ steps: setup: version: - "1.9" + - "1" plugins: - JuliaCI/julia#v1: version: "{{matrix.version}}" @@ -102,11 +143,14 @@ steps: julia -e 'println("--- :julia: Instantiating project") using Pkg Pkg.develop([ - PackageSpec(path=pwd(), subdir="."), PackageSpec(path=pwd(), subdir="KomaMRIBase"), PackageSpec(path=pwd(), subdir="KomaMRICore"), ])' + julia --project=KomaMRICore/test -e 'println("--- :julia: Add oneAPI to test environment") + using Pkg + Pkg.add("oneAPI")' + julia -e 'println("--- :julia: Running tests") using Pkg Pkg.test("KomaMRICore"; coverage=true, test_args=["oneAPI"])' @@ -119,4 +163,4 @@ env: CI: BUILDKITE CODECOV_FLAGS: core JULIA_PKG_SERVER: "" - SECRET_CODECOV_TOKEN: "lUmUVYkTlE8u0mR/ymv5rtE1A59wXZmQ3miRkmKciC/4+xHPNjpeIJ03FupuC1ElGBeX0m6DDFavZ9burLosGxbBYIPziBQZ5P9NdPDZjBdo7NM3QSSBeUfDsDYbHsYglfJZ35UL6Pd2YTAkJG0ePrTpfUaBb9rcll926NdqUP0vE2hbR2leKFFgBVNtK9Zf+NE7hO3meZQEZ+sN5tA7xGr24A3Ay7ckPg5HbPPD3KII2/fLtW+w0fQUfJdXNFrajJ0FyNE0kNLDlIzoYN6XM4yUeLBXoyXFHnqT5dSu7pqrByEk/ptYpjUzKFoRSnDQy+p8vrx9e/iAVf3lwwgwWA==;U2FsdGVkX1+IZLGTj2FNEy4XvUQbzkZFEwUpwIdRDCKrEea5O/OKGV5vYJufty3m9yniE+av4937HabS9dO1RA==" \ No newline at end of file + SECRET_CODECOV_TOKEN: "lUmUVYkTlE8u0mR/ymv5rtE1A59wXZmQ3miRkmKciC/4+xHPNjpeIJ03FupuC1ElGBeX0m6DDFavZ9burLosGxbBYIPziBQZ5P9NdPDZjBdo7NM3QSSBeUfDsDYbHsYglfJZ35UL6Pd2YTAkJG0ePrTpfUaBb9rcll926NdqUP0vE2hbR2leKFFgBVNtK9Zf+NE7hO3meZQEZ+sN5tA7xGr24A3Ay7ckPg5HbPPD3KII2/fLtW+w0fQUfJdXNFrajJ0FyNE0kNLDlIzoYN6XM4yUeLBXoyXFHnqT5dSu7pqrByEk/ptYpjUzKFoRSnDQy+p8vrx9e/iAVf3lwwgwWA==;U2FsdGVkX1+IZLGTj2FNEy4XvUQbzkZFEwUpwIdRDCKrEea5O/OKGV5vYJufty3m9yniE+av4937HabS9dO1RA==" diff --git a/KomaMRICore/test/initialize.jl b/KomaMRICore/test/initialize.jl index 6cc2ae321..8a8ffc979 100644 --- a/KomaMRICore/test/initialize.jl +++ b/KomaMRICore/test/initialize.jl @@ -2,23 +2,19 @@ using Pkg using Suppressor const USE_GPU = if "AMDGPU" in ARGS - @suppress Pkg.add("AMDGPU") - using AMDGPU + using AMDGPU # ] add AMDGPU to KomaMRICore/test/Project.toml @info "Testing AMD" maxlog=1 true elseif "CUDA" in ARGS - @suppress Pkg.add("CUDA") - using CUDA + using CUDA # ] add CUDA to KomaMRICore/test/Project.toml @info "Testing CUDA" maxlog=1 true elseif "Metal" in ARGS - @suppress Pkg.add("Metal") - using Metal + using Metal # ] add Metal to KomaMRICore/test/Project.toml @info "Testing Metal" maxlog=1 true elseif "oneAPI" in ARGS - @suppress Pkg.add("oneAPI") - using oneAPI + using oneAPI # ] add oneAPI to KomaMRICore/test/Project.toml @info "Testing oneAPI" maxlog=1 true else diff --git a/README.md b/README.md index 2f681d5bc..bb4a5349b 100644 --- a/README.md +++ b/README.md @@ -137,25 +137,33 @@ If you use this package, please cite our paper. ## Tested compatibility -We automatically test KomaMRICore's CPU multi-threading support on the most popular operating systems. Nevertheless, for GPU support, the process is more manual (until [#147](https://github.com/JuliaHealth/KomaMRI.jl/issues/147)). Here is a summary of our automatic CPU tests and local GPU tests for multiple versions of Julia: +All parallel backends are tested on Linux (besides Apple silicon) using the latest stable release, Julia 1 (stable), and Julia 1.9 (compat).
-| Julia (OS) | CPU | GPU (Nvidia) | -|:---------------------|:----------------------------------------------------------:|:------------:| -| Julia 1.9 (Windows) | [![][gh-actions-komamri]][gh-actions-url] | ✅ | -| Julia 1.9 (Linux) | [![][gh-actions-komamri]][gh-actions-url] | ✅ | -| Julia 1.9 (Mac) | [![][gh-actions-komamri]][gh-actions-url] | ➖ | -| Julia 1.10 (Windows) | [![][gh-actions-komamri]][gh-actions-url] | ✅ | -| Julia 1.10 (Linux) | [![][gh-actions-komamri]][gh-actions-url] | ✅ | -| Julia 1.10 (Mac) | [![][gh-actions-komamri]][gh-actions-url] | ➖ | -| Julia 1.11 (Windows) | [![][gh-actions-komamri-nightly]][gh-actions-nightly-url] | ❌ | -| Julia 1.11 (Linux) | [![][gh-actions-komamri-nightly]][gh-actions-nightly-url] | ❌ | -| Julia 1.11 (Mac) | [![][gh-actions-komamri-nightly]][gh-actions-nightly-url] | ➖ | +| KomaMRICore | CPU | GPU (Nvidia) | GPU (AMD) | GPU (Apple) | GPU (Intel) | +|:---------------------|:-----------------------------------:|:-----------------------------------:|:--------------------------------:|:----------------------------------:|:----------------------------------:| +| Julia 1.9 | [![][cpu-compat]][buildkite-url] | [![][nvidia-compat]][buildkite-url] | [![][amd-compat]][buildkite-url] | [![][apple-compat]][buildkite-url] | [![][intel-compat]][buildkite-url] | +| Julia 1 | [![][cpu-stable]][buildkite-url] | [![][nvidia-stable]][buildkite-url] | [![][amd-stable]][buildkite-url] | [![][apple-stable]][buildkite-url] | [![][intel-stable]][buildkite-url] |
-If you see any problem with this information, please let us know in the form of a GitHub issue. +Single-threaded compatibility is tested in all major operating systems (OS). + +
+ +| KomaMRI | CPU (single-threaded) | +|:---------------------|:-----------------------------------------:| +| Julia 1.9 (Windows) | [![][gh-actions-komamri]][gh-actions-url] | +| Julia 1.9 (Linux) | [![][gh-actions-komamri]][gh-actions-url] | +| Julia 1.9 (Mac OS) | [![][gh-actions-komamri]][gh-actions-url] | +| Julia 1 (Windows) | [![][gh-actions-komamri]][gh-actions-url] | +| Julia 1 (Linux) | [![][gh-actions-komamri]][gh-actions-url] | +| Julia 1 (Mac OS) | [![][gh-actions-komamri]][gh-actions-url] | + +
+ +If you see any problem with this information, please let us know in a GitHub issue. @@ -178,7 +186,19 @@ If you see any problem with this information, please let us know in the form of [docd-url]: https://juliahealth.github.io/KomaMRI.jl/dev/ [buildkite-badge]: https://badge.buildkite.com/f3c2e589ac0c1310cda3c2092814e33ac9db15b4f103eb572b.svg -[buildkite-url]: https://buildkite.com/julialang/komamri-dot-jl +[cpu-stable]: https://badge.buildkite.com/f3c2e589ac0c1310cda3c2092814e33ac9db15b4f103eb572b.svg?step=CPU%3A%20Run%20tests%20on%20v1 +[nvidia-stable]: https://badge.buildkite.com/f3c2e589ac0c1310cda3c2092814e33ac9db15b4f103eb572b.svg?step=CUDA%3A%20Run%20tests%20on%20v1 +[amd-stable]: https://badge.buildkite.com/f3c2e589ac0c1310cda3c2092814e33ac9db15b4f103eb572b.svg?step=AMDGPU%3A%20Run%20tests%20on%20v1 +[apple-stable]: https://badge.buildkite.com/f3c2e589ac0c1310cda3c2092814e33ac9db15b4f103eb572b.svg?step=Metal%3A%20Run%20tests%20on%20v1 +[intel-stable]: https://badge.buildkite.com/f3c2e589ac0c1310cda3c2092814e33ac9db15b4f103eb572b.svg?step=oneAPI%3A%20Run%20tests%20on%20v1 + +[cpu-compat]: https://badge.buildkite.com/f3c2e589ac0c1310cda3c2092814e33ac9db15b4f103eb572b.svg?step=CPU%3A%20Run%20tests%20on%20v1.9 +[nvidia-compat]: https://badge.buildkite.com/f3c2e589ac0c1310cda3c2092814e33ac9db15b4f103eb572b.svg?step=CUDA%3A%20Run%20tests%20on%20v1.9 +[amd-compat]: https://img.shields.io/badge/build-failing-red?logo=buildkite&logoColor=white +[apple-compat]: https://badge.buildkite.com/f3c2e589ac0c1310cda3c2092814e33ac9db15b4f103eb572b.svg?step=Metal%3A%20Run%20tests%20on%20v1.9 +[intel-compat]: https://badge.buildkite.com/f3c2e589ac0c1310cda3c2092814e33ac9db15b4f103eb572b.svg?step=oneAPI%3A%20Run%20tests%20on%20v1.9 + +[buildkite-url]: https://buildkite.com/julialang/komamri-dot-jl/builds?branch=master [gh-actions-komamri]: https://github.com/JuliaHealth/KomaMRI.jl/workflows/CI/badge.svg [gh-actions-komabase]: https://github.com/JuliaHealth/KomaMRI.jl/workflows/CI/badge.svg