Skip to content

Commit de5e4ee

Browse files
[SYCL][NFC] Simplify working with mock images in unit tests (#14816)
Most of our unit-tests only care about getting a device image with certain kernels and certain properties regardless of how other fields are set. This patch introduced a new constructor to UrImage to simplify unit-tests code. Also it cleaned up some includes and used existing helpers where possible to generate device images for tests.
1 parent 66256ef commit de5e4ee

20 files changed

+44
-177
lines changed

sycl/unittests/Extensions/DeviceGlobal.cpp

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -67,18 +67,10 @@ static sycl::unittest::UrImage generateDeviceGlobalImage() {
6767
PropSet.insert(__SYCL_PROPERTY_SET_SYCL_DEVICE_GLOBALS,
6868
std::vector<UrProperty>{std::move(DevGlobInfo)});
6969

70-
std::vector<unsigned char> Bin{10, 11, 12, 13, 14, 15}; // Random data
71-
7270
std::vector<UrOffloadEntry> Entries =
7371
makeEmptyKernels({DeviceGlobalTestKernelName});
7472

75-
UrImage Img{SYCL_DEVICE_BINARY_TYPE_SPIRV, // Format
76-
__SYCL_DEVICE_BINARY_TARGET_SPIRV64, // DeviceTargetSpec
77-
"", // Compile options
78-
"", // Link options
79-
std::move(Bin),
80-
std::move(Entries),
81-
std::move(PropSet)};
73+
UrImage Img(std::move(Entries), std::move(PropSet));
8274

8375
return Img;
8476
}
@@ -98,18 +90,10 @@ static sycl::unittest::UrImage generateDeviceGlobalImgScopeImage() {
9890
PropSet.insert(__SYCL_PROPERTY_SET_SYCL_DEVICE_GLOBALS,
9991
std::vector<UrProperty>{std::move(DevGlobInfo)});
10092

101-
std::vector<unsigned char> Bin{10, 11, 12, 13, 14, 15}; // Random data
102-
10393
std::vector<UrOffloadEntry> Entries =
10494
makeEmptyKernels({DeviceGlobalImgScopeTestKernelName});
10595

106-
UrImage Img{SYCL_DEVICE_BINARY_TYPE_SPIRV, // Format
107-
__SYCL_DEVICE_BINARY_TARGET_SPIRV64, // DeviceTargetSpec
108-
"", // Compile options
109-
"", // Link options
110-
std::move(Bin),
111-
std::move(Entries),
112-
std::move(PropSet)};
96+
UrImage Img(std::move(Entries), std::move(PropSet));
11397

11498
return Img;
11599
}

sycl/unittests/Extensions/USMMemcpy2D.cpp

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -125,30 +125,10 @@ struct KernelInfo<class __usmmemcpy2d<unsigned char>>
125125
} // namespace _V1
126126
} // namespace sycl
127127

