coreylowman / cudarc

Safe rust wrapper around CUDA toolkit

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error with linking to cudnn on windows

coreylowman opened this issue · comments

@sololist-v posted this in a dfdx issue:

Can CUDNN_INCLUDE and CUDNN_LIB be added to respectively specify the include and lib directories?
Because I am unable to specify the lib directory on Windows, I need to copy the CUDNN lib files to the project directory in order to compile.

Yes, the error message is "LINK: fatal error LNK1181: cannot open input file 'cudnn.lib'". In fact, if you want to use cl.exe, you also need to execute "cmd /k "D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"" in the command prompt before running "cargo run" in a new terminal, otherwise you may encounter an error saying that cl.exe cannot be found.

I am able to compile on Windows without doing anything extra. Perhaps I already have these libraries on PATH?

cudnn path:

D:\PROGRAM FILES\CUDNN
└─cuda
    ├─bin
    ├─include
    ├─lib
    └─zlib123dllx64
        ├─dll_x64
        │  └─demo
        └─static_x64

my_project/.cargo/config.toml

[env]
CUDNN_LIB = "D:/Program Files/cudnn/cuda"

cargo clean
cargo build
output:

error: linking with link.exe failed: exit code: 1181
|
= note: "D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\bin\HostX64\x64\link.exe" "/NOLOGO" "C:\Users\Zen\AppData\Local\Temp\rustcK3CKfI\symbols.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.1bw1i1819fgxk4un.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.1gzj2o93qn6bghxz.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.1hpribmrjpum9r88.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.1inuesz60zpl5oz0.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.1kpekel7xbaxa2sa.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.1vw3x1y7yvqnrlnp.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.1z4bo936zf0nd6c5.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.1zgj7bqrrld8cnlt.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.1zj7m9vwi4qgxy9t.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.25nc0xrz3iwo6884.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.29us2j1gu6tjslm8.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.2iavixxrspzooos8.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.2no49y3i6jbjeyer.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.2pv9gprx1kne1jpb.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.2qndhsv6kwzp9o8z.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.306izq1yfeqxdxjl.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.308bkim9emfh46oi.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.31tyn77rt601uue9.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.34xg4b7ncl1tfvcf.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.380zz5nx92yoweqy.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.3cn5mlvr8cn7bmf2.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.3di6nvs3ld0gv8xs.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.3i06qxmfat8ti1jg.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.3i1w3c854sili9jy.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.3rzk2xcls8y781i.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.3ssoxmp219tborm0.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.43jguq8n233z8q22.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.43shyyjhvv5okcz9.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.4549pvgr454vgpaq.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.46zowoh275a3h9pr.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.48gbw1ni9usjwx52.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.48jy7fmrpzean04d.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.4b9zj0jtjzqbam3p.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.4bz47bw7td5fpctm.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.4dzcyodakk1z0wni.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.4jie7dh9dyonjqud.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.4p1gqhhy6c3cuyh7.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.4qcrhgwxy2p6xiqu.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.4qun4vasd7jouq6f.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.4u0rl5n0f4fbz29y.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.4ui899u4xzozg8xu.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.4vatvonjdjsxpgor.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.4w47z7u7oswhsiim.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.51iq62lzthb5bi2o.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.53sqnfnbvb6kjaey.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.55h5jpl37nhdujat.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.578ptc7ekktj2mf1.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.589kl8k3i10wp4tn.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.59zk72islvgof9lt.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.5akqhknmz49mux2.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.5apbbxi6q45fu3fp.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.5bir2snirqegf0hn.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.5ckuep6hxtqafvi1.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.5gisgd1484jhipb7.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.75bvpnh1um2wxqr.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.7cev8ao5e4njnu6.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.7w9ncc7l6bf868y.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.92e76bu7nt7u7ua.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.a3x5eqbcntwz5if.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.ebfbfuud0jshr1e.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.f3y4d5f3um6r5f2.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.ghsop28v21poou.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.hyyo5nz0c76l1zc.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.n7hctnxy66j0lp4.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.puu63if6tsa1h4v.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.q8jnk0iwgxflcs2.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.tr3m0tuilye2o1o.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.ue1mov1pd20kpp3.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.ye7ebhoexeubvk0.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.yjzteguhem3y2js.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.z8hoxiye2hczf5d.rcgu.o" "D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.4hj3ifupnf9hrjoc.rcgu.o" "/LIBPATH:D:\Workspace\Rust\test_dfdx\target\debug\deps" "/LIBPATH:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\lib/x64" "/LIBPATH:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\lib/Win32" "/LIBPATH:C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib" "D:\Workspace\Rust\test_dfdx\target\debug\deps\libdfdx-11b6bef529f0fa9b.rlib" "D:\Workspace\Rust\test_dfdx\target\debug\deps\libcudarc-b8afd73acd0c7edb.rlib" "D:\Workspace\Rust\test_dfdx\target\debug\deps\librand_distr-9dfd032ec1df9470.rlib" "D:\Workspace\Rust\test_dfdx\target\debug\deps\libnum_traits-1c0d138966d476ab.rlib" "D:\Workspace\Rust\test_dfdx\target\debug\deps\librand-d36daaee2b40ace6.rlib" "D:\Workspace\Rust\test_dfdx\target\debug\deps\librand_chacha-5f57b9bc0d46bd30.rlib" "D:\Workspace\Rust\test_dfdx\target\debug\deps\libppv_lite86-dc048dbbb5c70f1a.rlib" "D:\Workspace\Rust\test_dfdx\target\debug\deps\librand_core-171af5caaf4c5936.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libstd-f486e2d37cdf4887.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libpanic_unwind-5d6e64bfebba394a.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\librustc_demangle-9228d965d188fd50.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libstd_detect-67f2b70293ebee60.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libcfg_if-7e5d8ffb1a482979.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libhashbrown-96a93a447b7cf827.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libminiz_oxide-b63037cd9b2fc750.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libadler-01652f996f11aedc.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\librustc_std_workspace_alloc-b4ab24225a70b93e.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libunwind-7de60ae9d59f4150.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libcfg_if-cf966639b77cada6.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\liblibc-64a9e8cd2f00262d.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\liballoc-5d71bf3c634a9d2a.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\librustc_std_workspace_core-69892fa511d5a698.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libcore-798bc7c2d986ac97.rlib" "C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libcompiler_builtins-26678f31fd200488.rlib" "cuda.lib" "nvrtc.lib" "cublas.lib" "cublasLt.lib" "cudnn.lib" "kernel32.lib" "advapi32.lib" "userenv.lib" "kernel32.lib" "ws2_32.lib" "bcrypt.lib" "msvcrt.lib" "legacy_stdio_definitions.lib" "/NXCOMPAT" "/LIBPATH:C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib" "/OUT:D:\Workspace\Rust\test_dfdx\target\debug\deps\test_dfdx.exe" "/OPT:REF,NOICF" "/DEBUG" "/NATVIS:C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\etc\intrinsic.natvis" "/NATVIS:C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\etc\liballoc.natvis" "/NATVIS:C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\etc\libcore.natvis" "/NATVIS:C:\Users\Zen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\etc\libstd.natvis"
= note: LINK : fatal error LNK1181: cannot open input file 'cudnn.lib'

