Skip to Content.
Sympa Menu

forum - Re: [abinit-forum] abinit 5.8.4 /bigdft and CUDA

forum@abinit.org

Subject: The ABINIT Users Mailing List ( CLOSED )

List archive

Re: [abinit-forum] abinit 5.8.4 /bigdft and CUDA


Chronological Thread 
  • From: Luigi Genovese <luigi.genovese@gmail.com>
  • To: forum@abinit.org
  • Subject: Re: [abinit-forum] abinit 5.8.4 /bigdft and CUDA
  • Date: Mon, 21 Sep 2009 09:54:54 +0200
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=TEXi3oiqmVN1J0WuZLrDOYUpygMQwYbrOLwAuqXcpa5Jvury+Z3zXEpPD4gRZQ+J+Z 5iRYqY/YOobn1x4Qm6Qrs0uhZcpWsJpyX640D9fVpp+MCRZmNRC0NGLKJ8zCdMsHgD89 oUd1qXG8m21Vh+jzrF1DzuwIE5zTng+E4ejBY=

Hi,

as Matthieu Ospici pointed out, I have just realised that I did not
read the output of your configure... sorry for that.

Another option which sould be added to the fortran compiler flags for
supporting cuda routines is the one which adds a second underscore to
functions, whic in ifort is "-assume 2underscores".

Sorry for the incomplete answer

Luigi



