compute-runtime/opencl/test/unit_test/fixtures/execution_model_kernel_fixt...

74 lines
2.1 KiB
C++

/*
* Copyright (C) 2018-2021 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include "opencl/source/kernel/kernel.h"
#include "opencl/test/unit_test/fixtures/platform_fixture.h"
#include "opencl/test/unit_test/mocks/mock_kernel.h"
#include "opencl/test/unit_test/program/program_from_binary.h"
#include "opencl/test/unit_test/test_macros/test_checks_ocl.h"
#include "test.h"
using namespace NEO;
struct ExecutionModelKernelFixture : public ProgramFromBinaryFixture,
public PlatformFixture {
using ProgramFromBinaryFixture::SetUp;
void SetUp(const char *binaryFileName, const char *kernelName) {
REQUIRE_DEVICE_ENQUEUE_OR_SKIP(defaultHwInfo);
PlatformFixture::SetUp();
std::string options("-cl-std=CL2.0");
this->setOptions(options);
ProgramFromBinaryFixture::SetUp(binaryFileName, kernelName);
ASSERT_NE(nullptr, pProgram);
ASSERT_EQ(CL_SUCCESS, retVal);
retVal = pProgram->build(
pProgram->getDevices(),
nullptr,
false);
ASSERT_EQ(CL_SUCCESS, retVal);
pMultiDeviceKernel = MultiDeviceKernel::create<MockKernel>(pProgram,
pProgram->getKernelInfosForKernel(kernelName),
&retVal);
pKernel = pMultiDeviceKernel->getKernel(rootDeviceIndex);
ASSERT_EQ(CL_SUCCESS, retVal);
ASSERT_NE(nullptr, pKernel);
}
void TearDown() override {
if (IsSkipped()) {
return;
}
if (pMultiDeviceKernel != nullptr) {
pMultiDeviceKernel->release();
}
ProgramFromBinaryFixture::TearDown();
PlatformFixture::TearDown();
if (pDevice != nullptr) {
delete pDevice;
pDevice = nullptr;
}
if (pClDevice != nullptr) {
delete pClDevice;
pClDevice = nullptr;
}
}
MultiDeviceKernel *pMultiDeviceKernel = nullptr;
Kernel *pKernel = nullptr;
cl_int retVal = CL_SUCCESS;
};