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)=1000i
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