Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support async CUDA operations #10

Closed
wants to merge 120 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
22569d9
Initial work on supporting some async memory transfers
juntyr Nov 18, 2022
4edc14b
Experiments with Rust Futures
juntyr Nov 19, 2022
8aa6316
Implemented derive for RustToCudaAsync
juntyr Nov 19, 2022
e7b6174
Implemented async kernel launch
juntyr Nov 19, 2022
d93fc4c
Fixed RustToCudaAsync derive
juntyr Nov 19, 2022
5481e47
LaunchPackage with non-mut Stream
juntyr Nov 19, 2022
6a9d4b6
Moved stream to be an explicit kernel argument
juntyr Nov 19, 2022
d1ae9ab
Updated ExchangeWrapperOn[Device|Host]Async::move_to_stream
juntyr Nov 20, 2022
d70ea5c
Upgraded to fixed RustaCuda
juntyr Nov 20, 2022
077e965
Added scratch-space methods for uni-directional CudaExchangeItem
juntyr Nov 27, 2022
ea6e459
Added unsafe-aliasing API to SplitSlideOverCudaThreads[Const|Dynamic]…
juntyr Nov 27, 2022
578453f
Extended the CudaExchangeItem API with scratch and uMaybeUninit
juntyr Nov 27, 2022
c55d269
Rename SplitSliceOverCudaThreads[Const|Dynamic]Strude::alias_[mut_]un…
juntyr Nov 27, 2022
96036b0
Implemented #[cuda(crate)] and #[kernel(crate)] attributes
juntyr Nov 29, 2022
73bb289
Added simple thread-block shared memory support
juntyr Nov 30, 2022
a23e76e
Fixed device utils doc tests
juntyr Nov 30, 2022
9f330f4
Convert cuda thread-block-shared memory address to generic
juntyr Dec 1, 2022
8970c5b
First steps towards better shared memory, including dynamic
juntyr Dec 3, 2022
79792bd
Revert derive changes + R2C-based approach start
juntyr Dec 3, 2022
914dd90
Some progress on shared slices
juntyr Dec 3, 2022
b0826d7
Backup of progress on compile-time PTX checking
juntyr Jan 8, 2023
5538d71
Clean up the PTX JIT implementation
juntyr May 6, 2023
eb57660
Add convenience functions for ThreadBlockShared arrays
juntyr May 6, 2023
a5ffb0e
Improve and fix CI
juntyr May 6, 2023
8864dbf
Remove broken ThreadBlockShared RustToCuda impl
juntyr May 6, 2023
9645e3c
Refactor kernel trait generation to push more safety constraints to t…
juntyr May 7, 2023
0f4fc46
Fixed SomeCudaAlloc import
juntyr May 7, 2023
41d3616
Added error handling to the compile-time PTX checking
juntyr May 7, 2023
57e10d7
Add PTX lint parsing, no actual support yet
juntyr May 8, 2023
1ab8b47
Added lint checking support to monomorphised kernel impls
juntyr May 8, 2023
d8a732f
Improve kernel checking + added cubin dump lint
juntyr May 9, 2023
8f4e7a1
Fix kernel macro config parsing
juntyr May 9, 2023
e9df07d
Explicitly fitting Device[Const|Mut]Ref into device registers
juntyr May 9, 2023
cff4eab
Switched one std:: to core::
juntyr May 9, 2023
fb9461a
Remove register-sized CUDA kernel args check, unnecessary since https…
juntyr May 9, 2023
e33a270
Simplified the kernel parameter layout extraction from PTX
juntyr May 14, 2023
d28f237
Fix up rebase issues
juntyr Dec 12, 2023
e9bb611
Install CUDA in all CI steps
juntyr Dec 12, 2023
1493d97
Use CStr literals
juntyr Dec 12, 2023
e09e884
Simplify and document the safety traits
juntyr Dec 13, 2023
4baa5dc
Fix move_to_cuda bound
juntyr Dec 13, 2023
720d14a
Fix clippy for 1.76
juntyr Dec 13, 2023
942c5f9
Cleaned up the rust-cuda device macros with better print
juntyr Dec 14, 2023
068e458
Switch to using more vprintf in embedded CUDA kernel
juntyr Dec 16, 2023
eb1a9b4
Make print example fully executable
juntyr Dec 16, 2023
b0303d6
Clean up the print example
juntyr Dec 16, 2023
df09a96
ptr_from_ref is stable from 1.76
juntyr Dec 16, 2023
a49dd17
Exit on CUDA panic instead of abort to allow the host to handle the e…
juntyr Dec 16, 2023
1e4de0c
Backup of early progress for switching from kernel traits to functions
juntyr Dec 19, 2023
a3ec63a
More work into kernel functions instead of traits
juntyr Dec 20, 2023
9af6253
Eliminate almost all ArgsTrait usages
juntyr Dec 21, 2023
6868d6b
Some refactoring of the async kernel func type + wrap code
juntyr Dec 21, 2023
27635ee
Early sketch of extracting type wrapping from macro into types and tr…
juntyr Dec 21, 2023
adde7a0
Early work towards using trait for kernel type wrap, ptx jit workarou…
juntyr Dec 22, 2023
446b1f7
Lift complete CPU kernel wrapper from proc macro into public functions
juntyr Dec 23, 2023
adfff43
Add async launch helper
juntyr Dec 23, 2023
93e8d20
Further cleanup of the new kernel param API
juntyr Dec 23, 2023
b2ce9ee
Start cleaning up the public API
juntyr Dec 23, 2023
ed082f2
Allow passing ThreadBlockShared to kernels again
juntyr Dec 24, 2023
ea74fa2
Remove unsound mutable lending to CUDA for now
juntyr Dec 24, 2023
000a3f6
Allow passing ThreadBlockSharedSlice to kernel for dynamic shared memory
juntyr Dec 24, 2023
cd8f4b4
Begin refactoring the public API with device feature
juntyr Dec 25, 2023
28a1e26
Refactoring to prepare for better module structure
juntyr Dec 25, 2023
cdd84a4
Extract kernel module just for parameters
juntyr Dec 25, 2023
c8761b0
Add RustToCuda impls for &T, &mut T, &[T], and &mut [T] where T: Rust…
juntyr Dec 25, 2023
8d2d856
Large restructuring of the module layout for rust-cuda
juntyr Dec 25, 2023
3020fb0
Split rust-cuda-kernel off from rust-cuda-derive
juntyr Dec 25, 2023
cc6edd0
Update codecov action to handle rust-cuda-kernel
juntyr Dec 25, 2023
1c864b5
Fix clippy lint
juntyr Dec 25, 2023
ce8b69a
Far too much time spent getting rid of DeviceCopy
juntyr Dec 26, 2023
d88bac0
More refactoring and auditing kernel param bounds
juntyr Dec 27, 2023
76af5f1
First exploration towards a stricter async CUDA API
juntyr Dec 28, 2023
8ec927a
More experiments with async API
juntyr Dec 29, 2023
4993daf
Further API experimentation
juntyr Dec 31, 2023
f8618c5
Further async API experimentation
juntyr Jan 1, 2024
5f52d1d
Further async API design work
juntyr Jan 2, 2024
9dc2ae7
Add RustToCudaAsync impls for &T and &[T], but not &mut T or &mut [T]
juntyr Jan 2, 2024
91f9246
Add back mostly unchanged exchange wrapper + buffer with RustToCudaAs…
juntyr Jan 3, 2024
7e2801f
Add back mostly unchanged anti-aliasing types with RustToCudaAsync impls
juntyr Jan 3, 2024
af999e5
Progress on replacing ...Async with Async<...>
juntyr Jan 3, 2024
24efa23
Seal more implementation details
juntyr Jan 3, 2024
1e19fe1
Further small API improvements
juntyr Jan 3, 2024
a052186
Add AsyncProj helper API struct for async projections
juntyr Jan 4, 2024
b9d8ac0
Disable async derive in examples for now
juntyr Jan 4, 2024
e0729b1
Implement RustToCudaAsync derive impls
juntyr Jan 4, 2024
875f049
Further async API improvements to add drop behaviour
juntyr Jan 5, 2024
356b7b2
First sketch of the safety constraints of a new NoSafeAliasing trait
juntyr Jan 5, 2024
564ab2b
First steps towards reintroducing LendToCudaMut
juntyr Jan 6, 2024
eeb4020
Fix no-std Box import for LendRustToCuda derive
juntyr Jan 7, 2024
4eaaa92
Re-add RustToCuda implementation for Final
juntyr Jan 7, 2024
fc18c79
Remove redundant RustToCudaAsyncProxy
juntyr Jan 7, 2024
abaa259
More progress on less 'static bounds on kernel params
juntyr Jan 7, 2024
e0d2319
Further investigation of less 'static bounds
juntyr Jan 7, 2024
fd08c41
Remove 'static bounds from LendToCuda ref kernel params
juntyr Jan 8, 2024
61e83a6
Make CudaExchangeBuffer Sync
juntyr Jan 8, 2024
8dc0c6d
Make CudaExchangeBuffer Sync v2
juntyr Jan 8, 2024
dd9507d
Add AsyncProj proj_ref and proj_mut convenience methods
juntyr Jan 9, 2024
e2032bf
Add RustToCudaWithPortableBitCloneSemantics adapter
juntyr Jan 11, 2024
eb6757c
Fix invalid const fn bounds
juntyr Jan 11, 2024
8552c21
Add Deref[Mut] to the adapters
juntyr Jan 11, 2024
5e1534c
Fix pointer type inference error
juntyr Jan 11, 2024
c74b542
Try removing __rust_cuda_ffi_safe_assert module
juntyr Jan 12, 2024
139adce
Ensure async launch mutable borrow safety with barriers on use and st…
juntyr Jan 13, 2024
36aa41a
Fix uniqueness guarantee for Stream using branded types
juntyr Jan 13, 2024
0b355cc
Try without ref proj
juntyr Jan 13, 2024
e6f20dc
Try add extract ref
juntyr Jan 13, 2024
4148959
Fix doc link
juntyr Jan 13, 2024
d1f141e
clean up kernel signature check
juntyr Jan 14, 2024
1912062
Some cleanup before merging
juntyr Jan 18, 2024
3098636
Fix some clippy lints, add FIXMEs for others
juntyr Jan 18, 2024
54eacc9
Add docs for rust-cuda-derive
juntyr Jan 19, 2024
fd9682d
Small refactoring + added docs for rust-cuda-kernel
juntyr Jan 20, 2024
d11e6d9
Bump MSRV to 1.77-nightly
juntyr Jan 20, 2024
521419c
Try trait-based kernel signature check
juntyr Jan 20, 2024
07dc908
Try naming host kernel layout const
juntyr Jan 20, 2024
1c8115c
Try match against byte literal for faster comparison
juntyr Jan 21, 2024
b040cac
Try with memcmp intrinsic
juntyr Jan 21, 2024
44a974b
Try out experimental const-type-layout with compression
juntyr Feb 1, 2024
3ec8118
Try check
juntyr Feb 5, 2024
6311a6d
Try check again
juntyr Feb 5, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
131 changes: 45 additions & 86 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,16 @@ jobs:
rust: [nightly]

