public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Tom de Vries <Tom_deVries@mentor.com>
To: Thomas Schwinge <thomas@codesourcery.com>
Cc: "gcc-patches@gnu.org" <gcc-patches@gnu.org>
Subject: Re: [gomp4, committed] Add goacc/kernels-acc-on-device.c
Date: Tue, 13 Oct 2015 15:50:00 -0000	[thread overview]
Message-ID: <561D2801.1070004@mentor.com> (raw)
In-Reply-To: <561BACFD.6030001@mentor.com>

[-- Attachment #1: Type: text/plain, Size: 1745 bytes --]

On 12/10/15 14:52, Tom de Vries wrote:
> On 12/10/15 12:49, Thomas Schwinge wrote:
>> Hi Tom!
>>
>> On Sat, 10 Oct 2015 12:49:01 +0200, Tom de
>> Vries<Tom_deVries@mentor.com>  wrote:
>>> >--- /dev/null
>>> >+++ b/gcc/testsuite/c-c++-common/goacc/kernels-acc-on-device.c
>>> >@@ -0,0 +1,39 @@
>>> >+/* { dg-additional-options "-O2" } */
>>> >+
>>> >+#include <openacc.h>
>
> Hi Thomas,
>
>> That doesn't work (at least in build-tree testing), as gcc/testsuite/ is
>> not set up to look for header files in [target]/libgomp/:
>>
>> [...]/source-gcc/gcc/testsuite/c-c++-common/goacc/kernels-acc-on-device.c:3:21:
>> fatal error: openacc.h: No such file or directory
>>      compilation terminated.
>>      compiler exited with status 1
>>
>
> Ah, I see. I was doing 'make' followed by 'make install', and then
> build-tree testing. The build-tree testing seems to pick up the header
> file from the install directory. So for me test passed.
>
>>> >+
>>> >+#define N 32
>>> >+
>>> >+void
>>> >+foo (float *a, float *b)
>>> >+{
>>> >+  float exp;
>>> >+  int i;
>>> >+  int n;
>>> >+
>>> >+#pragma acc kernels copyin(a[0:N]) copyout(b[0:N])
>>> >+  {
>>> >+    int ii;
>>> >+
>>> >+    for (ii = 0; ii < N; ii++)
>>> >+      {
>>> >+    if (acc_on_device (acc_device_host))
>> Your two options are: if that's applicable/sufficient for what you intend
>> to test here, use __builtin_acc_on_device with a hard-coded acc_device_*,
>> or duplicate part of <openacc.h> as done for example in
>> gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c.
>>
>
> Went with second option, committed as attached.

As a follow-up patch, I've factored the code into a mockup openacc.h, 
now shared by several test-cases.

Committed to gomp-4_0-branch.

Thanks,
- Tom

[-- Attachment #2: 0001-Factor-out-goacc-openacc.h.patch --]
[-- Type: text/x-patch, Size: 3405 bytes --]

Factor out goacc/openacc.h

2015-10-13  Tom de Vries  <tom@codesourcery.com>

	* c-c++-common/goacc/openacc.h: New header file, factored out of ...
	* c-c++-common/goacc/kernels-acc-on-device.c: ... here.
	* c-c++-common/goacc/acc_on_device-2-off.c: Use openacc.h.
	* c-c++-common/goacc/acc_on_device-2.c: Same.
---
 .../c-c++-common/goacc/acc_on_device-2-off.c          | 11 +----------
 gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c    | 13 +------------
 .../c-c++-common/goacc/kernels-acc-on-device.c        | 19 +------------------
 gcc/testsuite/c-c++-common/goacc/openacc.h            | 18 ++++++++++++++++++
 4 files changed, 21 insertions(+), 40 deletions(-)
 create mode 100644 gcc/testsuite/c-c++-common/goacc/openacc.h

diff --git a/gcc/testsuite/c-c++-common/goacc/acc_on_device-2-off.c b/gcc/testsuite/c-c++-common/goacc/acc_on_device-2-off.c
index 71abe11..cce58de 100644
--- a/gcc/testsuite/c-c++-common/goacc/acc_on_device-2-off.c
+++ b/gcc/testsuite/c-c++-common/goacc/acc_on_device-2-off.c
@@ -3,16 +3,7 @@
 
 /* Duplicate parts of libgomp/openacc.h, because we can't include it here.  */
 
-#if __cplusplus
-extern "C" {
-#endif
-
-typedef enum acc_device_t { acc_device_X = 123 } acc_device_t;
-extern int acc_on_device (int);
-
-#if __cplusplus
-}
-#endif
+#include "openacc.h"
 
 int
 f (void)
diff --git a/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c b/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c
index 243e562..19a5bd3 100644
--- a/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c
+++ b/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c
@@ -1,18 +1,7 @@
 /* Have to enable optimizations, as otherwise builtins won't be expanded.  */
 /* { dg-additional-options "-O -fdump-rtl-expand" } */
 
-/* Duplicate parts of libgomp/openacc.h, because we can't include it here.  */
-
-#if __cplusplus
-extern "C" {
-#endif
-
-typedef enum acc_device_t { acc_device_X = 123 } acc_device_t;
-extern int acc_on_device (int);
-
-#if __cplusplus
-}
-#endif
+#include "openacc.h"
 
 int
 f (void)
diff --git a/gcc/testsuite/c-c++-common/goacc/kernels-acc-on-device.c b/gcc/testsuite/c-c++-common/goacc/kernels-acc-on-device.c
index 784c66a..958b65b 100644
--- a/gcc/testsuite/c-c++-common/goacc/kernels-acc-on-device.c
+++ b/gcc/testsuite/c-c++-common/goacc/kernels-acc-on-device.c
@@ -1,23 +1,6 @@
 /* { dg-additional-options "-O2" } */
 
-#if __cplusplus
-extern "C" {
-#endif
-
-#if __cplusplus >= 201103
-# define __GOACC_NOTHROW noexcept
-#elif __cplusplus
-# define __GOACC_NOTHROW throw ()
-#else /* Not C++ */
-# define __GOACC_NOTHROW __attribute__ ((__nothrow__))
-#endif
-
-typedef enum acc_device_t { acc_device_X = 123 } acc_device_t;
-int acc_on_device (int) __GOACC_NOTHROW;
-
-#if __cplusplus
-}
-#endif
+#include "openacc.h"
 
 #define N 32
 
diff --git a/gcc/testsuite/c-c++-common/goacc/openacc.h b/gcc/testsuite/c-c++-common/goacc/openacc.h
new file mode 100644
index 0000000..a74a482
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/goacc/openacc.h
@@ -0,0 +1,18 @@
+#if __cplusplus
+extern "C" {
+#endif
+
+#if __cplusplus >= 201103
+# define __GOACC_NOTHROW noexcept
+#elif __cplusplus
+# define __GOACC_NOTHROW throw ()
+#else /* Not C++ */
+# define __GOACC_NOTHROW __attribute__ ((__nothrow__))
+#endif
+
+typedef enum acc_device_t { acc_device_X = 123 } acc_device_t;
+int acc_on_device (int) __GOACC_NOTHROW;
+
+#if __cplusplus
+}
+#endif
-- 
1.9.1


  reply	other threads:[~2015-10-13 15:50 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-10 10:49 Tom de Vries
2015-10-12 10:49 ` Thomas Schwinge
2015-10-12 12:53   ` Tom de Vries
2015-10-13 15:50     ` Tom de Vries [this message]
2015-10-30  8:32       ` Thomas Schwinge

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=561D2801.1070004@mentor.com \
    --to=tom_devries@mentor.com \
    --cc=gcc-patches@gnu.org \
    --cc=thomas@codesourcery.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).