Skip to content

Commit b5c3e7c

Browse files
committed
Merge changes from multi device compile extension into core spec.
1 parent 9ca3ec7 commit b5c3e7c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+345
-2057
lines changed

examples/codegen/codegen.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ int main() {
118118
ur_program_handle_t hProgram;
119119
ur_check(urProgramCreateWithIL(hContext, spv.data(), spv.size(), nullptr,
120120
&hProgram));
121-
ur_check(urProgramBuild(hContext, hProgram, nullptr));
121+
ur_check(urProgramBuild(hProgram, 1, &current_device, nullptr));
122122

123123
ur_mem_handle_t dA, dB;
124124
ur_check(urMemBufferCreate(hContext, UR_MEM_FLAG_READ_WRITE,

include/ur_api.h

+23-176
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,6 @@ typedef enum ur_function_t {
193193
UR_FUNCTION_ADAPTER_RETAIN = 179, ///< Enumerator for ::urAdapterRetain
194194
UR_FUNCTION_ADAPTER_GET_LAST_ERROR = 180, ///< Enumerator for ::urAdapterGetLastError
195195
UR_FUNCTION_ADAPTER_GET_INFO = 181, ///< Enumerator for ::urAdapterGetInfo
196-
UR_FUNCTION_PROGRAM_BUILD_EXP = 197, ///< Enumerator for ::urProgramBuildExp
197-
UR_FUNCTION_PROGRAM_COMPILE_EXP = 198, ///< Enumerator for ::urProgramCompileExp
198-
UR_FUNCTION_PROGRAM_LINK_EXP = 199, ///< Enumerator for ::urProgramLinkExp
199196
UR_FUNCTION_LOADER_CONFIG_SET_CODE_LOCATION_CALLBACK = 200, ///< Enumerator for ::urLoaderConfigSetCodeLocationCallback
200197
UR_FUNCTION_LOADER_INIT = 201, ///< Enumerator for ::urLoaderInit
201198
UR_FUNCTION_LOADER_TEAR_DOWN = 202, ///< Enumerator for ::urLoaderTearDown
@@ -4262,17 +4259,21 @@ urProgramCreateWithBinary(
42624259
/// - ::UR_RESULT_ERROR_DEVICE_LOST
42634260
/// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC
42644261
/// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE
4265-
/// + `NULL == hContext`
42664262
/// + `NULL == hProgram`
4263+
/// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER
4264+
/// + `NULL == phDevices`
42674265
/// - ::UR_RESULT_ERROR_INVALID_PROGRAM
42684266
/// + If `hProgram` isn't a valid program object.
42694267
/// - ::UR_RESULT_ERROR_PROGRAM_BUILD_FAILURE
42704268
/// + If an error occurred when building `hProgram`.
4269+
/// - ::UR_RESULT_ERROR_INVALID_SIZE
4270+
/// + `numDevices == 0`
42714271
UR_APIEXPORT ur_result_t UR_APICALL
42724272
urProgramBuild(
4273-
ur_context_handle_t hContext, ///< [in] handle of the context instance.
4274-
ur_program_handle_t hProgram, ///< [in] Handle of the program to build.
4275-
const char *pOptions ///< [in][optional] pointer to build options null-terminated string.
4273+
ur_program_handle_t hProgram, ///< [in] Handle of the program to build.
4274+
uint32_t numDevices, ///< [in] length of `phDevices`
4275+
ur_device_handle_t *phDevices, ///< [in][range(0, numDevices)] pointer to array of device handles
4276+
const char *pOptions ///< [in][optional] pointer to build options null-terminated string.
42764277
);
42774278

42784279
///////////////////////////////////////////////////////////////////////////////
@@ -4294,17 +4295,21 @@ urProgramBuild(
42944295
/// - ::UR_RESULT_ERROR_DEVICE_LOST
42954296
/// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC
42964297
/// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE
4297-
/// + `NULL == hContext`
42984298
/// + `NULL == hProgram`
4299+
/// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER
4300+
/// + `NULL == phDevices`
42994301
/// - ::UR_RESULT_ERROR_INVALID_PROGRAM
43004302
/// + If `hProgram` isn't a valid program object.
43014303
/// - ::UR_RESULT_ERROR_PROGRAM_BUILD_FAILURE
43024304
/// + If an error occurred while compiling `hProgram`.
4305+
/// - ::UR_RESULT_ERROR_INVALID_SIZE
4306+
/// + `numDevices == 0`
43034307
UR_APIEXPORT ur_result_t UR_APICALL
43044308
urProgramCompile(
4305-
ur_context_handle_t hContext, ///< [in] handle of the context instance.
4306-
ur_program_handle_t hProgram, ///< [in][out] handle of the program to compile.
4307-
const char *pOptions ///< [in][optional] pointer to build options null-terminated string.
4309+
ur_program_handle_t hProgram, ///< [in][out] handle of the program to compile.
4310+
uint32_t numDevices, ///< [in] length of `phDevices`
4311+
ur_device_handle_t *phDevices, ///< [in][range(0, numDevices)] pointer to array of device handles
4312+
const char *pOptions ///< [in][optional] pointer to build options null-terminated string.
43084313
);
43094314

43104315
///////////////////////////////////////////////////////////////////////////////
@@ -4334,17 +4339,21 @@ urProgramCompile(
43344339
/// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE
43354340
/// + `NULL == hContext`
43364341
/// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER
4342+
/// + `NULL == phDevices`
43374343
/// + `NULL == phPrograms`
43384344
/// + `NULL == phProgram`
43394345
/// - ::UR_RESULT_ERROR_INVALID_PROGRAM
43404346
/// + If one of the programs in `phPrograms` isn't a valid program object.
43414347
/// - ::UR_RESULT_ERROR_INVALID_SIZE
4348+
/// + `numDevices == 0`
43424349
/// + `count == 0`
43434350
/// - ::UR_RESULT_ERROR_PROGRAM_LINK_FAILURE
43444351
/// + If an error occurred while linking `phPrograms`.
43454352
UR_APIEXPORT ur_result_t UR_APICALL
43464353
urProgramLink(
43474354
ur_context_handle_t hContext, ///< [in] handle of the context instance.
4355+
uint32_t numDevices, ///< [in] number of devices
4356+
ur_device_handle_t *phDevices, ///< [in][range(0, numDevices)] pointer to array of device handles
43484357
uint32_t count, ///< [in] number of program handles in `phPrograms`.
43494358
const ur_program_handle_t *phPrograms, ///< [in][range(0, count)] pointer to array of program handles.
43504359
const char *pOptions, ///< [in][optional] pointer to linker options null-terminated string.
@@ -9266,136 +9275,6 @@ urEnqueueKernelLaunchCustomExp(
92669275
///< kernel execution instance.
92679276
);
92689277

9269-
#if !defined(__GNUC__)
9270-
#pragma endregion
9271-
#endif
9272-
// Intel 'oneAPI' Unified Runtime Experimental APIs for multi-device compile
9273-
#if !defined(__GNUC__)
9274-
#pragma region multi_device_compile_(experimental)
9275-
#endif
9276-
///////////////////////////////////////////////////////////////////////////////
9277-
#ifndef UR_MULTI_DEVICE_COMPILE_EXTENSION_STRING_EXP
9278-
/// @brief The extension string which defines support for test
9279-
/// which is returned when querying device extensions.
9280-
#define UR_MULTI_DEVICE_COMPILE_EXTENSION_STRING_EXP "ur_exp_multi_device_compile"
9281-
#endif // UR_MULTI_DEVICE_COMPILE_EXTENSION_STRING_EXP
9282-
9283-
///////////////////////////////////////////////////////////////////////////////
9284-
/// @brief Produces an executable program from one program, negates need for the
9285-
/// linking step.
9286-
///
9287-
/// @details
9288-
/// - The application may call this function from simultaneous threads.
9289-
/// - Following a successful call to this entry point, the program passed
9290-
/// will contain a binary of the ::UR_PROGRAM_BINARY_TYPE_EXECUTABLE type
9291-
/// for each device in `phDevices`.
9292-
///
9293-
/// @remarks
9294-
/// _Analogues_
9295-
/// - **clBuildProgram**
9296-
///
9297-
/// @returns
9298-
/// - ::UR_RESULT_SUCCESS
9299-
/// - ::UR_RESULT_ERROR_UNINITIALIZED
9300-
/// - ::UR_RESULT_ERROR_DEVICE_LOST
9301-
/// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC
9302-
/// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE
9303-
/// + `NULL == hProgram`
9304-
/// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER
9305-
/// + `NULL == phDevices`
9306-
/// - ::UR_RESULT_ERROR_INVALID_PROGRAM
9307-
/// + If `hProgram` isn't a valid program object.
9308-
/// - ::UR_RESULT_ERROR_PROGRAM_BUILD_FAILURE
9309-
/// + If an error occurred when building `hProgram`.
9310-
UR_APIEXPORT ur_result_t UR_APICALL
9311-
urProgramBuildExp(
9312-
ur_program_handle_t hProgram, ///< [in] Handle of the program to build.
9313-
uint32_t numDevices, ///< [in] number of devices
9314-
ur_device_handle_t *phDevices, ///< [in][range(0, numDevices)] pointer to array of device handles
9315-
const char *pOptions ///< [in][optional] pointer to build options null-terminated string.
9316-
);
9317-
9318-
///////////////////////////////////////////////////////////////////////////////
9319-
/// @brief Produces an executable program from one or more programs.
9320-
///
9321-
/// @details
9322-
/// - The application may call this function from simultaneous threads.
9323-
/// - Following a successful call to this entry point `hProgram` will
9324-
/// contain a binary of the ::UR_PROGRAM_BINARY_TYPE_COMPILED_OBJECT type
9325-
/// for each device in `phDevices`.
9326-
///
9327-
/// @remarks
9328-
/// _Analogues_
9329-
/// - **clCompileProgram**
9330-
///
9331-
/// @returns
9332-
/// - ::UR_RESULT_SUCCESS
9333-
/// - ::UR_RESULT_ERROR_UNINITIALIZED
9334-
/// - ::UR_RESULT_ERROR_DEVICE_LOST
9335-
/// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC
9336-
/// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE
9337-
/// + `NULL == hProgram`
9338-
/// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER
9339-
/// + `NULL == phDevices`
9340-
/// - ::UR_RESULT_ERROR_INVALID_PROGRAM
9341-
/// + If `hProgram` isn't a valid program object.
9342-
/// - ::UR_RESULT_ERROR_PROGRAM_BUILD_FAILURE
9343-
/// + If an error occurred while compiling `hProgram`.
9344-
UR_APIEXPORT ur_result_t UR_APICALL
9345-
urProgramCompileExp(
9346-
ur_program_handle_t hProgram, ///< [in][out] handle of the program to compile.
9347-
uint32_t numDevices, ///< [in] number of devices
9348-
ur_device_handle_t *phDevices, ///< [in][range(0, numDevices)] pointer to array of device handles
9349-
const char *pOptions ///< [in][optional] pointer to build options null-terminated string.
9350-
);
9351-
9352-
///////////////////////////////////////////////////////////////////////////////
9353-
/// @brief Produces an executable program from one or more programs.
9354-
///
9355-
/// @details
9356-
/// - The application may call this function from simultaneous threads.
9357-
/// - Following a successful call to this entry point the program returned
9358-
/// in `phProgram` will contain a binary of the
9359-
/// ::UR_PROGRAM_BINARY_TYPE_EXECUTABLE type for each device in
9360-
/// `phDevices`.
9361-
/// - If a non-success code is returned and `phProgram` is not `nullptr`, it
9362-
/// will contain an unspecified program or `nullptr`. Implementations may
9363-
/// use the build log of this program (accessible via
9364-
/// ::urProgramGetBuildInfo) to provide an error log for the linking
9365-
/// failure.
9366-
///
9367-
/// @remarks
9368-
/// _Analogues_
9369-
/// - **clLinkProgram**
9370-
///
9371-
/// @returns
9372-
/// - ::UR_RESULT_SUCCESS
9373-
/// - ::UR_RESULT_ERROR_UNINITIALIZED
9374-
/// - ::UR_RESULT_ERROR_DEVICE_LOST
9375-
/// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC
9376-
/// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE
9377-
/// + `NULL == hContext`
9378-
/// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER
9379-
/// + `NULL == phDevices`
9380-
/// + `NULL == phPrograms`
9381-
/// + `NULL == phProgram`
9382-
/// - ::UR_RESULT_ERROR_INVALID_PROGRAM
9383-
/// + If one of the programs in `phPrograms` isn't a valid program object.
9384-
/// - ::UR_RESULT_ERROR_INVALID_SIZE
9385-
/// + `count == 0`
9386-
/// - ::UR_RESULT_ERROR_PROGRAM_LINK_FAILURE
9387-
/// + If an error occurred while linking `phPrograms`.
9388-
UR_APIEXPORT ur_result_t UR_APICALL
9389-
urProgramLinkExp(
9390-
ur_context_handle_t hContext, ///< [in] handle of the context instance.
9391-
uint32_t numDevices, ///< [in] number of devices
9392-
ur_device_handle_t *phDevices, ///< [in][range(0, numDevices)] pointer to array of device handles
9393-
uint32_t count, ///< [in] number of program handles in `phPrograms`.
9394-
const ur_program_handle_t *phPrograms, ///< [in][range(0, count)] pointer to array of program handles.
9395-
const char *pOptions, ///< [in][optional] pointer to linker options null-terminated string.
9396-
ur_program_handle_t *phProgram ///< [out] pointer to handle of program object created.
9397-
);
9398-
93999278
#if !defined(__GNUC__)
94009279
#pragma endregion
94019280
#endif
@@ -9993,68 +9872,36 @@ typedef struct ur_program_create_with_binary_params_t {
99939872
/// @details Each entry is a pointer to the parameter passed to the function;
99949873
/// allowing the callback the ability to modify the parameter's value
99959874
typedef struct ur_program_build_params_t {
9996-
ur_context_handle_t *phContext;
9997-
ur_program_handle_t *phProgram;
9998-
const char **ppOptions;
9999-
} ur_program_build_params_t;
10000-
10001-
///////////////////////////////////////////////////////////////////////////////
10002-
/// @brief Function parameters for urProgramBuildExp
10003-
/// @details Each entry is a pointer to the parameter passed to the function;
10004-
/// allowing the callback the ability to modify the parameter's value
10005-
typedef struct ur_program_build_exp_params_t {
100069875
ur_program_handle_t *phProgram;
100079876
uint32_t *pnumDevices;
100089877
ur_device_handle_t **pphDevices;
100099878
const char **ppOptions;
10010-
} ur_program_build_exp_params_t;
9879+
} ur_program_build_params_t;
100119880

100129881
///////////////////////////////////////////////////////////////////////////////
100139882
/// @brief Function parameters for urProgramCompile
100149883
/// @details Each entry is a pointer to the parameter passed to the function;
100159884
/// allowing the callback the ability to modify the parameter's value
100169885
typedef struct ur_program_compile_params_t {
10017-
ur_context_handle_t *phContext;
10018-
ur_program_handle_t *phProgram;
10019-
const char **ppOptions;
10020-
} ur_program_compile_params_t;
10021-
10022-
///////////////////////////////////////////////////////////////////////////////
10023-
/// @brief Function parameters for urProgramCompileExp
10024-
/// @details Each entry is a pointer to the parameter passed to the function;
10025-
/// allowing the callback the ability to modify the parameter's value
10026-
typedef struct ur_program_compile_exp_params_t {
100279886
ur_program_handle_t *phProgram;
100289887
uint32_t *pnumDevices;
100299888
ur_device_handle_t **pphDevices;
100309889
const char **ppOptions;
10031-
} ur_program_compile_exp_params_t;
9890+
} ur_program_compile_params_t;
100329891

100339892
///////////////////////////////////////////////////////////////////////////////
100349893
/// @brief Function parameters for urProgramLink
100359894
/// @details Each entry is a pointer to the parameter passed to the function;
100369895
/// allowing the callback the ability to modify the parameter's value
100379896
typedef struct ur_program_link_params_t {
10038-
ur_context_handle_t *phContext;
10039-
uint32_t *pcount;
10040-
const ur_program_handle_t **pphPrograms;
10041-
const char **ppOptions;
10042-
ur_program_handle_t **pphProgram;
10043-
} ur_program_link_params_t;
10044-
10045-
///////////////////////////////////////////////////////////////////////////////
10046-
/// @brief Function parameters for urProgramLinkExp
10047-
/// @details Each entry is a pointer to the parameter passed to the function;
10048-
/// allowing the callback the ability to modify the parameter's value
10049-
typedef struct ur_program_link_exp_params_t {
100509897
ur_context_handle_t *phContext;
100519898
uint32_t *pnumDevices;
100529899
ur_device_handle_t **pphDevices;
100539900
uint32_t *pcount;
100549901
const ur_program_handle_t **pphPrograms;
100559902
const char **ppOptions;
100569903
ur_program_handle_t **pphProgram;
10057-
} ur_program_link_exp_params_t;
9904+
} ur_program_link_params_t;
100589905

100599906
///////////////////////////////////////////////////////////////////////////////
100609907
/// @brief Function parameters for urProgramRetain

include/ur_api_funcs.def

-3
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@ _UR_API(urProgramGetBuildInfo)
4949
_UR_API(urProgramSetSpecializationConstants)
5050
_UR_API(urProgramGetNativeHandle)
5151
_UR_API(urProgramCreateWithNativeHandle)
52-
_UR_API(urProgramBuildExp)
53-
_UR_API(urProgramCompileExp)
54-
_UR_API(urProgramLinkExp)
5552
_UR_API(urKernelCreate)
5653
_UR_API(urKernelGetInfo)
5754
_UR_API(urKernelGetGroupInfo)

0 commit comments

Comments
 (0)