On Sun, Sep 20, 2009 at 8:01 PM, Luigi Genovese
<luigi.genovese@gmail.com> wrote:
> Hi,
>
> to compile BigDFT with the CUDA routines you have to add
> --enable-cuda-gpu
> in the configure script options, and optionally provide the path of
> the cuda libraries if it is not the default value.
> See configure --help for more details.
>
> However, your GPU must support double precision (NVIDIA release number
> 1.3) to run BigDFT on. Simple precision is not supported.
>
> In the 1.3.0 version, not so much is add for what concern the
> documentation for GPU. Do not hesitate to communicate us the problems
> you may have.
>
> Regards
>
> Luigi Genovese
>
> On Sun, Sep 20, 2009 at 10:26 AM, Jyh-Shyong Ho <c00jsh00@nchc.org.tw>
> wrote:
>> Hi,
>>
>> BigDFT is one of plugin programs of abinit 5.8.4, now BigDFT can be built
>> with
>> NVIDIA CUDA support. I wonder if anyone has successfully built BigDFT with
>> CUDA?
>>
>> I downloaded the latest version bigdft-1.3 and tried to install it on my
>> computer with CUDA 2.3, but failed. If someone can provide me some hint
>> where
>> might be wrong, it will be very appreciated.
>>
>> In directory bigdft-1.3.0/src/CUDA, I was able to build libGPU.a, however,
>> I
>> failed to built check_conv which uses libGPU.a:
>>
>> ...
>> chem@gch:/work/chem/bigdft-1.3.0/src/CUDA> make check
>> make  conv_check GPUham
>> make[1]: Entering directory `/work/chem/bigdft-1.3.0/src/CUDA'
>> ifort -I../modules  -I. -I. -O2  -L/opt/lapack/intel -L/opt/lapack/intel
>> -L../../libXC/src -o conv_check conv_check.o memory.o base.o  
>> ../libbigdft.a
>> -L/opt/cuda/lib/ -lcudart -lcublas libGPU.a -lxc -llapack -lblas  -lpthread
>> conv_check.o: In function `MAIN__':
>> conv_check.f90:(.text+0x4f0): undefined reference to `set_gpu_double_'
>> conv_check.f90:(.text+0x1417): undefined reference to `gpu_allocate_'
>> conv_check.f90:(.text+0x144c): undefined reference to `gpu_allocate_'
>> conv_check.f90:(.text+0x1488): undefined reference to `gpu_send_'
>> conv_check.f90:(.text+0x1703): undefined reference to `gpu_receive_'
>> conv_check.f90:(.text+0x171a): undefined reference to `gpu_deallocate_'
>> conv_check.f90:(.text+0x1731): undefined reference to `gpu_deallocate_'
>> conv_check.f90:(.text+0x230d): undefined reference to `gpu_allocate_'
>> conv_check.f90:(.text+0x2342): undefined reference to `gpu_allocate_'
>> conv_check.f90:(.text+0x2377): undefined reference to `gpu_allocate_'
>> conv_check.f90:(.text+0x23ac): undefined reference to `gpu_allocate_'
>> conv_check.f90:(.text+0x23e8): undefined reference to `gpu_send_'
>> conv_check.f90:(.text+0x269e): undefined reference to `gpu_receive_'
>> conv_check.f90:(.text+0x26b5): undefined reference to `gpu_deallocate_'
>> conv_check.f90:(.text+0x26cc): undefined reference to `gpu_deallocate_'
>> conv_check.f90:(.text+0x26e3): undefined reference to `gpu_deallocate_'
>> conv_check.f90:(.text+0x26fa): undefined reference to `gpu_deallocate_'
>> conv_check.f90:(.text+0x2fc3): undefined reference to `gpu_allocate_'
>> conv_check.f90:(.text+0x2ff8): undefined reference to `gpu_allocate_'
>> conv_check.f90:(.text+0x3034): undefined reference to `gpu_send_'
>> conv_check.f90:(.text+0x32bc): undefined reference to `gpu_receive_'
>> conv_check.f90:(.text+0x32d3): undefined reference to `gpu_deallocate_'
>> conv_check.f90:(.text+0x32ea): undefined reference to `gpu_deallocate_'
>> conv_check.f90:(.text+0x441b): undefined reference to `gpu_allocate_'
>> conv_check.f90:(.text+0x4458): undefined reference to `gpu_allocate_'
>> conv_check.f90:(.text+0x448f): undefined reference to `gpu_send_'
>> conv_check.f90:(.text+0x475b): undefined reference to `gpu_receive_'
>> conv_check.f90:(.text+0x4772): undefined reference to `gpu_deallocate_'
>> conv_check.f90:(.text+0x4789): undefined reference to `gpu_deallocate_'
>> conv_check.f90:(.text+0x47a0): undefined reference to `gpu_deallocate_'
>> conv_check.f90:(.text+0x52aa): undefined reference to `gpu_allocate_'
>> conv_check.f90:(.text+0x52e7): undefined reference to `gpu_allocate_'
>> conv_check.f90:(.text+0x532c): undefined reference to `gpu_send_'
>> conv_check.f90:(.text+0x55df): undefined reference to `gpu_receive_'
>> conv_check.f90:(.text+0x55f6): undefined reference to `gpu_deallocate_'
>> conv_check.f90:(.text+0x560d): undefined reference to `gpu_deallocate_'
>> conv_check.f90:(.text+0x5624): undefined reference to `gpu_deallocate_'
>> conv_check.f90:(.text+0x6539): undefined reference to `gpu_allocate_'
>> conv_check.f90:(.text+0x656e): undefined reference to `gpu_allocate_'
>> conv_check.f90:(.text+0x65aa): undefined reference to `gpu_send_'
>> conv_check.f90:(.text+0x6832): undefined reference to `gpu_receive_'
>> conv_check.f90:(.text+0x6849): undefined reference to `gpu_deallocate_'
>> conv_check.f90:(.text+0x6860): undefined reference to `gpu_deallocate_'
>> memory.o: In function `memory_occupation_':
>> ../profiling/memory.f90:(.text+0x289): undefined reference to `mpi_abort_'
>> ../profiling/memory.f90:(.text+0x549): undefined reference to `mpi_abort_'
>> base.o: In function `module_base_mp_herk_simple_':
>> ../modules/base.F90:(.text+0xd33): undefined reference to `cublas_cherk_'
>> base.o: In function `module_base_mp_syrk_double_':
>> ../modules/base.F90:(.text+0xd93): undefined reference to `cublas_dsyrk_'
>> base.o: In function `module_base_mp_syrk_simple_':
>> ../modules/base.F90:(.text+0xdf3): undefined reference to `cublas_ssyrk_'
>> base.o: In function `module_base_mp_c_gemm_simple_':
>> ../modules/base.F90:(.text+0xf05): undefined reference to `cublas_cgemm_'
>> base.o: In function `module_base_mp_gemm_double_':
>> ../modules/base.F90:(.text+0xfe5): undefined reference to `cublas_dgemm_'
>> base.o: In function `module_base_mp_gemm_simple_':
>> ../modules/base.F90:(.text+0x10c5): undefined reference to `cublas_sgemm_'
>> base.o: In function `module_base_mp_nrm2_simple_':
>> ../modules/base.F90:(.text+0x114e): undefined reference to `cublas_snrm2_'
>> base.o: In function `module_base_mp_dot_simple_':
>> ../modules/base.F90:(.text+0x117e): undefined reference to `cublas_sdot_'
>> base.o: In function `module_base_mp_c_axpy_simple_':
>> ../modules/base.F90:(.text+0x11ae): undefined reference to `cublas_caxpy_'
>> base.o: In function `module_base_mp_axpy_simple_':
>> ../modules/base.F90:(.text+0x11de): undefined reference to `cublas_saxpy_'
>> base.o: In function `module_base_mp_c_trmm_simple_':
>> ../modules/base.F90:(.text+0x12b5): undefined reference to `cublas_ctrmm_'
>> base.o: In function `module_base_mp_trmm_simple_':
>> ../modules/base.F90:(.text+0x13d5): undefined reference to `cublas_strmm_'
>> base.o: In function `module_base_mp_c_scal_simple_':
>> ../modules/base.F90:(.text+0x144e): undefined reference to `cublas_cscal_'
>> base.o: In function `module_base_mp_scal_simple_':
>> ../modules/base.F90:(.text+0x147e): undefined reference to `cublas_sscal_'
>> ../libbigdft.a(convolut_common_interface_cuda.o): In function
>> `gpu_precond_helper_stream_':
>> convolut_common_interface_cuda.f90:(.text+0x11b): undefined reference to
>> `gpuprecond_stream_'
>> ../libbigdft.a(convolut_common_interface_cuda.o): In function
>> `gpu_locham_helper_stream_':
>> convolut_common_interface_cuda.f90:(.text+0x3b4): undefined reference to
>> `gpulocham_stream_'
>> ../libbigdft.a(convolut_common_interface_cuda.o): In function
>> `gpu_locden_helper_stream_':
>> convolut_common_interface_cuda.f90:(.text+0x6ee): undefined reference to
>> `gpulocden_stream_'
>> ../libbigdft.a(convolut_common_interface_cuda.o): In function
>> `local_partial_density_gpu_':
>> convolut_common_interface_cuda.f90:(.text+0x9ee): undefined reference to
>> `gpu_send_'
>> convolut_common_interface_cuda.f90:(.text+0xbc2): undefined reference to
>> `gpu_receive_'
>> convolut_common_interface_cuda.f90:(.text+0xbee): undefined reference to
>> `create_stream_'
>> convolut_common_interface_cuda.f90:(.text+0xc70): undefined reference to
>> `mem_copy_f_to_c_stream_'
>> convolut_common_interface_cuda.f90:(.text+0xca1): undefined reference to
>> `gpu_send_pi_stream_'
>> convolut_common_interface_cuda.f90:(.text+0xde4): undefined reference to
>> `gpulocden_stream_'
>> convolut_common_interface_cuda.f90:(.text+0xe82): undefined reference to
>> `gpu_receive_pi_stream_'
>> convolut_common_interface_cuda.f90:(.text+0xea0): undefined reference to
>> `mem_copy_c_to_f_stream_'
>> convolut_common_interface_cuda.f90:(.text+0xea7): undefined reference to
>> `launch_all_streams_'
>> ../libbigdft.a(convolut_common_interface_cuda.o): In function
>> `preconditionall_gpu_':
>> convolut_common_interface_cuda.f90:(.text+0xfc4): undefined reference to
>> `gpu_send_'
>> convolut_common_interface_cuda.f90:(.text+0x120e): undefined reference to
>> `gpu_receive_'
>> convolut_common_interface_cuda.f90:(.text+0x1322): undefined reference to
>> `create_stream_'
>> convolut_common_interface_cuda.f90:(.text+0x135a): undefined reference to
>> `mem_copy_f_to_c_stream_'
>> convolut_common_interface_cuda.f90:(.text+0x1387): undefined reference to
>> `gpu_send_pi_stream_'
>> convolut_common_interface_cuda.f90:(.text+0x144d): undefined reference to
>> `gpuprecond_stream_'
>> convolut_common_interface_cuda.f90:(.text+0x147e): undefined reference to
>> `gpu_receive_pi_stream_'
>> convolut_common_interface_cuda.f90:(.text+0x149c): undefined reference to
>> `mem_copy_c_to_f_stream_'
>> convolut_common_interface_cuda.f90:(.text+0x14b6): undefined reference to
>> `launch_all_streams_'
>> ../libbigdft.a(convolut_common_interface_cuda.o): In function
>> `local_hamiltonian_gpu_':
>> convolut_common_interface_cuda.f90:(.text+0x15d1): undefined reference to
>> `gpu_send_'
>> convolut_common_interface_cuda.f90:(.text+0x181e): undefined reference to
>> `gpu_receive_'
>> convolut_common_interface_cuda.f90:(.text+0x1869): undefined reference to
>> `create_stream_'
>> convolut_common_interface_cuda.f90:(.text+0x18c0): undefined reference to
>> `mem_copy_f_to_c_stream_'
>> convolut_common_interface_cuda.f90:(.text+0x18fd): undefined reference to
>> `gpu_send_pi_stream_'
>> convolut_common_interface_cuda.f90:(.text+0x1904): undefined reference to
>> `launch_all_streams_'
>> convolut_common_interface_cuda.f90:(.text+0x19fe): undefined reference to
>> `create_stream_'
>> convolut_common_interface_cuda.f90:(.text+0x1ac9): undefined reference to
>> `gpulocham_stream_'
>> convolut_common_interface_cuda.f90:(.text+0x1b04): undefined reference to
>> `gpu_receive_pi_stream_'
>> convolut_common_interface_cuda.f90:(.text+0x1b2b): undefined reference to
>> `mem_copy_c_to_f_stream_'
>> convolut_common_interface_cuda.f90:(.text+0x1b4d): undefined reference to
>> `launch_all_streams_'
>> ../libbigdft.a(convolut_common_interface_cuda.o): In function `free_gpu_':
>> convolut_common_interface_cuda.f90:(.text+0x1b79): undefined reference to
>> `gpu_deallocate_'
>> convolut_common_interface_cuda.f90:(.text+0x1b89): undefined reference to
>> `gpu_deallocate_'
>> convolut_common_interface_cuda.f90:(.text+0x1b99): undefined reference to
>> `gpu_deallocate_'
>> convolut_common_interface_cuda.f90:(.text+0x1ba9): undefined reference to
>> `gpu_deallocate_'
>> convolut_common_interface_cuda.f90:(.text+0x1bb9): undefined reference to
>> `gpu_deallocate_'
>> ../libbigdft.a(convolut_common_interface_cuda.o):convolut_common_interface_cuda.f90:(.text+0x1bc8):
>> more undefined references to `gpu_deallocate_' follow
>> ../libbigdft.a(convolut_common_interface_cuda.o): In function
>> `adjust_keys_for_gpu_':
>> convolut_common_interface_cuda.f90:(.text+0x2348): undefined reference to
>> `gpu_int_allocate_'
>> convolut_common_interface_cuda.f90:(.text+0x2368): undefined reference to
>> `gpu_int_send_'
>> ../libbigdft.a(convolut_common_interface_cuda.o): In function
>> `prepare_gpu_for_locham_':
>> convolut_common_interface_cuda.f90:(.text+0x247f): undefined reference to
>> `set_gpu_double_'
>> convolut_common_interface_cuda.f90:(.text+0x2b47): undefined reference to
>> `gpu_int_allocate_'
>> convolut_common_interface_cuda.f90:(.text+0x2b6d): undefined reference to
>> `gpu_int_send_'
>> convolut_common_interface_cuda.f90:(.text+0x2dc4): undefined reference to
>> `gpu_allocate_'
>> convolut_common_interface_cuda.f90:(.text+0x2e12): undefined reference to
>> `gpu_allocate_'
>> convolut_common_interface_cuda.f90:(.text+0x2e35): undefined reference to
>> `gpu_allocate_'
>> convolut_common_interface_cuda.f90:(.text+0x2e58): undefined reference to
>> `gpu_allocate_'
>> convolut_common_interface_cuda.f90:(.text+0x2e92): undefined reference to
>> `gpu_allocate_'
>> ../libbigdft.a(convolut_common_interface_cuda.o):convolut_common_interface_cuda.f90:(.text+0x2ec6):
>> more undefined references to `gpu_allocate_' follow
>> ../libbigdft.a(convolut_common_interface_cuda.o): In function
>> `prepare_gpu_for_locham_':
>> convolut_common_interface_cuda.f90:(.text+0x2f3b): undefined reference to
>> `cpu_pinned_allocation_'
>> convolut_common_interface_cuda.f90:(.text+0x2f5b): undefined reference to
>> `cpu_pinned_allocation_'
>> make[1]: *** [conv_check] Error 1
>> make[1]: Leaving directory `/work/chem/bigdft-1.3.0/src/CUDA'
>> make: *** [check-am] Error 2
>>
>>
>> Most undefined references are included in ligGPU.a, however, for some known
>> reason, ligGPU.a was not recognized.
>>
>> Thanks for any help.
>>
>> Jyh-Shyong Ho, Ph.D.
>> Research Scientist
>> National Center for High Performance Computing
>> Hsinchu, Taiwan, ROC
>>
>



Archive powered by MHonArc 2.6.16.

Top of Page