Skip to content

Commit dd23f10

Browse files
authored
[SYCL][PI][UR] Correctly convert program build info from ur to pi (#10828)
This was flagged oneapi-src/unified-runtime#804. The pi2ur layer should convert unified runtime info query values to valid PI ones.
1 parent 3921244 commit dd23f10

File tree

1 file changed

+51
-1
lines changed

1 file changed

+51
-1
lines changed

sycl/plugins/unified_runtime/pi2ur.hpp

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,54 @@ inline pi_result ur2piUSMAllocInfoValue(ur_usm_alloc_info_t ParamName,
695695
return PI_SUCCESS;
696696
}
697697

698+
// Translate UR program build info values to PI info values
699+
inline pi_result ur2piProgramBuildInfoValue(ur_program_build_info_t ParamName,
700+
size_t ParamValueSizePI,
701+
size_t *ParamValueSizeUR,
702+
void *ParamValue) {
703+
ConvertHelper Value(ParamValueSizePI, ParamValue, ParamValueSizeUR);
704+
705+
if (ParamName == UR_PROGRAM_BUILD_INFO_BINARY_TYPE) {
706+
auto ConvertFunc = [](ur_program_binary_type_t UrValue) {
707+
switch (UrValue) {
708+
case UR_PROGRAM_BINARY_TYPE_NONE:
709+
return PI_PROGRAM_BINARY_TYPE_NONE;
710+
case UR_PROGRAM_BINARY_TYPE_COMPILED_OBJECT:
711+
return PI_PROGRAM_BINARY_TYPE_COMPILED_OBJECT;
712+
case UR_PROGRAM_BINARY_TYPE_LIBRARY:
713+
return PI_PROGRAM_BINARY_TYPE_LIBRARY;
714+
case UR_PROGRAM_BINARY_TYPE_EXECUTABLE:
715+
return PI_PROGRAM_BINARY_TYPE_EXECUTABLE;
716+
default:
717+
die("ur_program_binary_type_t: unhandled value");
718+
}
719+
};
720+
return Value.convert<ur_program_binary_type_t, pi_program_binary_type>(
721+
ConvertFunc);
722+
}
723+
724+
if (ParamName == UR_PROGRAM_BUILD_INFO_STATUS) {
725+
auto ConvertFunc = [](ur_program_build_status_t UrValue) {
726+
switch (UrValue) {
727+
case UR_PROGRAM_BUILD_STATUS_NONE:
728+
return PI_PROGRAM_BUILD_STATUS_NONE;
729+
case UR_PROGRAM_BUILD_STATUS_ERROR:
730+
return PI_PROGRAM_BUILD_STATUS_ERROR;
731+
case UR_PROGRAM_BUILD_STATUS_SUCCESS:
732+
return PI_PROGRAM_BUILD_STATUS_SUCCESS;
733+
case UR_PROGRAM_BUILD_STATUS_IN_PROGRESS:
734+
return PI_PROGRAM_BUILD_STATUS_IN_PROGRESS;
735+
default:
736+
die("ur_program_build_status_t: unhandled value");
737+
}
738+
};
739+
return Value.convert<ur_program_build_status_t, pi_program_build_status>(
740+
ConvertFunc);
741+
}
742+
743+
return PI_SUCCESS;
744+
}
745+
698746
inline ur_result_t
699747
mapPIMetadataToUR(const pi_device_binary_property *pi_metadata,
700748
ur_program_metadata_t *ur_metadata) {
@@ -2481,10 +2529,12 @@ inline pi_result piProgramGetBuildInfo(pi_program Program, pi_device Device,
24812529
die("piProgramGetBuildInfo: not implemented");
24822530
}
24832531
}
2532+
2533+
size_t SizeInOut = ParamValueSize;
24842534
HANDLE_ERRORS(urProgramGetBuildInfo(UrProgram, UrDevice, PropName,
24852535
ParamValueSize, ParamValue,
24862536
ParamValueSizeRet));
2487-
2537+
ur2piProgramBuildInfoValue(PropName, ParamValueSize, &SizeInOut, ParamValue);
24882538
return PI_SUCCESS;
24892539
}
24902540

0 commit comments

Comments
 (0)