Hello All,
Just wanted to make a quick note if you are having issues compiling QE-gpu with GCC 5+ and CUDA 7.5 (CUDA 8.0 should support GCC 5+).
I have been testing this now, and it does appear that CUDA works with GCC 5+ and QE despite the claimed incompatibility with GCC 5+. In order to install it is properly, you need to do the following steps:
Update $PATH variable
The biggest issue I have with the QE-GPU configure script is that it does not automatically include the CUDA /bin folder when configuring. Before you run the configure script, run the following:
export PATH=/usr/local/cuda/bin:$PATH
Or wherever you have your cuda installed. The configure command is explained on the QE-GPU website: https://github.com/fspiga/QE-GPU
Update CUDA
If you have GCC > 4.9 it will die during the compilation process. The QE code is GCC 4.9 compatible, but more and more GCC 5+ will be shipped with new installation of linux. To get around this, I followed the steps outlined here: https://www.pugetsystems.com/labs/hpc/NVIDIA-CUDA-with-Ubuntu-16-04-beta-on-a-laptop-if-you-just-cannot-wait-775/
But if you want to save a click, edit /usr/local/cuda/include/host_config.h and comment out line 115:
llentz@server:~/projects$ sudo vi /usr/local/cuda/include/host_config.h line: 115 comment out error //#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!
This might not be a good idea to keep permanently, but for QE purposes, this is a nice stop-gap measure.
Edit make.sys
The last step is a compatibility issue with GCC 5+, but is a stylistic one. If you do not add this, the CUDA part will die rather unceremoniously due to an memcpy issue. This is outlined here: https://github.com/BVLC/caffe/issues/4046. This is easily remedied by adding -D_FORCE_INLINES to the NVCCFLAGS line in make.sys:
llentz@server: vi make.sys ... NVCCFLAGS = -O3 -gencode arch=compute_35,code=sm_35 -D_FORCE_INLINES
And that should allow you to completely compile the QE-GPU version of QE. In my next post I will show some interesting scaling data for QE; both for the GPU version and the non-GPU version.
xxarin