44// compute unit and maximum work groups per multi-processor attributes, that
55// correspond to CUDA's launch bounds. Expect max_work_group_size,
66// min_work_groups_per_cu and max_work_groups_per_mp that are mapped to
7- // maxntidx, minnctapersm, maxclusterrank PTX directives respectively.
7+ // maxntid[xyz], minctasm, and maxclusterrank NVVM annotations respectively.
88
99#include " sycl.hpp"
1010
@@ -13,24 +13,24 @@ queue q;
1313
1414class Foo {
1515public:
16- [[intel::max_work_group_size(8 , 8 , 8 ), intel::min_work_groups_per_cu(2 ),
16+ [[intel::max_work_group_size(2 , 4 , 8 ), intel::min_work_groups_per_cu(2 ),
1717 intel::max_work_groups_per_mp (4 )]] void
1818 operator()() const {}
1919};
2020
2121template <int N> class Functor {
2222public:
23- [[intel::max_work_group_size(N, 8 , 8 ), intel::min_work_groups_per_cu(N),
23+ [[intel::max_work_group_size(N, 4 , 8 ), intel::min_work_groups_per_cu(N),
2424 intel::max_work_groups_per_mp (N)]] void
2525 operator()() const {}
2626};
2727
2828template <int N>
29- [[intel::max_work_group_size(N, 8 , 8 ), intel::min_work_groups_per_cu(N),
29+ [[intel::max_work_group_size(N, 4 , 8 ), intel::min_work_groups_per_cu(N),
3030 intel::max_work_groups_per_mp (N)]] void
3131zoo() {}
3232
33- [[intel::max_work_group_size(8 , 8 , 8 ), intel::min_work_groups_per_cu(2 ),
33+ [[intel::max_work_group_size(2 , 4 , 8 ), intel::min_work_groups_per_cu(2 ),
3434 intel::max_work_groups_per_mp (4 )]] void
3535bar() {}
3636
@@ -42,7 +42,7 @@ int main() {
4242
4343 // Test attribute is applied on lambda.
4444 h.single_task <class kernel_name2 >(
45- [] [[intel::max_work_group_size (8 , 8 , 8 ),
45+ [] [[intel::max_work_group_size (2 , 4 , 8 ),
4646 intel::min_work_groups_per_cu (2 ),
4747 intel::max_work_groups_per_mp (4 )]] () {});
4848
@@ -65,41 +65,61 @@ int main() {
6565// CHECK: define dso_local void @{{.*}}kernel_name4() #0 {{.*}} !min_work_groups_per_cu ![[MWGPC:[0-9]+]] !max_work_groups_per_mp ![[MWGPM:[0-9]+]] !max_work_group_size ![[MWGS:[0-9]+]]
6666// CHECK: define dso_local void @{{.*}}kernel_name5() #0 {{.*}} !min_work_groups_per_cu ![[MWGPC_MWGPM_2:[0-9]+]] !max_work_groups_per_mp ![[MWGPC_MWGPM_2]] !max_work_group_size ![[MWGS_3:[0-9]+]]
6767
68- // CHECK: {{.*}}@{{.*}}kernel_name1, !"maxntidx", i32 512}
69- // CHECK: {{.*}}@{{.*}}kernel_name1, !"minnctapersm", i32 2}
68+ // CHECK: {{.*}}@{{.*}}kernel_name1, !"maxntidx", i32 8}
69+ // CHECK: {{.*}}@{{.*}}kernel_name1, !"maxntidy", i32 4}
70+ // CHECK: {{.*}}@{{.*}}kernel_name1, !"maxntidz", i32 2}
71+ // CHECK: {{.*}}@{{.*}}kernel_name1, !"minctasm", i32 2}
7072// CHECK: {{.*}}@{{.*}}kernel_name1, !"maxclusterrank", i32 4}
71- // CHECK: {{.*}}@{{.*}}Foo{{.*}}, !"maxntidx", i32 512}
72- // CHECK: {{.*}}@{{.*}}Foo{{.*}}, !"minnctapersm", i32 2}
73+ // CHECK: {{.*}}@{{.*}}Foo{{.*}}, !"maxntidx", i32 8}
74+ // CHECK: {{.*}}@{{.*}}Foo{{.*}}, !"maxntidy", i32 4}
75+ // CHECK: {{.*}}@{{.*}}Foo{{.*}}, !"maxntidz", i32 2}
76+ // CHECK: {{.*}}@{{.*}}Foo{{.*}}, !"minctasm", i32 2}
7377// CHECK: {{.*}}@{{.*}}Foo{{.*}}, !"maxclusterrank", i32 4}
74- // CHECK: {{.*}}@{{.*}}kernel_name2, !"maxntidx", i32 512}
75- // CHECK: {{.*}}@{{.*}}kernel_name2, !"minnctapersm", i32 2}
78+ // CHECK: {{.*}}@{{.*}}kernel_name2, !"maxntidx", i32 8}
79+ // CHECK: {{.*}}@{{.*}}kernel_name2, !"maxntidy", i32 4}
80+ // CHECK: {{.*}}@{{.*}}kernel_name2, !"maxntidz", i32 2}
81+ // CHECK: {{.*}}@{{.*}}kernel_name2, !"minctasm", i32 2}
7682// CHECK: {{.*}}@{{.*}}kernel_name2, !"maxclusterrank", i32 4}
77- // CHECK: {{.*}}@{{.*}}main{{.*}}, !"maxntidx", i32 512}
78- // CHECK: {{.*}}@{{.*}}main{{.*}}, !"minnctapersm", i32 2}
83+ // CHECK: {{.*}}@{{.*}}main{{.*}}, !"maxntidx", i32 8}
84+ // CHECK: {{.*}}@{{.*}}main{{.*}}, !"maxntidy", i32 4}
85+ // CHECK: {{.*}}@{{.*}}main{{.*}}, !"maxntidz", i32 2}
86+ // CHECK: {{.*}}@{{.*}}main{{.*}}, !"minctasm", i32 2}
7987// CHECK: {{.*}}@{{.*}}main{{.*}}, !"maxclusterrank", i32 4}
80- // CHECK: {{.*}}@{{.*}}kernel_name3, !"maxntidx", i32 384}
81- // CHECK: {{.*}}@{{.*}}kernel_name3, !"minnctapersm", i32 6}
88+ // CHECK: {{.*}}@{{.*}}kernel_name3, !"maxntidx", i32 8}
89+ // CHECK: {{.*}}@{{.*}}kernel_name3, !"maxntidy", i32 4}
90+ // CHECK: {{.*}}@{{.*}}kernel_name3, !"maxntidz", i32 6}
91+ // CHECK: {{.*}}@{{.*}}kernel_name3, !"minctasm", i32 6}
8292// CHECK: {{.*}}@{{.*}}kernel_name3, !"maxclusterrank", i32 6}
83- // CHECK: {{.*}}@{{.*}}Functor{{.*}}, !"maxntidx", i32 384}
84- // CHECK: {{.*}}@{{.*}}Functor{{.*}}, !"minnctapersm", i32 6}
93+ // CHECK: {{.*}}@{{.*}}Functor{{.*}}, !"maxntidx", i32 8}
94+ // CHECK: {{.*}}@{{.*}}Functor{{.*}}, !"maxntidy", i32 4}
95+ // CHECK: {{.*}}@{{.*}}Functor{{.*}}, !"maxntidz", i32 6}
96+ // CHECK: {{.*}}@{{.*}}Functor{{.*}}, !"minctasm", i32 6}
8597// CHECK: {{.*}}@{{.*}}Functor{{.*}}, !"maxclusterrank", i32 6}
86- // CHECK: {{.*}}@{{.*}}kernel_name4, !"maxntidx", i32 512}
87- // CHECK: {{.*}}@{{.*}}kernel_name4, !"minnctapersm", i32 2}
98+ // CHECK: {{.*}}@{{.*}}kernel_name4, !"maxntidx", i32 8}
99+ // CHECK: {{.*}}@{{.*}}kernel_name4, !"maxntidy", i32 4}
100+ // CHECK: {{.*}}@{{.*}}kernel_name4, !"maxntidz", i32 2}
101+ // CHECK: {{.*}}@{{.*}}kernel_name4, !"minctasm", i32 2}
88102// CHECK: {{.*}}@{{.*}}kernel_name4, !"maxclusterrank", i32 4}
89- // CHECK: {{.*}}@{{.*}}bar{{.*}}, !"maxntidx", i32 512}
90- // CHECK: {{.*}}@{{.*}}bar{{.*}}, !"minnctapersm", i32 2}
103+ // CHECK: {{.*}}@{{.*}}bar{{.*}}, !"maxntidx", i32 8}
104+ // CHECK: {{.*}}@{{.*}}bar{{.*}}, !"maxntidy", i32 4}
105+ // CHECK: {{.*}}@{{.*}}bar{{.*}}, !"maxntidz", i32 2}
106+ // CHECK: {{.*}}@{{.*}}bar{{.*}}, !"minctasm", i32 2}
91107// CHECK: {{.*}}@{{.*}}bar{{.*}}, !"maxclusterrank", i32 4}
92- // CHECK: {{.*}}@{{.*}}kernel_name5, !"maxntidx", i32 1024}
93- // CHECK: {{.*}}@{{.*}}kernel_name5, !"minnctapersm", i32 16}
108+ // CHECK: {{.*}}@{{.*}}kernel_name5, !"maxntidx", i32 8}
109+ // CHECK: {{.*}}@{{.*}}kernel_name5, !"maxntidy", i32 4}
110+ // CHECK: {{.*}}@{{.*}}kernel_name5, !"maxntidz", i32 16}
111+ // CHECK: {{.*}}@{{.*}}kernel_name5, !"minctasm", i32 16}
94112// CHECK: {{.*}}@{{.*}}kernel_name5, !"maxclusterrank", i32 16}
95- // CHECK: {{.*}}@{{.*}}zoo{{.*}}, !"maxntidx", i32 1024}
96- // CHECK: {{.*}}@{{.*}}zoo{{.*}}, !"minnctapersm", i32 16}
113+ // CHECK: {{.*}}@{{.*}}zoo{{.*}}, !"maxntidx", i32 8}
114+ // CHECK: {{.*}}@{{.*}}zoo{{.*}}, !"maxntidy", i32 4}
115+ // CHECK: {{.*}}@{{.*}}zoo{{.*}}, !"maxntidz", i32 16}
116+ // CHECK: {{.*}}@{{.*}}zoo{{.*}}, !"minctasm", i32 16}
97117// CHECK: {{.*}}@{{.*}}zoo{{.*}}, !"maxclusterrank", i32 16}
98118
99119// CHECK: ![[MWGPC]] = !{i32 2}
100120// CHECK: ![[MWGPM]] = !{i32 4}
101- // CHECK: ![[MWGS]] = !{i32 8, i32 8 , i32 8 }
121+ // CHECK: ![[MWGS]] = !{i32 8, i32 4 , i32 2 }
102122// CHECK: ![[MWGPC_MWGPM]] = !{i32 6}
103- // CHECK: ![[MWGS_2]] = !{i32 8, i32 8 , i32 6}
123+ // CHECK: ![[MWGS_2]] = !{i32 8, i32 4 , i32 6}
104124// CHECK: ![[MWGPC_MWGPM_2]] = !{i32 16}
105- // CHECK: ![[MWGS_3]] = !{i32 8, i32 8 , i32 16}
125+ // CHECK: ![[MWGS_3]] = !{i32 8, i32 4 , i32 16}
0 commit comments