22 * OpDiLib, an Open Multiprocessing Differentiation Library
33 *
44 * Copyright (C) 2020-2022 Chair for Scientific Computing (SciComp), TU Kaiserslautern
5- * Copyright (C) 2023-2024 Chair for Scientific Computing (SciComp), University of Kaiserslautern-Landau
5+ * Copyright (C) 2023-2025 Chair for Scientific Computing (SciComp), University of Kaiserslautern-Landau
66 * Homepage: https://scicomp.rptu.de
77 * Contact: Prof. Nicolas R. Gauger (opdi@scicomp.uni-kl.de)
88 *
2525
2626#pragma once
2727
28+ #include < cassert>
29+
2830#include " ../../config.hpp"
2931
3032#ifdef OPDI_BACKEND
@@ -57,9 +59,15 @@ namespace opdi {
5759
5860 void init () {
5961 opdi_init_lock (&ReductionTools::globalReducerLock);
62+
63+ // task data for initial implicit task is created in the logic layer
6064 }
6165
6266 void finalize () {
67+ // pop task data associated with initial implicit task
68+ DataTools::popTaskData ();
69+ assert (DataTools::getTaskData () == nullptr );
70+
6371 opdi_set_lock (&ReductionTools::globalReducerLock);
6472
6573 for (auto lock : ReductionTools::individualReducerLocks) {
@@ -74,6 +82,15 @@ namespace opdi {
7482 void * getParallelData () {
7583 return DataTools::getParallelData ();
7684 }
85+
86+ void * getTaskData () {
87+ return DataTools::getTaskData ();
88+ }
89+
90+ void setInitialImplicitTaskData (void * data) {
91+ assert (DataTools::getTaskData () == nullptr );
92+ DataTools::pushTaskData (data);
93+ }
7794 };
7895
7996}
0 commit comments