diff options
| author | Gheorghe-Teodor Bercea <gheorghe-teod.bercea@ibm.com> | 2018-02-07 18:21:55 +0000 |
|---|---|---|
| committer | Gheorghe-Teodor Bercea <gheorghe-teod.bercea@ibm.com> | 2018-02-07 18:21:55 +0000 |
| commit | aaeab8d4efa59b62e47e062a34d567e3ca4ae567 (patch) | |
| tree | 6a1905948bb46ba784332ea05d6e0c89a773a184 /openmp/libomptarget/deviceRTLs/nvptx/src/parallel.cu | |
| parent | f4e3f3e31cacd412bcef0906da3c6a4bd503d0a2 (diff) | |
| download | bcm5719-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.cu | 8 |
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; |

