Skip to content

Commit 41015d0

Browse files
Implemented compile time/size tracking and profiling utility
1 parent 8609010 commit 41015d0

File tree

4 files changed

+487
-104
lines changed

4 files changed

+487
-104
lines changed

python/src/ir.cc

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1763,6 +1763,44 @@ void init_triton_ir(py::module &&m) {
17631763
self.printAsTextualPipeline(os);
17641764
return str;
17651765
})
1766+
.def("enable_timing",
1767+
[](PassManager &self, py::function cb) {
1768+
struct CallBackStrategy : OutputStrategy {
1769+
py::function cb;
1770+
1771+
CallBackStrategy(py::function cb)
1772+
: OutputStrategy(llvm::errs()), cb(cb) {}
1773+
1774+
void printHeader(const TimeRecord &total) override {}
1775+
1776+
void printFooter() override {}
1777+
1778+
void printTime(const TimeRecord &time,
1779+
const TimeRecord &total) override {}
1780+
1781+
void printListEntry(StringRef name, const TimeRecord &time,
1782+
const TimeRecord &total,
1783+
bool lastEntry = false) override {
1784+
cb(std::string(name), time.wall, 0);
1785+
}
1786+
1787+
void printTreeEntry(unsigned indent, StringRef name,
1788+
const TimeRecord &time,
1789+
const TimeRecord &total) override {
1790+
cb(std::string(name), time.wall, 1);
1791+
}
1792+
1793+
void printTreeEntryEnd(unsigned indent,
1794+
bool lastEntry = false) override {
1795+
cb(std::string(""), 0., 2);
1796+
}
1797+
};
1798+
1799+
auto tm = std::make_unique<mlir::DefaultTimingManager>();
1800+
tm->setOutput(std::make_unique<CallBackStrategy>(cb));
1801+
tm->setEnabled(true);
1802+
self.enableTiming(std::move(tm));
1803+
})
17661804
.def(
17671805
"run",
17681806
[](PassManager &self, ModuleOp &mod) {

third_party/intel/backend/compiler.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import os
1414
import subprocess
1515
from pathlib import Path
16+
from .track import track
1617

1718

1819
@dataclass
@@ -207,6 +208,7 @@ def get_split_barrier_scope(opt):
207208
return split_barriers_scope
208209

209210
@staticmethod
211+
@track
210212
def make_ttir(mod, metadata, opt):
211213
pm = ir.pass_manager(mod.context)
212214
pm.enable_debug()
@@ -226,6 +228,7 @@ def make_ttir(mod, metadata, opt):
226228
return mod
227229

228230
@staticmethod
231+
@track
229232
def make_ttgir(mod, metadata, opt, properties):
230233
cluster_info = intel.ClusterInfo()
231234
if opt.cluster_dims is not None:
@@ -303,6 +306,7 @@ def gluon_to_ttgir(self, src, metadata, options):
303306
return mod
304307

305308
@staticmethod
309+
@track
306310
def make_llir(src, metadata, options):
307311
mod = src
308312
# TritonGPU -> LLVM-IR (MLIR)
@@ -340,7 +344,9 @@ def make_llir(src, metadata, options):
340344
paths = [path for (name, path) in options.extern_libs]
341345
llvm.link_extern_libs(llvm_mod, paths)
342346

343-
intel.optimize_module(llvm_mod, llvm.OPTIMIZE_O3)
347+
with track("optimize_module") as tr:
348+
intel.optimize_module(llvm_mod, llvm.OPTIMIZE_O3, tr.callback("passes"))
349+
344350
intel.post_process_llir(llvm_mod)
345351

346352
# Get some metadata
@@ -357,6 +363,7 @@ def make_llir(src, metadata, options):
357363
return ret
358364

359365
@staticmethod
366+
@track
360367
def make_spv(src, metadata, options, device_arch):
361368
spirv, name = intel.translate_to_spirv(src)
362369
metadata["name"] = name
@@ -384,7 +391,7 @@ def make_spv(src, metadata, options, device_arch):
384391
metadata["generate_native_code"] = options.generate_native_code
385392

386393
if options.generate_native_code:
387-
with tempfile.TemporaryDirectory() as temp_dir:
394+
with track("generate_native_code"), tempfile.TemporaryDirectory() as temp_dir:
388395
with tempfile.NamedTemporaryFile(mode='wb', suffix='.spv', dir=temp_dir, delete=False) as fsrc:
389396
fsrc.write(spirv)
390397
fbin = fsrc.name + '.o'

0 commit comments

Comments
 (0)