public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] [GOMP4] OpenACC 1.0+ support in fortran front-end
@ 2014-01-23 18:01 Ilmir Usmanov
  2014-01-23 18:03 ` [PATCH 1/6] " Ilmir Usmanov
  2014-01-24 18:04 ` [PATCH] " Thomas Schwinge
  0 siblings, 2 replies; 89+ messages in thread
From: Ilmir Usmanov @ 2014-01-23 18:01 UTC (permalink / raw)
  To: gcc-patches, Thomas Schwinge, jakub
  Cc: Evgeny Gavrin, GarbuzovViacheslav, Dmitri Botcharnikov

Hi all.

Jakub, could you review these patches, if they are OK to gomp-4_0-branch?

Thomas, please, have a look whether this implementation applies current 
OpenACC support style.

These patches port OpenACC 1.0 support in fortran front-end from 
openacc-1_0-branch to gomp-4_0-branch. In addition, they extend 
middle-end infrastructure with necessary GENERIC nodes.

Patches support almost all directives (except loop) and all clauses from 
the specification ver. 1.0 (without subarrays).

In addition to OpenACC version 1.0, patches add functionality from 
OpenACC 2.0: enter data and exit data directives.

Patches stub gimplification of OpenACC constructs and directives, except 
OACC_PARALLEL node, to prevent crashes.

I didn't port loop directive, since in openacc-1_0-branch we consider it 
as OpenACC construct, like kernels or parallel. Hence, OpenACC loop and 
OpenMP for directives differ. It means there are no checks in C FE (in 
openacc-1_0-branch) and the functionality will be modified, in both FEs 
and back-end.

As far as loop directive doesn't exist in GENERIC, fortran FE doesn't 
transform it from internal EXEC_OACC_LOOP statement. Consequenly, there 
are no tests to check the directive.

Lately, I'm going to port loop directive, too.

Inspite of the fact that subarrays do exist in openacc-1_0-branch, they 
don't present in patches. Currently, we are using our own GENERIC nodes 
to represent subarrays. I'm going to replace them with existing 
functionality, like ARRAY_RANGE_REF.

Full list of supported fuctionality is the following:

Constructs/directives:

Name                front-end   GENERIC     tests
parallel            Y           Y           Y
kernels             Y           Y           Y
data                Y           Y           Y
host_data           Y           Y           Y
loop                Y           N           N
update              Y           Y           Y
wait                Y           Y           N
cache               Y           Y           N
declare             Y           Y           Y
kernels loop        Y           N           N
parallel loop       Y           N           N
enter data (2.0)    Y           Y           Y
exit data (2.0)     Y           Y           Y

Clauses
Name                front-end   GENERIC     tests
async               Y           Y           Y
wait                Y           Y           Y
num_gangs           Y           Y           Y
num_workers         Y           Y           Y
vector_length       Y           Y           Y
if                  Y           Y           Y
reduction           Y           Y           Y
copy                Y           Y           Y
copyin              Y           Y           Y
copyout             Y           Y           Y
create              Y           Y           Y
delete (2.0)        Y           Y           Y
present             Y           Y           Y
present_or_copy     Y           Y           Y
present_or_copyin   Y           Y           Y
present_or_copyout  Y           Y           Y
present_or_create   Y           Y           Y
deviceptr           Y           Y           Y
private             Y           Y           Y
firstprivate        Y           Y           Y
default(none) (2.0) Y           N           Y
collapse            Y           Y           N
gang                Y           Y           N
worker              Y           Y           N
vector              Y           Y           N
seq                 Y           Y           N
auto (2.0)          Y           N           N
tile                Y           N           N
independent         Y           Y           N
device_resident     Y           Y           N

  

Successfully bootstraps on x86_64 with no regressions.

OK to commit?

-- 
Ilmir

^ permalink raw reply	[flat|nested] 89+ messages in thread

end of thread, other threads:[~2016-06-10 20:40 UTC | newest]

