This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

OpenACC branch [openacc-1_0-branch]

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:
  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]

  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/ \

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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]