DeltaGroupNJUPT / Vina-GPU-2.1

Vina-GPU 2.1, an improved docking toolkit for faster speed and higher accuracy on the virtual screening
Apache License 2.0
42 stars 12 forks source link

Error while testing the example file using Vina-GPU-2.1 #27

Open Tuleshwori opened 1 month ago

Tuleshwori commented 1 month ago

I have compiled the Vina-GPU-2.1 in a Ubuntu 22 system (GPU) following the instructions with cuda 12.4 and boost 1.78 version, but face this error when trying to test the example. Error-Vina-GPU-2 1 While the same set up is compiled, working and running successfully in another workstation (Ubuntu 20).

vwcruzeiro commented 1 month ago

I am also experiencing this issue and looking for a solution. It shows up for AutoDock-Vina-GPU-2.1, QuickVina2-GPU-2.1 and QuickVina-W-GPU-2.1. I already tried several combinations of GNU and CUDA compilers, but the problem persisted.

@Tuleshwori , what is the setup of the machine where the code works successfully? What compilers are you using? Also, are you using OpenCL 2.0 or 3.0? Thanks!

Tuleshwori commented 1 month ago

@vwcruzeiro It's a CPU (32 processor) with Ubuntu 20.04.6.LTS system, x86_64 architecture. compiler I have use is gcc, with cuda 11, boost_1_78 version, and OpenCL 3.0. I had issue with the latest version of boost while installing it, so change it to boost 1.78, and it work, and running so far

KelvinHobbes commented 1 month ago

@vwcruzeiro , I've been fighting with this same error as well for the past week. It appears to be tied to some issue with the clBuildFromSource() function in the wrapcl.cl file. I've tried several GNU and clang compilers and have had little luck. What does your makefile look like? I have an NVIDIA machine and I haven't been able to reproduce this error on it yet, so I had thought it was tied to AMD specifically, but if you are getting this same error for a NVIDIA system maybe something else is going on.

vwcruzeiro commented 1 month ago

@KelvinHobbes I reproduced the error on machines with NVIDIA RTX A5000 or NVIDIA GeForce GTX 970 GPUs. I explored the issue more on the A5000 machine and I tried several GCC versions (6.5.0, 7.5.0, 8.5.0, 11.4.0, 12.3.0, 13.2.0, and 14.1.0), CUDA versions (10.2.89, 11.5.0, 12.0.0, 12.1.0, 12.2.2, and 12.4.0) and Boost versions (1.77.0 and 1.84.0). Nothing worked. I tried both OpenCL 2.0 and 3.0.

What does your environment look like on the NVIDIA machine that worked for you?

@Tuleshwori @KelvinHobbes What do you get when you compile make out instead of make source? This disables compiling the OpenCL kernels from source during run time. I get a segmentation fault error if I do that.

diallobakary4 commented 1 month ago

I have been experiencing same error. Config:Pop!_OS 22.04, NVIDIA GeForce RTX 3060, cuda 12.4, boost 1.77, OpenCL 3 (tried with 2.0 too without success). Thank you @vwcruzeiro, using make out worked, still nedd to make sure the run outputs make sense. Still I am not sure if compiling with the provided source is required or not

vwcruzeiro commented 1 month ago

@Tuleshwori @KelvinHobbes @diallobakary4 I still did not succeed in compiling the code. Following @Tuleshwori specifications, I used the same compiler in Ubuntu 20.04.6.LTS (GCC 9.3.0) and Boost 1.78 and CUDA 11.5 compiled with this GCC version but, unfortunately, the compilation issue with AutoDockVina-GPU-2.1 persisted, both for make source and make out. I am running out of options... Do you have any suggestions?

Tuleshwori commented 1 month ago

@vwcruzeiro by using make out, it got compiled and is running. thank you so much for this. I tried this command in this system with ubuntu 22.04, NVIDIA A100 PCIe 80GB, AMD Epyc 7452 32core processor 128 GPU, gcc version 11.4.0, boost 1.78, cuda 12.4, OpenCL 3. I still need to try compiling like this in another system. I suppose you have changed the work_dir path in the Makefile and opencl_binary path in the test example also right ?

vwcruzeiro commented 1 month ago

Hello @Tuleshwori , I used gcc version 11.4.0, boost 1.78, cuda 12.4, OpenCL 3. and unfortunately the issue persisted for me.

Tuleshwori commented 1 month ago

Allright @vwcruzeiro i am also out of options to suggest anything. but thanks for your help !

vwcruzeiro commented 1 month ago

@Tuleshwori Thank you so much for your help!

diallobakary4 commented 1 month ago

I have come across this docker file: https://github.com/ddnovikov/vina-gpu-dockerized/blob/main/Dockerfile This is for vina-gpu, yet the build process is very similar and may be easily adapted.

KelvinHobbes commented 1 month ago