steps:
- name: Install CUDA
run: |
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
curl -L -O https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
sudo apt-get update -q
sudo apt-get install cuda -y --no-install-recommends

- name: Checkout the Repository
uses: actions/checkout@v2

Expand All @@ -40,53 +50,26 @@ jobs:
sudo ./llvm.sh $(rustc --version -v | grep -oP "LLVM version: \K\d+")
rm llvm.sh
cargo install rust-ptx-linker --git https://github.com/juntyr/rust-ptx-linker --force

- name: Install cargo-hack
uses: taiki-e/install-action@cargo-hack

- name: Check without features on CPU
run: |
cargo check

- name: Check with alloc feature on CPU
run: |
cargo check \
--features alloc

- name: Check with derive feature on CPU
run: |
cargo check \
--features derive

- name: Check with host feature on CPU
run: |
cargo check \
--features host

- name: Check with host,derive,alloc features on CPU
- name: Check feature powerset on the CPU
run: |
cargo check \
--features host,derive,alloc
cargo hack check --feature-powerset --optional-deps \
--skip device \
--keep-going

- name: Check without features on CUDA
- name: Check feature powerset on CUDA
run: |
cargo check \
cargo hack check --feature-powerset --optional-deps \
--skip host \
--keep-going \
--target nvptx64-nvidia-cuda

