Skip to content

Commit b90b93b

Browse files
committed
Instrumentation for actions always uses AD data.
Consolidations in SyncRegionOmpLogic.
1 parent bde2be5 commit b90b93b

7 files changed

Lines changed: 39 additions & 42 deletions

File tree

include/opdi/logic/omp/instrument/ompLogicInstrumentInterface.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,13 @@ namespace opdi {
5252

5353
virtual void onMutexAcquired(MutexOmpLogic::Data* /*data*/) {}
5454
virtual void onMutexReleased(MutexOmpLogic::Data* /*data*/) {}
55-
virtual void onMutexDestroyed(LogicInterface::MutexKind /*kind*/, std::size_t /*waitId*/) {}
55+
virtual void onMutexDestroyed(MutexOmpLogic::Data* /*data*/) {}
5656

57-
virtual void onSyncRegion(LogicInterface::SyncRegionKind /*kind*/, LogicInterface::ScopeEndpoint /*endpoint*/) {}
57+
virtual void onSyncRegion(SyncRegionOmpLogic::Data* /*data*/) {}
5858

59-
virtual void onMasked(LogicInterface::ScopeEndpoint /*endpoint*/) {}
59+
virtual void onMasked(MaskedOmpLogic::Data* /*data*/) {}
6060

61-
virtual void onWork(LogicInterface::WorksharingKind /*kind*/, LogicInterface::ScopeEndpoint /*endpoint*/) {}
61+
virtual void onWork(WorkOmpLogic::Data* /*data*/) {}
6262

6363
/* instrumentation of reverse actions */
6464

include/opdi/logic/omp/instrument/ompLogicOutputInstrument.hpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -122,22 +122,22 @@ namespace opdi {
122122
"at", data->counter);
123123
}
124124

125-
virtual void onMutexDestroyed(LogicInterface::MutexKind kind, std::size_t waitId) {
125+
virtual void onMutexDestroyed(MutexOmpLogic::Data* data) {
126126
TapedOutput::print("F MDES t", omp_get_thread_num(),
127-
"kind", kind,
128-
"id", waitId);
127+
"kind", data->mutexKind,
128+
"id", data->waitId);
129129
}
130130

