Some problems when using "rust-gpu-tools"
huapengcheng opened this issue · comments
I am using "rust-gpu-tools" to make my gpu work.The device is in a NVIDIA Xavier.Its name may be "NVIDIA Jetson AGX Xavier" and it may have 512 cores.
I have tried to use "rust-gpu-tools" in my Rust demo.But problems appeared when compiling crates.It shows like fofllowing:
I have done the same attempt on another device "RTX 3060" and such problems did not appear.
I want to use "set_env" in "main.rs" to make my device in Xavier useful.But I do not know if this attempt is right.And this must be after the crates are compiled correctly.My "main.rs" is following:
I think the problem lies here: https://github.com/rust-cuda/cuda-sys/blob/3a973786b3482e3fdfd783cd692fbc3c665d5c11/cuda-driver-sys/src/cuda.rs#L204
It's using std::os::raw::c_char
, which is according to the Rust documentation either i8
or u8
. It depends on the platform. So it seems that your are compiling on different platforms and the one the Xavier is on defines it as u8
.
I've create a branch with a potential fix. Could you please try out the rustacuda-to-cust
branch. To use it in your project, specify the rust-gpu-tools
dependency as rust-gpu-tools = { git = "https://github.com/filecoin-project/rust-gpu-tools", branch = "rustacuda-to-cust" }
.
I have used rust-gpu-tools = { git = "https://github.com/filecoin-project/rust-gpu-tools", branch = "rustacuda-to-cust" } and "cargo build" again.The prior problem did not appear again.But a new problem appeared instead:
error: linking with cc
failed: exit status: 1
|
= note: "cc" "/tmp/rustcZY2Uri/symbols.o" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/test_9_21-9f4ec17667795b59.1qf5oa7riy2gj994.rcgu.o" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/test_9_21-9f4ec17667795b59.1tnmiupdt8t4pdoa.rcgu.o" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/test_9_21-9f4ec17667795b59.1ufhlre80iiedgmd.rcgu.o" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/test_9_21-9f4ec17667795b59.292szx8upddrxve8.rcgu.o" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/test_9_21-9f4ec17667795b59.29zy5hx98qxb1jqa.rcgu.o" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/test_9_21-9f4ec17667795b59.2d337p8ed8o92w1t.rcgu.o" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/test_9_21-9f4ec17667795b59.2sz35pnr9mxbzean.rcgu.o" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/test_9_21-9f4ec17667795b59.3e0kv7etp3zp5ain.rcgu.o" "-Wl,--as-needed" "-L" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps" "-L" "/home/nvidia/huapengcheng/test_9_21/target/debug/build/libffi-sys-0bd467e4f6602693/out/libffi-root/lib" "-L" "/home/nvidia/huapengcheng/test_9_21/target/debug/build/libffi-sys-0bd467e4f6602693/out/libffi-root/lib64" "-L" "/home/nvidia/huapengcheng/test_9_21/target/debug/build/mpi-sys-fd08f808b761ac04/out" "-L" "/home/nvidia/ZHX/mpich3/lib" "-L" "/usr/local/cuda/lib64" "-L" "/usr/local/cuda/lib64/stubs" "-L" "/usr/local/cuda-10.2/lib64" "-L" "/usr/local/cuda-10.2/lib64/stubs" "-L" "/usr/local/cuda/lib64" "-L" "/usr/local/cuda/lib64/stubs" "-L" "/usr/local/cuda-10.2/lib64" "-L" "/usr/local/cuda-10.2/lib64/stubs" "-L" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/librust_gpu_tools-db115e100431cc87.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libdirs-f0dca9529adb990a.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libdirs_sys-7f403ab0cf0004e6.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libhex-c39f7d0e252abc1a.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libthiserror-4fe208d38b0113cb.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libsha2-8f95ce80553afc9c.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libdigest-30a9c0ed4f373796.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libblock_buffer-2ad7b47711e43f1c.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libcrypto_common-d43912fa08fa6453.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libgeneric_array-e3988f5b6a6a6ecb.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libtypenum-9093a3dc4c347e7f.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libopencl3-6e682c1a61e13d7e.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libcl3-b258f9370a6d6f9b.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libopencl_sys-c2b8bd3836e47b3d.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libcust-142db4fbb62e4b8a.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libbitflags-1eb8e94408397c9d.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libcust_core-7a9f4c7a5b187c01.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libmint-75fc49eb27ae8228.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libglam-7231a6b42674361a.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libvek-a30ca9fab816afbb.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libstatic_assertions-2e7d07f3c26eb495.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libapprox-857d3fad22937dc7.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libnum_integer-763ae44f5ee60923.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libnum_traits-a3d03585a5348f7d.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/liblibm-c434831730bb8aca.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libbytemuck-8aaca537650ac2f0.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libcust_raw-0a6444af2bae7baf.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/liblazy_static-cc1031d06185108b.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/liblog-c38680c2672c57fa.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libcfg_if-8931128b89e71772.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libmpi-417f0df05dbd9f7c.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libsmallvec-0ed6a56b8d80d0b6.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libmemoffset-42cc7a900b4531d9.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libonce_cell-67b918f2882aa106.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libconv-3b45a3f16bb2a531.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libcustom_derive-221675e7cc988eb5.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/liblibffi-ad6cbd70fdbedb63.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/liblibc-f9cd16782c87f940.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/liblibffi_sys-c7c887011d085564.rlib" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/libmpi_sys-3b9b9815db524827.rlib" "-Wl,--start-group" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libstd-d814af59ad21e852.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libpanic_unwind-cb5eff881426c07e.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libobject-ac3dd2e739b71182.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libmemchr-104f9838bc6e5fa1.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libaddr2line-93d415d13a20db7a.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libgimli-895edc03ed7e2d9c.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_demangle-2bb0a605288165ce.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libstd_detect-9a09582820f383ac.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libhashbrown-2dfdf8bea2eb64d0.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libminiz_oxide-c3e4fdc216b12f43.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libadler-4b921774fef88ba9.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-15d13f580cd8d46c.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libunwind-484364b2772f466e.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcfg_if-6f794d16353cfe0c.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/liblibc-e2fd597210b18c44.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/liballoc-967631a57692a975.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_std_workspace_core-b82209f193839d57.rlib" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcore-15719373bf4b4e7a.rlib" "-Wl,--end-group" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcompiler_builtins-e528c2f86745b3a4.rlib" "-Wl,-Bdynamic" "-lOpenCL" "-lcuda" "-lmpi" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/home/nvidia/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib" "-o" "/home/nvidia/huapengcheng/test_9_21/target/debug/deps/test_9_21-9f4ec17667795b59" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro,-znow" "-nodefaultlibs"
= note: /usr/bin/ld: cannot find -lOpenCL
collect2: error: ld returned 1 exit status
You have two options. Either install OpenCL libraries (but you probably don't want/need those). Or you disable the opencl feature. try:
rust-gpu-tools = { git = "https://github.com/filecoin-project/rust-gpu-tools", branch = "rustacuda-to-cust", default-features = false, features = ["cuda"] }
Hello!
I am doing some study about bellperson.I want to transmit some "group::prime::PrimeCurveAffine::Curve" datas between different processes.I can just transmit "u64" data.So I want to get "u64"s in a "group::prime::PrimeCurveAffine::Curve" ,and then transmit them and form a "group::prime::PrimeCurveAffine::Curve" with these "u64"s.But I can not modify a "group::prime::PrimeCurveAffine::Curve".
So I want to create a "G1Projective" and form it with above "u64"s.And then I want to copy it into some memory space which was opened up with use of "group::prime::PrimeCurveAffine::Curve".
Will this be useful?If ok,how to do it?
I am looking forward to your reply!
If you want to keep the memory layout and don't want to copy data, I guess there isn't a safe way to do it in Rust. I think you need to use unsafe code and use transmute() directly.