- name: Check with alloc feature on CUDA
run: |
cargo check \
--target nvptx64-nvidia-cuda \
--features alloc

- name: Check with derive feature on CUDA
run: |
cargo check \
--target nvptx64-nvidia-cuda \
--features derive

- name: Check all workspace targets
run: |
cargo check \
--workspace \
--all-targets
cargo check --workspace --all-targets

test:
name: Test Suite
Expand Down Expand Up @@ -157,6 +140,16 @@ jobs:
rust: [nightly]

steps:
- name: Install CUDA
run: |
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
curl -L -O https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
sudo apt-get update -q
sudo apt-get install cuda -y --no-install-recommends

- name: Checkout the Repository
uses: actions/checkout@v2

Expand All @@ -176,58 +169,24 @@ jobs:
rm llvm.sh
cargo install rust-ptx-linker --git https://github.com/juntyr/rust-ptx-linker --force

- name: Check the code style without features on CPU
run: |
cargo clippy \
-- -D warnings

- name: Check the code style with alloc feature on CPU
run: |
cargo clippy \
--features alloc \
-- -D warnings

- name: Check the code style with derive feature on CPU
run: |
cargo clippy \
--features derive \
-- -D warnings

- name: Check the code style with host feature on CPU
run: |
cargo clippy \
--features host \
-- -D warnings

