@@ -55,7 +55,7 @@ TEST_P(urKernelCreateTest, InvalidKernelName) {
55
55
56
56
using urMultiDeviceKernelCreateTest = uur::urMultiDeviceQueueTest;
57
57
58
- TEST_F (urMultiDeviceKernelCreateTest, Success ) {
58
+ TEST_F (urMultiDeviceKernelCreateTest, WithProgramBuild ) {
59
59
constexpr size_t global_offset = 0 ;
60
60
constexpr size_t n_dimensions = 1 ;
61
61
constexpr size_t global_size = 100 ;
@@ -89,3 +89,44 @@ TEST_F(urMultiDeviceKernelCreateTest, Success) {
89
89
ASSERT_SUCCESS (urQueueFinish (queues[i]));
90
90
}
91
91
}
92
+
93
+ TEST_F (urMultiDeviceKernelCreateTest, WithProgramCompileAndLink) {
94
+ constexpr size_t global_offset = 0 ;
95
+ constexpr size_t n_dimensions = 1 ;
96
+ constexpr size_t global_size = 100 ;
97
+ constexpr size_t local_size = 100 ;
98
+
99
+ auto kernelName =
100
+ uur::KernelsEnvironment::instance->GetEntryPointNames (" foo" )[0 ];
101
+
102
+ std::shared_ptr<std::vector<char >> il_binary;
103
+ uur::KernelsEnvironment::instance->LoadSource (" foo" , il_binary);
104
+
105
+ auto &devices = uur::KernelsEnvironment::instance->devices ;
106
+ for (size_t i = 0 ; i < devices.size (); i++) {
107
+ uur::raii::Program program;
108
+ uur::raii::Kernel kernel;
109
+
110
+ const ur_program_properties_t properties = {
111
+ UR_STRUCTURE_TYPE_PROGRAM_PROPERTIES, nullptr , 0 , nullptr };
112
+ ASSERT_SUCCESS (uur::KernelsEnvironment::instance->CreateProgram (
113
+ platform, context, devices[i], *il_binary, &properties,
114
+ program.ptr ()));
115
+
116
+ ASSERT_SUCCESS (urProgramCompile (context, program.get (), nullptr ));
117
+
118
+ uur::raii::Program linked_program;
119
+ ASSERT_EQ_RESULT (UR_RESULT_SUCCESS,
120
+ urProgramLink (context, 1 , program.ptr (), nullptr ,
121
+ linked_program.ptr ()));
122
+
123
+ ASSERT_SUCCESS (urKernelCreate (linked_program.get (), kernelName.data (),
124
+ kernel.ptr ()));
125
+
126
+ ASSERT_SUCCESS (urEnqueueKernelLaunch (
127
+ queues[i], kernel.get (), n_dimensions, &global_offset, &local_size,
128
+ &global_size, 0 , nullptr , nullptr ));
129
+
130
+ ASSERT_SUCCESS (urQueueFinish (queues[i]));
131
+ }
132
+ }
0 commit comments