Skip to content

Commit 5c110c5

Browse files
committed
Update loaded bin if the same binary is wrapped with different cl_program
1 parent 7f97cd7 commit 5c110c5

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

src/acl_kernel.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3112,6 +3112,13 @@ int acl_submit_kernel_device_op(cl_event event) {
31123112
// We managed to enqueue everything.
31133113
cl_kernel kernel = event->cmd.info.ndrange_kernel.kernel;
31143114

3115+
// If current last bin is loaded on the board and we are going to update
3116+
// last bin pointer without any reprogram, we should update the loaded bin
3117+
// to reflect that as well.
3118+
if (!need_reprogram && device->last_bin == device->loaded_bin &&
3119+
device->last_bin != event->cmd.info.ndrange_kernel.dev_bin) {
3120+
device->loaded_bin = event->cmd.info.ndrange_kernel.dev_bin;
3121+
}
31153122
device->last_bin = event->cmd.info.ndrange_kernel.dev_bin;
31163123
event->last_device_op = last_op;
31173124

test/acl_kernel_test.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4651,9 +4651,8 @@ TEST(acl_kernel_reprogram_scheduler, skip_reprogram_on_start) {
46514651
CHECK_EQUAL(CL_SUCCESS, clSetUserEventStatus(ue, CL_COMPLETE));
46524652
CHECK_EQUAL(CL_SUCCESS, clReleaseEvent(ue));
46534653

4654-
// Since reprogram didn't occur, only last_bin should be updated
46554654
CHECK_EQUAL(&(dp0->device_binary), m_device->last_bin);
4656-
CHECK(m_device->loaded_bin == NULL);
4655+
CHECK_EQUAL(&(dp0->device_binary), m_device->loaded_bin);
46574656

46584657
// set MEM_MIGRATE 1 to RUNNING +
46594658
// set MEM_MIGRATE 1 to COMPLETE +

0 commit comments

Comments
 (0)