Skip to content

Commit 20669b1

Browse files
committed
Overwrite adjoint access mode if tape position did not change.
1 parent ed8c452 commit 20669b1

1 file changed

Lines changed: 11 additions & 3 deletions

File tree

include/opdi/logic/omp/parallelOmpLogic.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,17 @@ void opdi::ParallelOmpLogic::internalSetAdjointAccessMode(void* taskDataPtr, Adj
144144
taskData->adjointAccessModes.back() = mode;
145145
}
146146
else {
147-
taskData->adjointAccessModes.push_back(mode);
148-
taskData->positions.push_back(tool->allocPosition());
149-
tool->getTapePosition(taskData->tape, taskData->positions.back());
147+
void* position = tool->allocPosition();
148+
tool->getTapePosition(taskData->tape, position);
149+
150+
if (tool->comparePosition(taskData->positions.back(), position) == 0) {
151+
taskData->adjointAccessModes.back() = mode;
152+
tool->freePosition(position);
153+
}
154+
else {
155+
taskData->adjointAccessModes.push_back(mode);
156+
taskData->positions.push_back(position);
157+
}
150158
}
151159
}
152160

0 commit comments

Comments
 (0)