warning: test_dfdx (bin "test_dfdx") generated 2 warnings
error: could not compile test_dfdx due to previous error; 2 warnings emitted

This may be a case of missing a candidate lib sub directory. @soloist-v Can you post where exactly your cudnn.lib files are under your CUDNN directory?

Right now build.rs looks under these candidates:

        "lib/x64",
        "lib/Win32",
        "lib/x86_64",
        "lib/x86_64-linux-gnu",
        "lib64",
        "lib64/stubs",
        "targets/x86_64-linux",
        "targets/x86_64-linux/lib",
        "targets/x86_64-linux/lib/stubs",

Can the search path be extended by the environment variable CUDNN_LIB?

It already is - but we need to augment CUDNN_LIB path with the lib directory, which is different on each platform. That's what the list I posted above is (they are all relative to CUDNN_LIB).

Can you post directory tree under your lib/ dir?

Of course, this is my lib directory information.

D:\Program Files\cudnn\cuda\lib

2022/09/20  17:40    <DIR>          .
2023/04/29  09:41    <DIR>          ..
2022/08/03  08:32            73,264 cudnn.lib
2022/08/03  08:32            73,264 cudnn64_8.lib
2022/08/03  08:50            77,278 cudnn_adv_infer.lib
2022/08/03  08:50            77,278 cudnn_adv_infer64_8.lib
2022/08/03  09:07            30,126 cudnn_adv_train.lib
2022/08/03  09:07            30,126 cudnn_adv_train64_8.lib
2022/08/03  08:52         3,430,984 cudnn_cnn_infer.lib
2022/08/03  08:52         3,430,984 cudnn_cnn_infer64_8.lib
2022/08/03  08:58         1,145,912 cudnn_cnn_train.lib
2022/08/03  08:58         1,145,912 cudnn_cnn_train64_8.lib
2022/08/03  08:35           148,710 cudnn_ops_infer.lib
2022/08/03  08:35           148,710 cudnn_ops_infer64_8.lib
2022/08/03  08:40            28,846 cudnn_ops_train.lib
2022/08/03  08:40            28,846 cudnn_ops_train64_8.lib

There are no directories in the lib directory.

Ooooh yep that's why then!

Okay if you want to test out the main branch of cudarc, it should be resolved now. Please reopen if it isn't resolved

Thank you, and I think there are no more problems.