Skip to content

Commit 36d4d1d

Browse files
sergey-semenovvladimirlaz
authored andcommitted
[SYCL] Fix program class always getting a built OpenCL program from program manager
Signed-off-by: Semenov, Sergey <[email protected]> Signed-off-by: Vladimir Lazarev <[email protected]>
1 parent 168223e commit 36d4d1d

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

sycl/include/CL/sycl/detail/program_impl.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ class program_impl {
274274
private:
275275
void create_cl_program_with_il() {
276276
assert(!ClProgram && "This program already has an encapsulated cl_program");
277-
ClProgram = ProgramManager::getInstance().getBuiltOpenCLProgram(Context);
277+
ClProgram = ProgramManager::getInstance().createOpenCLProgram(Context);
278278
}
279279

280280
void create_cl_program_with_source(const string_class &Source) {

sycl/include/CL/sycl/detail/program_manager/program_manager.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ namespace detail {
5151
class ProgramManager {
5252
public:
5353
static ProgramManager &getInstance();
54+
cl_program createOpenCLProgram(const context &Context);
5455
cl_program getBuiltOpenCLProgram(const context &Context);
5556
cl_kernel getOrCreateKernel(const context &Context, const char *KernelName);
5657
cl_program getClProgramFromClKernel(cl_kernel ClKernel);

sycl/source/detail/program_manager/program_manager.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,16 +112,21 @@ static cl_program createProgram(const platform &Platform,
112112
return Program;
113113
}
114114

115+
cl_program ProgramManager::createOpenCLProgram(const context &Context) {
116+
vector_class<char> DeviceProg = getSpirvSource();
117+
cl_context ClContext = Context.get();
118+
const platform &Platform = Context.get_platform();
119+
cl_program ClProgram = createProgram(Platform, ClContext, DeviceProg);
120+
clReleaseContext(ClContext);
121+
return ClProgram;
122+
}
123+
115124
cl_program ProgramManager::getBuiltOpenCLProgram(const context &Context) {
116125
cl_program &ClProgram = m_CachedSpirvPrograms[Context];
117126
if (!ClProgram) {
118127
vector_class<char> DeviceProg = getSpirvSource();
119128

120-
cl_context ClContext = Context.get();
121-
const platform &Platform = Context.get_platform();
122-
ClProgram = createProgram(Platform, ClContext, DeviceProg);
123-
clReleaseContext(ClContext);
124-
129+
ClProgram = createOpenCLProgram(Context);
125130
build(ClProgram);
126131
}
127132
return ClProgram;

0 commit comments

Comments
 (0)