From: Thomas Schwinge <thomas@codesourcery.com>
To: <gcc-patches@gcc.gnu.org>
Cc: Julian Brown <julian@codesourcery.com>,
Tobias Burnus <tobias.burnus@physik.fu-berlin.de>,
Ilya Verbin <iverbin@gmail.com>, Jakub Jelinek <jakub@redhat.com>
Subject: Re: Empty libgomp for nvptx
Date: Mon, 10 Aug 2015 16:29:00 -0000 [thread overview]
Message-ID: <87k2t3umyh.fsf@schwinge.name> (raw)
In-Reply-To: <87mvxzuohe.fsf@schwinge.name>
[-- Attachment #1: Type: text/plain, Size: 15254 bytes --]
Hi!
On Mon, 10 Aug 2015 17:55:57 +0200, I wrote:
> On Wed, 22 Jul 2015 18:38:44 +0200, Jakub Jelinek <jakub@redhat.com> wrote:
> > On Wed, Jul 22, 2015 at 06:04:20PM +0200, Thomas Schwinge wrote:
> > > On Tue, 21 Apr 2015 17:58:39 +0200, Jakub Jelinek <jakub@redhat.com> wrote:
> > > > Attached is a minimal patch to get at least a trivial OpenMP 4.0 testcase
> > > > offloading to NVPTX (the first patch). The second patch is WIP, just first
> > > > few needed changes to make libgomp to build for NVPTX (several weeks of work
> > > > at least).
> > >
> > > We're not in particular working on making nvptx offloading work for
> > > OpenMP, but also for OpenACC offloading a tiny bit of code is required to
> > > be shipped in an offloading device's runtime library -- code that
> > > conceptually belongs into libgomp. (On gomp-4_0-branch, it currently
> > > lives in libgcc because that was easier to do.) Actually, as I should
> > > find out, building a "dummy" (empty) libgomp for nvptx is not actually
> > > difficult. Additionally to your second patch (U2; quoted at the end of
> > > this email), we'll need the following:
> >
> > The U2 version was a very early one, I've posted a newer version later,
> > but supposedly we can go with my U2 (if you've tested it together with your
> > patch, please check it in yourself) and your patch, and then
> > incrementally start removing the zero sized stubs or replacing them with
> > something real.
>
> Yes, that's precisely the idea. Committed in r226760:
>
> commit fdcd05c84f79cec55fa61249febd4c1c21b772a7
> Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
> Date: Mon Aug 10 15:53:33 2015 +0000
>
> Empty libgomp for nvptx
Backported to gomp-4_0-branch in r226761:
commit d4ba3f3e41b5b647e4a3cc7bad12f2a4770cd15d
Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Mon Aug 10 16:26:39 2015 +0000
Empty libgomp for nvptx
Backport trunk r226760:
* configure.ac (noconfigdirs): Don't add "target-libgomp" for target
nvptx*-*-*.
* configure: Regenerate.
libgomp/
* config/nvptx/affinity.c: New file.
* config/nvptx/alloc.c: Likewise.
* config/nvptx/bar.c: Likewise.
* config/nvptx/barrier.c: Likewise.
* config/nvptx/critical.c: Likewise.
* config/nvptx/env.c: Likewise.
* config/nvptx/error.c: Likewise.
* config/nvptx/fortran.c: Likewise.
* config/nvptx/iter.c: Likewise.
* config/nvptx/iter_ull.c: Likewise.
* config/nvptx/libgomp-plugin.c: Likewise.
* config/nvptx/lock.c: Likewise.
* config/nvptx/loop.c: Likewise.
* config/nvptx/loop_ull.c: Likewise.
* config/nvptx/mutex.c: Likewise.
* config/nvptx/oacc-async.c: Likewise.
* config/nvptx/oacc-cuda.c: Likewise.
* config/nvptx/oacc-host.c: Likewise.
* config/nvptx/oacc-init.c: Likewise.
* config/nvptx/oacc-mem.c: Likewise.
* config/nvptx/oacc-parallel.c: Likewise.
* config/nvptx/oacc-plugin.c: Likewise.
* config/nvptx/omp-lock.h: Likewise.
* config/nvptx/ordered.c: Likewise.
* config/nvptx/parallel.c: Likewise.
* config/nvptx/proc.c: Likewise.
* config/nvptx/ptrlock.c: Likewise.
* config/nvptx/sections.c: Likewise.
* config/nvptx/sem.c: Likewise.
* config/nvptx/single.c: Likewise.
* config/nvptx/splay-tree.c: Likewise.
* config/nvptx/target.c: Likewise.
* config/nvptx/task.c: Likewise.
* config/nvptx/team.c: Likewise.
* config/nvptx/time.c: Likewise.
* config/nvptx/work.c: Likewise.
* configure.ac: Don't probe pthreads support for host nvptx*-*-*.
* configure: Regenerate.
* configure.tgt (config_path): Set to "nvptx" for target
nvptx*-*-*.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@226761 138bc75d-0d04-0410-961f-82ee72b054a4
---
ChangeLog.gomp | 11 +++++++++
configure | 6 ++---
configure.ac | 6 ++---
libgomp/ChangeLog.gomp | 48 +++++++++++++++++++++++++++++++++++++++
libgomp/config/nvptx/omp-lock.h | 12 ++++++++++
libgomp/configure | 3 +++
libgomp/configure.ac | 3 +++
libgomp/configure.tgt | 4 ++++
8 files changed, 87 insertions(+), 6 deletions(-)
diff --git ChangeLog.gomp ChangeLog.gomp
index 2a0ddb1..fd1a1e0 100644
--- ChangeLog.gomp
+++ ChangeLog.gomp
@@ -1,3 +1,14 @@
+2015-08-10 Thomas Schwinge <thomas@codesourcery.com>
+
+ Backport trunk r226760:
+
+ 2015-08-10 Thomas Schwinge <thomas@codesourcery.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ * configure.ac (noconfigdirs): Don't add "target-libgomp" for target
+ nvptx*-*-*.
+ * configure: Regenerate.
+
2015-06-30 Tom de Vries <tom@codesourcery.com>
Revert:
diff --git configure configure
index 82e45f3..5d90445 100755
--- configure
+++ configure
@@ -3159,9 +3159,8 @@ if test x$enable_static_libjava != xyes ; then
fi
-# Disable libgomp on non POSIX hosted systems.
+# Enable libgomp by default on hosted POSIX systems, and a few others.
if test x$enable_libgomp = x ; then
- # Enable libgomp by default on hosted POSIX systems.
case "${target}" in
*-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
;;
@@ -3171,6 +3170,8 @@ if test x$enable_libgomp = x ; then
;;
*-*-darwin* | *-*-aix*)
;;
+ nvptx*-*-*)
+ ;;
*)
noconfigdirs="$noconfigdirs target-libgomp"
;;
@@ -3899,7 +3900,6 @@ case "${target}" in
noconfigdirs="$noconfigdirs gdb"
;;
nvptx*-*-*)
- # nvptx is just a compiler
noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc"
;;
or1k*-*-*)
diff --git configure.ac configure.ac
index dc77a1b..9906aee 100644
--- configure.ac
+++ configure.ac
@@ -527,9 +527,8 @@ if test x$enable_static_libjava != xyes ; then
fi
AC_SUBST(EXTRA_CONFIGARGS_LIBJAVA)
-# Disable libgomp on non POSIX hosted systems.
+# Enable libgomp by default on hosted POSIX systems, and a few others.
if test x$enable_libgomp = x ; then
- # Enable libgomp by default on hosted POSIX systems.
case "${target}" in
*-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
;;
@@ -539,6 +538,8 @@ if test x$enable_libgomp = x ; then
;;
*-*-darwin* | *-*-aix*)
;;
+ nvptx*-*-*)
+ ;;
*)
noconfigdirs="$noconfigdirs target-libgomp"
;;
@@ -1246,7 +1247,6 @@ case "${target}" in
noconfigdirs="$noconfigdirs gdb"
;;
nvptx*-*-*)
- # nvptx is just a compiler
noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc"
;;
or1k*-*-*)
diff --git libgomp/ChangeLog.gomp libgomp/ChangeLog.gomp
index 4389795..3898930 100644
--- libgomp/ChangeLog.gomp
+++ libgomp/ChangeLog.gomp
@@ -1,3 +1,51 @@
+2015-08-10 Thomas Schwinge <thomas@codesourcery.com>
+
+ Backport trunk r226760:
+
+ 2015-08-10 Thomas Schwinge <thomas@codesourcery.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ * config/nvptx/affinity.c: New file.
+ * config/nvptx/alloc.c: Likewise.
+ * config/nvptx/bar.c: Likewise.
+ * config/nvptx/barrier.c: Likewise.
+ * config/nvptx/critical.c: Likewise.
+ * config/nvptx/env.c: Likewise.
+ * config/nvptx/error.c: Likewise.
+ * config/nvptx/fortran.c: Likewise.
+ * config/nvptx/iter.c: Likewise.
+ * config/nvptx/iter_ull.c: Likewise.
+ * config/nvptx/libgomp-plugin.c: Likewise.
+ * config/nvptx/lock.c: Likewise.
+ * config/nvptx/loop.c: Likewise.
+ * config/nvptx/loop_ull.c: Likewise.
+ * config/nvptx/mutex.c: Likewise.
+ * config/nvptx/oacc-async.c: Likewise.
+ * config/nvptx/oacc-cuda.c: Likewise.
+ * config/nvptx/oacc-host.c: Likewise.
+ * config/nvptx/oacc-init.c: Likewise.
+ * config/nvptx/oacc-mem.c: Likewise.
+ * config/nvptx/oacc-parallel.c: Likewise.
+ * config/nvptx/oacc-plugin.c: Likewise.
+ * config/nvptx/omp-lock.h: Likewise.
+ * config/nvptx/ordered.c: Likewise.
+ * config/nvptx/parallel.c: Likewise.
+ * config/nvptx/proc.c: Likewise.
+ * config/nvptx/ptrlock.c: Likewise.
+ * config/nvptx/sections.c: Likewise.
+ * config/nvptx/sem.c: Likewise.
+ * config/nvptx/single.c: Likewise.
+ * config/nvptx/splay-tree.c: Likewise.
+ * config/nvptx/target.c: Likewise.
+ * config/nvptx/task.c: Likewise.
+ * config/nvptx/team.c: Likewise.
+ * config/nvptx/time.c: Likewise.
+ * config/nvptx/work.c: Likewise.
+ * configure.ac: Don't probe pthreads support for host nvptx*-*-*.
+ * configure: Regenerate.
+ * configure.tgt (config_path): Set to "nvptx" for target
+ nvptx*-*-*.
+
2015-08-04 Nathan Sidwell <nathan@codesourcery.com>
* testsuite/libgomp.oacc-c-c++-common/routine-1.c: Add warning.
diff --git libgomp/config/nvptx/affinity.c libgomp/config/nvptx/affinity.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/alloc.c libgomp/config/nvptx/alloc.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/bar.c libgomp/config/nvptx/bar.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/barrier.c libgomp/config/nvptx/barrier.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/critical.c libgomp/config/nvptx/critical.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/env.c libgomp/config/nvptx/env.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/error.c libgomp/config/nvptx/error.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/fortran.c libgomp/config/nvptx/fortran.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/iter.c libgomp/config/nvptx/iter.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/iter_ull.c libgomp/config/nvptx/iter_ull.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/libgomp-plugin.c libgomp/config/nvptx/libgomp-plugin.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/lock.c libgomp/config/nvptx/lock.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/loop.c libgomp/config/nvptx/loop.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/loop_ull.c libgomp/config/nvptx/loop_ull.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/mutex.c libgomp/config/nvptx/mutex.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/oacc-async.c libgomp/config/nvptx/oacc-async.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/oacc-cuda.c libgomp/config/nvptx/oacc-cuda.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/oacc-host.c libgomp/config/nvptx/oacc-host.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/oacc-init.c libgomp/config/nvptx/oacc-init.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/oacc-mem.c libgomp/config/nvptx/oacc-mem.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/oacc-parallel.c libgomp/config/nvptx/oacc-parallel.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/oacc-plugin.c libgomp/config/nvptx/oacc-plugin.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/omp-lock.h libgomp/config/nvptx/omp-lock.h
new file mode 100644
index 0000000..2ca7c5e
--- /dev/null
+++ libgomp/config/nvptx/omp-lock.h
@@ -0,0 +1,12 @@
+/* This header is used during the build process to find the size and
+ alignment of the public OpenMP locks, so that we can export data
+ structures without polluting the namespace.
+
+ When using the Linux futex primitive, non-recursive locks require
+ one int. Recursive locks require we identify the owning task
+ and so require in addition one int and a pointer. */
+
+typedef int omp_lock_t;
+typedef struct { int lock, count; void *owner; } omp_nest_lock_t;
+typedef int omp_lock_25_t;
+typedef struct { int owner, count; } omp_nest_lock_25_t;
diff --git libgomp/config/nvptx/ordered.c libgomp/config/nvptx/ordered.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/parallel.c libgomp/config/nvptx/parallel.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/proc.c libgomp/config/nvptx/proc.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/ptrlock.c libgomp/config/nvptx/ptrlock.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/sections.c libgomp/config/nvptx/sections.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/sem.c libgomp/config/nvptx/sem.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/single.c libgomp/config/nvptx/single.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/splay-tree.c libgomp/config/nvptx/splay-tree.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/target.c libgomp/config/nvptx/target.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/task.c libgomp/config/nvptx/task.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/team.c libgomp/config/nvptx/team.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/time.c libgomp/config/nvptx/time.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/config/nvptx/work.c libgomp/config/nvptx/work.c
new file mode 100644
index 0000000..e69de29
diff --git libgomp/configure libgomp/configure
index c79611f..c93e877 100755
--- libgomp/configure
+++ libgomp/configure
@@ -15041,6 +15041,9 @@ case "$host" in
*-*-rtems*)
# RTEMS supports Pthreads, but the library is not available at GCC build time.
;;
+ nvptx*-*-*)
+ # NVPTX does not support Pthreads, has its own code replacement.
+ ;;
*)
# Check to see if -pthread or -lpthread is needed. Prefer the former.
# In case the pthread.h system header is not found, this test will fail.
diff --git libgomp/configure.ac libgomp/configure.ac
index 9cf0218..b1696d0 100644
--- libgomp/configure.ac
+++ libgomp/configure.ac
@@ -179,6 +179,9 @@ case "$host" in
*-*-rtems*)
# RTEMS supports Pthreads, but the library is not available at GCC build time.
;;
+ nvptx*-*-*)
+ # NVPTX does not support Pthreads, has its own code replacement.
+ ;;
*)
# Check to see if -pthread or -lpthread is needed. Prefer the former.
# In case the pthread.h system header is not found, this test will fail.
diff --git libgomp/configure.tgt libgomp/configure.tgt
index 2970f6f..8fad977 100644
--- libgomp/configure.tgt
+++ libgomp/configure.tgt
@@ -151,6 +151,10 @@ case "${target}" in
XLDFLAGS="${XLDFLAGS} -lpthread"
;;
+ nvptx*-*-*)
+ config_path="nvptx"
+ ;;
+
*)
;;
Grüße,
Thomas
[-- Attachment #2: Type: application/pgp-signature, Size: 472 bytes --]
next prev parent reply other threads:[~2015-08-10 16:29 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-21 15:58 [WIP] OpenMP 4 NVPTX support Jakub Jelinek
2015-04-22 15:08 ` Bernd Schmidt
2015-05-13 20:19 ` [gomp4] nvptx offloading linking (was: [WIP] OpenMP 4 NVPTX support) Thomas Schwinge
2015-10-02 19:46 ` nvptx offloading linking Thomas Schwinge
2015-10-05 16:08 ` [gomp4] [nvptx] Don't explicitly pass "-lgomp" to the offload compiler (was: nvptx offloading linking) Thomas Schwinge
2015-04-23 14:40 ` [WIP] OpenMP 4 NVPTX support Jakub Jelinek
2015-07-22 16:13 ` Thomas Schwinge
2015-07-22 16:47 ` Jakub Jelinek
2015-08-10 15:56 ` Empty libgomp for nvptx (was: [WIP] OpenMP 4 NVPTX support) Thomas Schwinge
2015-08-10 16:29 ` Thomas Schwinge [this message]
2015-08-10 16:31 ` [gomp4] [nvptx] Move GOMP stuff from libgcc to libgomp " 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=87k2t3umyh.fsf@schwinge.name \
--to=thomas@codesourcery.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=iverbin@gmail.com \
--cc=jakub@redhat.com \
--cc=julian@codesourcery.com \
--cc=tobias.burnus@physik.fu-berlin.de \
/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).