- name: Check the code style with host,derive,alloc features on CPU
run: |
cargo clippy \
--features host,derive,alloc \
-- -D warnings

- name: Check the code style without features on CUDA
run: |
cargo clippy \
--target nvptx64-nvidia-cuda \
-- -D warnings
- name: Install cargo-hack
uses: taiki-e/install-action@cargo-hack

- name: Check the code style with alloc feature on CUDA
- name: Check feature powerset on the CPU
run: |
cargo clippy \
--target nvptx64-nvidia-cuda \
--features alloc \
cargo hack clippy --feature-powerset --optional-deps \
--skip device \
--keep-going \
-- -D warnings

- name: Check the code style with derive feature on CUDA
- name: Check feature powerset on CUDA
run: |
cargo clippy \
cargo hack clippy --feature-powerset --optional-deps \
--skip host \
--keep-going \
--target nvptx64-nvidia-cuda \
--features derive \
-- -D warnings

- name: Check the code style for all workspace targets
- name: Check all workspace targets
run: |
cargo clippy \
--workspace \
--all-targets \
-- -D warnings
cargo clippy --workspace --all-targets -- -D warnings
2 changes: 1 addition & 1 deletion .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ jobs:
./grcov . -s . --binary-path ./target/debug/deps \
-t lcov -o coverage.lcov --branch \
--keep-only "src/*" \
--keep-only "rust-cuda-ptx-jit/*" \
--keep-only "rust-cuda-derive/*" \
--keep-only "rust-cuda-kernel/*" \
--ignore-not-existing \
--excl-line GRCOV_EXCL_LINE \
--excl-start GRCOV_EXCL_START \
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/rustdoc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ jobs:
run: |
RUSTDOCFLAGS="\
--enable-index-page \
--extern-html-root-url const_type_layout=https://docs.rs/const-type-layout/0.2.1/ \
--extern-html-root-url final=https://docs.rs/final/0.1.1/ \
--extern-html-root-url rustacuda=https://docs.rs/rustacuda/0.1.3/ \
--extern-html-root-url rustacuda_core=https://docs.rs/rustacuda_core/0.1.2/ \
--extern-html-root-url rustacuda_derive=https://docs.rs/rustacuda_derive/0.1.2/ \
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,6 @@ Cargo.lock

# These are backup files generated by rustfmt
**/*.rs.bk

# cargo expand dev output files
**/expanded.rs
8 changes: 7 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,11 @@
"rust-analyzer.updates.askBeforeDownload": false,
"rust-analyzer.checkOnSave.command": "reap-clippy",
"rust-analyzer.cargo.allFeatures": false,
"rust-analyzer.cargo.features": ["alloc", "derive", "host"],
"rust-analyzer.cargo.features": [
"derive",
"final",
"host",
"kernel"
],
"rust-analyzer.showUnlinkedFileNotification": false,
}
37 changes: 20 additions & 17 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
[workspace]
members = [
".", "rust-cuda-derive", "rust-cuda-ptx-jit",
"examples/single-source", "examples/derive",
".", "rust-cuda-derive", "rust-cuda-kernel",
"examples/derive", "examples/print", "examples/single-source",
]
default-members = [
".", "rust-cuda-derive", "rust-cuda-ptx-jit"
".", "rust-cuda-derive", "rust-cuda-kernel",
]

[package]
Expand All @@ -13,29 +13,32 @@ version = "0.1.0"
authors = ["Juniper Tyree <juniper.tyree@helsinki.fi>"]
license = "MIT OR Apache-2.0"
edition = "2021"
rust-version = "1.75" # nightly
rust-version = "1.77" # nightly

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[features]
default = []
alloc = ["hashbrown"]
host = ["rustacuda", "rust-cuda-ptx-jit/host"]
derive = ["rustacuda_derive", "rust-cuda-derive"]
derive = ["dep:rustacuda_derive", "dep:rust-cuda-derive"]
device = []
final = ["dep:final"]
host = ["dep:rustacuda", "dep:regex", "dep:oneshot", "dep:safer_owning_ref"]
kernel = ["dep:rust-cuda-kernel"]

