Skip to content

Commit 97d4fdf

Browse files
author
Sergey Kanaev
committed
Allocate device binary images in-place, not in cache
Signed-off-by: Sergey Kanaev <sergey.kanaev@intel.com>
1 parent c56a270 commit 97d4fdf

File tree

5 files changed

+16
-32
lines changed

5 files changed

+16
-32
lines changed

sycl/unittests/helpers/PiImage.hpp

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -233,46 +233,30 @@ class PiImage {
233233

234234
/// Convenience wrapper around pi_device_binaries_struct, that manages mock
235235
/// device images' lifecycle.
236+
template <size_t __NumberOfImages>
236237
class PiImageArray {
237238
public:
238-
/// Constructs an array of device images from a single image and registers
239-
/// it with SYCL runtime.
240-
PiImageArray(PiImage Image) {
241-
MImages.push_back(std::move(Image));
242-
convertImages();
243-
MAllBinaries = pi_device_binaries_struct{
244-
PI_DEVICE_BINARIES_VERSION,
245-
1, // num binaries
246-
MNativeImages.data(),
247-
nullptr, // not used, for compatibility with OpenMP
248-
nullptr // not used, for compatibility with OpenMP
249-
};
250-
__sycl_register_lib(&MAllBinaries);
251-
}
239+
static constexpr size_t NumberOfImages = __NumberOfImages;
240+
241+
PiImageArray(const PiImage *Imgs) {
242+
for (size_t Idx = 0; Idx < NumberOfImages; ++Idx)
243+
MNativeImages[Idx] = Imgs[Idx].convertToNativeType();
252244

253-
/// Constructs an array of device images and registers it with SYCL runtime.
254-
PiImageArray(std::vector<PiImage> Images) : MImages(std::move(Images)) {
255-
convertImages();
256245
MAllBinaries = pi_device_binaries_struct{
257246
PI_DEVICE_BINARIES_VERSION,
258-
static_cast<uint16_t>(MNativeImages.size()), // num binaries
259-
MNativeImages.data(),
260-
nullptr, // not used, for compatibility with OpenMP
261-
nullptr // not used, for compatibility with OpenMP
247+
NumberOfImages,
248+
MNativeImages,
249+
nullptr, // not used, put here for compatibility with OpenMP
250+
nullptr, // not used, put here for compatibility with OpenMP
262251
};
252+
263253
__sycl_register_lib(&MAllBinaries);
264254
}
265255

266256
~PiImageArray() { __sycl_unregister_lib(&MAllBinaries); }
267257

268258
private:
269-
void convertImages() {
270-
std::transform(
271-
MImages.begin(), MImages.end(), std::back_inserter(MNativeImages),
272-
[](const PiImage &Img) { return Img.convertToNativeType(); });
273-
}
274-
std::vector<PiImage> MImages;
275-
std::vector<pi_device_binary_struct> MNativeImages;
259+
pi_device_binary_struct MNativeImages[NumberOfImages];
276260
pi_device_binaries_struct MAllBinaries;
277261
};
278262

sycl/unittests/misc/KernelBuildOptions.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ static sycl::unittest::PiImage generateDefaultImage() {
208208
}
209209

210210
sycl::unittest::PiImage Img = generateDefaultImage();
211-
sycl::unittest::PiImageArray ImgArray{Img};
211+
sycl::unittest::PiImageArray<1> ImgArray{&Img};
212212

213213
TEST(KernelBuildOptions, KernelBundleBasic) {
214214
sycl::platform Plt{sycl::default_selector()};

sycl/unittests/program_manager/itt_annotations.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ static sycl::unittest::PiImage generateDefaultImage() {
239239
}
240240

241241
sycl::unittest::PiImage Img = generateDefaultImage();
242-
sycl::unittest::PiImageArray ImgArray{Img};
242+
sycl::unittest::PiImageArray<1> ImgArray{&Img};
243243

244244
TEST(ITTNotify, UseKernelBundle) {
245245
set_env(ITTProfileEnvVarName, "1");

sycl/unittests/scheduler/RequiredWGSize.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ static sycl::unittest::PiImage generateDefaultImage() {
226226
}
227227

228228
sycl::unittest::PiImage Img = generateDefaultImage();
229-
sycl::unittest::PiImageArray ImgArray{Img};
229+
sycl::unittest::PiImageArray<1> ImgArray{&Img};
230230

231231
static void performChecks() {
232232
sycl::platform Plt{sycl::default_selector()};

sycl/unittests/spec_constants/DefaultValues.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ static sycl::unittest::PiImage generateDefaultImage() {
203203
}
204204

205205
sycl::unittest::PiImage Img = generateDefaultImage();
206-
sycl::unittest::PiImageArray ImgArray{Img};
206+
sycl::unittest::PiImageArray<1> ImgArray{&Img};
207207

208208
TEST(DefaultValues, DISABLED_DefaultValuesAreSet) {
209209
sycl::platform Plt{sycl::default_selector()};

0 commit comments

Comments
 (0)