Skip to content

Commit 96a5dbc

Browse files
Move object destruction to separate command
Signed-off-by: Mikołaj Komar <[email protected]>
1 parent 49a8c63 commit 96a5dbc

File tree

8 files changed

+62
-66
lines changed

8 files changed

+62
-66
lines changed

source/benchmarks/graph_api_benchmark/definitions/sin_kernel_graph_base.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class SinKernelGraphBase {
2929
virtual DataFloatPtr allocHost(uint32_t count) = 0;
3030

3131
virtual TestResult init() = 0;
32+
virtual TestResult destroy() = 0;
3233

3334
virtual TestResult recordGraph() = 0;
3435
virtual TestResult readResults(float *output_h) = 0;
@@ -89,7 +90,7 @@ class SinKernelGraphBase {
8990
return TestResult::Nooped;
9091
}
9192

92-
init();
93+
ASSERT_TEST_RESULT_SUCCESS(init());
9394

9495
TestResult result = TestResult::Success;
9596

@@ -145,6 +146,7 @@ class SinKernelGraphBase {
145146
typeSelector.getType());
146147
}
147148

149+
ASSERT_TEST_RESULT_SUCCESS(destroy());
148150
return result;
149151
}
150152

source/benchmarks/graph_api_benchmark/implementations/l0/mutate_graph_impl_l0.cpp

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -41,22 +41,6 @@ struct TestEnv {
4141

4242
mem_helper::DataFloatPtr graphInputData;
4343
mem_helper::DataFloatPtr graphOutputData;
44-
45-
~TestEnv() {
46-
if (kernelSum == nullptr)
47-
return; // object was not initialized
48-
zeKernelDestroy(kernelSum);
49-
zeKernelDestroy(kernelMul);
50-
zeModuleDestroy(moduleSum);
51-
zeModuleDestroy(moduleMul);
52-
zeCommandListDestroy(immCmdList);
53-
if (zePool != nullptr) {
54-
for (auto zeEvent : zeEvents) {
55-
zeEventDestroy(zeEvent);
56-
}
57-
zeEventPoolDestroy(zePool);
58-
}
59-
}
6044
};
6145
TestResult createCommandList(TestEnv &env, bool useInOrder, bool isMutable, ze_command_list_handle_t *graphCmdList) {
6246

@@ -122,7 +106,7 @@ bool checkResults(TestEnv &env, float *output_h, float *golden_h) {
122106
return true;
123107
}
124108

125-
void initEnv(TestEnv &env, const MutateGraphArguments &arguments) {
109+
TestResult initEnv(TestEnv &env, const MutateGraphArguments &arguments) {
126110

127111
env.levelzero = std::make_shared<LevelZero>();
128112

@@ -131,12 +115,12 @@ void initEnv(TestEnv &env, const MutateGraphArguments &arguments) {
131115

132116
uint32_t grpCnt[3] = {1, 1, 1};
133117

134-
ZE_RESULT_SUCCESS_OR_ERROR(zeKernelSuggestGroupSize(env.kernelSum, env.size, 1, 1, grpCnt,
135-
grpCnt + 1, grpCnt + 2));
136-
ZE_RESULT_SUCCESS_OR_ERROR(zeKernelSetGroupSize(env.kernelSum, grpCnt[0], grpCnt[1], grpCnt[2]));
137-
ZE_RESULT_SUCCESS_OR_ERROR(zeKernelSuggestGroupSize(env.kernelMul, env.size, 1, 1, grpCnt,
138-
grpCnt + 1, grpCnt + 2));
139-
ZE_RESULT_SUCCESS_OR_ERROR(zeKernelSetGroupSize(env.kernelMul, grpCnt[0], grpCnt[1], grpCnt[2]));
118+
ASSERT_ZE_RESULT_SUCCESS(zeKernelSuggestGroupSize(env.kernelSum, env.size, 1, 1, grpCnt,
119+
grpCnt + 1, grpCnt + 2));
120+
ASSERT_ZE_RESULT_SUCCESS(zeKernelSetGroupSize(env.kernelSum, grpCnt[0], grpCnt[1], grpCnt[2]));
121+
ASSERT_ZE_RESULT_SUCCESS(zeKernelSuggestGroupSize(env.kernelMul, env.size, 1, 1, grpCnt,
122+
grpCnt + 1, grpCnt + 2));
123+
ASSERT_ZE_RESULT_SUCCESS(zeKernelSetGroupSize(env.kernelMul, grpCnt[0], grpCnt[1], grpCnt[2]));
140124
ze_command_queue_desc_t cmdQueueDesc = {ZE_STRUCTURE_TYPE_COMMAND_QUEUE_DESC};
141125
cmdQueueDesc.ordinal = env.levelzero->commandQueueDesc.ordinal;
142126
cmdQueueDesc.mode = ZE_COMMAND_QUEUE_MODE_ASYNCHRONOUS;
@@ -145,7 +129,7 @@ void initEnv(TestEnv &env, const MutateGraphArguments &arguments) {
145129
}
146130
cmdQueueDesc.pNext = nullptr;
147131

148-
ZE_RESULT_SUCCESS_OR_ERROR(
132+
ASSERT_ZE_RESULT_SUCCESS(
149133
zeCommandListCreateImmediate(env.levelzero->context, env.levelzero->device,
150134
&cmdQueueDesc, &env.immCmdList));
151135

@@ -168,14 +152,30 @@ void initEnv(TestEnv &env, const MutateGraphArguments &arguments) {
168152
pdesc.count = static_cast<uint32_t>(arguments.numKernels - 1);
169153
pdesc.flags = 0;
170154
pdesc.pNext = nullptr;
171-
ZE_RESULT_SUCCESS_OR_ERROR(zeEventPoolCreate(env.levelzero->context, &pdesc, 1, &env.levelzero->device, &env.zePool));
155+
ASSERT_ZE_RESULT_SUCCESS(zeEventPoolCreate(env.levelzero->context, &pdesc, 1, &env.levelzero->device, &env.zePool));
172156

173157
env.zeEvents.resize(arguments.numKernels - 1);
174158
for (uint32_t index = 0; index < arguments.numKernels - 1; index++) {
175159
edesc.index = index;
176-
ZE_RESULT_SUCCESS_OR_ERROR(zeEventCreate(env.zePool, &edesc, &env.zeEvents[index]));
160+
ASSERT_ZE_RESULT_SUCCESS(zeEventCreate(env.zePool, &edesc, &env.zeEvents[index]));
177161
}
178162
}
163+
return TestResult::Success;
164+
}
165+
166+
TestResult destroyEnv(TestEnv &env) {
167+
zeKernelDestroy(env.kernelSum);
168+
zeKernelDestroy(env.kernelMul);
169+
zeModuleDestroy(env.moduleSum);
170+
zeModuleDestroy(env.moduleMul);
171+
zeCommandListDestroy(env.immCmdList);
172+
if (env.zePool != nullptr) {
173+
for (auto zeEvent : env.zeEvents) {
174+
zeEventDestroy(zeEvent);
175+
}
176+
zeEventPoolDestroy(env.zePool);
177+
}
178+
return TestResult::Success;
179179
}
180180

181181
TestResult resetEvents(TestEnv &env) {
@@ -459,7 +459,7 @@ static TestResult run(const MutateGraphArguments &arguments, Statistics &statist
459459
return TestResult::Nooped;
460460
}
461461

462-
initEnv(env, arguments);
462+
ASSERT_TEST_RESULT_SUCCESS(initEnv(env, arguments));
463463
std::mt19937 gen{0};
464464
for (uint32_t position = 0; position < env.size; ++position) {
465465
env.inputData.get()[position] = static_cast<float>(env.distribution->get(gen)) / static_cast<float>(env.distribution->get(gen));
@@ -480,6 +480,7 @@ static TestResult run(const MutateGraphArguments &arguments, Statistics &statist
480480
default:
481481
break;
482482
}
483+
ASSERT_TEST_RESULT_SUCCESS(destroyEnv(env));
483484
return TestResult::Success;
484485
};
485486

source/benchmarks/graph_api_benchmark/implementations/l0/sin_kernel_impl_l0.cpp

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,20 @@ TestResult SinKernelGraphL0::init() {
121121
return TestResult::Success;
122122
}
123123

124+
TestResult SinKernelGraphL0::destroy() {
125+
if (graphCmdList != nullptr)
126+
ASSERT_ZE_RESULT_SUCCESS(zeCommandListDestroy(graphCmdList));
127+
ASSERT_ZE_RESULT_SUCCESS(zeKernelDestroy(kernelAssign));
128+
ASSERT_ZE_RESULT_SUCCESS(zeKernelDestroy(kernelSin));
129+
ASSERT_ZE_RESULT_SUCCESS(zeModuleDestroy(moduleAssign));
130+
ASSERT_ZE_RESULT_SUCCESS(zeModuleDestroy(moduleSin));
131+
ASSERT_ZE_RESULT_SUCCESS(zeEventDestroy(zeEvent));
132+
ASSERT_ZE_RESULT_SUCCESS(zeEventPoolDestroy(zePool));
133+
ASSERT_ZE_RESULT_SUCCESS(zeCommandListDestroy(immCmdList));
134+
ASSERT_ZE_RESULT_SUCCESS(zeCommandQueueDestroy(cmdQueue));
135+
return TestResult::Success;
136+
}
137+
124138
TestResult SinKernelGraphL0::recordGraph() {
125139
ze_command_list_desc_t cmdListDesc = {ZE_STRUCTURE_TYPE_COMMAND_LIST_DESC};
126140

@@ -193,19 +207,3 @@ TestResult SinKernelGraphL0::waitCompletion() {
193207

194208
return TestResult::Success;
195209
}
196-
197-
SinKernelGraphL0::~SinKernelGraphL0() {
198-
if (levelzero == nullptr) // never inited, likely noop run
199-
return;
200-
201-
if (graphCmdList != nullptr)
202-
EXPECT_ZE_RESULT_SUCCESS(zeCommandListDestroy(graphCmdList));
203-
EXPECT_ZE_RESULT_SUCCESS(zeKernelDestroy(kernelAssign));
204-
EXPECT_ZE_RESULT_SUCCESS(zeKernelDestroy(kernelSin));
205-
EXPECT_ZE_RESULT_SUCCESS(zeModuleDestroy(moduleAssign));
206-
EXPECT_ZE_RESULT_SUCCESS(zeModuleDestroy(moduleSin));
207-
EXPECT_ZE_RESULT_SUCCESS(zeEventDestroy(zeEvent));
208-
EXPECT_ZE_RESULT_SUCCESS(zeEventPoolDestroy(zePool));
209-
EXPECT_ZE_RESULT_SUCCESS(zeCommandListDestroy(immCmdList));
210-
EXPECT_ZE_RESULT_SUCCESS(zeCommandQueueDestroy(cmdQueue));
211-
}

source/benchmarks/graph_api_benchmark/implementations/l0/sin_kernel_impl_l0.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@ class SinKernelGraphL0 : public SinKernelGraphBase {
2121
: SinKernelGraphBase(arguments), levelzero(nullptr) {
2222
}
2323

24-
~SinKernelGraphL0();
25-
2624
DataFloatPtr allocDevice(uint32_t count) override;
2725
DataFloatPtr allocHost(uint32_t count) override;
2826

2927
TestResult init() override;
28+
TestResult destroy() override;
3029
TestResult recordGraph() override;
3130
TestResult readResults(float *output_h) override;
3231
TestResult runGraph(float *input_h) override;

source/benchmarks/graph_api_benchmark/implementations/sycl/sin_kernel_impl_sycl.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ TestResult SinKernelGraphSYCL::init() {
4444

4545
return TestResult::Success;
4646
}
47+
TestResult SinKernelGraphSYCL::destroy() {
48+
return TestResult::Success;
49+
}
4750

4851
TestResult SinKernelGraphSYCL::runKernels() {
4952
float *source = graphInputData.get();
@@ -116,6 +119,3 @@ TestResult SinKernelGraphSYCL::runEager(float *input_h) {
116119

117120
return TestResult::Success;
118121
}
119-
120-
SinKernelGraphSYCL::~SinKernelGraphSYCL() {
121-
}

source/benchmarks/graph_api_benchmark/implementations/sycl/sin_kernel_impl_sycl.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,11 @@ class SinKernelGraphSYCL : public SinKernelGraphBase {
1919
: SinKernelGraphBase(arguments), queue(nullptr) {
2020
}
2121

22-
~SinKernelGraphSYCL();
23-
2422
DataFloatPtr allocDevice(uint32_t count) override;
2523
DataFloatPtr allocHost(uint32_t count) override;
2624

2725
TestResult init() override;
26+
TestResult destroy() override;
2827
TestResult recordGraph() override;
2928
TestResult readResults(float *output_h) override;
3029
TestResult runGraph(float *input_h) override;

source/benchmarks/graph_api_benchmark/implementations/ur/sin_kernel_impl_ur.cpp

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,17 @@ TestResult SinKernelGraphUR::init() {
8080
return TestResult::Success;
8181
}
8282

83+
TestResult SinKernelGraphUR::init() {
84+
if (cmdBuffer != nullptr)
85+
EXPECT_UR_RESULT_SUCCESS(urCommandBufferReleaseExp(cmdBuffer));
86+
EXPECT_UR_RESULT_SUCCESS(urKernelRelease(kernelAssign));
87+
EXPECT_UR_RESULT_SUCCESS(urKernelRelease(kernelSin));
88+
EXPECT_UR_RESULT_SUCCESS(urProgramRelease(programA));
89+
EXPECT_UR_RESULT_SUCCESS(urProgramRelease(programS));
90+
EXPECT_UR_RESULT_SUCCESS(urQueueRelease(queue));
91+
return TestResult::Success;
92+
}
93+
8394
TestResult SinKernelGraphUR::runKernels() {
8495
size_t global_offset = 0;
8596
uint32_t n_dimensions = 1;
@@ -180,16 +191,3 @@ TestResult SinKernelGraphUR::runEager(float *input_h) {
180191

181192
return TestResult::Success;
182193
}
183-
184-
SinKernelGraphUR::~SinKernelGraphUR() {
185-
if (urstate == nullptr) // never inited, likely noop run
186-
return;
187-
188-
if (cmdBuffer != nullptr)
189-
EXPECT_UR_RESULT_SUCCESS(urCommandBufferReleaseExp(cmdBuffer));
190-
EXPECT_UR_RESULT_SUCCESS(urKernelRelease(kernelAssign));
191-
EXPECT_UR_RESULT_SUCCESS(urKernelRelease(kernelSin));
192-
EXPECT_UR_RESULT_SUCCESS(urProgramRelease(programA));
193-
EXPECT_UR_RESULT_SUCCESS(urProgramRelease(programS));
194-
EXPECT_UR_RESULT_SUCCESS(urQueueRelease(queue));
195-
}

source/benchmarks/graph_api_benchmark/implementations/ur/sin_kernel_impl_ur.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@ class SinKernelGraphUR : public SinKernelGraphBase {
2121
: SinKernelGraphBase(arguments), urstate(nullptr), syncPoints(arguments.numKernels + 1) {
2222
}
2323

24-
~SinKernelGraphUR();
25-
2624
DataFloatPtr allocDevice(uint32_t count) override;
2725
DataFloatPtr allocHost(uint32_t count) override;
2826

2927
TestResult init() override;
28+
TestResult destroy() override;
3029
TestResult recordGraph() override;
3130
TestResult readResults(float *output_h) override;
3231
TestResult runGraph(float *input_h) override;

0 commit comments

Comments
 (0)