128-
static sycl::unittest::UrImage generateMemopsImage() {
129-
using namespace sycl::unittest;
130-
131-
UrPropertySet PropSet;
132-
133-
std::vector<unsigned char> Bin{10, 11, 12, 13, 14, 15}; // Random data
134-
135-
std::vector<UrOffloadEntry> Entries = makeEmptyKernels(
136-
{USMFillHelperKernelNameLong, USMFillHelperKernelNameChar,
137-
USMMemcpyHelperKernelNameLong, USMMemcpyHelperKernelNameChar});
138-
139-
UrImage Img{SYCL_DEVICE_BINARY_TYPE_SPIRV, // Format
140-
__SYCL_DEVICE_BINARY_TARGET_SPIRV64, // DeviceTargetSpec
141-
"", // Compile options
142-
"", // Link options
143-
std::move(Bin),
144-
std::move(Entries),
145-
std::move(PropSet)};
146-
147-
return Img;
148-
}
149-
150128
namespace {
151-
sycl::unittest::UrImage Imgs[] = {generateMemopsImage()};
129+
sycl::unittest::UrImage Imgs[] = {sycl::unittest::generateDefaultImage(
130+
{USMFillHelperKernelNameLong, USMFillHelperKernelNameChar,
131+
USMMemcpyHelperKernelNameLong, USMMemcpyHelperKernelNameChar})};
152132
sycl::unittest::UrImageArray<1> ImgArray{Imgs};
153133

154134
ur_context_info_t LastMemopsQuery = UR_CONTEXT_INFO_NUM_DEVICES;

sycl/unittests/SYCL2020/DeviceGetInfoAspects.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
#include <sycl/sycl.hpp>
1010

11-
#include <helpers/UrImage.hpp>
1211
#include <helpers/UrMock.hpp>
1312

1413
#include <gtest/gtest.h>

sycl/unittests/SYCL2020/IsCompatible.cpp

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,15 @@ MOCK_INTEGRATION_HEADER(TestKernelACC)
2424

2525
static sycl::unittest::UrImage
2626
generateDefaultImage(std::initializer_list<std::string> KernelNames,
27-
const std::vector<sycl::aspect> &Aspects, const std::vector<int> &ReqdWGSize = {}) {
27+
const std::vector<sycl::aspect> &Aspects,
28+
const std::vector<int> &ReqdWGSize = {}) {
2829
using namespace sycl::unittest;
2930

3031
UrPropertySet PropSet;
3132
addDeviceRequirementsProps(PropSet, Aspects, ReqdWGSize);
32-
33-
std::vector<unsigned char> Bin{0, 1, 2, 3, 4, 5}; // Random data
34-
3533
std::vector<UrOffloadEntry> Entries = makeEmptyKernels(KernelNames);
3634

37-
UrImage Img{SYCL_DEVICE_BINARY_TYPE_SPIRV, // Format
38-
__SYCL_DEVICE_BINARY_TARGET_SPIRV64, // DeviceTargetSpec
39-
"", // Compile options
40-
"", // Link options
41-
std::move(Bin),
42-
std::move(Entries),
43-
std::move(PropSet)};
35+
UrImage Img(std::move(Entries), std::move(PropSet));
4436

4537
return Img;
4638
}

sycl/unittests/SYCL2020/KernelID.cpp

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -47,30 +47,10 @@ struct KernelInfo<ServiceKernel1> : public unittest::MockKernelInfoBase {
4747
} // namespace _V1
4848
} // namespace sycl
4949

