Skip to content

cuNumeric.jl wraps the cuPyNumeric C++ API providing a simple array programming interface that executes code on distributed clusters.

License

Notifications You must be signed in to change notification settings

JuliaLegate/cuNumeric.jl

Repository files navigation

cuNumeric.jl

Documentation dev Build status codecov License: MIT

Warning

Leagte.jl and cuNumeric.jl are under active development at the moment. This is a pre-release API and is subject to change. Stability is not guaranteed until the first official release. We are actively working to improve the build experience to be more seamless and Julia-friendly. In parallel, we're developing a comprehensive testing framework to ensure reliability and robustness. Our public beta launch is targeted for Fall 2025.

The cuNumeric.jl package wraps the cuPyNumeric C++ API from NVIDIA to bring simple distributed computing on GPUs and CPUs to Julia! We provide a simple array abstraction, the NDArray, which supports most of the operations you would expect from a normal Julia array.

This project is in alpha and we do not commit to anything necessarily working as you would expect. The current build process requires several external dependencies which are not registered on BinaryBuilder.jl yet. The build instructions and minimum pre-requesites are as follows:

Minimum prereqs

  • Ubuntu 20.04 or RHEL 8
  • Julia 1.11

1. Install Julia through JuliaUp

curl -fsSL https://install.julialang.org | sh -s -- --default-channel 1.11

This will install version 1.11 by default since that is what we have tested against. To verify 1.11 is the default run either of the following (you may need to source bashrc):

juliaup status
julia --version

If 1.11 is not your default, please set it to be the default. Other versions of Julia are untested.

juliaup default 1.11

2. Download cuNumeric.jl (quick setup)

cuNumeric.jl is not on the general registry yet. To add cuNumeric.jl to your environment run:

using Pkg; Pkg.develop(url = "https://github.com/JuliaLegate/cuNumeric.jl")

By default, this will use legate_jll and cupynumeric_jll.

For more build configurations and options, please visit our installation guide.

2b. Contributing to cuNumeric.jl

To contribute to cuNumeric.jl, we recommend cloning the repository and adding it to one of your existing environments with Pkg.develop.

git clone https://github.com/JuliaLegate/cuNumeric.jl.git 
julia --project=. -e 'using Pkg; Pkg.develop(path = "cuNumeric.jl/lib/CNPreferences")'
julia --project=. -e 'using Pkg; Pkg.develop(path = "cuNumeric.jl")'
julia --project=. -e 'using CNPreferences; CNPreferences.use_developer_mode()'
julia --project=. -e 'using Pkg; Pkg.build()'

To learn more about contributing to Legate.jl, check out the Legate.jl README.md

3. Test the Julia Package

Run this command in the Julia environment where cuNumeric.jl is installed.

using Pkg; Pkg.test("cuNumeric")

With everything working, its the perfect time to checkout some of our examples!

Contact

For technical questions, please either contact krasow(at)u.northwestern.edu OR emeitz(at)andrew.cmu.edu

If the issue is building the package, please include the build.log and .err files found in cuNumeric.jl/deps/

About

cuNumeric.jl wraps the cuPyNumeric C++ API providing a simple array programming interface that executes code on distributed clusters.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 3

  •  
  •  
  •