@vwcruzeiro Sorry for the late reply; I can compile (and get the OpenCL to work) on a NVIDIA V100S system with the following settings in my makefile: BOOST_LIB_PATH=/boost_1_78_0/ OPENCL_LIB_PATH=/cuda/11.4.2/rhel8_binary/ OPENCL_VERSION=-DOPENCL_2_0 GPU_PLATFORM=-DNVIDIA_PLATFORM

After digging around a bit, I think I've found the source of the issue. In the OpenCL kernels the VinaGPU code has a mismatch in pointer types. For some versions of the OpenCL drivers provided by the GPU manufacturers, the OpenCL JIT compiler permits the pointer to "degrade" into the necessary type (as what would happen if you could compile the kernel itself with gcc for instance); however, strictly speaking this type of behavior is not permitted. As a result, it looks like some of the OpenCL JIT compilers don't treat the pointer issue as a warning, but instead treat it as an error. As a result, when VinaGPU is run on systems with those OpenCL drivers, the vinaGPU executable will fail and the kernels will not compile.

Someone that is more familiar with the code might be able to fix this pointer issue.

vwcruzeiro commented 1 month ago

@KelvinHobbes I greatly appreciate your insights! They’ve been incredibly helpful! As I’ve already tried various CUDA versions without success, could you suggest how I can verify your hypothesis independently? Would this involve changing my NVIDIA driver to a different version? For reference, I’m currently operating with the NVIDIA driver version 550.54.14 on A5000 GPUs. If applicable, could you please share the driver version you’ve found to compile the code correctly? Thank you so much!

moimaian commented 1 month ago

I had the same error and in my compilation it only worked when: I extracted Boost_1_83_0 as root to /usr/local/boost_1_83_0 ;

I ran it in the /usr/local/boost_1_83_0 folder: ./bootstrap.sh --with-libraries=all && ./b2 && ./b2 install (I didn't change project-config.jam); I extracted AutoDock-Vina-GPU-2.1 to $HOME with the executable path as /home/moises/Vina-GPU-2.1/AutoDock-Vina-GPU-2.1/AutoDock-Vina-GPU-2-1 ;

I edited the makefile: WORK_DIR=/home/moises/Vina-GPU-2.1/AutoDock-Vina-GPU-2.1 BOOST_LIB_PATH=/usr/local/boost_1_83_0 OPENCL_LIB_PATH=/usr/local/cuda-12.4 OPENCL_VERSION=-DOPENCL_3_0 GPU_PLATFORM=-DNVIDIA_PLATFORM

I edited the PATH environment variables like: export PATH=$PATH:'/usr/local/boost_1_83_0' export PATH=$PATH:'/usr/local/boost_1_83_0/bin.v2' export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:'/usr/local/boost_1_83_0/stage/lib' export PATH=$PATH:'/home/moises/Vina-GPU-2.1/AutoDock-Vina-GPU-2.1' alias vina_GPU='/home/moises/Vina-GPU-2.1/AutoDock-Vina-GPU-2.1/AutoDock-Vina-GPU-2-1'

I ran it in the /home/moises/Vina-GPU-2.1/AutoDock-Vina-GPU-2.1 folder: make clean && make source

Tested: ./AutoDock-Vina-GPU-2-1 --config ./input_file_example/2bm2_config.txt

THE POST ERROR GENERATED HERE!!!!

I copied, as root, the two kernel files (Kernel1_Opt.bin and Kernel2_Opt.bin) to OPENCL_LIB_PATH=/usr/local/cuda-12.4 in the lib64 directory. And after that I ran "make clean && make" again (without the source). After days and days of suffering, it worked!

vwcruzeiro commented 3 weeks ago

For those of you who were able to compile and run the code successfully, could you please report which NVIDIA driver you used? Thank you!

moimaian commented 3 weeks ago

"I have the Nvidia driver 535.171.04 on one PC, and on the other, I believe it is more up to date. Both worked."

diallobakary4 commented 2 weeks ago

I could compile only with 'make out'. My driver version is 550.67

On Fri, Jun 14, 2024 at 6:39 PM moimaian @.***> wrote:

"I have the Nvidia driver 535.171.04 on one PC, and on the other, I believe it is more up to date. Both worked."

— Reply to this email directly, view it on GitHub https://github.com/DeltaGroupNJUPT/Vina-GPU-2.1/issues/27#issuecomment-2168566483, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADHIEFI76HWA6CXADGOVMKLZHM2ELAVCNFSM6AAAAABH2ARSZWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNRYGU3DMNBYGM . You are receiving this because you were mentioned.Message ID: @.***>

-- ​---- Bakary N'tji Diallo LinkedIn https://www.linkedin.com/in/bakarydiallo/ Google Scholar https://scholar.google.com/citations?user=CyRZO8cAAAAJ&hl=en

Tuleshwori commented 2 weeks ago

I have Nvidia Driver Version: 550.54.15