Error 209: No binary for GPU

Hi,

I have a NVIDIA GeForce GTX 750 Ti and I have installed the PGI Workstation 15.1. Everything seems to be properly installed. When I type $ pgaccelinfo, I get the following information:

CUDA Driver Version: 6050

Device Number: 0
Device Name: GeForce GTX 750 Ti
Device Revision Number: 5.0
Global Memory Size: 2147483648
Number of Multiprocessors: 5
Concurrent Copy and Execution: Yes
Total Constant Memory: 65536
Total Shared Memory per Block: 49152
Registers per Block: 65536
Warp Size: 32
Maximum Threads per Block: 1024
Maximum Block Dimensions: 1024, 1024, 64
Maximum Grid Dimensions: 2147483647 x 65535 x 65535
Maximum Memory Pitch: 2147483647B
Texture Alignment: 512B
Clock Rate: 1084 MHz
Execution Timeout: Yes
Integrated Device: No
Can Map Host Memory: Yes
Compute Mode: default
Concurrent Kernels: Yes
ECC Enabled: No
Memory Clock Rate: 2700 MHz
Memory Bus Width: 128 bits
L2 Cache Size: 2097152 bytes
Max Threads Per SMP: 2048
Async Engines: 1
Unified Addressing: Yes
Managed Memory: Yes
Current free memory: 1904967680
Upload time (4MB): 780 microseconds ( 470 ms pinned)
Download time: 780 microseconds ( 310 ms pinned)
Upload bandwidth: 5377 MB/sec (8924 MB/sec pinned)
Download bandwidth: 5377 MB/sec (13530 MB/sec pinned)
clGetDeviceIDs returns code -1

So far so good. Then to test the GPU I used the Fortran example from page 24 of the PGI “OpenACC Getting Started Guide”. Here it is:

MODULE VECADDMOD
IMPLICIT NONE
CONTAINS
SUBROUTINE VECADDGPU(r,a,b,n)
REAL, DIMENSION(:) :: r,a,b
INTEGER :: n
INTEGER :: i
!$acc kernels loop copyin( a(1:n),b(1:n) ) copyout( r(1:n) )
DO i=1,n
r(i) = a(i) + b(i)
ENDDO
END SUBROUTINE
END MODULE

PROGRAM MAIN
USE VECADDMOD
IMPLICIT NONE
INTEGER :: n,i,errs,argcount
REAL, DIMENSION(:), ALLOCATABLE :: a,b,r,e
CHARACTER10 :: arg1
argcount = command_argument_count()
n=1000000 ! Default value
IF ( argcount == 1 ) THEN
CALL get_command_argument(1,arg1)
READ( arg1, ‘(i)’) n
IF (n<=0) n=100000
END IF
ALLOCATE( a(n), b(n), r(n), e(n) )
DO i=1,n
a(i)=1
b(i)=1000
i
ENDDO

CALL VECADDGPU(r,a,b,n)

DO i=1,n
e(i)=a(i)+b(i)
ENDDO

errs = 0
DO i = 1,n
IF ( r(i) /= e(i) ) THEN
errs = errs + 1
ENDIF
ENDDO

PRINT*, errs, ’ errors found’
IF (errs) CALL exit(errs)

END PROGRAM


I saved it under the name f1.f90 and compiled it with:
$ pgfortran -acc f1.f90

Everything went fine and the only message I got was:
“NOTE: your trial license will expire in 14 days, 4.23 hours.”

Now when I write
$ f1.exe

I get the following message
“call to cuModuleLoadData returned error 209: No binary for GPU”


Does anyone know what the problem is? Thanks a lot in advance for your help!

/georg

Hi Georg,

Unfortunately, we don’t support compute capability 5.0 (Maxwell). We support the Telsa product line and since Maxwell is specifically targeted for the gaming market, it was never add to Tesla.

Sorry!
Mat

Thanks, Mat for your quick reply. Two follow up questions:

  1. Does it mean that also PGI’s CUDA Fortran does not work with the GeForce GTX 750 Ti ?
  2. Do you know if there is a list of GPUs which are supported by the PGI Workstation?
    Thanks for your help
    /georg

Hi georg,

Correct, CUDA Fortran isn’t support on Maxwell either.

We officially support all NVIDIA Tesla products as well as several AMD devices (See: http://www.pgroup.com/resources/accel.htm#targets). There are some GeForce and Quadro products that share the same architecture as a Telsa product, in which case these products will work as well. Look for the compute capability (currently supported are 2.x and 3.x) or architecture name (Fermi or Kepler).

  • Mat