Skip to content

Commit 038d73f

Browse files
committedOct 11, 2024
xe: conv: improve persistent cache creation time
1 parent 769f7a4 commit 038d73f

File tree

4 files changed

+33
-3
lines changed

4 files changed

+33
-3
lines changed
 

‎src/gpu/intel/jit/conv/gen_convolution.cpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,11 @@ class gen_convolution_t {
179179
conv_config_t cfg;
180180
layout_t zp_dst;
181181
if (data.zp_pd) zp_dst = layout_t(data.zp_pd->impl()->dst_md(), false);
182+
183+
if (primitive->cache_blob()) {
184+
tiler->set_cur_index(primitive->version() - 1);
185+
}
186+
182187
for (int try_iter = 0; try_iter < max_tries; try_iter++) {
183188
try {
184189
cfg = data.pd_cfg;
@@ -187,8 +192,6 @@ class gen_convolution_t {
187192
cfg.set_tiler(tiler);
188193
CHECK(init_cfg(cfg, primitive));
189194

190-
if (primitive->cache_blob() && try_iter != primitive->version())
191-
continue;
192195
if (!tiler->is_grf_limit_ok(cfg)) continue;
193196

194197
ir_info() << "Configuration:" << std::endl;
@@ -256,7 +259,7 @@ class gen_convolution_t {
256259
if (!tmp_kernels[i]) return status::runtime_error;
257260
}
258261
ok = true;
259-
primitive->set_version(try_iter);
262+
primitive->set_version(tiler->cur_index());
260263
kernels_ = std::move(tmp_kernels);
261264
break;
262265
} catch (ngen::out_of_registers_exception &err) {

‎src/gpu/intel/jit/conv/tiler.cpp

+20
Original file line numberDiff line numberDiff line change
@@ -1266,6 +1266,8 @@ class conv_tuner_t {
12661266
params_gen_.move_next();
12671267
}
12681268

1269+
int cur_index() const { return params_gen_.cur_index(); }
1270+
12691271
void print_all() const { params_gen_.print_all(); }
12701272

12711273
static const primitive_info_t &get_primitive_info(
@@ -1452,6 +1454,16 @@ class conv_tiler_impl_t {
14521454
return params_gen_.can_move_next();
14531455
}
14541456

1457+
int cur_index() const {
1458+
if (is_tuning_mode()) return tuner_->cur_index();
1459+
return params_gen_.cur_index();
1460+
}
1461+
1462+
void set_cur_index(int idx) {
1463+
ir_assert(!is_tuning_mode());
1464+
return params_gen_.set_cur_index(idx);
1465+
}
1466+
14551467
void set_params(conv_config_t &cfg) {
14561468
init_regs(cfg);
14571469
if (is_tuning_mode()) {
@@ -1599,6 +1611,14 @@ bool conv_tiler_t::can_move_next() const {
15991611
return impl_->can_move_next();
16001612
}
16011613

1614+
int conv_tiler_t::cur_index() const {
1615+
return impl_->cur_index();
1616+
}
1617+
1618+
void conv_tiler_t::set_cur_index(int idx) {
1619+
impl_->set_cur_index(idx);
1620+
}
1621+
16021622
void conv_tiler_t::set_params(conv_config_t &cfg) {
16031623
impl_->set_params(cfg);
16041624
}

‎src/gpu/intel/jit/conv/tiler.hpp

+2
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ class conv_tiler_t {
4242
int configs() const;
4343
bool is_tuning_mode() const;
4444
bool can_move_next() const;
45+
int cur_index() const;
46+
void set_cur_index(int idx);
4547
void set_params(conv_config_t &cfg);
4648
void notify_out_of_registers(const conv_config_t &cfg);
4749
bool is_grf_limit_ok(const conv_config_t &cfg) const;

‎src/gpu/intel/jit/ir/blocking.hpp

+5
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,11 @@ class params_generator_t {
565565

566566
int cur_index() const { return cur_idx_; }
567567

568+
void set_cur_index(int idx) {
569+
ir_assert(idx < configs());
570+
cur_idx_ = idx;
571+
}
572+
568573
const blocking_params_t &cur_params() const { return at(cur_idx_); }
569574

570575
const blocking_params_t &at(int idx) const {

0 commit comments

Comments
 (0)