This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.

OpenACC branch [openacc-1_0-branch]

From: Evgeny Gavrin <e dot gavrin at samsung dot com>

To: gcc at gcc dot gnu dot org

Cc: 'Viacheslav Garbuzov' <v dot garbuzov at samsung dot com>, i dot usmanov at samsung dot com, 'Dmitri Botcharnikov' <dmitry dot b at samsung dot com>

Date: Thu, 26 Sep 2013 22:19:31 +0400

Subject: OpenACC branch [openacc-1_0-branch]

Authentication-results: sourceware.org; auth=none

Hi all! My colleagues and I shared our current implementation of OpenACC 1.0 to the [openacc-1_0-branch]. It's not finished, and not even bootstraps, but able to produce working executables with offloading to GPU. Since now, we will continue the further development of OpenACC on this branch on a regular basis. Front-ends supports the following pragma's and clause's: Pragma's: PARALLEL [F] [C] [CPP] PARALLEL_LOOP [F] KERNELS [F] [C] [CPP] KERNELS_LOOP [F] DATA [F] [C] [CPP] CACHE [F] [C] WAIT [F] HOST_DATA [F] [C] LOOP [F] [C] DECLARE [F] UPDATE [F] [C] Clause's: IF [F] [C] [CPP] ASYNC [F] [C] COLLAPSE [F] [C] [CPP] SEQ [F] [C] [CPP] INDEPENDENT [F] [C] [CPP] GANG [F] [C] WORKER [F] [C] VECTOR [F] [C] NUM_GANGS [F] [C] [CPP] NUM_WORKERS [F] [C] [CPP] VECTOR_LENGTH [F] [CPP] REDUCTION [F] [C] [CPP] COPY [F] [C] [CPP] COPYIN [F] [C] [CPP] COPYOUT [F] [C] [CPP] CREATE [F] [C] [CPP] PRESENT [F] [C] [CPP] PRESENT_OR_COPY [F] [C] [CPP] PRESENT_OR_COPYIN [F] [C] [CPP] PRESENT_OR_COPYOUT [F] [C] [CPP] PRESENT_OR_CREATE [F] [C] HOST [F] DEVICE [F] DEVICEPTR [F] [C] DEVICE_RESIDENT [F] USE_DEVICE [F] PRIVATE [F] [C] [CPP] FIRSTPRIVATE [F] [C] [CPP] Compile-time warnings and errors, are available only for Fortran, for now. Test suite: We've generated lots of compile-time tests for all front-ends, but I'm not sure it's the good idea to add thousands of tests to the GCC's testsuite. Meanwhile, test generators are very useful for "nuclear testing". Manually rewritten tests for Fortran are in repository. For C and C++ - soon. Back-end & [liboacc]: For back-end, we developed the prototype of code generator that emits OpenCL 1.1 for kernel/parallel directives and for copy* clauses. [liboacc] requires OpenCL SDK installed, the path to SDK must be specified in configuration stage (${GCC_SRC_TOP}/configure): --with-opencl-include=PATH, which specifies path to OpenCL SDK header files and --with-opencl-lib=PATH, which specifies path to libOpenCL. ${SRC_DIR}/configure \ --with-opencl-include=/usr/include/ \ --with-opencl-lib=/usr/lib/nvidia-310 If mentioned OpenCL SDK has regular directory structure, that is header files in ${OPENCL_SDK_ROOT}/include, library in ${OPENCL_SDK_ROOT}/lib, then it is sufficient to supply only path to root of SDK. In future its planned to control build with only --enable-openacc. Soon, we'll share some wiki articles with the description of [liboacc] and our understanding of OpenACC to OpenCL translation magic. - Evgeny.