Set Context in program when using builtins

Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2021-04-02 13:00:33 +00:00
committed by Compute-Runtime-Automation
parent 402082182c
commit 722f693e0f
11 changed files with 44 additions and 19 deletions

View File

@@ -780,19 +780,27 @@ BuiltinDispatchInfoBuilder &BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuil
return *operationBuilder.first;
}
BuiltInOwnershipWrapper::BuiltInOwnershipWrapper(BuiltinDispatchInfoBuilder &inputBuilder) {
takeOwnership(inputBuilder);
BuiltInOwnershipWrapper::BuiltInOwnershipWrapper(BuiltinDispatchInfoBuilder &inputBuilder, Context *context) {
takeOwnership(inputBuilder, context);
}
BuiltInOwnershipWrapper::~BuiltInOwnershipWrapper() {
if (builder) {
for (auto &kernel : builder->peekUsedKernels()) {
kernel->releaseOwnership();
}
if (!builder->peekUsedKernels().empty()) {
builder->peekUsedKernels()[0]->getProgram()->setContext(nullptr);
builder->peekUsedKernels()[0]->getProgram()->releaseOwnership();
}
}
}
void BuiltInOwnershipWrapper::takeOwnership(BuiltinDispatchInfoBuilder &inputBuilder) {
void BuiltInOwnershipWrapper::takeOwnership(BuiltinDispatchInfoBuilder &inputBuilder, Context *context) {
UNRECOVERABLE_IF(builder);
builder = &inputBuilder;
if (!builder->peekUsedKernels().empty()) {
builder->peekUsedKernels()[0]->getProgram()->takeOwnership();
builder->peekUsedKernels()[0]->getProgram()->setContext(context);
}
for (auto &kernel : builder->peekUsedKernels()) {
kernel->takeOwnership();
}

View File

@@ -118,10 +118,10 @@ class BuiltInDispatchBuilderOp {
class BuiltInOwnershipWrapper : public NonCopyableOrMovableClass {
public:
BuiltInOwnershipWrapper() = default;
BuiltInOwnershipWrapper(BuiltinDispatchInfoBuilder &inputBuilder);
BuiltInOwnershipWrapper(BuiltinDispatchInfoBuilder &inputBuilder, Context *context);
~BuiltInOwnershipWrapper();
void takeOwnership(BuiltinDispatchInfoBuilder &inputBuilder);
void takeOwnership(BuiltinDispatchInfoBuilder &inputBuilder, Context *context);
protected:
BuiltinDispatchInfoBuilder *builder = nullptr;