summaryrefslogtreecommitdiffstats
path: root/openmp/libomptarget/deviceRTLs/nvptx/src/parallel.cu
diff options
context:
space:
mode:
authorGheorghe-Teodor Bercea <gheorghe-teod.bercea@ibm.com>2018-02-07 18:21:55 +0000
committerGheorghe-Teodor Bercea <gheorghe-teod.bercea@ibm.com>2018-02-07 18:21:55 +0000
commitaaeab8d4efa59b62e47e062a34d567e3ca4ae567 (patch)
tree6a1905948bb46ba784332ea05d6e0c89a773a184 /openmp/libomptarget/deviceRTLs/nvptx/src/parallel.cu
parentf4e3f3e31cacd412bcef0906da3c6a4bd503d0a2 (diff)
downloadbcm5719-llvm-aaeab8d4efa59b62e47e062a34d567e3ca4ae567.tar.gz
bcm5719-llvm-aaeab8d4efa59b62e47e062a34d567e3ca4ae567.zip
[OpenMP][libomptarget] Add data sharing support in libomptarget
Summary: This patch extends the libomptarget functionality in patch D14254 with support for the data sharing scheme for supporting implicitly shared variables. The runtime therefore maintains a list of references to shared variables. Reviewers: carlo.bertolli, ABataev, Hahnfeld, grokos, caomhin, hfinkel Reviewed By: Hahnfeld, grokos Subscribers: guansong, llvm-commits, openmp-commits Differential Revision: https://reviews.llvm.org/D41485 llvm-svn: 324495
Diffstat (limited to 'openmp/libomptarget/deviceRTLs/nvptx/src/parallel.cu')
-rw-r--r--openmp/libomptarget/deviceRTLs/nvptx/src/parallel.cu8
1 files changed, 8 insertions, 0 deletions
diff --git a/openmp/libomptarget/deviceRTLs/nvptx/src/parallel.cu b/openmp/libomptarget/deviceRTLs/nvptx/src/parallel.cu
index d4546284fac..0b9ebd401f8 100644
--- a/openmp/libomptarget/deviceRTLs/nvptx/src/parallel.cu
+++ b/openmp/libomptarget/deviceRTLs/nvptx/src/parallel.cu
@@ -214,10 +214,16 @@ EXTERN void __kmpc_kernel_end_convergent_parallel(void *buffer) {
//
// This routine is always called by the team master..
EXTERN void __kmpc_kernel_prepare_parallel(void *WorkFn,
+ void ***SharedArgs, int32_t nArgs,
int16_t IsOMPRuntimeInitialized) {
PRINT0(LD_IO, "call to __kmpc_kernel_prepare_parallel\n");
omptarget_nvptx_workFn = WorkFn;
+ if (nArgs > 0) {
+ omptarget_nvptx_sharedArgs.EnsureSize(nArgs);
+ *SharedArgs = omptarget_nvptx_sharedArgs.GetArgs();
+ }
+
if (!IsOMPRuntimeInitialized)
return;
@@ -317,11 +323,13 @@ EXTERN void __kmpc_kernel_prepare_parallel(void *WorkFn,
//
// Only the worker threads call this routine.
EXTERN bool __kmpc_kernel_parallel(void **WorkFn,
+ void ***SharedArgs,
int16_t IsOMPRuntimeInitialized) {
PRINT0(LD_IO | LD_PAR, "call to __kmpc_kernel_parallel\n");
// Work function and arguments for L1 parallel region.
*WorkFn = omptarget_nvptx_workFn;
+ *SharedArgs = omptarget_nvptx_sharedArgs.GetArgs();
if (!IsOMPRuntimeInitialized)
return true;
OpenPOWER on IntegriCloud