mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-21 01:04:57 +08:00
Add ExecutionEnvironment parameter to Program::createFromGenBinary
Change-Id: I825c29d8c885d986d54d716ea72f19e70b3b11c6 Signed-off-by: Maciej Dziuban <maciej.dziuban@intel.com>
This commit is contained in:
committed by
sys_ocldev
parent
01dae21b69
commit
5b37dc1c91
@@ -86,7 +86,8 @@ SchedulerKernel &BuiltIns::getSchedulerKernel(Context &context) {
|
||||
|
||||
auto src = getInstance().builtinsLib->getBuiltinCode(EBuiltInOps::Scheduler, BuiltinCode::ECodeType::Any, *context.getDevice(0));
|
||||
|
||||
auto program = Program::createFromGenBinary(&context,
|
||||
auto program = Program::createFromGenBinary(*context.getDevice(0)->getExecutionEnvironment(),
|
||||
&context,
|
||||
src.resource.data(),
|
||||
src.resource.size(),
|
||||
true,
|
||||
@@ -131,7 +132,8 @@ const SipKernel &BuiltIns::getSipKernel(SipKernelType type, Device &device) {
|
||||
|
||||
UNRECOVERABLE_IF(ret != CL_SUCCESS);
|
||||
UNRECOVERABLE_IF(sipBinary.size() == 0);
|
||||
auto program = createProgramForSip(nullptr,
|
||||
auto program = createProgramForSip(*device.getExecutionEnvironment(),
|
||||
nullptr,
|
||||
sipBinary,
|
||||
sipBinary.size(),
|
||||
&retVal);
|
||||
|
||||
@@ -199,7 +199,7 @@ std::unique_ptr<Program> BuiltinsLib::createProgramFromCode(const BuiltinCode &b
|
||||
ret.reset(Program::create(data, &context, device, true, &err));
|
||||
break;
|
||||
case BuiltinCode::ECodeType::Binary:
|
||||
ret.reset(Program::createFromGenBinary(&context, data, dataLen, true, nullptr));
|
||||
ret.reset(Program::createFromGenBinary(*device.getExecutionEnvironment(), &context, data, dataLen, true, nullptr));
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "runtime/execution_environment/execution_environment.h"
|
||||
#include "runtime/helpers/built_ins_helper.h"
|
||||
#include "runtime/program/program.h"
|
||||
|
||||
@@ -27,13 +28,15 @@ namespace OCLRT {
|
||||
const SipKernel &initSipKernel(SipKernelType type, Device &device) {
|
||||
return BuiltIns::getInstance().getSipKernel(type, device);
|
||||
}
|
||||
Program *createProgramForSip(Context *context,
|
||||
Program *createProgramForSip(ExecutionEnvironment &executionEnvironment,
|
||||
Context *context,
|
||||
std::vector<char> &binary,
|
||||
size_t size,
|
||||
cl_int *errcodeRet) {
|
||||
|
||||
cl_int retVal = 0;
|
||||
auto program = Program::createFromGenBinary(nullptr,
|
||||
auto program = Program::createFromGenBinary(executionEnvironment,
|
||||
nullptr,
|
||||
binary.data(),
|
||||
size,
|
||||
true,
|
||||
|
||||
@@ -21,12 +21,14 @@
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "runtime/execution_environment/execution_environment.h"
|
||||
#include "runtime/built_ins/built_ins.h"
|
||||
|
||||
namespace OCLRT {
|
||||
|
||||
const SipKernel &initSipKernel(SipKernelType type, Device &device);
|
||||
Program *createProgramForSip(Context *context,
|
||||
Program *createProgramForSip(ExecutionEnvironment &executionEnvironment,
|
||||
Context *context,
|
||||
std::vector<char> &binary,
|
||||
size_t size,
|
||||
cl_int *errcodeRet);
|
||||
|
||||
@@ -28,5 +28,5 @@ template Program *Program::create<Program>(cl_context, cl_uint, const cl_device_
|
||||
template Program *Program::create<Program>(cl_context, cl_uint, const char **, const size_t *, cl_int &);
|
||||
template Program *Program::create<Program>(const char *, Context *, Device &, bool, cl_int *);
|
||||
template Program *Program::createFromIL<Program>(Context *, const void *, size_t length, cl_int &);
|
||||
template Program *Program::createFromGenBinary<Program>(Context *context, const void *binary, size_t size, bool isBuiltIn, cl_int *errcodeRet);
|
||||
template Program *Program::createFromGenBinary<Program>(ExecutionEnvironment &executionEnvironment, Context *context, const void *binary, size_t size, bool isBuiltIn, cl_int *errcodeRet);
|
||||
} // namespace OCLRT
|
||||
|
||||
@@ -122,6 +122,7 @@ T *Program::create(
|
||||
|
||||
template <typename T>
|
||||
T *Program::createFromGenBinary(
|
||||
ExecutionEnvironment &executionEnvironment,
|
||||
Context *context,
|
||||
const void *binary,
|
||||
size_t size,
|
||||
|
||||
@@ -82,6 +82,7 @@ class Program : public BaseObject<_cl_program> {
|
||||
|
||||
template <typename T = Program>
|
||||
static T *createFromGenBinary(
|
||||
ExecutionEnvironment &executionEnvironment,
|
||||
Context *context,
|
||||
const void *binary,
|
||||
size_t size,
|
||||
|
||||
@@ -1719,7 +1719,7 @@ TEST_F(BuiltInTests, getSipKernelReturnsProgramCreatedOutOfIsaAcquiredFromCompil
|
||||
mockCompilerInterface.overrideGlobalCompilerInterface();
|
||||
mockCompilerInterface.sipKernelBinaryOverride = mockCompilerInterface.getDummyGenBinary();
|
||||
cl_int errCode = CL_BUILD_PROGRAM_FAILURE;
|
||||
auto p = Program::createFromGenBinary(pContext, mockCompilerInterface.sipKernelBinaryOverride.data(), mockCompilerInterface.sipKernelBinaryOverride.size(),
|
||||
auto p = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, mockCompilerInterface.sipKernelBinaryOverride.data(), mockCompilerInterface.sipKernelBinaryOverride.size(),
|
||||
false, &errCode);
|
||||
ASSERT_EQ(CL_SUCCESS, errCode);
|
||||
errCode = p->processGenBinary();
|
||||
|
||||
@@ -844,7 +844,7 @@ TEST_F(GTPinTests, givenInitializedGTPinInterfaceWhenKernelWithoutSSHIsUsedThenK
|
||||
// Prepare a kernel without SSH
|
||||
char binary[1024] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
|
||||
size_t binSize = 10;
|
||||
Program *pProgram = Program::createFromGenBinary(pContext, &binary[0], binSize, false, &retVal);
|
||||
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, &binary[0], binSize, false, &retVal);
|
||||
ASSERT_NE(nullptr, pProgram);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
@@ -932,7 +932,7 @@ TEST_F(GTPinTests, givenInitializedGTPinInterfaceWhenKernelWithExecEnvIsUsedThen
|
||||
// Prepare a kernel with fake Execution Environment
|
||||
char binary[1024] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
|
||||
size_t binSize = 10;
|
||||
Program *pProgram = Program::createFromGenBinary(pContext, &binary[0], binSize, false, &retVal);
|
||||
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, &binary[0], binSize, false, &retVal);
|
||||
ASSERT_NE(nullptr, pProgram);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
@@ -1938,7 +1938,7 @@ TEST_F(GTPinTests, givenInitializedGTPinInterfaceWhenLowMemoryConditionOccursThe
|
||||
// Prepare a program with one kernel having Stateless Private Surface
|
||||
char binary[1024] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
|
||||
size_t binSize = 10;
|
||||
Program *pProgram = Program::createFromGenBinary(pContext, &binary[0], binSize, false, &retVal);
|
||||
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, &binary[0], binSize, false, &retVal);
|
||||
ASSERT_NE(nullptr, pProgram);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
@@ -2299,7 +2299,7 @@ TEST_F(ProgramTests, givenGenBinaryWithGtpinInfoWhenProcessGenBinaryCalledThenGt
|
||||
char genBin[1024] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
|
||||
size_t binSize = 10;
|
||||
|
||||
std::unique_ptr<Program> pProgram(Program::createFromGenBinary(nullptr, &genBin[0], binSize, false, &retVal));
|
||||
std::unique_ptr<Program> pProgram(Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), nullptr, &genBin[0], binSize, false, &retVal));
|
||||
EXPECT_NE(nullptr, pProgram.get());
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
EXPECT_EQ((uint32_t)CL_PROGRAM_BINARY_TYPE_EXECUTABLE, (uint32_t)pProgram->getProgramBinaryType());
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "runtime/execution_environment/execution_environment.h"
|
||||
#include "runtime/helpers/built_ins_helper.h"
|
||||
#include "unit_tests/mocks/mock_compilers.h"
|
||||
#include "unit_tests/mocks/mock_program.h"
|
||||
@@ -31,7 +32,8 @@ const SipKernel &initSipKernel(SipKernelType type, Device &device) {
|
||||
mockCompilerInterface->sipKernelBinaryOverride = mockCompilerInterface->getDummyGenBinary();
|
||||
return BuiltIns::getInstance().getSipKernel(type, device);
|
||||
}
|
||||
Program *createProgramForSip(Context *context,
|
||||
Program *createProgramForSip(ExecutionEnvironment &executionEnvironment,
|
||||
Context *context,
|
||||
std::vector<char> &binary,
|
||||
size_t size,
|
||||
cl_int *errcodeRet) {
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
namespace OCLRT {
|
||||
GlobalMockSipProgram *GlobalMockSipProgram::sipProgram;
|
||||
ExecutionEnvironment GlobalMockSipProgram::executionEnvironment;
|
||||
std::string MockProgram::getCachedFileName() const {
|
||||
auto hwInfo = this->context->getDevice(0)->getHardwareInfo();
|
||||
auto input = ArrayRef<const char>(this->sourceCode.c_str(), this->sourceCode.size());
|
||||
@@ -52,7 +53,8 @@ void GlobalMockSipProgram::resetAllocationState() {
|
||||
void GlobalMockSipProgram::initSipProgram() {
|
||||
cl_int retVal = 0;
|
||||
std::vector<char> binary = MockCompilerInterface::getDummyGenBinary();
|
||||
sipProgram = Program::createFromGenBinary<GlobalMockSipProgram>(nullptr,
|
||||
sipProgram = Program::createFromGenBinary<GlobalMockSipProgram>(executionEnvironment,
|
||||
nullptr,
|
||||
binary.data(),
|
||||
binary.size(),
|
||||
true,
|
||||
@@ -126,7 +128,7 @@ Program *GlobalMockSipProgram::getSipProgramWithCustomBinary() {
|
||||
pKHdr->CheckSum = static_cast<uint32_t>(hashValue & 0xFFFFFFFF);
|
||||
|
||||
auto errCode = CL_SUCCESS;
|
||||
auto program = Program::createFromGenBinary(nullptr, binary, totalSize, false, &errCode);
|
||||
auto program = Program::createFromGenBinary(executionEnvironment, nullptr, binary, totalSize, false, &errCode);
|
||||
UNRECOVERABLE_IF(errCode != CL_SUCCESS);
|
||||
errCode = program->processGenBinary();
|
||||
UNRECOVERABLE_IF(errCode != CL_SUCCESS);
|
||||
|
||||
@@ -161,6 +161,7 @@ class GlobalMockSipProgram : public Program {
|
||||
|
||||
protected:
|
||||
void *sipAllocationStorage;
|
||||
static ExecutionEnvironment executionEnvironment;
|
||||
};
|
||||
|
||||
} // namespace OCLRT
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
*/
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "runtime/execution_environment/execution_environment.h"
|
||||
#include "runtime/program/create.inl"
|
||||
#include "runtime/program/program.h"
|
||||
|
||||
@@ -50,10 +51,12 @@ struct MockProgramRecordUnhandledTokens : OCLRT::Program {
|
||||
|
||||
inline cl_int GetDecodeErrorCode(const std::vector<char> &binary, bool allowUnhandledTokens,
|
||||
int defaultUnhandledTokenId, int &foundUnhandledTokenId) {
|
||||
OCLRT::ExecutionEnvironment executionEnvironment;
|
||||
using PT = MockProgramRecordUnhandledTokens;
|
||||
std::unique_ptr<PT> prog;
|
||||
cl_int errorCode = CL_INVALID_BINARY;
|
||||
prog.reset(OCLRT::Program::createFromGenBinary<PT>(nullptr,
|
||||
prog.reset(OCLRT::Program::createFromGenBinary<PT>(executionEnvironment,
|
||||
nullptr,
|
||||
binary.data(),
|
||||
binary.size(),
|
||||
false, &errorCode));
|
||||
|
||||
@@ -1582,7 +1582,8 @@ TEST(ProgramFromBinaryTests, givenBinaryWithInvalidICBEThenErrorIsReturned) {
|
||||
|
||||
{
|
||||
// whatever method we choose CL_INVALID_BINARY is always returned
|
||||
std::unique_ptr<Program> pProgram(Program::createFromGenBinary(nullptr, &binHeader, binSize, false, &retVal));
|
||||
ExecutionEnvironment executionEnvironment;
|
||||
std::unique_ptr<Program> pProgram(Program::createFromGenBinary(executionEnvironment, nullptr, &binHeader, binSize, false, &retVal));
|
||||
ASSERT_NE(nullptr, pProgram.get());
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
@@ -1622,7 +1623,8 @@ TEST(ProgramFromBinaryTests, CreateWithBinary_FailRecompile) {
|
||||
binHeader.PatchListSize = 0;
|
||||
size_t binSize = sizeof(SProgramBinaryHeader);
|
||||
|
||||
std::unique_ptr<FailProgram> pProgram(FailProgram::createFromGenBinary<FailProgram>(nullptr, &binHeader, binSize, false, &retVal));
|
||||
ExecutionEnvironment executionEnvironment;
|
||||
std::unique_ptr<FailProgram> pProgram(FailProgram::createFromGenBinary<FailProgram>(executionEnvironment, nullptr, &binHeader, binSize, false, &retVal));
|
||||
ASSERT_NE(nullptr, pProgram.get());
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
@@ -1657,7 +1659,8 @@ TEST(ProgramFromBinaryTests, givenEmptyProgramThenErrorIsReturned) {
|
||||
binHeader.PatchListSize = 0;
|
||||
size_t binSize = sizeof(SProgramBinaryHeader);
|
||||
|
||||
std::unique_ptr<TestedProgram> pProgram(TestedProgram::createFromGenBinary<TestedProgram>(nullptr, &binHeader, binSize, false, &retVal));
|
||||
ExecutionEnvironment executionEnvironment;
|
||||
std::unique_ptr<TestedProgram> pProgram(TestedProgram::createFromGenBinary<TestedProgram>(executionEnvironment, nullptr, &binHeader, binSize, false, &retVal));
|
||||
ASSERT_NE(nullptr, pProgram.get());
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
@@ -1927,7 +1930,7 @@ TEST_F(ProgramTests, ProgramCreateT3Success) {
|
||||
|
||||
TEST_F(ProgramTests, ProgramFromGenBinaryWithNullBinary) {
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
Program *pProgram = Program::createFromGenBinary(pContext, nullptr, 0, false, &retVal);
|
||||
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, nullptr, 0, false, &retVal);
|
||||
EXPECT_EQ(nullptr, pProgram);
|
||||
EXPECT_NE(CL_SUCCESS, retVal);
|
||||
}
|
||||
@@ -1937,7 +1940,7 @@ TEST_F(ProgramTests, ProgramFromGenBinary) {
|
||||
char binary[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
|
||||
size_t size = 10;
|
||||
|
||||
Program *pProgram = Program::createFromGenBinary(pContext, binary, size, false, &retVal);
|
||||
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, binary, size, false, &retVal);
|
||||
EXPECT_NE(nullptr, pProgram);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
@@ -1958,7 +1961,7 @@ TEST_F(ProgramTests, ProgramFromGenBinaryWithBuiltInFlagSet) {
|
||||
char binary[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
|
||||
size_t size = 10;
|
||||
|
||||
Program *pProgram = Program::createFromGenBinary(pContext, binary, size, true, &retVal);
|
||||
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, binary, size, true, &retVal);
|
||||
EXPECT_NE(nullptr, pProgram);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
@@ -1971,7 +1974,7 @@ TEST_F(ProgramTests, ProgramFromGenBinaryWithoutRetVal) {
|
||||
char binary[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
|
||||
size_t size = 10;
|
||||
|
||||
Program *pProgram = Program::createFromGenBinary(pContext, binary, size, false, nullptr);
|
||||
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, binary, size, false, nullptr);
|
||||
EXPECT_NE(nullptr, pProgram);
|
||||
EXPECT_EQ((uint32_t)CL_PROGRAM_BINARY_TYPE_EXECUTABLE, (uint32_t)pProgram->getProgramBinaryType());
|
||||
|
||||
@@ -1989,7 +1992,7 @@ TEST_F(ProgramTests, ProgramFromGenBinaryWithNullcontext) {
|
||||
char binary[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
|
||||
size_t size = 10;
|
||||
|
||||
Program *pProgram = Program::createFromGenBinary(nullptr, binary, size, false, &retVal);
|
||||
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), nullptr, binary, size, false, &retVal);
|
||||
EXPECT_NE(nullptr, pProgram);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
EXPECT_EQ((uint32_t)CL_PROGRAM_BINARY_TYPE_EXECUTABLE, (uint32_t)pProgram->getProgramBinaryType());
|
||||
@@ -2008,7 +2011,7 @@ TEST_F(ProgramTests, ProgramFromGenBinaryWithPATCH_TOKEN_GLOBAL_MEMORY_OBJECT_KE
|
||||
char genBin[1024] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
|
||||
size_t binSize = 10;
|
||||
|
||||
Program *pProgram = Program::createFromGenBinary(nullptr, &genBin[0], binSize, false, &retVal);
|
||||
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), nullptr, &genBin[0], binSize, false, &retVal);
|
||||
EXPECT_NE(nullptr, pProgram);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
EXPECT_EQ((uint32_t)CL_PROGRAM_BINARY_TYPE_EXECUTABLE, (uint32_t)pProgram->getProgramBinaryType());
|
||||
@@ -2073,7 +2076,7 @@ TEST_F(ProgramTests, ProgramFromGenBinaryWithPATCH_TOKEN_GTPIN_FREE_GRF_INFO) {
|
||||
char genBin[1024] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
|
||||
size_t binSize = 10;
|
||||
|
||||
Program *pProgram = Program::createFromGenBinary(nullptr, &genBin[0], binSize, false, &retVal);
|
||||
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), nullptr, &genBin[0], binSize, false, &retVal);
|
||||
EXPECT_NE(nullptr, pProgram);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
EXPECT_EQ((uint32_t)CL_PROGRAM_BINARY_TYPE_EXECUTABLE, (uint32_t)pProgram->getProgramBinaryType());
|
||||
|
||||
Reference in New Issue
Block a user