bytedeco/javacpp-presets

[PyTorch 2.2.2-1.5.11-SNAPSHOT] Exception java.lang.UnsatisfiedLinkError: no jnitorch in java.library.path on WIndows

haifengl opened this issue · 15 comments

The same code works fine with 2.2.1-1.5.11-SNAPSHOT.

Which platform?

It doesn't work on Windows 10. It works on Ubuntu 22.04 and macOS 13/14. It doesn't work on older macOS though (e.g. macOS 11). It is fine to drop the support of older macOS.

dll
c10, asmjit, and libomp140 are missing on Windows 10.

On macOS 11, it cannot load macosx-x86_64/libjnitorch.dylib. However, the libjnitorch.dylib file does exist.

Caused by: java.lang.UnsatisfiedLinkError: Can't load library: /Users/xyz/.javacpp/cache/pytorch-2.2.2-1.5.11-20240502.145852-21-macosx-x86_64.jar/org/bytedeco/pytorch/macosx-x86_64/libjnitorch.dylib

@haifengl @sbrunk Could you please test the builds on Windows and Mac?

BTW, macOS 11 is no longer supported by either Apple or GitHub, so please upgrade to at least macOS 12

It is okay to drop supporting macOS 11. Does PyTorch 2.2.2-1.5.11-SNAPSHOT support macOS on arm64 yet?

I run a test on a windows 10 VM with 2.2.2 and it works, but jnitorch.dll is indeed linked with libomp140.x86_64.dll that is found in my \windows\system32. It probably came with VS or another software.

I guess we should include an OpenMP library in the jar. I'm seeing that the official libtorch archive includes the Intel version.

@saudet, what's the best way to do this ? the Pytorch CMakeList.txt doesn't use InstallRequiredSystemLibraries

That's apparently a file that comes with Visual Studio, so we should add it to this preload list here:
https://github.com/bytedeco/javacpp/blob/master/src/main/java/org/bytedeco/javacpp/presets/javacpp.java#L42

Ok.
Openmp is not used by many presets. Shouldn't we add it to the preload list of presets needing it only ?

No, please don't do that

Ok, would you like a PR for this or can you add it directly ?

Yes, pull requests always welcome :) Thanks

Thanks. It runs on Windows now. However, it doesn't produce good models on Windows though. I will create a new ticket about it.