Skip to content

Commit acbd0ac

Browse files
committed
xe: jit: gemm: reuse xe2 strategies on xe3
1 parent 0cdbbe9 commit acbd0ac

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

src/gpu/intel/jit/gemm/selector/kernel_selector.cpp

+11-3
Original file line numberDiff line numberDiff line change
@@ -207,19 +207,27 @@ const kcatalog::Entry *select(const kcatalog::Catalog &catalog, int npatterns, c
207207
}
208208
}
209209

210-
/* Temporarily reuse XeHPC strategies for Xe2 until more Xe2 strategies are
210+
/* Temporarily reuse XeHPC/Xe2 strategies for Xe2/Xe3 until more strategies are
211211
in the catalog*/
212212
if (!bestEntry
213213
&& (patterns[0].selector.hw == kcatalog::HWTagXe2
214214
|| patterns[0].selector.hw == kcatalog::HWTagXe3
215215
)) {
216216
std::vector<MatchParams> override_patterns;
217-
override_patterns.reserve(npatterns);
217+
bool is_xe3 = patterns[0].selector.hw == kcatalog::HWTagXe3;
218+
auto override_npatterns = is_xe3 ? 2 * npatterns : npatterns;
219+
override_patterns.reserve(override_npatterns);
218220
for (int i = 0; i < npatterns; i++) {
219221
override_patterns.emplace_back(patterns[i]);
220222
override_patterns.back().selector.hw = kcatalog::HWTagXeHPC;
221223
}
222-
return select(catalog, npatterns, override_patterns.data(), eparams, aux);
224+
if (is_xe3) {
225+
for (int i = 0; i < npatterns; i++) {
226+
override_patterns.emplace_back(patterns[i]);
227+
override_patterns.back().selector.hw = kcatalog::HWTagXe2;
228+
}
229+
}
230+
return select(catalog, override_npatterns, override_patterns.data(), eparams, aux);
223231
}
224232

225233
// Late tag checking. If late tags do not match, we abandon the kernel and

0 commit comments

Comments
 (0)