PGI User Forum
 SearchSearch   MemberlistMemberlist     RegisterRegister   ProfileProfile    Log inLog in 

CUDA-x86.

Cuda fortran link issue

 
Post new topic   Reply to topic    PGI User Forum Forum Index -> Accelerator Programming
View previous topic :: View next topic  
Author Message
tomko



Joined: 23 Sep 2011
Posts: 10

PostPosted: Thu Aug 02, 2012 2:05 pm    Post subject: Cuda fortran link issue Reply with quote

Hi All,
I ran into a linking problem with a cuda fortran code (CUF). Demonstrated below with the matmul example from the manual. When using the -fPIC flag, the linker can not find libcublas.so.

Without the '-fPIC' flag:
[ktomko@oakley02 ~/CUF_Examples]$ pgf90 -Mcuda=4.1 -o mmul_pgf90 mmul.cuf

With the '-fPIC' flag:
[ktomko@oakley02 ~/CUF_Examples]$ pgf90 -fPIC -Mcuda=4.1 -o mmul_pgf90 mmul.cuf
/usr/bin/ld: cannot find ../../2011/cuda/3.2/lib64/libcublas.so

If I add the -# flag to see all of the compilation steps here is what the ld command looks like:

/usr/bin/ld /usr/lib64/crt1.o /usr/lib64/crti.o /usr/local/pgi/12.5/linux86-64/12.5/libso/trace_init.o /usr/lib/gcc/x86_64-redhat-linux/4.4.5/crtbegin.o /usr/local/pgi/12.5/linux86-64/12.5/libso/initmp.o /usr/local/pgi/12.5/linux86-64/12.5/libso/f90main.o -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /usr/local/pgi/12.5/linux86-64/12.5/lib/pgi.ld -L/usr/local/pgi/12.5/linux86-64/12.5/libso -L/usr/local/pgi/12.5/linux86-64/12.5/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.4.5 /tmp/pgf90cM5dg8U334jS.o -rpath /usr/local/pgi/12.5/linux86-64/12.5/libso -rpath /usr/local/pgi/12.5/linux86-64/12.5/lib -rpath /usr/local/pgi/12.5/linux86-64/2012/cuda/4.1/lib64 -o mmul_pgf90 -lcudafor4 -lcudaforblas -L/usr/local/pgi/12.5/linux86-64/2012/cuda/4.1/lib64 -lcudart /usr/local/pgi/12.5/linux86-64/12.5/lib/nonuma.o -lpgmp -lpthread -lpgf90 -lpgf90_rpm1 -lpgf902 -lpgf90rtl -lpgftnrtl -lnspgc -lpgc -lrt -lpthread -lm -lgcc -lc -lgcc /usr/lib/gcc/x86_64-redhat-linux/4.4.5/crtend.o /usr/lib64/crtn.o
/usr/bin/ld: cannot find ../../2011/cuda/3.2/lib64/libcublas.so
pgf90-Fatal-linker completed with exit code 1

One solution is to just not use -fPIC, however the code that I'm building is a hybrid MPI/CUF code and the MPI library invokes pgf90 with the two flags
-noswitcherror -fPIC.

The compiler version is:
[ktomko@oakley02 ~/CUF_Examples]$ pgf90 --version

pgf90 12.5-0 64-bit target on x86-64 Linux -tp nehalem
Copyright 1989-2000, The Portland Group, Inc. All Rights Reserved.
Copyright 2000-2012, STMicroelectronics, Inc. All Rights Reserved.

I have a workaround using a customized mpif90 script, so not a show stopper for me.
-Karen
Back to top
View user's profile
mkcolg



Joined: 30 Jun 2004
Posts: 6134
Location: The Portland Group Inc.

PostPosted: Thu Aug 02, 2012 3:14 pm    Post subject: Reply with quote

Hi Karen,

This is a known problem that was fixed in 12.6 and only occurs in 12.5 when CUDA 4.1 is used.

Basically what happened is that our engineers forgot to update a ld script to point to the correct directory. Since the directory exists here (we still have the CUDA 3.2 directory installed), we missed the error.

Your options are to use CUDA 4.0 (default), update to 12.6, or fix the ld script.

Here's the updated cudablas ld script
Code:
% cat /usr/local/pgi/linux86-64/12.5/libso/libcudaforblas.so
OUTPUT_FORMAT(elf64-x86-64)
GROUP ( ../../2012/cuda/4.1/lib64/libcublas.so ./libcudaforwrapblas.so )


Sorry for the error,
Mat
Back to top
View user's profile
Display posts from previous:   
Post new topic   Reply to topic    PGI User Forum Forum Index -> Accelerator Programming All times are GMT - 7 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © phpBB Group