Install beagle-lib for NVidia Tesla V100 on Debian buster

BEAGLE-LIB is a high-performance library to accelerate the calculations of Bayesian and Maximun Likelihood phylogenetics analyses. The latest version of beagle-lib was released on Dec 4, 2018.

When compiled for NVidia Tesla V100 on Debian buster 10.9, an error was encountered:

nvcc fatal   : Value 'compute_30' is not defined for option 'gpu-architecture'

1. Install NVidia driver and CUDA toolkit

Firstly, append this line in /etc/apt/sources.list

deb http://deb.debian.org/debian buster-backports main contrib non-free

Then, install:

sudo apt update
sudo apt install -t buster-backports nvidia-driver nvidia-cuda-toolkit

Now the NVidia driver 460.39 and CUDA toolkit 11.2.1 have been installed.

2. Download and install beagle-lib

From the beagle-lib installation instruction:

git clone --depth=1 https://github.com/beagle-dev/beagle-lib.git
cd beagle-lib
./autogen.sh
./configure --prefix=$HOME
make install

Here I encountered the error:

nvcc fatal   : Value 'compute_30' is not defined for option 'gpu-architecture'

The “compute_30” was for the Kepler architecture, which has been deprecated in CUDA 11. Some modification is necessary.

After the running of “autogen.sh”, modify the file “configure” line 17911:

   NVCCFLAGS="-O3 -arch compute_30"

to

   NVCCFLAGS="-O3 -arch compute_70"

Then

./configure --prefix=$HOME
make install

The beagle-lib is installed ok.

3. More

Another error I encountered was:

cc1plus: error: /usr/bin/nvcc/include: Not a directory

It could be solved by:

./configure --prefix=$HOME --with-cuda=/usr

Reference

  1. Installing BEAGLE on Linux
  2. Matching CUDA arch and CUDA gencode for various NVIDIA architectures