pgi14/10 & AMD Radeon/Hawaii R290X

Hello .

What is exactly the status of the support of AMD Radeon/Hawaii GPU with pgi/14.10 ?

I have acquired a R290X card

R290X=Hawaii Proc = R9 Serie ( this proc is 1 year old now … )

The web say yes, this is supported :
https://www.pgroup.com/resources/accel.htm#targets

AMD Radeon HD Graphics 7700 series
AMD Radeon HD Graphics 7800 series
AMD Radeon HD Graphics 7900 series
AMD APU Family with AMD Radeon HD Graphics R series (R7 and > R9> )

The compiler pgi/14.10 apparently say yes …

pgf90 --version
pgf90 14.10-0 64-bit target on x86-64 Linux -tp nehalem

-> As he does complain on unknow haaa target

pgf90 -Minfo=all -ta=radeon,> haaaa > hello_openacc.f90 -o hello_openacc_hawaii
pgf90-Error-Switch -ta with unknown keyword > haaaa

-> but not for hawaii

pgf90 -Minfo=all -ta=radeon,> hawai> i hello_openacc.f90 -o hello_openacc_hawaii
hello:
4, Generating create(a(:))
5, > Generating Radeon code
6, Loop is parallelizable
Accelerator kernel generated
6, !$acc loop gang, vector(32) ! global dim(0) local dim(0)
9, Generating update host(a(:))

but the ocl linker (= I suppose ) said NO :

pgf90 -Minfo=all -ta=radeon,> hawai> i hello_openacc.f90 -o hello_openacc_hawaii
… # here the previous info from the compiler part
pgocld-Error-Switch > -amd with unknown keyword > hawaii
-amd[=tahiti|devastator|capeverde|spectre]
Target AMD OpenCL
tahiti Target AMD Tahiti GPU
devastator Target AMD Devastator GPU
capeverde Target AMD Capeverde GPU
spectre Target AMD Spectre GPU
PGF90-F-0155-Compiler failed to translate accelerator region (see -Minfo messages): Device compiler exited with error status code (hello_openacc.f90: 1)
PGF90/x86-64 Linux 14.10-0: compilation aborted

If I compile for a generic radeon card -ta=radeon , I got the executable , but the results are completely wrong !

> cat hello_openacc.f90
program hello
      real :: a(2)
      
      !$acc data create(a)
      !$acc kernels
      a = 10.0
      !$acc end kernels

      !$acc update host (a)
      print *,"HELLO" , A

      !$acc end data
      end

compilng for generic nvidia & radeon

> pgf90 -Minfo=all -ta=radeon,nvidia hello_openacc.f90  -o hello_openacc_mix
hello:
      4, Generating create(a(:))
      5, Generating Radeon code
         Generating Tesla code
      6, Loop is parallelizable
         Accelerator kernel generated
          6, !$acc loop gang, vector(32) ! global dim(0) local dim(0)
      9, Generating update host(a(:))

On Nvidia OK

> ACC_DEVICE=nvidia hello_openacc_hawaii
 HELLO    10.00000        10.00000

On radeon WRONG

> ACC_DEVICE=radeon hello_openacc_hawaii
 HELLO   4.4815722E-38    0.000000

For the System part , I Have :
-> A Linux64 OpenSuse12.3
-> CUDA 6.5
-> AMD Driver with opencl support 14.41rc1 = the last one <=> linux-amd-14.41rc1-opencl2-sep19.zip


Thank you for any feedback ( I could change/downgrade the AMD driver )

Bye

Juan

I think the syntax is ta=radeon:hawaii

The Hawaii boards are currently not working here internally to our expectations.

We expect they will, and will be supported in a future release.

dave

Hello Dave .

OK , thank you for the correction on the syntax of the sub-option .

I have also seen a ‘llvm’ sub-option for radeon , trying this ?

pgf90 -Minfo=all -ta=help
pgf90-Error-Switch -ta with unknown keyword help
-ta=… |radeon:{keep|> llvm> |[no]unroll|[no]required|tahiti|capeverde|spectre|buffercount:}|host

It is planned to work with something different that a OpenCL back-end ?

At present time, no working better with my Hawaii card :

pgf90 -Minfo=all -ta=radeon:llvm hello_openacc.f90 -o hello_openacc_radeon_llvm
hello:
4, Generating create(a(:))
5, Generating Radeon code
6, Loop is parallelizable
Accelerator kernel generated
6, !$acc loop gang, vector(32) ! global dim(0) local dim(0)
9, Generating update host(a(:))
WARNING: Linking two modules of different data layouts!
WARNING: Linking two modules of different data layouts!
WARNING: Linking two modules of different data layouts!

./hello_openacc_radeon_llvm
Erreur de segmentation

Bye

Juan

Hello .

I’ve downloaded the last pgi/15.4 version .

It work better for the hawaii card
… but strangely not with the option -ta=radeon:hawaii
… but only with -ta=radeon ???

=> With -ta=radeon:hawaii <=> WRONG ANSWER , should be 2*10.0

pgf90 -ta=radeon:> hawaii > hello_openacc.f90 -o hello_openacc_radeon_hawaii
./hello_openacc_radeon_hawaii
HELLO > 6.6856241E-38 0.000000 >

=> With only -ta=radeon , OK ?

pgf90 -ta=> radeon > hello_openacc.f90 -o hello_openacc_radeon
./hello_openacc_radeon
HELLO > 10.00000 10.00000 >

=> After some test , I found that it is in fact the spectre option which work with my hawaii card ?

pgf90 -ta=radeon:> spectre > hello_openacc.f90 -o hello_openacc_radeon_spectre
./hello_openacc_radeon_spectre
HELLO > 10.00000 10.00000 >



pgaccelinfo -amd

OpenCL Platform: AMD Accelerated Parallel Processing
OpenCL Vendor: Advanced Micro Devices, Inc.

Device Number: 0
Device Name: > Hawaii
Available: Yes
Compiler Available: Yes
Board Name:
Device Version: OpenCL 2.0 AMD-APP (1642.5)
Global Memory Size: 4250927104
Maximum Object Size: 3008888832
Global Cache Size: 16384
Free Memory: 4144257000
Max Clock (MHz): 1000
Compute Units: 44
SIMD Units: 4
SIMD Width: 16
GPU Cores: 2816
Wavefront Width: 64
Constant Memory Size: 65536
Local Memory Size: 32768
Workgroup Size: 256
Address Bits: 64
ECC Support: No
PGI Compiler Option: > -ta=radeon:hawaii

Bye

Juan