filecoin-project / rust-gpu-tools

Rust tools for OpenCL and GPU management.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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:
image
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:
image

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:
image
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.