[dependencies]
rustacuda_core = "0.1.2"
rustacuda_core = { git = "https://github.com/juntyr/RustaCUDA", rev = "c6ea7cc" }

rustacuda = { version = "0.1.3", optional = true }
rustacuda_derive = { version = "0.1.2", optional = true }
rustacuda = { git = "https://github.com/juntyr/RustaCUDA", rev = "c6ea7cc", optional = true }
rustacuda_derive = { git = "https://github.com/juntyr/RustaCUDA", rev = "c6ea7cc", optional = true }

const-type-layout = { version = "0.2.0", features = ["derive"] }
regex = { version = "1.10", optional = true }

final = "0.1.1"
hashbrown = { version = "0.14", default-features = false, features = ["inline-more"], optional = true }
const-type-layout = { git = "https://github.com/juntyr/const-type-layout", branch = "compress", features = ["derive"] }

rust-cuda-derive = { path = "rust-cuda-derive", optional = true }
rust-cuda-ptx-jit = { path = "rust-cuda-ptx-jit" }
safer_owning_ref = { version = "0.5", optional = true }
oneshot = { version = "0.1", optional = true, features = ["std", "async"] }

final = { version = "0.1.1", optional = true }

[dev-dependencies]
hashbrown = { version = "0.14", default-features = false, features = ["inline-more"] }
rust-cuda-derive = { path = "rust-cuda-derive", optional = true }
rust-cuda-kernel = { path = "rust-cuda-kernel", optional = true }
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
# rust-cuda &emsp; [![CI Status]][workflow] [![Rust Doc]][docs] [![License Status]][fossa] [![Code Coverage]][codecov] [![Gitpod Ready-to-Code]][gitpod]
# rust-cuda &emsp; [![CI Status]][workflow] [![MSRV]][repo] [![Rust Doc]][docs] [![License Status]][fossa] [![Code Coverage]][codecov] [![Gitpod Ready-to-Code]][gitpod]

[CI Status]: https://img.shields.io/github/actions/workflow/status/juntyr/rust-cuda/ci.yml?branch=main
[workflow]: https://github.com/juntyr/rust-cuda/actions/workflows/ci.yml?query=branch%3Amain

[MSRV]: https://img.shields.io/badge/MSRV-1.77.0--nightly-orange
[repo]: https://github.com/juntyr/rust-cuda

[Rust Doc]: https://img.shields.io/badge/docs-main-blue
[docs]: https://juntyr.github.io/rust-cuda/

Expand Down
5 changes: 2 additions & 3 deletions examples/derive/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
[package]
name = "derive"
version = "0.1.0"
authors = ["Juniper Tyree <juniper.langenstein@helsinki.fi>"]
authors = ["Juniper Tyree <juniper.tyree@helsinki.fi>"]
license = "MIT OR Apache-2.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
const-type-layout = { version = "0.2.0" }
rust-cuda = { path = "../../", features = ["derive", "host"] }
rc = { package = "rust-cuda", path = "../../", features = ["derive", "host"] }
7 changes: 4 additions & 3 deletions examples/derive/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
#![deny(clippy::pedantic)]
#![feature(const_type_name)]
#![feature(offset_of)]

#[derive(rust_cuda::common::LendRustToCuda)]
#[derive(rc::lend::LendRustToCuda)]
#[cuda(crate = "rc")]
struct Inner<T: Copy> {
#[cuda(embed)]
inner: T,
}

#[derive(rust_cuda::common::LendRustToCuda)]
#[derive(rc::lend::LendRustToCuda)]
#[cuda(crate = "rc")]
struct Outer<T: Copy> {
#[cuda(embed)]
inner: Inner<T>,
Expand Down
2 changes: 2 additions & 0 deletions examples/print/.cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[target.nvptx64-nvidia-cuda]
rustflags = ["-Clink-args=--arch sm_35", "-Clinker-plugin-lto", "-Ccodegen-units=1", "-Clink-arg=-O3", "-Clink-arg=--lto"]
14 changes: 14 additions & 0 deletions examples/print/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[package]
name = "print"
version = "0.1.0"
authors = ["Juniper Tyree <juniper.tyree@helsinki.fi>"]
license = "MIT OR Apache-2.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[target.'cfg(target_os = "cuda")'.dependencies]
rust-cuda = { path = "../../", features = ["kernel", "device"] }

[target.'cfg(not(target_os = "cuda"))'.dependencies]
rust-cuda = { path = "../../", features = ["kernel", "host"] }
Loading
Loading