aidenlab / juicer

A One-Click System for Analyzing Loop-Resolution Hi-C Experiments
http://aidenlab.org
MIT License
410 stars 181 forks source link

CUDA version 9 and above for Hiccup use #225

Closed yamzaleg closed 3 years ago

yamzaleg commented 3 years ago

Hello team,

The HPC I am using from my University only offers CUDA version 9 and above. I loaded CUDA version 10 and also downloaded the native libraries for that version and tried running Hiccups but I still get the error that JCudaDriver-0.8.0-linux-x86_64 can't be found. After I load all the necessary tools I use this code to run hiccups: java -Djava.library.path=~/new/amzaleg/jcuda/JCuda-All-10.1.0 -jar ~/new/amzaleg/bin/juicer_tools.jar hiccups -m 500 -r 5000,10000 -f 0.1,0.1 -p 4,2 -i 7,5 -d 20000,20000 --ignore-sparsity inter_30_GM_rep2.hic GM_rep2_loops

the following is the error I get as it is running:

WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance. WARN [2021-05-28T13:27:48,390] [Globals.java:138] [main] Development mode is enabled Reading file: inter_30_GM_rep2.hic Using the following configurations for HiCCUPS: Config res: 10000 peak: 2 window: 5 fdr: 10% radius: 20000 Config res: 5000 peak: 4 window: 7 fdr: 10% radius: 20000 Using 1 CPU thread(s) Warning Hi-C map is too sparse to find many loops via HiCCUPS. Running HiCCUPS for resolution 10000 Data not available for Y at 10000 resolution Exception in thread "pool-2-thread-1" java.lang.UnsatisfiedLinkError: Error while loading native library "JCudaDriver-0.8.0-linux-x86_64" Operating system name: Linux Architecture : amd64 Architecture bit size: 64 ---(start of nested stack traces)--- Stack trace from the attempt to load the library as a file: java.lang.UnsatisfiedLinkError: no JCudaDriver-0.8.0-linux-x86_64 in java.library.path: [~/new/amzaleg/jcuda/JCuda-All-10.1.0] at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2660) at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:827) at java.base/java.lang.System.loadLibrary(System.java:1902) at jcuda.LibUtils.loadLibrary(LibUtils.java:143) at jcuda.driver.JCudaDriver.(JCudaDriver.java:280) at jcuda.utils.KernelLauncher.initialize(KernelLauncher.java:603) at jcuda.utils.KernelLauncher.(KernelLauncher.java:586) at jcuda.utils.KernelLauncher.create(KernelLauncher.java:393) at jcuda.utils.KernelLauncher.create(KernelLauncher.java:321) at jcuda.utils.KernelLauncher.compile(KernelLauncher.java:270) at juicebox.tools.utils.juicer.hiccups.GPUController.(GPUController.java:72) at juicebox.tools.clt.juicer.HiCCUPS.buildGPUController(HiCCUPS.java:578) at juicebox.tools.clt.juicer.HiCCUPS.runCoreCodeForHiCCUPS(HiCCUPS.java:505) at juicebox.tools.clt.juicer.HiCCUPS.access$200(HiCCUPS.java:158) at juicebox.tools.clt.juicer.HiCCUPS$1.run(HiCCUPS.java:434) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:835) Stack trace from the attempt to load the library as a resource: java.lang.UnsatisfiedLinkError: /tmp/libJCudaDriver-0.8.0-linux-x86_64.so: libcuda.so.1: cannot open shared object file: No such file or directory at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method) at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2430) at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2487) at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2684) at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2617) at java.base/java.lang.Runtime.load0(Runtime.java:765) at java.base/java.lang.System.load(System.java:1866) at jcuda.LibUtils.loadLibraryResource(LibUtils.java:260) at jcuda.LibUtils.loadLibrary(LibUtils.java:158) at jcuda.driver.JCudaDriver.(JCudaDriver.java:280) at jcuda.utils.KernelLauncher.initialize(KernelLauncher.java:603) at jcuda.utils.KernelLauncher.(KernelLauncher.java:586) at jcuda.utils.KernelLauncher.create(KernelLauncher.java:393) at jcuda.utils.KernelLauncher.create(KernelLauncher.java:321) at jcuda.utils.KernelLauncher.compile(KernelLauncher.java:270) at juicebox.tools.utils.juicer.hiccups.GPUController.(GPUController.java:72) at juicebox.tools.clt.juicer.HiCCUPS.buildGPUController(HiCCUPS.java:578) at juicebox.tools.clt.juicer.HiCCUPS.runCoreCodeForHiCCUPS(HiCCUPS.java:505) at juicebox.tools.clt.juicer.HiCCUPS.access$200(HiCCUPS.java:158) at juicebox.tools.clt.juicer.HiCCUPS$1.run(HiCCUPS.java:434) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:835) ---(end of nested stack traces)---