Thread overview: 89+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-01-23 18:01 [PATCH] [GOMP4] OpenACC 1.0+ support in fortran front-end Ilmir Usmanov
2014-01-23 18:03 ` [PATCH 1/6] " Ilmir Usmanov
2014-01-23 18:03   ` [PATCH 2/6] " Ilmir Usmanov
2014-01-23 18:04     ` [PATCH 3/6] " Ilmir Usmanov
2014-01-23 18:05       ` [PATCH 4/6] " Ilmir Usmanov
2014-01-23 18:05         ` [PATCH 5/6] " Ilmir Usmanov
2014-01-23 18:06           ` [PATCH 6/6] " Ilmir Usmanov
2014-01-23 18:09             ` [PATCH 7/6] " Ilmir Usmanov
2014-01-24 19:33         ` [PATCH 4/6] " Thomas Schwinge
2014-11-05 16:29           ` [gomp4] OpenACC cache directive for C Thomas Schwinge
2014-11-05 16:36             ` [gomp4] OpenACC cache directive maintenance (was: [PATCH 4/6] [GOMP4] OpenACC 1.0+ support in fortran front-end) Thomas Schwinge
2014-11-05 16:45               ` [gomp4] OpenACC cache directive maintenance Thomas Schwinge
2015-10-27 15:26                 ` [PR fortran/63865] OpenACC cache directive: match Fortran support with C/C++ (was: [gomp4] OpenACC cache directive maintenance) Thomas Schwinge
2015-10-27 15:30                   ` Jakub Jelinek
2015-10-27 17:03                     ` [PR fortran/63865] OpenACC cache directive: match Fortran support with C/C++ Thomas Schwinge
2014-11-05 16:49             ` [gomp4] Testing of C/C++ OpenACC cache directive (was: OpenACC cache directive for C) Thomas Schwinge
2016-06-02 11:47             ` [PR c/71381] C/C++ OpenACC cache directive rejects valid syntax (was: [gomp4] OpenACC cache directive for C.) Thomas Schwinge
2016-06-08 13:29               ` [PING] [PR c/71381] C/C++ OpenACC cache directive rejects valid syntax Thomas Schwinge
2016-06-08 14:07                 ` Jakub Jelinek
2016-06-10 10:32                   ` Thomas Schwinge
2016-06-10 13:14                     ` Thomas Schwinge
2016-06-10 20:40                       ` Gerald Pfeifer
2014-01-24 20:47     ` [PATCH 2/6] [GOMP4] OpenACC 1.0+ support in fortran front-end Thomas Schwinge
2014-01-24 20:31   ` [PATCH 1/6] " Thomas Schwinge
2014-01-27 19:37     ` Tobias Burnus
2014-01-24 18:04 ` [PATCH] " Thomas Schwinge
2014-01-27 13:12   ` Ilmir Usmanov
2014-01-27 15:49     ` Thomas Schwinge
2014-01-27 16:35       ` Ilmir Usmanov
2014-01-31 11:14       ` Ilmir Usmanov
2014-01-31 11:16         ` [PATCH 1/6] " Ilmir Usmanov
2014-01-31 11:17           ` [PATCH 2/6] " Ilmir Usmanov
2014-01-31 11:18             ` [PATCH 3/6] " Ilmir Usmanov
2014-01-31 11:22               ` [PATCH 4/6] " Ilmir Usmanov
2014-01-31 11:34                 ` [PATCH 5/6] " Ilmir Usmanov
2014-01-31 11:45                   ` [PATCH 6/6] " Ilmir Usmanov
2014-02-09 23:43                   ` [PATCH 5/6] " Tobias Burnus
2014-02-10  8:52                     ` Thomas Schwinge
2014-02-10  9:34                       ` Ilmir Usmanov
2014-02-10 23:13                       ` Tobias Burnus
2014-02-10  9:45                     ` Ilmir Usmanov
2014-02-10 10:52                       ` Thomas Schwinge
2014-02-11 16:51                 ` [PATCH 4/6] " Thomas Schwinge
2014-02-13 13:15                   ` Ilmir Usmanov
2014-02-13 14:57                     ` Thomas Schwinge
2014-02-14  5:45                       ` Ilmir Usmanov
2014-02-21 19:29                   ` [GOMP4] gimple_code_is_oacc -> is_gimple_omp_oacc_specifically (was: [PATCH 4/6] [GOMP4] OpenACC 1.0+ support in fortran front-end) Thomas Schwinge
2014-02-09 23:24               ` [PATCH 3/6] [GOMP4] OpenACC 1.0+ support in fortran front-end Tobias Burnus
2014-02-09 23:10             ` [PATCH 2/6] " Tobias Burnus
2014-02-10  9:10               ` Thomas Schwinge
2014-02-19 16:43               ` Ilmir Usmanov
2014-01-31 12:00           ` [PATCH 1/6] " Jakub Jelinek
2014-01-31 12:33             ` Ilmir Usmanov
2014-02-03 15:21               ` [PING] " Ilmir Usmanov
2014-02-09 22:22           ` Tobias Burnus
2014-02-19 15:34             ` Ilmir Usmanov
2014-02-19 23:52               ` Tobias Burnus
2014-02-20  8:19                 ` Ilmir Usmanov
2014-03-04  7:56                   ` [PATCH 1/4] [GOMP4] [Fortran] " Ilmir Usmanov
2014-03-04  7:57                     ` Ilmir Usmanov
2014-03-04  7:57                       ` [PATCH 2/4] " Ilmir Usmanov
2014-03-04  7:58                         ` [PATCH 3/4] " Ilmir Usmanov
2014-03-04  7:59                           ` [PATCH 4/4] " Ilmir Usmanov
2014-03-04 22:56                             ` Tobias Burnus
2014-03-04 22:52                           ` [PATCH 3/4] " Tobias Burnus
2014-03-04 17:20                       ` [PATCH 1/4] " Tobias Burnus
2014-03-07 10:44                         ` Ilmir Usmanov
2014-03-07 10:45                           ` Ilmir Usmanov
2014-03-07 10:46                             ` [PATCH 2/4] " Ilmir Usmanov
2014-03-07 10:46                               ` [PATCH 3/4] " Ilmir Usmanov
2014-03-07 10:47                                 ` [PATCH 4/4] " Ilmir Usmanov
2014-03-08 17:55                                   ` Tobias Burnus
2014-03-20 10:53                                   ` Thomas Schwinge
2014-03-20 12:48                                     ` Ilmir Usmanov
2014-03-20 14:43                                     ` Jakub Jelinek
2014-03-08 17:19                                 ` [PATCH 3/4] " Tobias Burnus
2014-03-08 19:55                               ` [PATCH 2/4] " Tobias Burnus
2014-03-11 12:04                                 ` Ilmir Usmanov
2014-03-12 18:46                                   ` Tobias Burnus
2014-03-12 18:27                             ` [PATCH 1/4] " Tobias Burnus
2014-03-13  9:41                               ` Ilmir Usmanov
2014-03-13 11:43                                 ` Thomas Schwinge
2014-03-13 13:24                                   ` Ilmir Usmanov
2014-03-13 14:13                                     ` Ilmir Usmanov
2014-03-16 19:46                                       ` Tobias Burnus
2014-03-16 20:44                                         ` Thomas Schwinge
2014-04-05 10:40                                         ` Thomas Schwinge
2014-03-10 15:44                           ` Thomas Schwinge
2014-03-04 17:42                       ` Tobias Burnus

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).