|
@@ -27,9 +27,9 @@ inline or as outlined functions.
|
|
|
|
|
|
All functions are defined in \ref API_OpenMP_Runtime_Support.
|
|
|
|
|
|
-\section Implementation Implementation Details and Specificities
|
|
|
+\section OMPImplementation Implementation Details and Specificities
|
|
|
|
|
|
-\subsection MainThread Main Thread
|
|
|
+\subsection OMPMainThread Main Thread
|
|
|
|
|
|
When using the SORS, the main thread gets involved in executing OpenMP tasks
|
|
|
just like every other threads, in order to be compliant with the
|
|
@@ -37,7 +37,7 @@ specification execution model. This contrasts with StarPU's usual
|
|
|
execution model where the main thread submit tasks but does not take
|
|
|
part in executing them.
|
|
|
|
|
|
-\subsection TaskSemantics Extended Task Semantics
|
|
|
+\subsection OMPTaskSemantics Extended Task Semantics
|
|
|
|
|
|
The semantics of tasks generated by the SORS are extended with respect
|
|
|
to regular StarPU tasks in that SORS' tasks may block and be preempted
|
|
@@ -45,7 +45,7 @@ by SORS call, whereas regular StarPU tasks cannot. SORS tasks may
|
|
|
coexist with regular StarPU tasks. However, only the tasks created using
|
|
|
SORS API functions inherit from extended semantics.
|
|
|
|
|
|
-\section Configuration Configuration
|
|
|
+\section OMPConfiguration Configuration
|
|
|
|
|
|
The SORS can be compiled into <c>libstarpu</c> through
|
|
|
the \c configure option \ref enable-openmp "--enable-openmp".
|
|
@@ -53,7 +53,7 @@ Conditional compiled source codes may check for the
|
|
|
availability of the OpenMP Runtime Support by testing whether the C
|
|
|
preprocessor macro <c>STARPU_OPENMP</c> is defined or not.
|
|
|
|
|
|
-\section InitExit Initialization and Shutdown
|
|
|
+\section OMPInitExit Initialization and Shutdown
|
|
|
|
|
|
The SORS needs to be executed/terminated by the
|
|
|
starpu_omp_init() / starpu_omp_shutdown() instead of
|
|
@@ -81,7 +81,7 @@ static void omp_destructor(void)
|
|
|
\sa starpu_omp_init()
|
|
|
\sa starpu_omp_shutdown()
|
|
|
|
|
|
-\section Parallel Parallel Regions and Worksharing
|
|
|
+\section OMPSharing Parallel Regions and Worksharing
|
|
|
|
|
|
The SORS provides functions to create OpenMP parallel regions as well as
|
|
|
mapping work on participating workers. The current implementation does
|
|
@@ -251,13 +251,13 @@ starpu_omp_master() function variants.
|
|
|
\sa starpu_omp_single_copyprivate_inline_begin()
|
|
|
\sa starpu_omp_single_copyprivate_inline_end()
|
|
|
|
|
|
-\section Task Tasks
|
|
|
+\section OMPTask Tasks
|
|
|
|
|
|
The SORS implements the necessary support of OpenMP 3.1 and OpenMP 4.0's
|
|
|
so-called explicit tasks, together with OpenMP 4.0's data dependency
|
|
|
management.
|
|
|
|
|
|
-\subsection OMPTask Explicit Tasks
|
|
|
+\subsection OMPTaskExplicit Explicit Tasks
|
|
|
Explicit OpenMP tasks are created with the SORS using the
|
|
|
starpu_omp_task_region() function. The implementation supports
|
|
|
<c>if</c>, <c>final</c>, <c>untied</c> and <c>mergeable</c> clauses
|
|
@@ -313,7 +313,7 @@ void parallel_region_f(void *buffers[], void *args)
|
|
|
\sa struct starpu_omp_task_region_attr
|
|
|
\sa starpu_omp_task_region()
|
|
|
|
|
|
-\subsection DataDependencies Data Dependencies
|
|
|
+\subsection OMPDataDependencies Data Dependencies
|
|
|
The SORS implements inter-tasks data dependencies as specified in OpenMP
|
|
|
4.0. Data dependencies are expressed using regular StarPU data handles
|
|
|
(\ref starpu_data_handle_t) plugged into the task's <c>attr.cl</c>
|
|
@@ -331,7 +331,7 @@ dependencies between sibling tasks. Consequently the behaviour is
|
|
|
unspecified if dependencies are expressed beween tasks that have not
|
|
|
been created by the same parent task.
|
|
|
|
|
|
-\subsection TaskSyncs TaskWait and TaskGroup
|
|
|
+\subsection OMPTaskSyncs TaskWait and TaskGroup
|
|
|
The SORS implements both the <c>taskwait</c> and <c>taskgroup</c> OpenMP
|
|
|
task synchronization constructs specified in OpenMP 4.0, with the
|
|
|
starpu_omp_taskwait() and starpu_omp_taskgroup() functions respectively.
|
|
@@ -403,12 +403,12 @@ void parallel_region_f(void *buffers[], void *args)
|
|
|
\sa starpu_omp_taskgroup_inline_begin()
|
|
|
\sa starpu_omp_taskgroup_inline_end()
|
|
|
|
|
|
-\section Synchronization Synchronization Support
|
|
|
+\section OMPSynchronization Synchronization Support
|
|
|
|
|
|
The SORS implements objects and method to build common OpenMP
|
|
|
synchronization constructs.
|
|
|
|
|
|
-\subsection SimpleLock Simple Locks
|
|
|
+\subsection OMPSimpleLock Simple Locks
|
|
|
|
|
|
The SORS Simple Locks are opaque starpu_omp_lock_t objects enabling multiple
|
|
|
tasks to synchronize with each others, following the Simple Lock
|
|
@@ -427,7 +427,7 @@ Simple Locks as they incur less processing overhead than Nestable Locks.
|
|
|
\sa starpu_omp_unset_lock()
|
|
|
\sa starpu_omp_test_lock()
|
|
|
|
|
|
-\subsection NestableLock Nestable Locks
|
|
|
+\subsection OMPNestableLock Nestable Locks
|
|
|
|
|
|
The SORS Nestable Locks are opaque starpu_omp_nest_lock_t objects enabling
|
|
|
multiple tasks to synchronize with each others, following the Nestable
|
|
@@ -448,7 +448,7 @@ incur less processing overhead than Nestable Locks.
|
|
|
\sa starpu_omp_unset_nest_lock()
|
|
|
\sa starpu_omp_test_nest_lock()
|
|
|
|
|
|
-\subsection Critical Critical Sections
|
|
|
+\subsection OMPCritical Critical Sections
|
|
|
|
|
|
The SORS implements support for OpenMP critical sections through the
|
|
|
family of \ref starpu_omp_critical functions. Critical sections may optionally
|
|
@@ -460,7 +460,7 @@ a named one or the anonymous one.
|
|
|
\sa starpu_omp_critical_inline_begin()
|
|
|
\sa starpu_omp_critical_inline_end()
|
|
|
|
|
|
-\subsection Barrier Barriers
|
|
|
+\subsection OMPBarrier Barriers
|
|
|
|
|
|
The SORS provides the starpu_omp_barrier() function to implement
|
|
|
barriers over parallel region teams. In accordance with the OpenMP
|