50-
static sycl::unittest::UrImage
51-
generateDefaultImage(std::initializer_list<std::string> Kernels) {
52-
using namespace sycl::unittest;
53-
54-
UrPropertySet PropSet;
55-
56-
std::vector<unsigned char> Bin{0, 1, 2, 3, 4, 5}; // Random data
57-
58-
std::vector<UrOffloadEntry> Entries = makeEmptyKernels(Kernels);
59-
60-
UrImage Img{SYCL_DEVICE_BINARY_TYPE_SPIRV, // Format
61-
__SYCL_DEVICE_BINARY_TARGET_SPIRV64, // DeviceTargetSpec
62-
"", // Compile options
63-
"", // Link options
64-
std::move(Bin),
65-
std::move(Entries),
66-
std::move(PropSet)};
67-
68-
return Img;
69-
}
70-
7150
static sycl::unittest::UrImage Imgs[2] = {
72-
generateDefaultImage({"KernelID_TestKernel1", "KernelID_TestKernel3"}),
73-
generateDefaultImage(
51+
sycl::unittest::generateDefaultImage(
52+
{"KernelID_TestKernel1", "KernelID_TestKernel3"}),
53+
sycl::unittest::generateDefaultImage(
7454
{"KernelID_TestKernel2",
7555
"_ZTSN2cl4sycl6detail23__sycl_service_kernel__14ServiceKernel1"})};
7656
static sycl::unittest::UrImageArray<2> ImgArray{Imgs};

sycl/unittests/SYCL2020/SpecializationConstant.cpp

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,9 @@ static sycl::unittest::UrImage generateImageWithSpecConsts() {
4747
UrPropertySet PropSet;
4848
addSpecConstants({SC1, SC2}, std::move(SpecConstData), PropSet);
4949

50-
std::vector<unsigned char> Bin{0, 1, 2, 3, 4, 5}; // Random data
51-
5250
std::vector<UrOffloadEntry> Entries =
5351
makeEmptyKernels({"SpecializationConstant_TestKernel"});
54-
UrImage Img{SYCL_DEVICE_BINARY_TYPE_SPIRV, // Format
55-
__SYCL_DEVICE_BINARY_TARGET_SPIRV64, // DeviceTargetSpec
56-
"", // Compile options
57-
"", // Link options
58-
std::move(Bin),
59-
std::move(Entries),
60-
std::move(PropSet)};
52+
UrImage Img(std::move(Entries), std::move(PropSet));
6153

6254
return Img;
6355
}

sycl/unittests/accessor/AccessorPlaceholder.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#include <gtest/gtest.h>
22

3-
#include <helpers/UrImage.hpp>
43
#include <helpers/UrMock.hpp>
54
#include <numeric>
65
#include <sycl/sycl.hpp>

sycl/unittests/assert/assert.cpp

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -84,17 +84,9 @@ static sycl::unittest::UrImage generateDefaultImage() {
8484

8585
setKernelUsesAssert({KernelName}, PropSet);
8686

87-
std::vector<unsigned char> Bin{0, 1, 2, 3, 4, 5}; // Random data
88-
8987
std::vector<UrOffloadEntry> Entries = makeEmptyKernels({KernelName});
9088

91-
UrImage Img{SYCL_DEVICE_BINARY_TYPE_SPIRV, // Format
92-
__SYCL_DEVICE_BINARY_TARGET_SPIRV64, // DeviceTargetSpec
93-
"", // Compile options
94-
"", // Link options
95-
std::move(Bin),
96-
std::move(Entries),
97-
std::move(PropSet)};
89+
UrImage Img(std::move(Entries), std::move(PropSet));
9890

9991
return Img;
10092
}
@@ -107,17 +99,9 @@ static sycl::unittest::UrImage generateCopierKernelImage() {
10799

108100
UrPropertySet PropSet;
109101

110-
std::vector<unsigned char> Bin{10, 11, 12, 13, 14, 15}; // Random data
111-
112102
std::vector<UrOffloadEntry> Entries = makeEmptyKernels({CopierKernelName});
113103

114-
UrImage Img{SYCL_DEVICE_BINARY_TYPE_SPIRV, // Format
115-
__SYCL_DEVICE_BINARY_TARGET_SPIRV64, // DeviceTargetSpec
116-
"", // Compile options
117-
"", // Link options
118-
std::move(Bin),
119-
std::move(Entries),
120-
std::move(PropSet)};
104+
UrImage Img(std::move(Entries), std::move(PropSet));
121105

122106
return Img;
123107
}

sycl/unittests/helpers/UrImage.hpp

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,29 @@ class UrImage {
266266
internal::LifetimeExtender(std::move(OffloadEntries)),
267267
std::move(PropertySet)) {}
268268

269+
/// Constructs a mock SYCL device image with:
270+
/// - the latest version
271+
/// - SPIR-V format
272+
/// - empty compile and link options
273+
/// - placeholder binary data
274+
UrImage(std::vector<UrOffloadEntry> &&OffloadEntries,
275+
UrPropertySet PropertySet)
276+
: UrImage(
277+
SYCL_DEVICE_BINARY_VERSION, SYCL_DEVICE_BINARY_OFFLOAD_KIND_SYCL,
278+
SYCL_DEVICE_BINARY_TYPE_SPIRV, __SYCL_DEVICE_BINARY_TARGET_SPIRV64,
279+
"", "", {}, std::move(std::vector<unsigned char>{1, 2, 3, 4, 5}),
280+
internal::LifetimeExtender(std::move(OffloadEntries)),
281+
std::move(PropertySet)) {}
282+
283+
/// Constructs a mock SYCL device image with:
284+
/// - the latest version
285+
/// - SPIR-V format
286+
/// - empty compile and link options
287+
/// - placeholder binary data
288+
/// - no properties
289+
UrImage(std::vector<UrOffloadEntry> &&OffloadEntries)
290+
: UrImage(std::move(OffloadEntries), {}) {}
291+
269292
sycl_device_binary_struct convertToNativeType() {
270293
return sycl_device_binary_struct{
271294
MVersion,
@@ -575,7 +598,6 @@ generateDefaultImage(std::initializer_list<std::string> KernelNames) {
575598
std::move(Bin),
576599
std::move(Entries),
577600
std::move(PropSet)};
578-
579601
return Img;
580602
}
581603

sycl/unittests/kernel-and-program/Cache.cpp

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,18 +59,10 @@ static sycl::unittest::UrImage generateDefaultImage() {
5959
UrPropertySet PropSet;
6060
addSpecConstants({SC1}, std::move(SpecConstData), PropSet);
6161

62-
std::vector<unsigned char> Bin{0, 1, 2, 3, 4, 5}; // Random data
63-
6462
std::vector<UrOffloadEntry> Entries =
6563
makeEmptyKernels({"CacheTestKernel", "CacheTestKernel2"});
6664

67-
UrImage Img{SYCL_DEVICE_BINARY_TYPE_SPIRV, // Format
68-
__SYCL_DEVICE_BINARY_TARGET_SPIRV64, // DeviceTargetSpec
69-
"", // Compile options
70-
"", // Link options
71-
std::move(Bin),
72-
std::move(Entries),
73-
std::move(PropSet)};
65+
UrImage Img(std::move(Entries), std::move(PropSet));
7466

7567
return Img;
7668
}

sycl/unittests/pipes/host_pipe_registration.cpp

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,9 @@ static sycl::unittest::UrImage generateDefaultImage() {
4141
PropSet.insert(__SYCL_PROPERTY_SET_SYCL_HOST_PIPES,
4242
std::vector<UrProperty>{std::move(HostPipeInfo)});
4343

44-
std::vector<unsigned char> Bin{0, 1, 2, 3, 4, 5}; // Random data
45-
4644
std::vector<UrOffloadEntry> Entries = makeEmptyKernels({"TestKernel"});
4745

48-
UrImage Img{SYCL_DEVICE_BINARY_TYPE_SPIRV, // Format
49-
__SYCL_DEVICE_BINARY_TARGET_SPIRV64, // DeviceTargetSpec
50-
"", // Compile options
51-
"", // Link options
52-
std::move(Bin),
53-
std::move(Entries),
54-
std::move(PropSet)};
46+
UrImage Img(std::move(Entries), std::move(PropSet));
5547

5648
return Img;
5749
}

sycl/unittests/program_manager/BuildLog.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
#include <detail/context_impl.hpp>
1414
#include <detail/program_manager/program_manager.hpp>
1515
#include <helpers/ScopedEnvVar.hpp>
16-
#include <helpers/UrImage.hpp>
1716
#include <helpers/UrMock.hpp>
1817
#include <sycl/sycl.hpp>
1918

sycl/unittests/program_manager/SubDevices.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
#include <detail/kernel_bundle_impl.hpp>
1010

11-
#include <helpers/UrImage.hpp>
1211
#include <helpers/UrMock.hpp>
1312

1413
#include <gtest/gtest.h>

sycl/unittests/program_manager/arg_mask/EliminatedArgMask.cpp

Lines changed: 4 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -63,37 +63,9 @@ static sycl::unittest::UrImage generateEAMTestKernelImage() {
6363
UrPropertySet PropSet;
6464
PropSet.insert(__SYCL_PROPERTY_SET_KERNEL_PARAM_OPT_INFO, std::move(ImgKPOI));
6565

66-
std::vector<unsigned char> Bin{0, 1, 2, 3, 4, 5}; // Random data
67-
6866
std::vector<UrOffloadEntry> Entries = makeEmptyKernels({EAMTestKernelName});
6967

70-
UrImage Img{SYCL_DEVICE_BINARY_TYPE_SPIRV, // Format
71-
__SYCL_DEVICE_BINARY_TARGET_SPIRV64, // DeviceTargetSpec
72-
"", // Compile options
73-
"", // Link options
74-
std::move(Bin),
75-
std::move(Entries),
76-
std::move(PropSet)};
77-
78-
return Img;
79-
}
80-
81-
static sycl::unittest::UrImage generateEAMTestKernel2Image() {
82-
using namespace sycl::unittest;
83-
84-
UrPropertySet PropSet;
85-
86-
std::vector<unsigned char> Bin{6, 7, 8, 9, 10, 11}; // Random data
87-
88-
std::vector<UrOffloadEntry> Entries = makeEmptyKernels({EAMTestKernel2Name});
89-
90-
UrImage Img{SYCL_DEVICE_BINARY_TYPE_SPIRV, // Format
91-
__SYCL_DEVICE_BINARY_TARGET_SPIRV64, // DeviceTargetSpec
92-
"", // Compile options
93-
"", // Link options
94-
std::move(Bin),
95-
std::move(Entries),
96-
std::move(PropSet)};
68+
UrImage Img(std::move(Entries), std::move(PropSet));
9769

9870
return Img;
9971
}
@@ -110,23 +82,16 @@ static sycl::unittest::UrImage generateEAMTestKernel3Image() {
11082
UrPropertySet PropSet;
11183
PropSet.insert(__SYCL_PROPERTY_SET_KERNEL_PARAM_OPT_INFO, std::move(ImgKPOI));
11284

113-
std::vector<unsigned char> Bin{0, 1, 2, 3, 4, 5}; // Random data
114-
11585
std::vector<UrOffloadEntry> Entries = makeEmptyKernels({EAMTestKernel3Name});
11686

117-
UrImage Img{SYCL_DEVICE_BINARY_TYPE_SPIRV, // Format
118-
__SYCL_DEVICE_BINARY_TARGET_SPIRV64, // DeviceTargetSpec
119-
"", // Compile options
120-
"", // Link options
121-
std::move(Bin),
122-
std::move(Entries),
123-
std::move(PropSet)};
87+
UrImage Img(std::move(Entries), std::move(PropSet));
12488

12589
return Img;
12690
}
12791

12892
static sycl::unittest::UrImage EAMImg = generateEAMTestKernelImage();
129-
static sycl::unittest::UrImage EAM2Img = generateEAMTestKernel2Image();
93+
static sycl::unittest::UrImage EAM2Img =
94+
sycl::unittest::generateDefaultImage({EAMTestKernel2Name});
13095
static sycl::unittest::UrImage EAM3Img = generateEAMTestKernel3Image();
13196
static sycl::unittest::UrImageArray<1> EAMImgArray{&EAMImg};
13297
static sycl::unittest::UrImageArray<1> EAM2ImgArray{&EAM2Img};

sycl/unittests/program_manager/itt_annotations.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
#include <detail/config.hpp>
1212
#include <detail/program_manager/program_manager.hpp>
13-
#include <helpers/UrImage.hpp>
1413
#include <helpers/UrMock.hpp>
1514
#include <sycl/sycl.hpp>
1615

sycl/unittests/scheduler/CommandsWaitForEvents.cpp

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -107,18 +107,11 @@ static sycl::unittest::UrImage generateDefaultImage() {
107107

108108
UrPropertySet PropSet;
109109
addESIMDFlag(PropSet);
110-
std::vector<unsigned char> Bin{0, 1, 2, 3, 4, 5}; // Random data
111110

112111
std::vector<UrOffloadEntry> Entries =
113112
makeEmptyKernels({"StreamAUXCmdsWait_TestKernel"});
114113

115-
UrImage Img{SYCL_DEVICE_BINARY_TYPE_SPIRV, // Format
116-
__SYCL_DEVICE_BINARY_TARGET_SPIRV64, // DeviceTargetSpec
117-
"", // Compile options
118-
"", // Link options
119-
std::move(Bin),
120-
std::move(Entries),
121-
std::move(PropSet)};
114+
UrImage Img(std::move(Entries), std::move(PropSet));
122115

123116
return Img;
124117
}

0 commit comments

Comments
 (0)