Hi everyone
I am currently trying to setup my submission script for VelvetOptimizer on our cluster and was a bit confused as to how the various parameters had to be setup. The plan was to spread the instances over 24 threads, so I initially had the following parameters:
- In the SLURM submission script:
OMP_NUM_THREADS=24
,OPENBLAS_NUM_THREADS=24
,--cpus=24
,--cpus-per-task=24
,mem=256Gb
- In the VelvetOptimizer command line:
-t 24
However it appears that this generated thread allocation issues (it maybe tried to allocate 24*24 threads...?), and the program eventually crashed with the following error messages (not sure if the thread allocation actually caused the crash though):
Use of uninitialized value in numeric ne (!=) at /home/umons/orgmb/csheridan/software/BioPerl/BioPerl-1.6.1/VelvetOptimiser.pl line 289.
Use of uninitialized value $maxScore in numeric gt (>) at /home/umons/orgmb/csheridan/software/BioPerl/BioPerl-1.6.1/VelvetOptimiser.pl line 290.
Use of uninitialized value in numeric gt (>) at /home/umons/orgmb/csheridan/software/BioPerl/BioPerl-1.6.1/VelvetOptimiser.pl line 290.
Aug 11 16:12:51 Hash value of best assembly by assembly score: 79
Aug 11 16:12:51 Optimisation routine chosen for best assembly: shortPaired
Aug 11 16:12:51 Looking for the expected coverage
Unable to open /gpfsuser/home/users/c/s/csheridan/data/auto_data_79/stats.txt for exp_cov determination.
at /home/umons/orgmb/csheridan/software/BioPerl/BioPerl-1.6.1/VelvetOptimiser.pl line 838
Anyway, I then tried to correct this by setting the threads parameters as follows, but things appeared much slower with Velvet calculating only 3 hash values at a time:
- In the SLURM submission script:
OMP_NUM_THREADS=8
,OPENBLAS_NUM_THREADS=8
,--cpus=24
,--cpus-per-task=24
,mem=256Gb
- In the VelvetOptimizer command line:
-t 3
So my question is, how do you exactly set the threads parameters in order to gain from the use of OPENMP, and how can Velvet/Oases be optimally parallelised?
Thank you!
Thanks Adrian.
I have used those parameters but still get a crash report:
I have therefore attempted to run velveth on its own, and there is no issue. Do you have an idea of what may be causing this?
Thanks
Yes, I think it is the lack of RAM. Did you monitor your RAM usage? Use htop or top. The lower the kmer, the more ram it needs.
This does look like an issue with thread number, but it is kind of hard to debug. I recommend putting the following in your submission script:
and use
-t 1
when you run VelvetOptimiser. If you have issues with those parameters it may indicate something else is going on. Also, that will tell you approximately how much RAM you will need per thread (it will vary by hash length though, so be aware of that).