Skip to content

Commit 5b37dc1

Browse files
Add ExecutionEnvironment parameter to Program::createFromGenBinary
Change-Id: I825c29d8c885d986d54d716ea72f19e70b3b11c6 Signed-off-by: Maciej Dziuban <[email protected]>
1 parent 01dae21 commit 5b37dc1

File tree

14 files changed

+46
-26
lines changed

14 files changed

+46
-26
lines changed

runtime/built_ins/built_ins.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ SchedulerKernel &BuiltIns::getSchedulerKernel(Context &context) {
8686

8787
auto src = getInstance().builtinsLib->getBuiltinCode(EBuiltInOps::Scheduler, BuiltinCode::ECodeType::Any, *context.getDevice(0));
8888

89-
auto program = Program::createFromGenBinary(&context,
89+
auto program = Program::createFromGenBinary(*context.getDevice(0)->getExecutionEnvironment(),
90+
&context,
9091
src.resource.data(),
9192
src.resource.size(),
9293
true,
@@ -131,7 +132,8 @@ const SipKernel &BuiltIns::getSipKernel(SipKernelType type, Device &device) {
131132

132133
UNRECOVERABLE_IF(ret != CL_SUCCESS);
133134
UNRECOVERABLE_IF(sipBinary.size() == 0);
134-
auto program = createProgramForSip(nullptr,
135+
auto program = createProgramForSip(*device.getExecutionEnvironment(),
136+
nullptr,
135137
sipBinary,
136138
sipBinary.size(),
137139
&retVal);

runtime/built_ins/built_ins_storage.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ std::unique_ptr<Program> BuiltinsLib::createProgramFromCode(const BuiltinCode &b
199199
ret.reset(Program::create(data, &context, device, true, &err));
200200
break;
201201
case BuiltinCode::ECodeType::Binary:
202-
ret.reset(Program::createFromGenBinary(&context, data, dataLen, true, nullptr));
202+
ret.reset(Program::createFromGenBinary(*device.getExecutionEnvironment(), &context, data, dataLen, true, nullptr));
203203
break;
204204
}
205205
return ret;

runtime/helpers/built_ins_helper.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,23 @@
2020
* OTHER DEALINGS IN THE SOFTWARE.
2121
*/
2222

23+
#include "runtime/execution_environment/execution_environment.h"
2324
#include "runtime/helpers/built_ins_helper.h"
2425
#include "runtime/program/program.h"
2526

2627
namespace OCLRT {
2728
const SipKernel &initSipKernel(SipKernelType type, Device &device) {
2829
return BuiltIns::getInstance().getSipKernel(type, device);
2930
}
30-
Program *createProgramForSip(Context *context,
31+
Program *createProgramForSip(ExecutionEnvironment &executionEnvironment,
32+
Context *context,
3133
std::vector<char> &binary,
3234
size_t size,
3335
cl_int *errcodeRet) {
3436

3537
cl_int retVal = 0;
36-
auto program = Program::createFromGenBinary(nullptr,
38+
auto program = Program::createFromGenBinary(executionEnvironment,
39+
nullptr,
3740
binary.data(),
3841
size,
3942
true,

runtime/helpers/built_ins_helper.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@
2121
*/
2222

2323
#pragma once
24+
#include "runtime/execution_environment/execution_environment.h"
2425
#include "runtime/built_ins/built_ins.h"
2526

2627
namespace OCLRT {
2728

2829
const SipKernel &initSipKernel(SipKernelType type, Device &device);
29-
Program *createProgramForSip(Context *context,
30+
Program *createProgramForSip(ExecutionEnvironment &executionEnvironment,
31+
Context *context,
3032
std::vector<char> &binary,
3133
size_t size,
3234
cl_int *errcodeRet);

runtime/program/create.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,5 @@ template Program *Program::create<Program>(cl_context, cl_uint, const cl_device_
2828
template Program *Program::create<Program>(cl_context, cl_uint, const char **, const size_t *, cl_int &);
2929
template Program *Program::create<Program>(const char *, Context *, Device &, bool, cl_int *);
3030
template Program *Program::createFromIL<Program>(Context *, const void *, size_t length, cl_int &);
31-
template Program *Program::createFromGenBinary<Program>(Context *context, const void *binary, size_t size, bool isBuiltIn, cl_int *errcodeRet);
31+
template Program *Program::createFromGenBinary<Program>(ExecutionEnvironment &executionEnvironment, Context *context, const void *binary, size_t size, bool isBuiltIn, cl_int *errcodeRet);
3232
} // namespace OCLRT

runtime/program/create.inl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ T *Program::create(
122122

123123
template <typename T>
124124
T *Program::createFromGenBinary(
125+
ExecutionEnvironment &executionEnvironment,
125126
Context *context,
126127
const void *binary,
127128
size_t size,

runtime/program/program.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ class Program : public BaseObject<_cl_program> {
8282

8383
template <typename T = Program>
8484
static T *createFromGenBinary(
85+
ExecutionEnvironment &executionEnvironment,
8586
Context *context,
8687
const void *binary,
8788
size_t size,

unit_tests/built_ins/built_in_tests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1719,7 +1719,7 @@ TEST_F(BuiltInTests, getSipKernelReturnsProgramCreatedOutOfIsaAcquiredFromCompil
17191719
mockCompilerInterface.overrideGlobalCompilerInterface();
17201720
mockCompilerInterface.sipKernelBinaryOverride = mockCompilerInterface.getDummyGenBinary();
17211721
cl_int errCode = CL_BUILD_PROGRAM_FAILURE;
1722-
auto p = Program::createFromGenBinary(pContext, mockCompilerInterface.sipKernelBinaryOverride.data(), mockCompilerInterface.sipKernelBinaryOverride.size(),
1722+
auto p = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, mockCompilerInterface.sipKernelBinaryOverride.data(), mockCompilerInterface.sipKernelBinaryOverride.size(),
17231723
false, &errCode);
17241724
ASSERT_EQ(CL_SUCCESS, errCode);
17251725
errCode = p->processGenBinary();

unit_tests/gtpin/gtpin_tests.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -844,7 +844,7 @@ TEST_F(GTPinTests, givenInitializedGTPinInterfaceWhenKernelWithoutSSHIsUsedThenK
844844
// Prepare a kernel without SSH
845845
char binary[1024] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
846846
size_t binSize = 10;
847-
Program *pProgram = Program::createFromGenBinary(pContext, &binary[0], binSize, false, &retVal);
847+
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, &binary[0], binSize, false, &retVal);
848848
ASSERT_NE(nullptr, pProgram);
849849
EXPECT_EQ(CL_SUCCESS, retVal);
850850

@@ -932,7 +932,7 @@ TEST_F(GTPinTests, givenInitializedGTPinInterfaceWhenKernelWithExecEnvIsUsedThen
932932
// Prepare a kernel with fake Execution Environment
933933
char binary[1024] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
934934
size_t binSize = 10;
935-
Program *pProgram = Program::createFromGenBinary(pContext, &binary[0], binSize, false, &retVal);
935+
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, &binary[0], binSize, false, &retVal);
936936
ASSERT_NE(nullptr, pProgram);
937937
EXPECT_EQ(CL_SUCCESS, retVal);
938938

@@ -1938,7 +1938,7 @@ TEST_F(GTPinTests, givenInitializedGTPinInterfaceWhenLowMemoryConditionOccursThe
19381938
// Prepare a program with one kernel having Stateless Private Surface
19391939
char binary[1024] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
19401940
size_t binSize = 10;
1941-
Program *pProgram = Program::createFromGenBinary(pContext, &binary[0], binSize, false, &retVal);
1941+
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, &binary[0], binSize, false, &retVal);
19421942
ASSERT_NE(nullptr, pProgram);
19431943
EXPECT_EQ(CL_SUCCESS, retVal);
19441944

@@ -2299,7 +2299,7 @@ TEST_F(ProgramTests, givenGenBinaryWithGtpinInfoWhenProcessGenBinaryCalledThenGt
22992299
char genBin[1024] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
23002300
size_t binSize = 10;
23012301

2302-
std::unique_ptr<Program> pProgram(Program::createFromGenBinary(nullptr, &genBin[0], binSize, false, &retVal));
2302+
std::unique_ptr<Program> pProgram(Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), nullptr, &genBin[0], binSize, false, &retVal));
23032303
EXPECT_NE(nullptr, pProgram.get());
23042304
EXPECT_EQ(CL_SUCCESS, retVal);
23052305
EXPECT_EQ((uint32_t)CL_PROGRAM_BINARY_TYPE_EXECUTABLE, (uint32_t)pProgram->getProgramBinaryType());

unit_tests/helpers/built_ins_helper.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
* OTHER DEALINGS IN THE SOFTWARE.
2121
*/
2222

23+
#include "runtime/execution_environment/execution_environment.h"
2324
#include "runtime/helpers/built_ins_helper.h"
2425
#include "unit_tests/mocks/mock_compilers.h"
2526
#include "unit_tests/mocks/mock_program.h"
@@ -31,7 +32,8 @@ const SipKernel &initSipKernel(SipKernelType type, Device &device) {
3132
mockCompilerInterface->sipKernelBinaryOverride = mockCompilerInterface->getDummyGenBinary();
3233
return BuiltIns::getInstance().getSipKernel(type, device);
3334
}
34-
Program *createProgramForSip(Context *context,
35+
Program *createProgramForSip(ExecutionEnvironment &executionEnvironment,
36+
Context *context,
3537
std::vector<char> &binary,
3638
size_t size,
3739
cl_int *errcodeRet) {

unit_tests/mocks/mock_program.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
namespace OCLRT {
3030
GlobalMockSipProgram *GlobalMockSipProgram::sipProgram;
31+
ExecutionEnvironment GlobalMockSipProgram::executionEnvironment;
3132
std::string MockProgram::getCachedFileName() const {
3233
auto hwInfo = this->context->getDevice(0)->getHardwareInfo();
3334
auto input = ArrayRef<const char>(this->sourceCode.c_str(), this->sourceCode.size());
@@ -52,7 +53,8 @@ void GlobalMockSipProgram::resetAllocationState() {
5253
void GlobalMockSipProgram::initSipProgram() {
5354
cl_int retVal = 0;
5455
std::vector<char> binary = MockCompilerInterface::getDummyGenBinary();
55-
sipProgram = Program::createFromGenBinary<GlobalMockSipProgram>(nullptr,
56+
sipProgram = Program::createFromGenBinary<GlobalMockSipProgram>(executionEnvironment,
57+
nullptr,
5658
binary.data(),
5759
binary.size(),
5860
true,
@@ -126,7 +128,7 @@ Program *GlobalMockSipProgram::getSipProgramWithCustomBinary() {
126128
pKHdr->CheckSum = static_cast<uint32_t>(hashValue & 0xFFFFFFFF);
127129

128130
auto errCode = CL_SUCCESS;
129-
auto program = Program::createFromGenBinary(nullptr, binary, totalSize, false, &errCode);
131+
auto program = Program::createFromGenBinary(executionEnvironment, nullptr, binary, totalSize, false, &errCode);
130132
UNRECOVERABLE_IF(errCode != CL_SUCCESS);
131133
errCode = program->processGenBinary();
132134
UNRECOVERABLE_IF(errCode != CL_SUCCESS);

unit_tests/mocks/mock_program.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ class GlobalMockSipProgram : public Program {
161161

162162
protected:
163163
void *sipAllocationStorage;
164+
static ExecutionEnvironment executionEnvironment;
164165
};
165166

166167
} // namespace OCLRT

unit_tests/program/evaluate_unhandled_token_tests.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
*/
2222

2323
#include "gtest/gtest.h"
24+
#include "runtime/execution_environment/execution_environment.h"
2425
#include "runtime/program/create.inl"
2526
#include "runtime/program/program.h"
2627

@@ -50,10 +51,12 @@ struct MockProgramRecordUnhandledTokens : OCLRT::Program {
5051

5152
inline cl_int GetDecodeErrorCode(const std::vector<char> &binary, bool allowUnhandledTokens,
5253
int defaultUnhandledTokenId, int &foundUnhandledTokenId) {
54+
OCLRT::ExecutionEnvironment executionEnvironment;
5355
using PT = MockProgramRecordUnhandledTokens;
5456
std::unique_ptr<PT> prog;
5557
cl_int errorCode = CL_INVALID_BINARY;
56-
prog.reset(OCLRT::Program::createFromGenBinary<PT>(nullptr,
58+
prog.reset(OCLRT::Program::createFromGenBinary<PT>(executionEnvironment,
59+
nullptr,
5760
binary.data(),
5861
binary.size(),
5962
false, &errorCode));

unit_tests/program/program_tests.cpp

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1582,7 +1582,8 @@ TEST(ProgramFromBinaryTests, givenBinaryWithInvalidICBEThenErrorIsReturned) {
15821582

15831583
{
15841584
// whatever method we choose CL_INVALID_BINARY is always returned
1585-
std::unique_ptr<Program> pProgram(Program::createFromGenBinary(nullptr, &binHeader, binSize, false, &retVal));
1585+
ExecutionEnvironment executionEnvironment;
1586+
std::unique_ptr<Program> pProgram(Program::createFromGenBinary(executionEnvironment, nullptr, &binHeader, binSize, false, &retVal));
15861587
ASSERT_NE(nullptr, pProgram.get());
15871588
EXPECT_EQ(CL_SUCCESS, retVal);
15881589

@@ -1622,7 +1623,8 @@ TEST(ProgramFromBinaryTests, CreateWithBinary_FailRecompile) {
16221623
binHeader.PatchListSize = 0;
16231624
size_t binSize = sizeof(SProgramBinaryHeader);
16241625

1625-
std::unique_ptr<FailProgram> pProgram(FailProgram::createFromGenBinary<FailProgram>(nullptr, &binHeader, binSize, false, &retVal));
1626+
ExecutionEnvironment executionEnvironment;
1627+
std::unique_ptr<FailProgram> pProgram(FailProgram::createFromGenBinary<FailProgram>(executionEnvironment, nullptr, &binHeader, binSize, false, &retVal));
16261628
ASSERT_NE(nullptr, pProgram.get());
16271629
EXPECT_EQ(CL_SUCCESS, retVal);
16281630

@@ -1657,7 +1659,8 @@ TEST(ProgramFromBinaryTests, givenEmptyProgramThenErrorIsReturned) {
16571659
binHeader.PatchListSize = 0;
16581660
size_t binSize = sizeof(SProgramBinaryHeader);
16591661

1660-
std::unique_ptr<TestedProgram> pProgram(TestedProgram::createFromGenBinary<TestedProgram>(nullptr, &binHeader, binSize, false, &retVal));
1662+
ExecutionEnvironment executionEnvironment;
1663+
std::unique_ptr<TestedProgram> pProgram(TestedProgram::createFromGenBinary<TestedProgram>(executionEnvironment, nullptr, &binHeader, binSize, false, &retVal));
16611664
ASSERT_NE(nullptr, pProgram.get());
16621665
EXPECT_EQ(CL_SUCCESS, retVal);
16631666

@@ -1927,7 +1930,7 @@ TEST_F(ProgramTests, ProgramCreateT3Success) {
19271930

19281931
TEST_F(ProgramTests, ProgramFromGenBinaryWithNullBinary) {
19291932
cl_int retVal = CL_SUCCESS;
1930-
Program *pProgram = Program::createFromGenBinary(pContext, nullptr, 0, false, &retVal);
1933+
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, nullptr, 0, false, &retVal);
19311934
EXPECT_EQ(nullptr, pProgram);
19321935
EXPECT_NE(CL_SUCCESS, retVal);
19331936
}
@@ -1937,7 +1940,7 @@ TEST_F(ProgramTests, ProgramFromGenBinary) {
19371940
char binary[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
19381941
size_t size = 10;
19391942

1940-
Program *pProgram = Program::createFromGenBinary(pContext, binary, size, false, &retVal);
1943+
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, binary, size, false, &retVal);
19411944
EXPECT_NE(nullptr, pProgram);
19421945
EXPECT_EQ(CL_SUCCESS, retVal);
19431946

@@ -1958,7 +1961,7 @@ TEST_F(ProgramTests, ProgramFromGenBinaryWithBuiltInFlagSet) {
19581961
char binary[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
19591962
size_t size = 10;
19601963

1961-
Program *pProgram = Program::createFromGenBinary(pContext, binary, size, true, &retVal);
1964+
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, binary, size, true, &retVal);
19621965
EXPECT_NE(nullptr, pProgram);
19631966
EXPECT_EQ(CL_SUCCESS, retVal);
19641967

@@ -1971,7 +1974,7 @@ TEST_F(ProgramTests, ProgramFromGenBinaryWithoutRetVal) {
19711974
char binary[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
19721975
size_t size = 10;
19731976

1974-
Program *pProgram = Program::createFromGenBinary(pContext, binary, size, false, nullptr);
1977+
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), pContext, binary, size, false, nullptr);
19751978
EXPECT_NE(nullptr, pProgram);
19761979
EXPECT_EQ((uint32_t)CL_PROGRAM_BINARY_TYPE_EXECUTABLE, (uint32_t)pProgram->getProgramBinaryType());
19771980

@@ -1989,7 +1992,7 @@ TEST_F(ProgramTests, ProgramFromGenBinaryWithNullcontext) {
19891992
char binary[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
19901993
size_t size = 10;
19911994

1992-
Program *pProgram = Program::createFromGenBinary(nullptr, binary, size, false, &retVal);
1995+
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), nullptr, binary, size, false, &retVal);
19931996
EXPECT_NE(nullptr, pProgram);
19941997
EXPECT_EQ(CL_SUCCESS, retVal);
19951998
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
20082011
char genBin[1024] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
20092012
size_t binSize = 10;
20102013

2011-
Program *pProgram = Program::createFromGenBinary(nullptr, &genBin[0], binSize, false, &retVal);
2014+
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), nullptr, &genBin[0], binSize, false, &retVal);
20122015
EXPECT_NE(nullptr, pProgram);
20132016
EXPECT_EQ(CL_SUCCESS, retVal);
20142017
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) {
20732076
char genBin[1024] = {1, 2, 3, 4, 5, 6, 7, 8, 9, '\0'};
20742077
size_t binSize = 10;
20752078

2076-
Program *pProgram = Program::createFromGenBinary(nullptr, &genBin[0], binSize, false, &retVal);
2079+
Program *pProgram = Program::createFromGenBinary(*pDevice->getExecutionEnvironment(), nullptr, &genBin[0], binSize, false, &retVal);
20772080
EXPECT_NE(nullptr, pProgram);
20782081
EXPECT_EQ(CL_SUCCESS, retVal);
20792082
EXPECT_EQ((uint32_t)CL_PROGRAM_BINARY_TYPE_EXECUTABLE, (uint32_t)pProgram->getProgramBinaryType());

0 commit comments

Comments
 (0)