This is the mail archive of the gcc-patches@gcc.gnu.org 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]

Re: [PATCH 2/6] [GOMP4] OpenACC 1.0+ support in fortran front-end


Hi!

Regarding my comments, please keep in mind that I don't have a lot of
Fortran experience; neither as a user nor as an implementor ;-) in the
GCC front end, so don't hesitate to tell me if I'm misunderstanding
something.  As I suggested, it may make sense to CC Fortran front end
maintainers for such patches.


On Thu, 23 Jan 2014 22:03:42 +0400, Ilmir Usmanov <i.usmanov@samsung.com> wrote:
> Subject: [PATCH 2/6] OpenACC fortran FE part 2

> --- a/gcc/fortran/openmp.c
> +++ b/gcc/fortran/openmp.c

> @@ -186,15 +292,51 @@ cleanup:
>  #define OMP_CLAUSE_FINAL	(1 << 14)
>  #define OMP_CLAUSE_MERGEABLE	(1 << 15)
>  
> +/* OpenACC 2.0 clauses. */
> +#define OACC_CLAUSE_IF                   OMP_CLAUSE_IF
> +#define OACC_CLAUSE_ASYNC                (1 << 16)
> +#define OACC_CLAUSE_NUM_GANGS            (1 << 17)
> +#define OACC_CLAUSE_NUM_WORKERS          (1 << 18)
> +#define OACC_CLAUSE_VECTOR_LENGTH        (1 << 19)
> +#define OACC_CLAUSE_REDUCTION            OMP_CLAUSE_REDUCTION
> +#define OACC_CLAUSE_COPY                 (1 << 20)
> +#define OACC_CLAUSE_COPYIN               OMP_CLAUSE_COPYIN
> +#define OACC_CLAUSE_COPYOUT              (1 << 21)
> +#define OACC_CLAUSE_[...]

As asked/suggested in Â[PATCH 4/6] OpenACC GENERIC nodesÂ, can we again
avoid the duplicate names, and use the existing OpenMP memory mapping
stuff for expressing the OpenACC data clauses?

>  /* Match OpenMP directive clauses. MASK is a bitmask of
>     clauses that are allowed for a particular directive.  */
>  
>  static match
> -gfc_match_omp_clauses (gfc_omp_clauses **cp, int mask)
> +gfc_match_omp_clauses (gfc_omp_clauses **cp, long long mask, bool is_acc)

Here, in turn, in the C front end,
<http://news.gmane.org/find-root.php?message_id=%3C1389712208-416-4-git-send-email-thomas%40codesourcery.com%3E>
(and following), I went with a separate function for OpenACC vs. OpenMP
clauses parsing, specifically to avoid the is_acc disambiguation
variable.

That is, I parse the OACC_CLAUSE_* in context of either an OpenACC or
OpenMP directive, and as such it's implicitly clear whether this is an
OpenACC or OpenMP one.

That's the reason why I can have PRAGMA_OMP_CLAUSE_COPYIN mean different
things for OpenACC vs. OpenMP in the C front end.  Maybe such an approach
would work well in the Fortran front end, too?


GrÃÃe,
 Thomas

Attachment: pgpWqMXKIIWxl.pgp
Description: PGP signature


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