at jcuda.LibUtils.loadLibrary(LibUtils.java:193)
at jcuda.driver.JCudaDriver.<clinit>(JCudaDriver.java:280)
at jcuda.utils.KernelLauncher.initialize(KernelLauncher.java:603)
at jcuda.utils.KernelLauncher.<init>(KernelLauncher.java:586)
at jcuda.utils.KernelLauncher.create(KernelLauncher.java:393)
at jcuda.utils.KernelLauncher.create(KernelLauncher.java:321)
at jcuda.utils.KernelLauncher.compile(KernelLauncher.java:270)
at juicebox.tools.utils.juicer.hiccups.GPUController.<init>(GPUController.java:72)
at juicebox.tools.clt.juicer.HiCCUPS.buildGPUController(HiCCUPS.java:578)
at juicebox.tools.clt.juicer.HiCCUPS.runCoreCodeForHiCCUPS(HiCCUPS.java:505)
at juicebox.tools.clt.juicer.HiCCUPS.access$200(HiCCUPS.java:158)
at juicebox.tools.clt.juicer.HiCCUPS$1.run(HiCCUPS.java:434)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:835)

Exception in thread "pool-3-thread-1" java.lang.NoClassDefFoundError: Could not initialize class jcuda.driver.JCudaDriver at jcuda.utils.KernelLauncher.initialize(KernelLauncher.java:603) at jcuda.utils.KernelLauncher.(KernelLauncher.java:586) at jcuda.utils.KernelLauncher.create(KernelLauncher.java:393) at jcuda.utils.KernelLauncher.create(KernelLauncher.java:321) at jcuda.utils.KernelLauncher.compile(KernelLauncher.java:270) at juicebox.tools.utils.juicer.hiccups.GPUController.(GPUController.java:72) at juicebox.tools.clt.juicer.HiCCUPS.buildGPUController(HiCCUPS.java:578) at juicebox.tools.clt.juicer.HiCCUPS.runCoreCodeForHiCCUPS(HiCCUPS.java:505) at juicebox.tools.clt.juicer.HiCCUPS.access$200(HiCCUPS.java:158) at juicebox.tools.clt.juicer.HiCCUPS$1.run(HiCCUPS.java:434) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:835) Running HiCCUPS for resolution 5000 Data not available for Y at 5000 resolution Data not available for GL000193.1 at 5000 resolution Exception in thread "pool-4-thread-1" java.lang.NoClassDefFoundError: Could not initialize class jcuda.driver.JCudaDriver at jcuda.utils.KernelLauncher.initialize(KernelLauncher.java:603) at jcuda.utils.KernelLauncher.(KernelLauncher.java:586) at jcuda.utils.KernelLauncher.create(KernelLauncher.java:393) at jcuda.utils.KernelLauncher.create(KernelLauncher.java:321) at jcuda.utils.KernelLauncher.compile(KernelLauncher.java:270) at juicebox.tools.utils.juicer.hiccups.GPUController.(GPUController.java:72) at juicebox.tools.clt.juicer.HiCCUPS.buildGPUController(HiCCUPS.java:578) at juicebox.tools.clt.juicer.HiCCUPS.runCoreCodeForHiCCUPS(HiCCUPS.java:505) at juicebox.tools.clt.juicer.HiCCUPS.access$200(HiCCUPS.java:158) at juicebox.tools.clt.juicer.HiCCUPS$1.run(HiCCUPS.java:434) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:835) Exception in thread "pool-5-thread-1" java.lang.NoClassDefFoundError: Could not initialize class jcuda.driver.JCudaDriver at jcuda.utils.KernelLauncher.initialize(KernelLauncher.java:603) at jcuda.utils.KernelLauncher.(KernelLauncher.java:586) at jcuda.utils.KernelLauncher.create(KernelLauncher.java:393) at jcuda.utils.KernelLauncher.create(KernelLauncher.java:321) at jcuda.utils.KernelLauncher.compile(KernelLauncher.java:270) at juicebox.tools.utils.juicer.hiccups.GPUController.(GPUController.java:72) at juicebox.tools.clt.juicer.HiCCUPS.buildGPUController(HiCCUPS.java:578) at juicebox.tools.clt.juicer.HiCCUPS.runCoreCodeForHiCCUPS(HiCCUPS.java:505) at juicebox.tools.clt.juicer.HiCCUPS.access$200(HiCCUPS.java:158) at juicebox.tools.clt.juicer.HiCCUPS$1.run(HiCCUPS.java:434) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:835) HiCCUPS complete

I tried downloading library for version 8 and still got the same error. Can anyone give me some advice?

Yonatan

yamzaleg commented 3 years ago

to anyone interested, Muhammad graciously answered my question in the 3d google chat forum (https://groups.google.com/g/3d-genomics/c/4-GYiQUQEDk). I ended up using the CPU version.