[PATCH]: libgompd add parallel handle functions
This patch adds parallel region handles specified in section 5.5.3. >From examining libgomp code, I found that struct gomp_team describes the parallel region. The Thread handle gives the address of gomp_thread so, I tried to access *team gomp_thread->ts->team. The parallel handle is the team pointer in team state. I have a question about ompd_get_task_parallel_handle https://www.openmp.org/spec-html/5.0/openmpsu218.html How can i reach gomp_team from gomp_task And the union in gomp_task has two entries gomp_sem_t and gomp_team libgomp/ChangeLog 2022-06-06 Mohamed Sayed * Makefile.am: (libgompd_la_SOURCES): Add ompd-parallel.c. * Makefile.in: Regenerate. * libgompd.map: Add ompd_get_curr_parallel_handle, ompd_get_enclosing_parallel_handle, ompd_rel_parallel_handle and ompd_parallel_handle_compare symbol versions. * ompd-support.h:() : Add gompd_access (gomp_team_state, team) and gompd_access (gomp_team, prev_ts). diff --git a/libgomp/Makefile.am b/libgomp/Makefile.am index 6d913a93e7f..4e215450b25 100644 --- a/libgomp/Makefile.am +++ b/libgomp/Makefile.am @@ -94,7 +94,7 @@ libgomp_la_SOURCES = alloc.c atomic.c barrier.c critical.c env.c error.c \ priority_queue.c affinity-fmt.c teams.c allocator.c oacc-profiling.c \ oacc-target.c ompd-support.c -libgompd_la_SOURCES = ompd-init.c ompd-helper.c ompd-icv.c +libgompd_la_SOURCES = ompd-init.c ompd-helper.c ompd-icv.c ompd-parallel.c include $(top_srcdir)/plugin/Makefrag.am diff --git a/libgomp/Makefile.in b/libgomp/Makefile.in index 40f896b5f03..ab66ad1c8f0 100644 --- a/libgomp/Makefile.in +++ b/libgomp/Makefile.in @@ -233,7 +233,8 @@ am_libgomp_la_OBJECTS = alloc.lo atomic.lo barrier.lo critical.lo \ affinity-fmt.lo teams.lo allocator.lo oacc-profiling.lo \ oacc-target.lo ompd-support.lo $(am__objects_1) libgomp_la_OBJECTS = $(am_libgomp_la_OBJECTS) -am_libgompd_la_OBJECTS = ompd-init.lo ompd-helper.lo ompd-icv.lo +am_libgompd_la_OBJECTS = ompd-init.lo ompd-helper.lo ompd-icv.lo \ + ompd-parallel.lo libgompd_la_OBJECTS = $(am_libgompd_la_OBJECTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) @@ -583,7 +584,7 @@ libgomp_la_SOURCES = alloc.c atomic.c barrier.c critical.c env.c \ oacc-async.c oacc-plugin.c oacc-cuda.c priority_queue.c \ affinity-fmt.c teams.c allocator.c oacc-profiling.c \ oacc-target.c ompd-support.c $(am__append_7) -libgompd_la_SOURCES = ompd-init.c ompd-helper.c ompd-icv.c +libgompd_la_SOURCES = ompd-init.c ompd-helper.c ompd-icv.c ompd-parallel.c # Nvidia PTX OpenACC plugin. @PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_version_info = -version-info $(libtool_VERSION) @@ -800,6 +801,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ompd-helper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ompd-icv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ompd-init.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ompd-parallel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ompd-support.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ordered.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parallel.Plo@am__quote@ diff --git a/libgomp/libgompd.map b/libgomp/libgompd.map index 85bdc3695f6..1662dc56962 100644 --- a/libgomp/libgompd.map +++ b/libgomp/libgompd.map @@ -16,6 +16,10 @@ OMPD_5.1 { ompd_thread_handle_compare; ompd_get_thread_id; ompd_get_device_from_thread; +ompd_get_curr_parallel_handle; +ompd_get_enclosing_parallel_handle; +ompd_rel_parallel_handle; +ompd_parallel_handle_compare; local: *; }; diff --git a/libgomp/ompd-support.h b/libgomp/ompd-support.h index 39d55161132..48a2e6133f5 100644 --- a/libgomp/ompd-support.h +++ b/libgomp/ompd-support.h @@ -83,12 +83,15 @@ extern __UINT64_TYPE__ gompd_state; gompd_access (gomp_thread_pool, threads) \ gompd_access (gomp_thread, ts) \ gompd_access (gomp_team_state, team_id) \ - gompd_access (gomp_task, icv) + gompd_access (gomp_task, icv) \ + gompd_access (gomp_team_state, team) \ + gompd_access (gomp_team, prev_ts) #define GOMPD_SIZES(gompd_size) \ gompd_size (gomp_thread) \ gompd_size (gomp_task_icv) \ - gompd_size (gomp_task) + gompd_size (gomp_task) + #ifdef HAVE_ATTRIBUTE_VISIBILITY #pragma GCC visibility pop
Re: [PATCH]: libgompd add parallel handle functions
This is the final diff On Mon, Jun 6, 2022 at 1:48 AM Mohamed Sayed wrote: > This patch adds parallel region handles specified in section 5.5.3. > From examining libgomp code, I found that struct gomp_team describes the > parallel region. > The Thread handle gives the address of gomp_thread so, I tried to > access *team > gomp_thread->ts->team. > The parallel handle is the team pointer in team state. > I have a question about ompd_get_task_parallel_handle > https://www.openmp.org/spec-html/5.0/openmpsu218.html > How can i reach gomp_team from gomp_task > And the union in gomp_task has two entries gomp_sem_t and gomp_team > > libgomp/ChangeLog > > 2022-06-06 Mohamed Sayed > > > * Makefile.am: (libgompd_la_SOURCES): Add ompd-parallel.c. > * Makefile.in: Regenerate. > * libgompd.map: Add ompd_get_curr_parallel_handle, > ompd_get_enclosing_parallel_handle, ompd_rel_parallel_handle > and ompd_parallel_handle_compare symbol versions. > * ompd-support.h:() : Add gompd_access (gomp_team_state, team) and > gompd_access (gomp_team, prev_ts). > > diff --git a/libgomp/Makefile.am b/libgomp/Makefile.am index 6d913a93e7f..4e215450b25 100644 --- a/libgomp/Makefile.am +++ b/libgomp/Makefile.am @@ -94,7 +94,7 @@ libgomp_la_SOURCES = alloc.c atomic.c barrier.c critical.c env.c error.c \ priority_queue.c affinity-fmt.c teams.c allocator.c oacc-profiling.c \ oacc-target.c ompd-support.c -libgompd_la_SOURCES = ompd-init.c ompd-helper.c ompd-icv.c +libgompd_la_SOURCES = ompd-init.c ompd-helper.c ompd-icv.c ompd-parallel.c include $(top_srcdir)/plugin/Makefrag.am diff --git a/libgomp/Makefile.in b/libgomp/Makefile.in index 40f896b5f03..ab66ad1c8f0 100644 --- a/libgomp/Makefile.in +++ b/libgomp/Makefile.in @@ -233,7 +233,8 @@ am_libgomp_la_OBJECTS = alloc.lo atomic.lo barrier.lo critical.lo \ affinity-fmt.lo teams.lo allocator.lo oacc-profiling.lo \ oacc-target.lo ompd-support.lo $(am__objects_1) libgomp_la_OBJECTS = $(am_libgomp_la_OBJECTS) -am_libgompd_la_OBJECTS = ompd-init.lo ompd-helper.lo ompd-icv.lo +am_libgompd_la_OBJECTS = ompd-init.lo ompd-helper.lo ompd-icv.lo \ + ompd-parallel.lo libgompd_la_OBJECTS = $(am_libgompd_la_OBJECTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) @@ -583,7 +584,7 @@ libgomp_la_SOURCES = alloc.c atomic.c barrier.c critical.c env.c \ oacc-async.c oacc-plugin.c oacc-cuda.c priority_queue.c \ affinity-fmt.c teams.c allocator.c oacc-profiling.c \ oacc-target.c ompd-support.c $(am__append_7) -libgompd_la_SOURCES = ompd-init.c ompd-helper.c ompd-icv.c +libgompd_la_SOURCES = ompd-init.c ompd-helper.c ompd-icv.c ompd-parallel.c # Nvidia PTX OpenACC plugin. @PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_version_info = -version-info $(libtool_VERSION) @@ -800,6 +801,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ompd-helper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ompd-icv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ompd-init.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ompd-parallel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ompd-support.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ordered.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parallel.Plo@am__quote@ diff --git a/libgomp/libgompd.map b/libgomp/libgompd.map index 85bdc3695f6..1662dc56962 100644 --- a/libgomp/libgompd.map +++ b/libgomp/libgompd.map @@ -16,6 +16,10 @@ OMPD_5.1 { ompd_thread_handle_compare; ompd_get_thread_id; ompd_get_device_from_thread; +ompd_get_curr_parallel_handle; +ompd_get_enclosing_parallel_handle; +ompd_rel_parallel_handle; +ompd_parallel_handle_compare; local: *; }; diff --git a/libgomp/ompd-parallel.c b/libgomp/ompd-parallel.c new file mode 100644 index 000..3a278f7428a --- /dev/null +++ b/libgomp/ompd-parallel.c @@ -0,0 +1,144 @@ +/* Copyright (C) The GNU Toolchain Authors. + Contributed by Mohamed Sayed . + This file is part of the GNU Offloading and Multi Processing Library + (libgomp). + Libgomp is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 a