131-
virtual void onSyncRegion(LogicInterface::SyncRegionKind kind, LogicInterface::ScopeEndpoint endpoint) {
132-
TapedOutput::print("F SYNC t", omp_get_thread_num(), "kind", kind, "endp", endpoint);
131+
virtual void onSyncRegion(SyncRegionOmpLogic::Data* data) {
132+
TapedOutput::print("F SYNC t", omp_get_thread_num(), "kind", data->kind, "endp", data->endpoint);
133133
}
134134

135-
virtual void onMasked(LogicInterface::ScopeEndpoint endpoint) {
136-
TapedOutput::print("F MASK t", omp_get_thread_num(), "endp", endpoint);
135+
virtual void onMasked(MaskedOmpLogic::Data* data) {
136+
TapedOutput::print("F MASK t", omp_get_thread_num(), "endp", data->endpoint);
137137
}
138138

139-
virtual void onWork(LogicInterface::WorksharingKind kind, LogicInterface::ScopeEndpoint endpoint) {
140-
TapedOutput::print("F WORK t", omp_get_thread_num(), "kind", kind, "endp", endpoint);
139+
virtual void onWork(WorkOmpLogic::Data* data) {
140+
TapedOutput::print("F WORK t", omp_get_thread_num(), "kind", data->kind, "endp", data->endpoint);
141141
}
142142

143143
/* instrumentation of reverse actions */

include/opdi/logic/omp/maskedOmpLogic.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ void opdi::MaskedOmpLogic::onMasked(ScopeEndpoint endpoint) {
5656
#if OPDI_OMP_LOGIC_INSTRUMENT
5757
if (tool != nullptr && tool->getThreadLocalTape() != nullptr && tool->isActive(tool->getThreadLocalTape())) {
5858

59-
for (auto& instrument : ompLogicInstruments) {
60-
instrument->onMasked(endpoint);
61-
}
62-
6359
Data* data = new Data;
6460
data->endpoint = endpoint;
6561

62+
for (auto& instrument : ompLogicInstruments) {
63+
instrument->onMasked(data);
64+
}
65+
6666
Handle* handle = new Handle;
6767
handle->data = static_cast<void*>(data);
6868
handle->reverseFunc = MaskedOmpLogic::reverseFunc;

include/opdi/logic/omp/mutexOmpLogic.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,9 @@ void opdi::MutexOmpLogic::internalFinalize() {
118118
void opdi::MutexOmpLogic::onMutexDestroyed(MutexKind mutexKind, WaitId waitId) {
119119

120120
#if OPDI_OMP_LOGIC_INSTRUMENT
121+
Data data = {mutexKind, waitId, 0};
121122
for (auto& instrument : ompLogicInstruments) {
122-
instrument->onMutexDestroyed(mutexKind, waitId);
123+
instrument->onMutexDestroyed(&data);
123124
}
124125
#endif
125126

include/opdi/logic/omp/syncRegionOmpLogic.cpp

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -50,20 +50,6 @@ void opdi::SyncRegionOmpLogic::deleteFunc(void* dataPtr) {
5050
delete data;
5151
}
5252

53-
void opdi::SyncRegionOmpLogic::internalPushHandle(SyncRegionKind kind, ScopeEndpoint endpoint) {
54-
55-
Data* data = new Data;
56-
data->kind = kind;
57-
data->endpoint = endpoint;
58-
59-
Handle* handle = new Handle;
60-
handle->data = static_cast<void*>(data);
61-
handle->reverseFunc = SyncRegionOmpLogic::reverseFunc;
62-
handle->deleteFunc = SyncRegionOmpLogic::deleteFunc;
63-
64-
tool->pushExternalFunction(tool->getThreadLocalTape(), handle);
65-
}
66-
6753
bool opdi::SyncRegionOmpLogic::requiresReverseBarrier(SyncRegionKind kind, ScopeEndpoint endpoint) {
6854

6955
static std::size_t constexpr syncRegionBehaviour[] = {
@@ -84,14 +70,26 @@ void opdi::SyncRegionOmpLogic::onSyncRegion(SyncRegionKind kind, ScopeEndpoint e
8470

8571
if (tool != nullptr && tool->getThreadLocalTape() != nullptr && tool->isActive(tool->getThreadLocalTape())) {
8672

73+
Data* data = new Data;
74+
data->kind = kind;
75+
data->endpoint = endpoint;
76+
8777
#if OPDI_OMP_LOGIC_INSTRUMENT
88-
for (auto& instrument : ompLogicInstruments) {
89-
instrument->onSyncRegion(kind, endpoint);
90-
}
78+
for (auto& instrument : ompLogicInstruments) {
79+
instrument->onSyncRegion(data);
80+
}
9181
#endif
9282

9383
if (requiresReverseBarrier(kind, endpoint)) {
94-
internalPushHandle(kind, endpoint);
84+
Handle* handle = new Handle;
85+
handle->data = static_cast<void*>(data);
86+
handle->reverseFunc = SyncRegionOmpLogic::reverseFunc;
87+
handle->deleteFunc = SyncRegionOmpLogic::deleteFunc;
88+
89+
tool->pushExternalFunction(tool->getThreadLocalTape(), handle);
90+
}
91+
else {
92+
delete data;
9593
}
9694
}
9795
}

include/opdi/logic/omp/syncRegionOmpLogic.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@ namespace opdi {
5050
static void reverseFunc(void* dataPtr);
5151
static void deleteFunc(void* dataPtr);
5252

53-
void internalPushHandle(SyncRegionKind kind, ScopeEndpoint endpoint);
54-
5553
public:
5654

5755
virtual void onSyncRegion(SyncRegionKind kind, ScopeEndpoint endpoint);

include/opdi/logic/omp/workOmpLogic.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,14 @@ void opdi::WorkOmpLogic::onWork(WorksharingKind kind, ScopeEndpoint endpoint) {
5555
#if OPDI_OMP_LOGIC_INSTRUMENT
5656
if (tool != nullptr && tool->getThreadLocalTape() != nullptr && tool->isActive(tool->getThreadLocalTape())) {
5757

58-
for (auto& instrument : ompLogicInstruments) {
59-
instrument->onWork(kind, endpoint);
60-
}
61-
6258
Data* data = new Data;
6359
data->kind = kind;
6460
data->endpoint = endpoint;
6561

62+
for (auto& instrument : ompLogicInstruments) {
63+
instrument->onWork(data);
64+
}
65+
6666
Handle* handle = new Handle;
6767
handle->data = static_cast<void*>(data);
6868
handle->reverseFunc = WorkOmpLogic::reverseFunc;

0 commit comments

Comments
 (0)