gleisonsdm / DawnCC-Compiler

A source-to-source compiler for automatic parallelization of C programs through code annotation.
http://cuda.dcc.ufmg.br/dawn/
Other
61 stars 8 forks source link

Failed to run DawnCC OpenACC annotated code compiled with PGI C compiler #15

Open babouFomb opened 7 years ago

babouFomb commented 7 years ago

Hi,

I downloaded DawnCC benchmarks zip file and compiled auto_acc directory files with PGI compiler (release 16.10-0) on Ubuntu 14.04.

This is the pgcc output during the compilation of 2DConvolution.c file.

rokiatou@rokiatou:~/Documents/Thèse/dawncc_doc/benchmarks/polybench/auto_acc/2DCONV$ pgcc 2DConvolution.c -g -mp -Minform=warn -fast -O3 -acc -Minfo -time -ta=nvidia,cuda7.5,cc35,fastmath,fma,keepgpu,keepptx,lineinfo,unroll,loadcache:L1 -o test conv2D: 46, Loop not vectorized: data dependency Loop unrolled 2 times GPU__conv2D: 67, Generating copyin(A[:67108864]) Generating copyout(B[8193:67092478]) 68, Generating implicit copyin(A[:67108864]) Generating implicit copyout(B[8193:67092478]) 70, Loop is parallelizable Loop not fused: no successor loop 72, Complex loop carried dependence of A->,B-> prevents parallelization Inner sequential loop scheduled on accelerator Accelerator kernel generated Generating Tesla code 70, #pragma acc loop gang, vector(128) / blockIdx.x threadIdx.x / 72, #pragma acc loop seq 72, Complex loop carried dependence of B-> prevents parallelization Loop not vectorized: data dependency Loop unrolled 2 times init: 87, Loop not vectorized/parallelized: contains call compareResults: 102, Loop not vectorized/parallelized: contains call Timing stats: init 66 millisecs 44% parser 17 millisecs 11% vectorize 50 millisecs 33% schedule 17 millisecs 11% Total time 150 millisecs

But when I tried to run my object file test, I got the following error message:

Two dimensional (2D) convolution << Failing in Thread:1 call to cuModuleLoadData returned error 209: No binary for GPU

I got the same message for all others. I don't understand why this happen while when I annotate manually my code and compile it with pgcc, I don't get any runtime error.

Thank.

gleisonsdm commented 7 years ago

Hi,

Can you show me the flags are you using in DawnCC?

Regards,

Gleison
babouFomb commented 7 years ago

I used the following flags in DawnCC: ../DawnCC/run.sh -d /home/rokiatou/Documents/Thèse/dawncc_doc -pl true -ps 0 -mc true -k -src bicg.cpp

And on DawnCC interface I checked: Pass statistics, Coalesce memory copies and OpenACC.

brenocfg commented 7 years ago

Did you compile your manually annotated file with the same parameters as you used for the DawnCC-annotated one?

Because this seems to be more related to the code generation phase than the pragmas themselves, so it's more likely to be occurring due to how pgcc is generating the binary. Usually these "No binary for GPU" errors occur when trying to run a binary generated for GPUs with higher Compute Capability than the one installed, or when there's errors in the CUDA ptx files compiled (which would imply pgcc generated invalid code, so it's less likely to be the case here).