From 6b41229d714a8bde3d39d0a7466efa2040990608 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Mar 2026 15:20:50 +0000 Subject: [PATCH 1/3] Initial plan From c0edc0d3d3208a6b7c996ea15c76392ae1ceb8f2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Mar 2026 15:46:33 +0000 Subject: [PATCH 2/3] Add IntelliKit Metrix profiling report for Example 07 GEMM all-scatter Co-authored-by: JoseSantosAMD <87447437+JoseSantosAMD@users.noreply.github.com> --- .agents/skills/accordo/SKILL.md | 68 ++++++++++++ .agents/skills/linex/SKILL.md | 98 +++++++++++++++++ .agents/skills/metrix/SKILL.md | 76 +++++++++++++ .agents/skills/nexus/SKILL.md | 74 +++++++++++++ .github/agents/skills/accordo/SKILL.md | 68 ++++++++++++ .github/agents/skills/linex/SKILL.md | 98 +++++++++++++++++ .github/agents/skills/metrix/SKILL.md | 76 +++++++++++++ .github/agents/skills/nexus/SKILL.md | 74 +++++++++++++ .intellikit | 1 + .rocprofv3/435992-436061-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/435992-436062-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/436125-436195-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/436125-436196-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/436266-436337-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/436266-436338-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/436403-436481-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/436403-436482-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/436543-436612-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/436543-436613-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/436801-437681-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/436801-437682-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/439023-439093-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/439023-439094-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/439155-439226-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/439155-439227-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/439300-439370-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/439300-439371-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/439437-439506-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/439437-439507-counter_values.dat | Bin 0 -> 4184 bytes .rocprofv3/439592-439661-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/439592-439662-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/439745-439817-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/439745-439818-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/439964-440033-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/439964-440034-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/440120-440205-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/440120-440206-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/440277-440346-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/440277-440347-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/440421-440491-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/440421-440492-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/440591-440662-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/440591-440663-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/440734-440803-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/440734-440804-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/440940-441024-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/440940-441025-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/441095-441164-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/441095-441165-counter_values.dat | Bin 0 -> 4136 bytes .rocprofv3/441278-441361-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/441278-441362-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/441426-441501-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/441426-441502-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/441582-441691-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/441582-441692-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/441796-441865-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/441796-441866-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/441931-442004-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/441931-442005-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/442078-442151-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/442078-442152-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/442221-442292-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/442221-442293-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/442370-442439-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/442370-442440-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/442520-442590-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/442520-442591-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/442743-442812-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/442743-442813-counter_values.dat | Bin 0 -> 2312 bytes .rocprofv3/442881-442950-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/442881-442951-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/443017-443086-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/443017-443087-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/443159-443228-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/443159-443229-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/443300-443369-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/443300-443370-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/443433-443502-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/443433-443503-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/443662-443732-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/443662-443733-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/443805-443874-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/443805-443875-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/443938-444009-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/443938-444010-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/444079-444148-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/444079-444149-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/444221-444290-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/444221-444291-counter_values.dat | Bin 0 -> 72 bytes .rocprofv3/444356-444430-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/444356-444431-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/444534-444614-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/444534-444615-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/444714-444783-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/444714-444784-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/444848-444917-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/444848-444918-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/444981-445052-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/444981-445053-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/445122-445191-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/445122-445192-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/445274-445343-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/445274-445344-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/445420-445489-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/445420-445490-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/445643-445712-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/445643-445713-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/445776-445845-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/445776-445846-counter_values.dat | Bin 0 -> 24 bytes .rocprofv3/445962-446031-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/445962-446032-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/446105-446212-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/446105-446213-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/446321-446391-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/446321-446392-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/446453-446525-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/446453-446526-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/446602-446676-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/446602-446677-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/446747-446820-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/446747-446821-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/446901-446970-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/446901-446971-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/447032-447102-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/447032-447103-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/447260-447329-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/447260-447330-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/447393-447462-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/447393-447463-counter_values.dat | Bin 0 -> 200 bytes .rocprofv3/447524-447593-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/447524-447594-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/447659-447729-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/447659-447730-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/447799-447868-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/447799-447869-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/447930-448000-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/447930-448001-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/448159-448228-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/448159-448229-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/448301-448370-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/448301-448371-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/448432-448501-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/448432-448502-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/448572-448641-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/448572-448642-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/448704-448781-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/448704-448782-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/448846-448920-counter_values.dat | Bin 0 -> 56 bytes .rocprofv3/448846-448921-counter_values.dat | Bin 0 -> 56 bytes docs/profiling/example07_gemm_all_scatter.md | 106 +++++++++++++++++++ 150 files changed, 739 insertions(+) create mode 100644 .agents/skills/accordo/SKILL.md create mode 100644 .agents/skills/linex/SKILL.md create mode 100644 .agents/skills/metrix/SKILL.md create mode 100644 .agents/skills/nexus/SKILL.md create mode 100644 .github/agents/skills/accordo/SKILL.md create mode 100644 .github/agents/skills/linex/SKILL.md create mode 100644 .github/agents/skills/metrix/SKILL.md create mode 100644 .github/agents/skills/nexus/SKILL.md create mode 160000 .intellikit create mode 100644 .rocprofv3/435992-436061-counter_values.dat create mode 100644 .rocprofv3/435992-436062-counter_values.dat create mode 100644 .rocprofv3/436125-436195-counter_values.dat create mode 100644 .rocprofv3/436125-436196-counter_values.dat create mode 100644 .rocprofv3/436266-436337-counter_values.dat create mode 100644 .rocprofv3/436266-436338-counter_values.dat create mode 100644 .rocprofv3/436403-436481-counter_values.dat create mode 100644 .rocprofv3/436403-436482-counter_values.dat create mode 100644 .rocprofv3/436543-436612-counter_values.dat create mode 100644 .rocprofv3/436543-436613-counter_values.dat create mode 100644 .rocprofv3/436801-437681-counter_values.dat create mode 100644 .rocprofv3/436801-437682-counter_values.dat create mode 100644 .rocprofv3/439023-439093-counter_values.dat create mode 100644 .rocprofv3/439023-439094-counter_values.dat create mode 100644 .rocprofv3/439155-439226-counter_values.dat create mode 100644 .rocprofv3/439155-439227-counter_values.dat create mode 100644 .rocprofv3/439300-439370-counter_values.dat create mode 100644 .rocprofv3/439300-439371-counter_values.dat create mode 100644 .rocprofv3/439437-439506-counter_values.dat create mode 100644 .rocprofv3/439437-439507-counter_values.dat create mode 100644 .rocprofv3/439592-439661-counter_values.dat create mode 100644 .rocprofv3/439592-439662-counter_values.dat create mode 100644 .rocprofv3/439745-439817-counter_values.dat create mode 100644 .rocprofv3/439745-439818-counter_values.dat create mode 100644 .rocprofv3/439964-440033-counter_values.dat create mode 100644 .rocprofv3/439964-440034-counter_values.dat create mode 100644 .rocprofv3/440120-440205-counter_values.dat create mode 100644 .rocprofv3/440120-440206-counter_values.dat create mode 100644 .rocprofv3/440277-440346-counter_values.dat create mode 100644 .rocprofv3/440277-440347-counter_values.dat create mode 100644 .rocprofv3/440421-440491-counter_values.dat create mode 100644 .rocprofv3/440421-440492-counter_values.dat create mode 100644 .rocprofv3/440591-440662-counter_values.dat create mode 100644 .rocprofv3/440591-440663-counter_values.dat create mode 100644 .rocprofv3/440734-440803-counter_values.dat create mode 100644 .rocprofv3/440734-440804-counter_values.dat create mode 100644 .rocprofv3/440940-441024-counter_values.dat create mode 100644 .rocprofv3/440940-441025-counter_values.dat create mode 100644 .rocprofv3/441095-441164-counter_values.dat create mode 100644 .rocprofv3/441095-441165-counter_values.dat create mode 100644 .rocprofv3/441278-441361-counter_values.dat create mode 100644 .rocprofv3/441278-441362-counter_values.dat create mode 100644 .rocprofv3/441426-441501-counter_values.dat create mode 100644 .rocprofv3/441426-441502-counter_values.dat create mode 100644 .rocprofv3/441582-441691-counter_values.dat create mode 100644 .rocprofv3/441582-441692-counter_values.dat create mode 100644 .rocprofv3/441796-441865-counter_values.dat create mode 100644 .rocprofv3/441796-441866-counter_values.dat create mode 100644 .rocprofv3/441931-442004-counter_values.dat create mode 100644 .rocprofv3/441931-442005-counter_values.dat create mode 100644 .rocprofv3/442078-442151-counter_values.dat create mode 100644 .rocprofv3/442078-442152-counter_values.dat create mode 100644 .rocprofv3/442221-442292-counter_values.dat create mode 100644 .rocprofv3/442221-442293-counter_values.dat create mode 100644 .rocprofv3/442370-442439-counter_values.dat create mode 100644 .rocprofv3/442370-442440-counter_values.dat create mode 100644 .rocprofv3/442520-442590-counter_values.dat create mode 100644 .rocprofv3/442520-442591-counter_values.dat create mode 100644 .rocprofv3/442743-442812-counter_values.dat create mode 100644 .rocprofv3/442743-442813-counter_values.dat create mode 100644 .rocprofv3/442881-442950-counter_values.dat create mode 100644 .rocprofv3/442881-442951-counter_values.dat create mode 100644 .rocprofv3/443017-443086-counter_values.dat create mode 100644 .rocprofv3/443017-443087-counter_values.dat create mode 100644 .rocprofv3/443159-443228-counter_values.dat create mode 100644 .rocprofv3/443159-443229-counter_values.dat create mode 100644 .rocprofv3/443300-443369-counter_values.dat create mode 100644 .rocprofv3/443300-443370-counter_values.dat create mode 100644 .rocprofv3/443433-443502-counter_values.dat create mode 100644 .rocprofv3/443433-443503-counter_values.dat create mode 100644 .rocprofv3/443662-443732-counter_values.dat create mode 100644 .rocprofv3/443662-443733-counter_values.dat create mode 100644 .rocprofv3/443805-443874-counter_values.dat create mode 100644 .rocprofv3/443805-443875-counter_values.dat create mode 100644 .rocprofv3/443938-444009-counter_values.dat create mode 100644 .rocprofv3/443938-444010-counter_values.dat create mode 100644 .rocprofv3/444079-444148-counter_values.dat create mode 100644 .rocprofv3/444079-444149-counter_values.dat create mode 100644 .rocprofv3/444221-444290-counter_values.dat create mode 100644 .rocprofv3/444221-444291-counter_values.dat create mode 100644 .rocprofv3/444356-444430-counter_values.dat create mode 100644 .rocprofv3/444356-444431-counter_values.dat create mode 100644 .rocprofv3/444534-444614-counter_values.dat create mode 100644 .rocprofv3/444534-444615-counter_values.dat create mode 100644 .rocprofv3/444714-444783-counter_values.dat create mode 100644 .rocprofv3/444714-444784-counter_values.dat create mode 100644 .rocprofv3/444848-444917-counter_values.dat create mode 100644 .rocprofv3/444848-444918-counter_values.dat create mode 100644 .rocprofv3/444981-445052-counter_values.dat create mode 100644 .rocprofv3/444981-445053-counter_values.dat create mode 100644 .rocprofv3/445122-445191-counter_values.dat create mode 100644 .rocprofv3/445122-445192-counter_values.dat create mode 100644 .rocprofv3/445274-445343-counter_values.dat create mode 100644 .rocprofv3/445274-445344-counter_values.dat create mode 100644 .rocprofv3/445420-445489-counter_values.dat create mode 100644 .rocprofv3/445420-445490-counter_values.dat create mode 100644 .rocprofv3/445643-445712-counter_values.dat create mode 100644 .rocprofv3/445643-445713-counter_values.dat create mode 100644 .rocprofv3/445776-445845-counter_values.dat create mode 100644 .rocprofv3/445776-445846-counter_values.dat create mode 100644 .rocprofv3/445962-446031-counter_values.dat create mode 100644 .rocprofv3/445962-446032-counter_values.dat create mode 100644 .rocprofv3/446105-446212-counter_values.dat create mode 100644 .rocprofv3/446105-446213-counter_values.dat create mode 100644 .rocprofv3/446321-446391-counter_values.dat create mode 100644 .rocprofv3/446321-446392-counter_values.dat create mode 100644 .rocprofv3/446453-446525-counter_values.dat create mode 100644 .rocprofv3/446453-446526-counter_values.dat create mode 100644 .rocprofv3/446602-446676-counter_values.dat create mode 100644 .rocprofv3/446602-446677-counter_values.dat create mode 100644 .rocprofv3/446747-446820-counter_values.dat create mode 100644 .rocprofv3/446747-446821-counter_values.dat create mode 100644 .rocprofv3/446901-446970-counter_values.dat create mode 100644 .rocprofv3/446901-446971-counter_values.dat create mode 100644 .rocprofv3/447032-447102-counter_values.dat create mode 100644 .rocprofv3/447032-447103-counter_values.dat create mode 100644 .rocprofv3/447260-447329-counter_values.dat create mode 100644 .rocprofv3/447260-447330-counter_values.dat create mode 100644 .rocprofv3/447393-447462-counter_values.dat create mode 100644 .rocprofv3/447393-447463-counter_values.dat create mode 100644 .rocprofv3/447524-447593-counter_values.dat create mode 100644 .rocprofv3/447524-447594-counter_values.dat create mode 100644 .rocprofv3/447659-447729-counter_values.dat create mode 100644 .rocprofv3/447659-447730-counter_values.dat create mode 100644 .rocprofv3/447799-447868-counter_values.dat create mode 100644 .rocprofv3/447799-447869-counter_values.dat create mode 100644 .rocprofv3/447930-448000-counter_values.dat create mode 100644 .rocprofv3/447930-448001-counter_values.dat create mode 100644 .rocprofv3/448159-448228-counter_values.dat create mode 100644 .rocprofv3/448159-448229-counter_values.dat create mode 100644 .rocprofv3/448301-448370-counter_values.dat create mode 100644 .rocprofv3/448301-448371-counter_values.dat create mode 100644 .rocprofv3/448432-448501-counter_values.dat create mode 100644 .rocprofv3/448432-448502-counter_values.dat create mode 100644 .rocprofv3/448572-448641-counter_values.dat create mode 100644 .rocprofv3/448572-448642-counter_values.dat create mode 100644 .rocprofv3/448704-448781-counter_values.dat create mode 100644 .rocprofv3/448704-448782-counter_values.dat create mode 100644 .rocprofv3/448846-448920-counter_values.dat create mode 100644 .rocprofv3/448846-448921-counter_values.dat create mode 100644 docs/profiling/example07_gemm_all_scatter.md diff --git a/.agents/skills/accordo/SKILL.md b/.agents/skills/accordo/SKILL.md new file mode 100644 index 000000000..808c73ef9 --- /dev/null +++ b/.agents/skills/accordo/SKILL.md @@ -0,0 +1,68 @@ +--- +name: accordo-validation +description: Validate GPU kernel correctness by comparing reference and optimized outputs. Use when verifying that an optimized or modified kernel matches a reference implementation. +--- + +# Accordo: GPU Kernel Validation + +Capture and compare kernel outputs from reference and optimized binaries to validate correctness. Uses kernelDB for automatic kernel extraction; supports configurable tolerance and execution-time comparison. + +## When to Use + +- User has a reference and an optimized (or modified) GPU kernel and wants to check they produce the same results +- Regression testing after kernel or build changes +- Validating multiple optimization variants against one baseline + +## Instructions + +1. **Require two or more binaries:** one reference (e.g. `./app_ref`) and one or more to validate (e.g. `./app_opt`). All must expose the same kernel by name. +2. **Ensure binaries are built with debug symbols** (`-g`) so kernel arguments can be extracted. +3. **Choose execution path:** + - If an Accordo MCP server is available, call its `validate_kernel_correctness` tool, which performs capture-and-compare with the same semantics described below. + - Otherwise use the Python API from the environment where Accordo is installed. + +### Python API + +```python +from accordo import Accordo + +# Validator for the kernel to validate (binary used to extract signature) +validator = Accordo(binary="./app_ref", kernel_name="reduce_sum") + +# Optional: set working directory if binaries expect it +validator = Accordo(binary="./app_ref", kernel_name="reduce_sum", working_directory="./run") + +# Capture snapshots +ref = validator.capture_snapshot(binary="./app_ref") +opt = validator.capture_snapshot(binary="./app_opt") + +# Compare with tolerance (default 1e-6) +result = validator.compare_snapshots(ref, opt, tolerance=1e-6) + +if result.is_valid: + print("PASS:", result.num_arrays_validated, "arrays matched") +else: + print(result.summary()) +``` + +For multiple optimizations, capture the reference once and compare each optimized snapshot against it. + +### Snapshot and result attributes + +- **Snapshot:** `arrays`, `execution_time_ms`, `grid_size`, `block_size` +- **ValidationResult:** `is_valid`, `num_arrays_validated`, `num_mismatches`, `mismatches`, `success_rate`; use `summary()` for a human-readable report. + +## Workflow + +1. Build reference and optimized binaries with the same kernel name and `-g`. +2. Create an `Accordo(binary=ref_binary, kernel_name="...")` validator; set `working_directory` if needed. +3. Capture reference snapshot with `capture_snapshot(binary=ref_binary)`. +4. For each variant, capture with `capture_snapshot(binary=opt_binary)` and compare with `compare_snapshots(ref, opt, tolerance=...)`. +5. If `result.is_valid` is false, use `result.summary()` and `result.mismatches` to diagnose. +6. Use relative paths for binaries and working directory so the skill is portable. + +## Notes + +- kernelDB is used automatically; no separate kernelDB setup is required when using the Python API. +- Increase `tolerance` for floating-point comparisons when appropriate (e.g. 1e-4 or 1e-5 for single precision). +- Use `timeout_seconds` in `capture_snapshot` if the run may hang. diff --git a/.agents/skills/linex/SKILL.md b/.agents/skills/linex/SKILL.md new file mode 100644 index 000000000..dca5b7d6d --- /dev/null +++ b/.agents/skills/linex/SKILL.md @@ -0,0 +1,98 @@ +--- +name: linex-profiling +description: Profile GPU kernels at source-line granularity with cycle-level timing and stall analysis. Use when identifying performance hotspots at the source code level or analyzing instruction-level metrics mapped to source lines. +--- + +# Linex: Source-Level GPU Performance Profiling + +Map GPU performance metrics to your source code lines. Get cycle-level timing, stall analysis, and instruction-level metrics for each line of source code. + +## When to Use + +- User asks to profile a GPU application at source-line granularity +- Need to identify which specific lines of code are performance bottlenecks +- Analyzing stall patterns and execution bottlenecks at the source level +- Understanding cycle-level timing for each line of code +- Instruction-level analysis mapped to source lines + +## Instructions + +1. **Ensure the target runs on AMD ROCm 7.0+** with `rocprofv3` available. +2. **Kernels must be compiled with `-g`** (debug symbols) for source mapping. +3. **Choose execution path:** + - If a Linex MCP server is available, use its MCP tools: + - `profile_application` to run and profile a target application with the options below. + - `analyze_instruction_hotspots` to perform instruction-level hotspot analysis on collected profiles. + - Otherwise use the Python API from the environment where Linex is installed. + +### Python API + +```python +from linex import Linex + +profiler = Linex( + target_cu=0, # Target compute unit + shader_engine_mask="0xFFFFFFFF", # All shader engines + activity=10, # Activity counter polling +) + +profiler.profile("./my_app", kernel_filter="my_kernel") + +# Show hotspots (sorted by total_cycles) +for line in profiler.source_lines[:5]: + print(f"{line.file}:{line.line_number}") + print(f" {line.total_cycles:,} cycles ({line.stall_percent:.1f}% stalled)") + print(f" Executed {line.execution_count} times") + +# Find memory-bound lines +memory_bound = [ + l for l in profiler.source_lines + if l.stall_percent > 50 +] + +# Instruction-level analysis +for line in profiler.source_lines[:1]: + for inst in line.instructions: + print(f"{inst.isa}: {inst.latency_cycles} cycles") +``` + +### SourceLine Properties + +- `file` - Source file path +- `line_number` - Line number +- `total_cycles` - Sum of all instruction cycles +- `stall_cycles` - Cycles spent waiting +- `idle_cycles` - Cycles slot was idle +- `execution_count` - Total executions +- `instructions` - List of ISA instructions +- `stall_percent` - Convenience: stall_cycles / total_cycles * 100 + +### InstructionData Properties + +- `isa` - ISA instruction text +- `latency_cycles` - Total cycles for this instruction +- `stall_cycles` - Cycles spent waiting +- `idle_cycles` - Cycles slot was idle +- `execution_count` - How many times it ran +- `instruction_address` - Virtual address in GPU memory +- `file` - Parsed from source_location +- `line` - Parsed from source_location +- `stall_percent` - Convenience: stall_cycles / latency_cycles * 100 + +## Workflow + +1. Ensure the target binary is built with `-g` (debug symbols) for source mapping. +2. Create a `Linex()` profiler; optionally set `target_cu`, `shader_engine_mask`, or `activity`. +3. Call `profiler.profile(command, kernel_filter=...)` to run profiling. +4. Access `profiler.source_lines` (sorted by total_cycles) to find hotspots. +5. Use `line.stall_percent` to identify memory-bound or dependency-bound lines. +6. Drill down into `line.instructions` for instruction-level analysis. +7. Use relative paths for the target binary so the skill is portable. + +## Notes + +- Requires ROCm 7.0+ with `rocprofv3` support. +- Source mapping requires kernels compiled with `-g` (debug symbols). +- `source_lines` are automatically sorted by `total_cycles` (descending). +- Use `kernel_filter` to profile specific kernels by name (regex pattern). +- For Triton or other frameworks, ensure debug symbols are available in the compiled output. diff --git a/.agents/skills/metrix/SKILL.md b/.agents/skills/metrix/SKILL.md new file mode 100644 index 000000000..9a5564ece --- /dev/null +++ b/.agents/skills/metrix/SKILL.md @@ -0,0 +1,76 @@ +--- +name: metrix-profiling +description: Profile GPU kernels when performance analysis or optimization is required. Use for AMD ROCm GPU metrics, bandwidth, cache hit rates, coalescing, or kernel timing. +--- + +# Metrix: GPU Profiling + +Profile AMD GPU kernels and get human-readable metrics (bandwidth, cache, coalescing, FLOPS). Architecture is auto-detected. + +## When to Use + +- User asks to profile a GPU application or kernel +- Performance analysis, optimization, or bottleneck investigation +- Need HBM/L2/L1 bandwidth, hit rates, or compute metrics +- Need timing-only runs (fast, no hardware counters) + +## Instructions + +1. **Ensure the target runs on AMD ROCm** (e.g. `hipcc`-built binary or Python script that launches HIP/ROCm kernels). +2. **Choose execution path:** + - If a Metrix MCP server is available, use its profile tool with the same options below. + - Otherwise run the CLI or Python API from the environment where Metrix is installed. + +### CLI + +From the project or install prefix: + +```bash +# Profile with all metrics (auto-detected arch) +metrix ./my_app + +# Time only (fast, no counters) +metrix --time-only -n 10 ./my_app + +# Filter kernels by name +metrix --kernel matmul ./my_app + +# Specific metrics +metrix --metrics memory.l2_hit_rate,memory.coalescing_efficiency,compute.total_flops ./my_app + +# Save to JSON/CSV +metrix -o results.json ./my_app +``` + +Options: `--profile` (quick|memory|compute), `--metrics` (comma-separated), `--time-only`, `--kernel` (substring), `--num-replays`/`-n`, `--output`/`-o`, `--top K`, `--aggregate`, `--log`/`-l` (debug|info|warning|error), `--quiet`. + +### Python API + +```python +from metrix import Metrix + +profiler = Metrix() +results = profiler.profile("./my_app", num_replays=5) + +for kernel in results.kernels: + print(kernel.name, kernel.duration_us.avg) + for metric, stats in kernel.metrics.items(): + print(f" {metric}: {stats.avg}") +``` + +Use `metrics=[...]` for a subset; omit for all metrics. Use `cwd` when the binary expects a specific working directory. + +## Workflow + +1. Identify the executable or script to profile (e.g. `./app` or `python run_kernels.py`). +2. If only timing is needed, use `--time-only` for speed. +3. If full metrics are needed, run `metrix ./app` (or MCP equivalent); optionally restrict with `--kernel` or `--metrics`. +4. Interpret results: low L2 hit rate, low coalescing, or low HBM utilization suggest optimization targets. +5. For automation or tooling, use `-o results.json` and parse the JSON output. + +## Key Metrics (reference) + +- **Memory:** `memory.hbm_bandwidth_utilization`, `memory.l2_hit_rate`, `memory.l1_hit_rate`, `memory.coalescing_efficiency`, `memory.global_load_efficiency`, `memory.lds_bank_conflicts`, `memory.atomic_latency` +- **Compute:** `compute.total_flops`, `compute.hbm_gflops`, `compute.hbm_arithmetic_intensity`, `compute.l2_arithmetic_intensity`, `compute.l1_arithmetic_intensity` + +Use relative paths for the target binary and output files so the skill is portable across environments. diff --git a/.agents/skills/nexus/SKILL.md b/.agents/skills/nexus/SKILL.md new file mode 100644 index 000000000..ad714bc4d --- /dev/null +++ b/.agents/skills/nexus/SKILL.md @@ -0,0 +1,74 @@ +--- +name: nexus-trace +description: Extract GPU kernel assembly and HIP source from HSA packet traces. Use when analyzing what code ran on the GPU, debugging kernel dispatch, or inspecting assembly and source mapping. +--- + +# Nexus: HSA Packet Source Code Extractor + +Intercepts HSA packets from a running process and extracts, per kernel, assembly and HIP source into a structured trace (e.g. JSON). Use for kernel-level inspection and assembly/source correlation. + +## When to Use + +- User needs to see which kernels ran and their assembly or HIP source +- Debugging or analyzing GPU dispatch and code generation +- Inspecting assembly-to-source mapping for a HIP (or ROCm) application + +## Instructions + +1. **Ensure the target runs on AMD ROCm** and uses HSA (e.g. HIP application or ROCm runtime). +2. **Choose execution path:** + - If a Nexus MCP server is available, use its tools: `list_kernels` to enumerate kernels in a trace, and `extract_kernel_code` to get assembly and HIP/source mapping (signature, files, lines). See `nexus/nexus/mcp/server.py` for tool parameters and schemas. + - Otherwise use the Python API from the environment where Nexus is installed. + +### Python API (recommended when no MCP) + +```python +from nexus import Nexus + +nexus = Nexus(log_level=1) +trace = nexus.run(["python", "my_gpu_script.py"]) + +# Or run a binary: +# trace = nexus.run(["./my_hip_app"]) + +for kernel in trace: + print(kernel.name, len(kernel.assembly), "instructions") + for i, asm_line in enumerate(kernel.assembly, 1): + print(f" {i}. {asm_line}") + for line_no, hip_line in zip(kernel.lines or range(1, len(kernel.hip)+1), kernel.hip): + print(f" {line_no}: {hip_line}") + +# Access by kernel name +k = trace["vector_add(float const*, float const*, float*, int)"] +print(k.assembly, k.hip, k.signature, k.files, k.lines) + +# Save/load trace +trace.save("trace.json") +loaded = Nexus.load("trace.json") +``` + +Set `log_level` (0–4) to control verbosity. Use relative paths for the run command and output file so the skill is portable. + +### Environment-based usage (no Python API) + +When the process cannot be launched via `nexus.run()`: + +1. Set `HSA_TOOLS_LIB` to the Nexus shared library path (e.g. `build/lib/libnexus.so` or the installed path). +2. Set `NEXUS_OUTPUT_FILE` to the output JSON path. +3. Set `NEXUS_LOG_LEVEL` (0–4) if needed. +4. Run the application as usual; it will be traced and the output file will contain the kernel data. + +Optional: `NEXUS_EXTRA_SEARCH_PREFIX` (colon-separated) for HIP source search; `TRITON_DISABLE_LINE_INFO=0` for Triton kernel line info. + +## Workflow + +1. Identify the command that runs the GPU workload (e.g. `python script.py` or `./app`). +2. If using the Python API: create `Nexus(log_level=...)`, call `nexus.run([...])`, then iterate `trace` and optionally `trace.save(...)`. +3. If using the env method: set `HSA_TOOLS_LIB` and `NEXUS_OUTPUT_FILE`, then run the app; open the JSON and parse the `kernels` structure. +4. Use kernel `signature`, `assembly`, `hip`, `files`, and `lines` to analyze what ran and map assembly back to source. +5. Use relative paths for commands and output files. + +## Notes + +- Nexus is intended for research/analysis; ensure the target environment has the Nexus library and compatible ROCm/HSA stack. +- For Triton kernels, enable line info via `TRITON_DISABLE_LINE_INFO=0` when using the Python API. diff --git a/.github/agents/skills/accordo/SKILL.md b/.github/agents/skills/accordo/SKILL.md new file mode 100644 index 000000000..808c73ef9 --- /dev/null +++ b/.github/agents/skills/accordo/SKILL.md @@ -0,0 +1,68 @@ +--- +name: accordo-validation +description: Validate GPU kernel correctness by comparing reference and optimized outputs. Use when verifying that an optimized or modified kernel matches a reference implementation. +--- + +# Accordo: GPU Kernel Validation + +Capture and compare kernel outputs from reference and optimized binaries to validate correctness. Uses kernelDB for automatic kernel extraction; supports configurable tolerance and execution-time comparison. + +## When to Use + +- User has a reference and an optimized (or modified) GPU kernel and wants to check they produce the same results +- Regression testing after kernel or build changes +- Validating multiple optimization variants against one baseline + +## Instructions + +1. **Require two or more binaries:** one reference (e.g. `./app_ref`) and one or more to validate (e.g. `./app_opt`). All must expose the same kernel by name. +2. **Ensure binaries are built with debug symbols** (`-g`) so kernel arguments can be extracted. +3. **Choose execution path:** + - If an Accordo MCP server is available, call its `validate_kernel_correctness` tool, which performs capture-and-compare with the same semantics described below. + - Otherwise use the Python API from the environment where Accordo is installed. + +### Python API + +```python +from accordo import Accordo + +# Validator for the kernel to validate (binary used to extract signature) +validator = Accordo(binary="./app_ref", kernel_name="reduce_sum") + +# Optional: set working directory if binaries expect it +validator = Accordo(binary="./app_ref", kernel_name="reduce_sum", working_directory="./run") + +# Capture snapshots +ref = validator.capture_snapshot(binary="./app_ref") +opt = validator.capture_snapshot(binary="./app_opt") + +# Compare with tolerance (default 1e-6) +result = validator.compare_snapshots(ref, opt, tolerance=1e-6) + +if result.is_valid: + print("PASS:", result.num_arrays_validated, "arrays matched") +else: + print(result.summary()) +``` + +For multiple optimizations, capture the reference once and compare each optimized snapshot against it. + +### Snapshot and result attributes + +- **Snapshot:** `arrays`, `execution_time_ms`, `grid_size`, `block_size` +- **ValidationResult:** `is_valid`, `num_arrays_validated`, `num_mismatches`, `mismatches`, `success_rate`; use `summary()` for a human-readable report. + +## Workflow + +1. Build reference and optimized binaries with the same kernel name and `-g`. +2. Create an `Accordo(binary=ref_binary, kernel_name="...")` validator; set `working_directory` if needed. +3. Capture reference snapshot with `capture_snapshot(binary=ref_binary)`. +4. For each variant, capture with `capture_snapshot(binary=opt_binary)` and compare with `compare_snapshots(ref, opt, tolerance=...)`. +5. If `result.is_valid` is false, use `result.summary()` and `result.mismatches` to diagnose. +6. Use relative paths for binaries and working directory so the skill is portable. + +## Notes + +- kernelDB is used automatically; no separate kernelDB setup is required when using the Python API. +- Increase `tolerance` for floating-point comparisons when appropriate (e.g. 1e-4 or 1e-5 for single precision). +- Use `timeout_seconds` in `capture_snapshot` if the run may hang. diff --git a/.github/agents/skills/linex/SKILL.md b/.github/agents/skills/linex/SKILL.md new file mode 100644 index 000000000..dca5b7d6d --- /dev/null +++ b/.github/agents/skills/linex/SKILL.md @@ -0,0 +1,98 @@ +--- +name: linex-profiling +description: Profile GPU kernels at source-line granularity with cycle-level timing and stall analysis. Use when identifying performance hotspots at the source code level or analyzing instruction-level metrics mapped to source lines. +--- + +# Linex: Source-Level GPU Performance Profiling + +Map GPU performance metrics to your source code lines. Get cycle-level timing, stall analysis, and instruction-level metrics for each line of source code. + +## When to Use + +- User asks to profile a GPU application at source-line granularity +- Need to identify which specific lines of code are performance bottlenecks +- Analyzing stall patterns and execution bottlenecks at the source level +- Understanding cycle-level timing for each line of code +- Instruction-level analysis mapped to source lines + +## Instructions + +1. **Ensure the target runs on AMD ROCm 7.0+** with `rocprofv3` available. +2. **Kernels must be compiled with `-g`** (debug symbols) for source mapping. +3. **Choose execution path:** + - If a Linex MCP server is available, use its MCP tools: + - `profile_application` to run and profile a target application with the options below. + - `analyze_instruction_hotspots` to perform instruction-level hotspot analysis on collected profiles. + - Otherwise use the Python API from the environment where Linex is installed. + +### Python API + +```python +from linex import Linex + +profiler = Linex( + target_cu=0, # Target compute unit + shader_engine_mask="0xFFFFFFFF", # All shader engines + activity=10, # Activity counter polling +) + +profiler.profile("./my_app", kernel_filter="my_kernel") + +# Show hotspots (sorted by total_cycles) +for line in profiler.source_lines[:5]: + print(f"{line.file}:{line.line_number}") + print(f" {line.total_cycles:,} cycles ({line.stall_percent:.1f}% stalled)") + print(f" Executed {line.execution_count} times") + +# Find memory-bound lines +memory_bound = [ + l for l in profiler.source_lines + if l.stall_percent > 50 +] + +# Instruction-level analysis +for line in profiler.source_lines[:1]: + for inst in line.instructions: + print(f"{inst.isa}: {inst.latency_cycles} cycles") +``` + +### SourceLine Properties + +- `file` - Source file path +- `line_number` - Line number +- `total_cycles` - Sum of all instruction cycles +- `stall_cycles` - Cycles spent waiting +- `idle_cycles` - Cycles slot was idle +- `execution_count` - Total executions +- `instructions` - List of ISA instructions +- `stall_percent` - Convenience: stall_cycles / total_cycles * 100 + +### InstructionData Properties + +- `isa` - ISA instruction text +- `latency_cycles` - Total cycles for this instruction +- `stall_cycles` - Cycles spent waiting +- `idle_cycles` - Cycles slot was idle +- `execution_count` - How many times it ran +- `instruction_address` - Virtual address in GPU memory +- `file` - Parsed from source_location +- `line` - Parsed from source_location +- `stall_percent` - Convenience: stall_cycles / latency_cycles * 100 + +## Workflow + +1. Ensure the target binary is built with `-g` (debug symbols) for source mapping. +2. Create a `Linex()` profiler; optionally set `target_cu`, `shader_engine_mask`, or `activity`. +3. Call `profiler.profile(command, kernel_filter=...)` to run profiling. +4. Access `profiler.source_lines` (sorted by total_cycles) to find hotspots. +5. Use `line.stall_percent` to identify memory-bound or dependency-bound lines. +6. Drill down into `line.instructions` for instruction-level analysis. +7. Use relative paths for the target binary so the skill is portable. + +## Notes + +- Requires ROCm 7.0+ with `rocprofv3` support. +- Source mapping requires kernels compiled with `-g` (debug symbols). +- `source_lines` are automatically sorted by `total_cycles` (descending). +- Use `kernel_filter` to profile specific kernels by name (regex pattern). +- For Triton or other frameworks, ensure debug symbols are available in the compiled output. diff --git a/.github/agents/skills/metrix/SKILL.md b/.github/agents/skills/metrix/SKILL.md new file mode 100644 index 000000000..9a5564ece --- /dev/null +++ b/.github/agents/skills/metrix/SKILL.md @@ -0,0 +1,76 @@ +--- +name: metrix-profiling +description: Profile GPU kernels when performance analysis or optimization is required. Use for AMD ROCm GPU metrics, bandwidth, cache hit rates, coalescing, or kernel timing. +--- + +# Metrix: GPU Profiling + +Profile AMD GPU kernels and get human-readable metrics (bandwidth, cache, coalescing, FLOPS). Architecture is auto-detected. + +## When to Use + +- User asks to profile a GPU application or kernel +- Performance analysis, optimization, or bottleneck investigation +- Need HBM/L2/L1 bandwidth, hit rates, or compute metrics +- Need timing-only runs (fast, no hardware counters) + +## Instructions + +1. **Ensure the target runs on AMD ROCm** (e.g. `hipcc`-built binary or Python script that launches HIP/ROCm kernels). +2. **Choose execution path:** + - If a Metrix MCP server is available, use its profile tool with the same options below. + - Otherwise run the CLI or Python API from the environment where Metrix is installed. + +### CLI + +From the project or install prefix: + +```bash +# Profile with all metrics (auto-detected arch) +metrix ./my_app + +# Time only (fast, no counters) +metrix --time-only -n 10 ./my_app + +# Filter kernels by name +metrix --kernel matmul ./my_app + +# Specific metrics +metrix --metrics memory.l2_hit_rate,memory.coalescing_efficiency,compute.total_flops ./my_app + +# Save to JSON/CSV +metrix -o results.json ./my_app +``` + +Options: `--profile` (quick|memory|compute), `--metrics` (comma-separated), `--time-only`, `--kernel` (substring), `--num-replays`/`-n`, `--output`/`-o`, `--top K`, `--aggregate`, `--log`/`-l` (debug|info|warning|error), `--quiet`. + +### Python API + +```python +from metrix import Metrix + +profiler = Metrix() +results = profiler.profile("./my_app", num_replays=5) + +for kernel in results.kernels: + print(kernel.name, kernel.duration_us.avg) + for metric, stats in kernel.metrics.items(): + print(f" {metric}: {stats.avg}") +``` + +Use `metrics=[...]` for a subset; omit for all metrics. Use `cwd` when the binary expects a specific working directory. + +## Workflow + +1. Identify the executable or script to profile (e.g. `./app` or `python run_kernels.py`). +2. If only timing is needed, use `--time-only` for speed. +3. If full metrics are needed, run `metrix ./app` (or MCP equivalent); optionally restrict with `--kernel` or `--metrics`. +4. Interpret results: low L2 hit rate, low coalescing, or low HBM utilization suggest optimization targets. +5. For automation or tooling, use `-o results.json` and parse the JSON output. + +## Key Metrics (reference) + +- **Memory:** `memory.hbm_bandwidth_utilization`, `memory.l2_hit_rate`, `memory.l1_hit_rate`, `memory.coalescing_efficiency`, `memory.global_load_efficiency`, `memory.lds_bank_conflicts`, `memory.atomic_latency` +- **Compute:** `compute.total_flops`, `compute.hbm_gflops`, `compute.hbm_arithmetic_intensity`, `compute.l2_arithmetic_intensity`, `compute.l1_arithmetic_intensity` + +Use relative paths for the target binary and output files so the skill is portable across environments. diff --git a/.github/agents/skills/nexus/SKILL.md b/.github/agents/skills/nexus/SKILL.md new file mode 100644 index 000000000..ad714bc4d --- /dev/null +++ b/.github/agents/skills/nexus/SKILL.md @@ -0,0 +1,74 @@ +--- +name: nexus-trace +description: Extract GPU kernel assembly and HIP source from HSA packet traces. Use when analyzing what code ran on the GPU, debugging kernel dispatch, or inspecting assembly and source mapping. +--- + +# Nexus: HSA Packet Source Code Extractor + +Intercepts HSA packets from a running process and extracts, per kernel, assembly and HIP source into a structured trace (e.g. JSON). Use for kernel-level inspection and assembly/source correlation. + +## When to Use + +- User needs to see which kernels ran and their assembly or HIP source +- Debugging or analyzing GPU dispatch and code generation +- Inspecting assembly-to-source mapping for a HIP (or ROCm) application + +## Instructions + +1. **Ensure the target runs on AMD ROCm** and uses HSA (e.g. HIP application or ROCm runtime). +2. **Choose execution path:** + - If a Nexus MCP server is available, use its tools: `list_kernels` to enumerate kernels in a trace, and `extract_kernel_code` to get assembly and HIP/source mapping (signature, files, lines). See `nexus/nexus/mcp/server.py` for tool parameters and schemas. + - Otherwise use the Python API from the environment where Nexus is installed. + +### Python API (recommended when no MCP) + +```python +from nexus import Nexus + +nexus = Nexus(log_level=1) +trace = nexus.run(["python", "my_gpu_script.py"]) + +# Or run a binary: +# trace = nexus.run(["./my_hip_app"]) + +for kernel in trace: + print(kernel.name, len(kernel.assembly), "instructions") + for i, asm_line in enumerate(kernel.assembly, 1): + print(f" {i}. {asm_line}") + for line_no, hip_line in zip(kernel.lines or range(1, len(kernel.hip)+1), kernel.hip): + print(f" {line_no}: {hip_line}") + +# Access by kernel name +k = trace["vector_add(float const*, float const*, float*, int)"] +print(k.assembly, k.hip, k.signature, k.files, k.lines) + +# Save/load trace +trace.save("trace.json") +loaded = Nexus.load("trace.json") +``` + +Set `log_level` (0–4) to control verbosity. Use relative paths for the run command and output file so the skill is portable. + +### Environment-based usage (no Python API) + +When the process cannot be launched via `nexus.run()`: + +1. Set `HSA_TOOLS_LIB` to the Nexus shared library path (e.g. `build/lib/libnexus.so` or the installed path). +2. Set `NEXUS_OUTPUT_FILE` to the output JSON path. +3. Set `NEXUS_LOG_LEVEL` (0–4) if needed. +4. Run the application as usual; it will be traced and the output file will contain the kernel data. + +Optional: `NEXUS_EXTRA_SEARCH_PREFIX` (colon-separated) for HIP source search; `TRITON_DISABLE_LINE_INFO=0` for Triton kernel line info. + +## Workflow + +1. Identify the command that runs the GPU workload (e.g. `python script.py` or `./app`). +2. If using the Python API: create `Nexus(log_level=...)`, call `nexus.run([...])`, then iterate `trace` and optionally `trace.save(...)`. +3. If using the env method: set `HSA_TOOLS_LIB` and `NEXUS_OUTPUT_FILE`, then run the app; open the JSON and parse the `kernels` structure. +4. Use kernel `signature`, `assembly`, `hip`, `files`, and `lines` to analyze what ran and map assembly back to source. +5. Use relative paths for commands and output files. + +## Notes + +- Nexus is intended for research/analysis; ensure the target environment has the Nexus library and compatible ROCm/HSA stack. +- For Triton kernels, enable line info via `TRITON_DISABLE_LINE_INFO=0` when using the Python API. diff --git a/.intellikit b/.intellikit new file mode 160000 index 000000000..f69ecf13c --- /dev/null +++ b/.intellikit @@ -0,0 +1 @@ +Subproject commit f69ecf13c59fe73e58fb37ee2f6ea02fafd22444 diff --git a/.rocprofv3/435992-436061-counter_values.dat b/.rocprofv3/435992-436061-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..41aecb53c6f2200172e137a47ca3dc2f8d4efc0b GIT binary patch literal 4184 zcmeH{F$%&!5JlHQEEHU9170Lewy{fLpGz1-u#s)NgE#UhUc=E4GXDz+wv$Pb&13%r z_CMI=B7C3Kx?B6VbKgX_TJK{+{+-dk^*##n?~MMf_feC7XY_BqkB0m^qkrptoV5RZ zser?EoH@@txA}0UzNk;`Cv(1~dERH{JTvE++bWZPVDUG~avs=cp4+_mhd#nYKjI(r xMlyLw6 literal 0 HcmV?d00001 diff --git a/.rocprofv3/435992-436062-counter_values.dat b/.rocprofv3/435992-436062-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..3345f6e3cd2d624c404cf84b3a6ad5e797b59fb1 GIT binary patch literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEzpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGi64?zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGiEmP5?HGf^_n0H^I70|Yy+EBK0FDln A&j0`b literal 0 HcmV?d00001 diff --git a/.rocprofv3/436266-436337-counter_values.dat b/.rocprofv3/436266-436337-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..13c87714a3302c2df75202f97ade0aa0a749142c GIT binary patch literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGiLaS&?HGf^Kl5GAafT3*dVxAe0H4E^ AsQ>@~ literal 0 HcmV?d00001 diff --git a/.rocprofv3/436266-436338-counter_values.dat b/.rocprofv3/436266-436338-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..fbb09a4510dd3a8ef89cc3f32f31dd136210bd05 GIT binary patch literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGi68A|?HGf^*ZC#yI70|Yy+EBK0Fm^S A3IG5A literal 0 HcmV?d00001 diff --git a/.rocprofv3/436403-436481-counter_values.dat b/.rocprofv3/436403-436481-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..394b25665b583e5cca3c99da12308dd2b88f3d34 GIT binary patch literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoE9I|}e4_#l=W68~k5wPOqte@~B`;|w7r^#XN{0O|ym A$p8QV literal 0 HcmV?d00001 diff --git a/.rocprofv3/436403-436482-counter_values.dat b/.rocprofv3/436403-436482-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..17bafdd82da1242d7787a4c5b1dda58184189b04 GIT binary patch literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGiNDCo+A#)+KZ#MnafT3*dVxAe0HcqT A{Qv*} literal 0 HcmV?d00001 diff --git a/.rocprofv3/436543-436612-counter_values.dat b/.rocprofv3/436543-436612-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..34c485d85c2918316ce48af3df51930a1ab9c0d6 GIT binary patch literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoECi;|w7r^#XN{0Io%q Ah5!Hn literal 0 HcmV?d00001 diff --git a/.rocprofv3/436543-436613-counter_values.dat b/.rocprofv3/436543-436613-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..3840360a11236e10400cfa45b4309bf05a1dfdd7 GIT binary patch literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEYlMI|}e4_#l=W691H~wPOqtpW~3c;|w7r^#XN{0J(~l AjQ{`u literal 0 HcmV?d00001 diff --git a/.rocprofv3/436801-437681-counter_values.dat b/.rocprofv3/436801-437681-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..55e237d8d77ac3e1d3ddd7a390644f27f1cf70e1 GIT binary patch literal 4184 zcmeH{F$%&!5JlHQEEHU91uv3jx3TjC20ep81RL4L$_scyA*XOPgv|d!g6(8dWb@cR zf&CA5I&t4;HgDGUZQM4|tlIlnkbh(Juf2~o`8P)Y+WXj%e`EBoy^oUo8>4^ieVnBK zbP2%j+RvP49^1S-Q(x34_menZ(LC=nbDo*=%vDI_A2|E#<$NC4XCB*p_78oyfqt@o z%#)9w{|)8;pTA50`RX&q`(Jw>FW;T_urH!tcKrF;3Vs}mSPBmHCO%gp?{D!9uXL53 literal 0 HcmV?d00001 diff --git a/.rocprofv3/436801-437682-counter_values.dat b/.rocprofv3/436801-437682-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..b19f776e7eac9fbdd9def68e4a19ba7f32de7b43 GIT binary patch literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGiJuu~?HGf^zY;F*I70|Yy+EBK0IIu{ AdjJ3c literal 0 HcmV?d00001 diff --git a/.rocprofv3/439023-439093-counter_values.dat b/.rocprofv3/439023-439093-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..4a9cd04c4630bb68289b5aef6a019c532ce62fca GIT binary patch literal 4184 zcmeH{F$%&!5JlHQEEHU91zQi1X1B5P2DyYm6hUMg@8AIiZxI{~A^X3OU^|%<**x}7 zVE==iPTcpI&6~A-8@Ej~tM)z?1WO}k8R!^sW0l2`$?RyXrA|(InT^_<|-ue4=nzASv#K$Vj`&)bi*1eVu literal 0 HcmV?d00001 diff --git a/.rocprofv3/439023-439094-counter_values.dat b/.rocprofv3/439023-439094-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..b37f6a6b26c025bf4e53ea51b12dc1965f3dd9ee GIT binary patch literal 4184 zcmeH{F$%&!5JlHQEEHU9Eo{9*nq3epJ%ItwU=YDZw($<$FxPN2gzW!9g6(8dWb@cR zf&CA5I&t4;HgDGUZQM4|tlIlnkbh(Juf2~o`8P)Y+WR4^ieOz+? z=@x+9y`MSHJhpjvrM{?7?k91+qIuqD<~%d!nX8bzpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGi9apd+A#)+|6#wJ;|w7r^#XN{0LF8c AT>t<8 literal 0 HcmV?d00001 diff --git a/.rocprofv3/439155-439227-counter_values.dat b/.rocprofv3/439155-439227-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..abbab72caace1b5454aef778c7d1b4ae73f75c9e GIT binary patch literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGiNCJa+A#)+Z?i<+afT3*dVxAe0Kr6+ A%m4rY literal 0 HcmV?d00001 diff --git a/.rocprofv3/439300-439370-counter_values.dat b/.rocprofv3/439300-439370-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..3bdf89082157fc723abcdf8e056639eaec5458dd GIT binary patch literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEzpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEzpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEzpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGiEra)?HGf^_n9Z}I70|Yy+EBK0E!Tl Awg3PC literal 0 HcmV?d00001 diff --git a/.rocprofv3/439592-439661-counter_values.dat b/.rocprofv3/439592-439661-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..f14a83dfc78ea5dbee2aaa73a8d0a6f5b8e05df4 GIT binary patch literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ u|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>(WHRd%cuK=55SGaUiEp=eG3 literal 0 HcmV?d00001 diff --git a/.rocprofv3/439592-439662-counter_values.dat b/.rocprofv3/439592-439662-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..d9b149cdb92435b87bb43d6fa2a8a35ec03420e3 GIT binary patch literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>)7KRd%cufb$bxaAZ0H0Kmp+PXGV_ literal 0 HcmV?d00001 diff --git a/.rocprofv3/439745-439817-counter_values.dat b/.rocprofv3/439745-439817-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..f61cbb8c9afd2cf47afd4fa7b9a12c866fbe1718 GIT binary patch literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ v|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>%8#D?8Q-!1)i{IWrvrvo~mW literal 0 HcmV?d00001 diff --git a/.rocprofv3/439745-439818-counter_values.dat b/.rocprofv3/439745-439818-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..6e9982866fd6f34e5b519c93e65cbd6db006ecab GIT binary patch literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ v|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>*KJt2ovQ!1)UAIWipqxr%7R literal 0 HcmV?d00001 diff --git a/.rocprofv3/439964-440033-counter_values.dat b/.rocprofv3/439964-440033-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..4edaf762cbd663acd9e6491672cca03887152882 GIT binary patch literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ v|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>(XRQFg2qfb$bPI5QmqypCv> literal 0 HcmV?d00001 diff --git a/.rocprofv3/439964-440034-counter_values.dat b/.rocprofv3/439964-440034-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..48597dac22385ece3116f8dcabc0c70ad0fc2ad6 GIT binary patch literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>)gyuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>;%Dt?XDU0Ou#Tb7ndM0LyuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>-e)Q*o>nfb$nT;mC9Z0Ka=_X#fBK literal 0 HcmV?d00001 diff --git a/.rocprofv3/440277-440346-counter_values.dat b/.rocprofv3/440277-440346-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..ecb9fa3d25f0fb8c7fa007bd1b7135fa733e1743 GIT binary patch literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ v|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>&MJC_B~)!1)h6IWrvrydr4u literal 0 HcmV?d00001 diff --git a/.rocprofv3/440277-440347-counter_values.dat b/.rocprofv3/440277-440347-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..d7adbb504cc7ee34f655594f8c148231f5a8edac GIT binary patch literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>&iJQgN&mfb$*Rb7VRK0K9`}{r~^~ literal 0 HcmV?d00001 diff --git a/.rocprofv3/440421-440491-counter_values.dat b/.rocprofv3/440421-440491-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..d6e957c90c70c9d42e0d0467cef7246eb68dceb8 GIT binary patch literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>))&PyuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>+ftsO(rP0OvP6yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>)6fQF5#mfb$o)a%MUL0KO<_+W-In literal 0 HcmV?d00001 diff --git a/.rocprofv3/440591-440663-counter_values.dat b/.rocprofv3/440591-440663-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..49e671b11fa984945e634a4eb0117f6d1f4dcd68 GIT binary patch literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>%-FQE{vlfb$!ka%4IJ0KV~QOaK4? literal 0 HcmV?d00001 diff --git a/.rocprofv3/440734-440803-counter_values.dat b/.rocprofv3/440734-440803-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..ed0554ca2adcd57024a4cda737ebedb85f1b3aea GIT binary patch literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ v|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>(`mQFg2qfb$zXIWrvr#yV** literal 0 HcmV?d00001 diff --git a/.rocprofv3/440734-440804-counter_values.dat b/.rocprofv3/440734-440804-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..fdaf8a81d8ced151f499a92e019490fbf2f4c4ba GIT binary patch literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>&)*RB@~ofb$nT=E!se0LNHq&j0`b literal 0 HcmV?d00001 diff --git a/.rocprofv3/440940-441024-counter_values.dat b/.rocprofv3/440940-441024-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..eec525976f06bd1bd968bc7f04f070e50c3d15fc GIT binary patch literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ v|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>-G@PyuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>(`is5sUN!1)KBb7VRK0KGkFVgLXD literal 0 HcmV?d00001 diff --git a/.rocprofv3/441095-441164-counter_values.dat b/.rocprofv3/441095-441164-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..a9aad446a730dc2255a8e4bebce346244a685ecb GIT binary patch literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ v|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>*KZC_B~)!1)V2I5QmqyM}1F literal 0 HcmV?d00001 diff --git a/.rocprofv3/441095-441165-counter_values.dat b/.rocprofv3/441095-441165-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..9d0bc34b3abf87db46c92602d7087f7ce567b832 GIT binary patch literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>-^sR&lHqfb$z3b7VRK0L9j6r2qf` literal 0 HcmV?d00001 diff --git a/.rocprofv3/441278-441361-counter_values.dat b/.rocprofv3/441278-441361-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..50adb10ae2b754ef61cce0f00a02985591ee53b6 GIT binary patch literal 2312 zcmbQh00I8&PzI3NcG|!ZnP0UXmCttqm7lQ`mA~mQD!&pe2ZlO~1ni)bMK9h{`{(36+m7->?i-o?#_^KDv5zJ`ws2c#!fxkU7d9S>fTv zkMQrSAZy1MB>s)Ha*q50aQO!X5~+@=2tLEMHhagbf(ZG83@MKKLU2Bi;o?|=%%3pL LaRxG9pw1BhSnJzb literal 0 HcmV?d00001 diff --git a/.rocprofv3/441278-441362-counter_values.dat b/.rocprofv3/441278-441362-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..b74345f0dd4b54d9b1db47c6f5db9207b92a283e GIT binary patch literal 2312 zcmbQh00I8&PzI2?Kf%xunP1e8%AYX{m2Xjs%9m_H<-f{7Hq715}pnJQTY!T(83c<-r)eHW9j;cs}=N@~mESf4m49v(D*wW4RQ~VJsQk;f3>>F(A?#;x zU_s?Ku;J&Ut4HULIQ@SeP{Om}KPvwL16p{Z$vb>ORp0OpKObE^I-dyrQ@D}hf6_At z6u!ty{Csrv==_nU-}eD(c=bI*<)43q%14)$Z&BiLFP}G M<~ReHFHq+Q01T+x>i_@% literal 0 HcmV?d00001 diff --git a/.rocprofv3/441426-441502-counter_values.dat b/.rocprofv3/441426-441502-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..81148c17895cd5bca29c386b1f6ba4f3e116655e GIT binary patch literal 2312 zcmbQh00I8&PzI2CzsArJnV-8Dl|StuD*yWwRQ}g#sQlR-sC>CcsC?BEhK|#@5cV@T zu%PlA*zohw)uZ!Aoc_NKDB;=gAC>=r0WCbyo-B0}7vE zCw@MnyIk>Y>SGY1sD z$V>cuboJ=`k*44G0cv>lJw)Z7e}u|Mm!EVERbJ#Kem=T-bUqRK=OV{{!!`#LKEqD@ ze025b{E?>LVFPM-HEcxXAJ~M-N0)C{hAPjn53<|E~i|csBe;y z|2_)0c8o#dm)w+h9#^GBTizYZwj+3+8g|9}B4JkjJGzM!ga_=ca4t{$CFg#IbqNbx`EnF9)6 zB JAoB(490A<1*AxH% literal 0 HcmV?d00001 diff --git a/.rocprofv3/441796-441866-counter_values.dat b/.rocprofv3/441796-441866-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..5739606172916824b0711634cea0f7391f94cbb4 GIT binary patch literal 2312 zcmbQh00I8&PzI2?{mRG@ng9OF^c?}JE-zM9;5Pqok8Vq)2 zGwj6AM^}%|A8Gm>HlT)A!$ws8fla7Tas zH-3bFWs9sGW03d@8s#1N1>o`r48&3$RS|rKKU3`;uL{ED6(Si@9QB3Zd?3Tcu>_ev NVVdI%WWGS1BLI*^+Wr6l literal 0 HcmV?d00001 diff --git a/.rocprofv3/441931-442004-counter_values.dat b/.rocprofv3/441931-442004-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..a613d9e37475b9e626ba8d109a10b06d4e4b7ca0 GIT binary patch literal 2312 zcmbQh00I8&PzI0^6*Y21=09dae2ZlO~1ni)bMK9h{`{(36+m7->?i-o?#_^KDv5zJ`ws2c#!fxkU7d9S>fTv zkMM7om$hRI693P9IY)j0xV(a=WU8Yog3s`=-rn)5AYA^yA%+x3eIYm>$Z&BiLFP}G M<~ReHFHq+Q05uoa4FCWD literal 0 HcmV?d00001 diff --git a/.rocprofv3/441931-442005-counter_values.dat b/.rocprofv3/441931-442005-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..1361db8fa8b5552e47eeffd10d1cae23f76ac370 GIT binary patch literal 2312 zcmbQh00I8&PzI1PQ802u=10k(@^7i2^5q0k`6)c8{QbWTQOqlFL6u*lX5=`X3t>Nl z0}Cp@fek+&T|GK~#OeR*fD)b!|55o57|_BKP2S-Ps``d+`1$DS(fLH^pTdn4|C63M zpzuXr;^(8QN9T_;{k{)S!>jKhD*yZ=R6e@=q-&`1A~*5#(bc2#iO@e6IsO~AIiT9#^NG+ug&QgUCp~jO z;fuV)&qr5}&L3&|eIKBPSKmWa{`p6!e02Fq*HGm}ZsO;ot4HS(p?@xN{5NcKK;bj& z#Lq`pkIo-y`W-f)hF8NzRQ`cYsC;z!hGnSo3@h>T(bc2#iO_GrgOvY)%u)Wx3J*7a zgnv0ptsP^K_#0-*Ir0l23<|E~i|csBe;y z|CT#hJH{aK=PZ(Ue2ZlO~3C0)bQ$ih{`|z2$hd6Kj|8(yvR-be025bd?NJEMUMZ5Z4M}W zhMoBN=<3n=BTc`<2GsCs*oewMunCoqF5j>WRi0rbem=T-bUqRK4S109Kae@fA6eny z#*gstq^;JDF-ZIa-{c(m1>o`xCA_JQst7*Atb6v3R|Vnn42Ky~9QB0|dRQ~jzsQks(4IQU*A?#;x zU_s?Ku;J&Ut4HULIQ@SeP{Om}KPvwL16p{Z$vb>ORp0OpKObE^I-dyrQ@D}hf6_At z6u!ty{Csrv==_nU-}eD(c=bI*<)43q%14)S;O>Zppumo2t;yebHnSMX&>anu)r^MMQ(#}Z`zglUd5 Jkof|2jsRzk*%kl* literal 0 HcmV?d00001 diff --git a/.rocprofv3/442370-442439-counter_values.dat b/.rocprofv3/442370-442439-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..1c541c097e8cbd01d95fe4175eb0b38b14b27578 GIT binary patch literal 2312 zcmbQh00I8&PzI2SlQwij=Bx0a@~^R?@<04EKv5sWhAPka4^{qd0IEEfj-lgpE`M|M^}%|Cqn;R2_@A20`%pV@)RXMc#wXWnb*IGqb&KZ64c zD!+jZKObE^I)B9J|LcGfo(=y|`41S-!V^v2;R~wzhHv=!=<3n=MChNwjTHZro;jfK zMPB0PqpL^fk2L+h4^YFa?;$Gx{3BF8y8NVTsPZB=@$=Euqw|T-KNmUv8@4&1@ELaE z=cB7f=Z`e~4jWLzt6?K5|G*|xKDvCvGE{knmH7GS>e2Z`=r`a&%Kt#-D1T&yhZ{e_ zzY`;^9b=IA5ewuU`32ze4>+Y#9aRy0hRm literal 0 HcmV?d00001 diff --git a/.rocprofv3/442520-442590-counter_values.dat b/.rocprofv3/442520-442590-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..ba2ff3cc41b5b50ef37c590a62f0202e9a1eaf05 GIT binary patch literal 2312 zcmbQh00I8&PzI3lm}}sO%s)H@mA|(el|Q!#mCra8mH)dPmB0HUDnDa~f#Y;8g#8Q- zEU5ejHvD{a_2~Q&r~j`5N_aN>N98|YKnqVad515k>Kne{=cB7f=M$lS3O7>xPkQEn z!WVgopO3B{oj=m_`#wMoufB(<{PT}c`RMYKuA$0{+{DjESC7soLjPRk_;1+efWl|k ziJy(8-vv!O@;=9a}bL1C5$WIqabyP*-mu|IpyebHncR0k5;;1hK=K~oojwQ(a3DX>B JAoB(490BU{**5?H literal 0 HcmV?d00001 diff --git a/.rocprofv3/442520-442591-counter_values.dat b/.rocprofv3/442520-442591-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..65ab7e01e96ade5e38a233ab17abf750bcf4f571 GIT binary patch literal 2312 zcmbQh00I8&PzI3tX<+1t%-2*$<%^r5^7Z*q`7hDnyIk>Y>SGY1sD z$V>cuboJ=`k*44G0cv>lJw)Z7e}u|Mm!EVERbJ#Kem=T-bUqRK=OV{{!!`#LKEqD@ ze025b{E?>LVFPM-HEcxXAJ~M-N0)C{hAPjn5WAk%5@cvTQCe;}G6#Zg}f&IdAF97~Y-6Q()N KK;{e7IRXHPl-0BV literal 0 HcmV?d00001 diff --git a/.rocprofv3/442743-442812-counter_values.dat b/.rocprofv3/442743-442812-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..30e7d7cddd73e39f33db34d6afff69ec641f4149 GIT binary patch literal 2312 zcmbQh00I8&PzI3tlxpaR%wOk=%GZfQ}@}POb zLFG5F;pd~PN9T_?{eK-$!n5H&D*pikT6m(#JA6S^-|!7TA6-2L_W^2n^*u!8pMQkPN0*;;4OL#`CVoD;dUQS!`sX6Yf5SEh6h6aF z{Csrv==_nU-(dr4cr|Q9k{;NckVg9OaL!@NnZt z_*bjZ+A#)+uhApt$S;79e=nHosEWitvCH1^svunc!6AkeM|~kUAINZVEJ5Z^nC3VG JnJ-Z12mrk|*T(<= literal 0 HcmV?d00001 diff --git a/.rocprofv3/442743-442813-counter_values.dat b/.rocprofv3/442743-442813-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..762082740d311fa70c0f5f056c15b870b2917367 GIT binary patch literal 2312 zcmbQh00I8&PzI37b~kiH=6~}+}POb zLFG5F;pd~PN9T_?{eK-$!n5H&D*pikT6m(#JA6S^-|!7TA6-2L_W^2n^*u!8pMQkPN0*;;4OL#`CVoD;dUQS!`sX6Yf5SEh6h6aF z{Csrv==_nU-(dr4cr|Q9k{;NckVg9OaL!@NnZt z_?JJ!+A#)+Ur{FS$S(kwZ;%jAbyP+08SMM)9j^+)Px# literal 0 HcmV?d00001 diff --git a/.rocprofv3/443159-443229-counter_values.dat b/.rocprofv3/443159-443229-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..286d00eeb5338cb535f4016e9d7bbad51ac716a7 GIT binary patch literal 72 kcmZQ!fPm)$PzI2i?QQM&pAW$Yu~_&~`3sQvZ?cpf0m_91=Kufz literal 0 HcmV?d00001 diff --git a/.rocprofv3/443300-443369-counter_values.dat b/.rocprofv3/443300-443369-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..ee47d0bdc8dd1d860cd77e76a0f1cfd9681c02d1 GIT binary patch literal 72 lcmZQ!fPm)$PzI1%<7w^qpAW$Yu~_&~`3sQvv$iNZ0sze^1?~U< literal 0 HcmV?d00001 diff --git a/.rocprofv3/443300-443370-counter_values.dat b/.rocprofv3/443300-443370-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..1758022472893d2187cccdd7b82711a9ec76b7b5 GIT binary patch literal 72 kcmZQ!fPm)$PzI1vjIeh6&xhcHSSz>% literal 0 HcmV?d00001 diff --git a/.rocprofv3/443433-443503-counter_values.dat b/.rocprofv3/443433-443503-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..59e13bd83ea244fc428dabb1e39bed4f9ca03793 GIT binary patch literal 72 kcmZQ!fPm)$PzI0^<+O49&xhcHSSC0LSJ9E&u=k literal 0 HcmV?d00001 diff --git a/.rocprofv3/443805-443874-counter_values.dat b/.rocprofv3/443805-443874-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..a7d89ec417bdf4a7593904ff06cb019469979292 GIT binary patch literal 72 kcmZQ!fPm)$PzI1<-EHmopAW$Yu~_&~`3sQvBFB^+0l*OjMF0Q* literal 0 HcmV?d00001 diff --git a/.rocprofv3/443805-443875-counter_values.dat b/.rocprofv3/443805-443875-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..732cd0cb19598b7eafeaef935d9b0802ecc8b905 GIT binary patch literal 72 kcmZQ!fPm)$PzI2a39xqj&xhcHSSTB)zpAW$Yu~_&~`3sQv6S`C!0n%j!*Z=?k literal 0 HcmV?d00001 diff --git a/.rocprofv3/444356-444430-counter_values.dat b/.rocprofv3/444356-444430-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/444356-444431-counter_values.dat b/.rocprofv3/444356-444431-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/444534-444614-counter_values.dat b/.rocprofv3/444534-444614-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/444534-444615-counter_values.dat b/.rocprofv3/444534-444615-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/444714-444783-counter_values.dat b/.rocprofv3/444714-444783-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/444714-444784-counter_values.dat b/.rocprofv3/444714-444784-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/444848-444917-counter_values.dat b/.rocprofv3/444848-444917-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/444848-444918-counter_values.dat b/.rocprofv3/444848-444918-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/444981-445052-counter_values.dat b/.rocprofv3/444981-445052-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/444981-445053-counter_values.dat b/.rocprofv3/444981-445053-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/445122-445191-counter_values.dat b/.rocprofv3/445122-445191-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/445122-445192-counter_values.dat b/.rocprofv3/445122-445192-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/445274-445343-counter_values.dat b/.rocprofv3/445274-445343-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/445274-445344-counter_values.dat b/.rocprofv3/445274-445344-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/445420-445489-counter_values.dat b/.rocprofv3/445420-445489-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/445420-445490-counter_values.dat b/.rocprofv3/445420-445490-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/445643-445712-counter_values.dat b/.rocprofv3/445643-445712-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/445643-445713-counter_values.dat b/.rocprofv3/445643-445713-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/445776-445845-counter_values.dat b/.rocprofv3/445776-445845-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/445776-445846-counter_values.dat b/.rocprofv3/445776-445846-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c389f3e7d7fbf533873352a1be566befe5c9d306 GIT binary patch literal 24 QcmZQ%fB*r0C<96X00I#JApigX literal 0 HcmV?d00001 diff --git a/.rocprofv3/445962-446031-counter_values.dat b/.rocprofv3/445962-446031-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..ccbd3271855624977f450ef0f274d4d23cc56112 GIT binary patch literal 200 zcmd;KfB=7XC<91MJ7M66%s;Ucl`nf3m49m$DnDx%DxZ5jDqsE!D!==VfukEg!hYr^ eYsUph{Cf$?j{E{}`2z+*sg9}$KEtjZ_KpCmPZxCn literal 0 HcmV?d00001 diff --git a/.rocprofv3/445962-446032-counter_values.dat b/.rocprofv3/445962-446032-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..8c7c9fddfe47cd6d4f34bbb961b9551ac9fd6792 GIT binary patch literal 200 zcmd;KfB=7XC<90dwHi4h^DEj=`E@<0{Ac;7e2-dG{(@{&{=?ms<*Qsq<+p!Csz&%8vX3aQO%OMN%DA5qt)NCH9U0H6j*; literal 0 HcmV?d00001 diff --git a/.rocprofv3/446105-446213-counter_values.dat b/.rocprofv3/446105-446213-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..4e413836dcf54e7ea3dc2048e22a70602a236a98 GIT binary patch literal 200 zcmd;KfB=7XC<92bIvY76^AB2}@*_P^`GR_=d}$+8zOXJT|8o&4e@l#!qZ>cMev5u< d#|23Is45jlegU}rgCN0FM^yx$;maO-M*v2i6J-DZ literal 0 HcmV?d00001 diff --git a/.rocprofv3/446321-446391-counter_values.dat b/.rocprofv3/446321-446391-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..5ac0ce77aa0113937891703f827c784c93c17f02 GIT binary patch literal 200 zcmd;KfB=7XC<912`x!bS^S?Qw^4(og`L|V2`Dp>Dd>Io|enbx{KcU3X(TyKr|EX+i b#|21yuRF?)`~nF1$HJ+Osz`j@)%K162SO9& literal 0 HcmV?d00001 diff --git a/.rocprofv3/446321-446392-counter_values.dat b/.rocprofv3/446321-446392-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..40d4e0e9f094ec6a1b35a931fcf516d63b627665 GIT binary patch literal 200 zcmd;KfB=7XC<90ZJvDSh<{x;1%K!Ebm7jhAmA~gYDqsHuD&Jbe2*vzWUkx4I_!0I? fWLi5eK;ny}sW|crz~vj-#Zw(s5qt)oZhJ=n8Nn9c literal 0 HcmV?d00001 diff --git a/.rocprofv3/446453-446525-counter_values.dat b/.rocprofv3/446453-446525-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..c4c0e9d0cc5b1a7a879316ce30f70ec4fbc14cf3 GIT binary patch literal 200 zcmd;KfB=7XC<90x)-iNM<}X)7<^MEB<)30lW5dc;W6l4GZ literal 0 HcmV?d00001 diff --git a/.rocprofv3/446453-446526-counter_values.dat b/.rocprofv3/446453-446526-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..4a6e77b7b54424a00e1b6cf26dd322f9f49b6c5a GIT binary patch literal 200 zcmd;KfB=7XC<91w)EGG;^Iun@@~bAJ@~!ev`EN2&`EC)Y{HBele4pt?j&A%2`{%n^ dJ1#)tXM9j`L{0RHc fgjqW-K;p}(s5<~4Lg<{$fGfWqIwj4Ge?1y!Dp4^@88KUDd62UPhF+J=s9{0RG- f9IPD|An|8>P+Br?0y-8c literal 0 HcmV?d00001 diff --git a/.rocprofv3/446901-446971-counter_values.dat b/.rocprofv3/446901-446971-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..3fb24c9a5bfb47a60f85fbd5ba5ca169903e4d57 GIT binary patch literal 200 zcmd;KfB=7XC<91E+%#Q9YAn~0zR2=yQ5b|z(sg9~h{C`*M9RWcD7B2t* literal 0 HcmV?d00001 diff --git a/.rocprofv3/447032-447102-counter_values.dat b/.rocprofv3/447032-447102-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..b9b202aeb83a885c5b74b437a62a8eb219f5967e GIT binary patch literal 200 zcmd;KfB=7XC<92DN*g&M^AB*N@(mqNv{`f+}Cjj>=!}iOO%ZFmiO`N7%0$ fWbL>BiLdfY*^yrWF5jRmk?N?5;4_$Y+B*UO)PNHP literal 0 HcmV?d00001 diff --git a/.rocprofv3/447032-447103-counter_values.dat b/.rocprofv3/447032-447103-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..56c8a143bd3430045c0e2673414a2bc8cf91be3d GIT binary patch literal 200 zcmd;KfB=7XC<90pMH)IH^OMq0`Ftg){P`iM{I_nX{9hKR{GC%#`N?I5j&A%2`&n|W d9Ty<+cbKa<@(aM_6cMez{_6 d#|23IWBZjI`32ze4ne}Hj;aVg!_xKkjsP1j6e|D# literal 0 HcmV?d00001 diff --git a/.rocprofv3/447260-447330-counter_values.dat b/.rocprofv3/447260-447330-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..ca1557e1fbe61089324db469358afe6ff9b9b616 GIT binary patch literal 200 zcmd;KfB=7XC<90ZE;DpQ=FeM>%HOySmH%@xDnDZ`Dqp4(m4D$jD*wbTLq|7$g#AZn fSvxL3;;(z5?8q+wmtW8(km{(4;4_3Aws!;o>iih% literal 0 HcmV?d00001 diff --git a/.rocprofv3/447393-447462-counter_values.dat b/.rocprofv3/447393-447462-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..ceaa85c61143a93b65f6ce8d5d8ef519410049f8 GIT binary patch literal 200 zcmd;KfB=7XC<90>sWWs$=Ii93@}p`|`S}s3e5-m?zC#)+zi%@tUv;LTqZ>cMe#;zd d#|21yBMB8pegU|A!&l){M^yx$p<$K1BLE@j6axSN literal 0 HcmV?d00001 diff --git a/.rocprofv3/447393-447463-counter_values.dat b/.rocprofv3/447393-447463-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..796c20e0c27d49cd66ef63c577a003e6b94a9b8a GIT binary patch literal 200 zcmd;KfB=7XC<92PRT?=W^ZBY!`R%=^{J=6)zF0mgzc2xne|se=|3;^gqZ>cMeup4y d#|23IKc`e2`32ze2YMt^9aRy0h67dhjsSTF7AOD! literal 0 HcmV?d00001 diff --git a/.rocprofv3/447524-447593-counter_values.dat b/.rocprofv3/447524-447593-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..68d2062941ac00f9f55b1fe31aaa5b99ae738d09 GIT binary patch literal 56 gcmZQ(fPm)$PzI1HS!V4hz>naASTRWaCAZ}q0d{Ew`2YX_ literal 0 HcmV?d00001 diff --git a/.rocprofv3/447524-447594-counter_values.dat b/.rocprofv3/447524-447594-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..8a844f978c893466561a757307016b35f401c4c7 GIT binary patch literal 56 gcmZQ(fPm)$PzI37FR^wM;79O5tQaKzgJtrL0Bk5dZ)H literal 0 HcmV?d00001 diff --git a/.rocprofv3/447799-447869-counter_values.dat b/.rocprofv3/447799-447869-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..8dbb391218bdcfcde8aaa92f344ba917d5a660af GIT binary patch literal 56 gcmZQ(fPm)$PzI3NdeGWYfFHpJv0{+;5nb|*0D&C@xc~qF literal 0 HcmV?d00001 diff --git a/.rocprofv3/447930-448000-counter_values.dat b/.rocprofv3/447930-448000-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..052a5de512b99997850cf64eaf737e8b38bf8eba GIT binary patch literal 56 gcmZQ(fPm)$PzI1Hud;R&;79O5tQaJI!Am(u0B|b=ssI20 literal 0 HcmV?d00001 diff --git a/.rocprofv3/447930-448001-counter_values.dat b/.rocprofv3/447930-448001-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..eeb730d1dfe7e79c4d1d70b1f15abe26ed4825c7 GIT binary patch literal 56 gcmZQ(fPm)$PzI2?>}BmJz>naASTRWaoJ;bK0CqS8yZ`_I literal 0 HcmV?d00001 diff --git a/.rocprofv3/448159-448228-counter_values.dat b/.rocprofv3/448159-448228-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..f8a9f33d75be5800e8e108b85e182d54071e09d7 GIT binary patch literal 56 gcmZQ(fPm)$PzI1X5o+xyz>naASTRWa9Y^FG0e3M3`2YX_ literal 0 HcmV?d00001 diff --git a/.rocprofv3/448159-448229-counter_values.dat b/.rocprofv3/448159-448229-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..593e73f542c6b3d1cc9f05d2ba6e711573b61667 GIT binary patch literal 56 gcmZQ(fPm)$PzI1%Rc`Glz>naASTRWaH+k}o0C#T$+yDRo literal 0 HcmV?d00001 diff --git a/.rocprofv3/448301-448370-counter_values.dat b/.rocprofv3/448301-448370-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..36c2694bf851fd094ddd418c8e3c8ff6468f849e GIT binary patch literal 56 gcmZQ(fPm)$PzI2S@3eLl;79O5tQaJ|&vQ9P0B%AAdjJ3c literal 0 HcmV?d00001 diff --git a/.rocprofv3/448301-448371-counter_values.dat b/.rocprofv3/448301-448371-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..25c769cf367d026cd0c8f1ae2222a24d80297a04 GIT binary patch literal 56 gcmZQ(fPm)$PzI3NnrQ7Pz>naASTRU^fj)Uh0CMRB6#xJL literal 0 HcmV?d00001 diff --git a/.rocprofv3/448432-448501-counter_values.dat b/.rocprofv3/448432-448501-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..8b5ba221fe629e27d88e9e221cba538ab769e942 GIT binary patch literal 56 gcmZQ(fPm)$PzI2)tFU$y;79O5tQaKzlml{(0B80DY5)KL literal 0 HcmV?d00001 diff --git a/.rocprofv3/448432-448502-counter_values.dat b/.rocprofv3/448432-448502-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..9aff487ec51e81ce9a062d0e728d739bbb9efa6e GIT binary patch literal 56 gcmZQ(fPm)$PzI1Xk!0;Cz>naASTRU^mR5O30CjBy6aWAK literal 0 HcmV?d00001 diff --git a/.rocprofv3/448572-448641-counter_values.dat b/.rocprofv3/448572-448641-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..e0be2d7e54fbbbc1e68210b9e3ab62ba84d48dee GIT binary patch literal 56 gcmZQ(fPm)$PzI1%lw<8Ez>naASTRWa4MlQ}0CVUBkN^Mx literal 0 HcmV?d00001 diff --git a/.rocprofv3/448572-448642-counter_values.dat b/.rocprofv3/448572-448642-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..9e3b90b937689710a66125a16b80234a96ee588b GIT binary patch literal 56 gcmZQ(fPm)$PzI1%k!|fLz>naASTRWaKYj9!0Cpn;{r~^~ literal 0 HcmV?d00001 diff --git a/.rocprofv3/448704-448781-counter_values.dat b/.rocprofv3/448704-448781-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..ddd2584658ae1d916a844bdc1aea737a55c56a11 GIT binary patch literal 56 gcmZQ(fPm)$PzI3FO|fnaASTRWaFDv960e;^FOaK4? literal 0 HcmV?d00001 diff --git a/.rocprofv3/448846-448921-counter_values.dat b/.rocprofv3/448846-448921-counter_values.dat new file mode 100644 index 0000000000000000000000000000000000000000..e8c5039f6575cccb880f670b07f6c84567eb0eca GIT binary patch literal 56 gcmZQ(fPm)$PzI3Fcd>R9;79O5tQaJ|#}#=;0A0)j@Bjb+ literal 0 HcmV?d00001 diff --git a/docs/profiling/example07_gemm_all_scatter.md b/docs/profiling/example07_gemm_all_scatter.md new file mode 100644 index 000000000..f77ac3d80 --- /dev/null +++ b/docs/profiling/example07_gemm_all_scatter.md @@ -0,0 +1,106 @@ +# Example 07: GEMM All-Scatter — IntelliKit Profiling Report + +## Overview + +This report presents the IntelliKit Metrix profiling results for **Example 07: GEMM All-Scatter**, which performs distributed matrix multiplication with all-scatter communication across multiple AMD GPUs. + +**Environment:** +- GPUs: 2× AMD Radeon Graphics (gfx942 / MI300X) +- Matrix dimensions: M=4096, N=4096, K=4096 +- Data type: FP16 +- Algorithm: persistent GEMM with fused all-scatter + +--- + +## Benchmark Results + +Run with validation and benchmarking enabled: + +```bash +torchrun --nproc_per_node=2 examples/07_gemm_all_scatter/benchmark.py \ + -m 4096 -n 4096 -k 4096 --validate --benchmark +``` + +| Metric | Value | +|--------|-------| +| Validation | ✅ Passed | +| Performance | **~202.9 TFLOPS** | +| Total time (comm + compute) | **0.677 ms** | +| GEMM kernel time | **0.536 ms** | + +--- + +## IntelliKit Metrix Profiling + +Profiled using Metrix with `--kernel persistent_gemm_all_scatter` filter, 10 replays. + +### Timing + +| Stat | Value | +|------|-------| +| Min duration | 518 μs | +| Max duration | 597 μs | +| **Avg duration** | **~543 μs** | + +### Compute Metrics + +| Metric | Value | +|--------|-------| +| Total FLOPs | 68.7 GFLOPs | +| **HBM GFLOPS (throughput)** | **~126,339 GFLOPS (~126 TFLOPS)** | +| HBM arithmetic intensity | **~257 FLOPs/byte** | +| L2 arithmetic intensity | ~40.9 FLOPs/byte | +| L1 arithmetic intensity | ~17.0 FLOPs/byte | + +### Memory Metrics + +| Metric | Value | Interpretation | +|--------|-------|----------------| +| **HBM bandwidth utilization** | **~1.16%** | Compute-bound (not memory-bound) | +| HBM read bandwidth | ~53.1 GB/s | Low — data reused from L2/L1 | +| HBM write bandwidth | ~8.6 GB/s | Low output writes | +| **L2 hit rate** | **~84.2%** | Excellent L2 data reuse | +| **L1 hit rate** | **~66.7%** | Good L1 data reuse | +| L2 bandwidth | ~388 GB/s | Active L2 caching | +| Coalescing efficiency | 25.0% | Expected for tiled GEMM | +| Global load efficiency | ~12.5% | Tile-based strided access | +| Global store efficiency | 6.25% | Output scatter writes | +| **LDS bank conflicts** | **0** | Excellent shared memory usage | +| Atomic latency | 0 | No atomics in critical path | + +--- + +## Analysis + +### The kernel is **compute-bound** + +The HBM arithmetic intensity of **~257 FLOPs/byte** is well above the machine balance (~20 FLOPs/byte for MI300X with ~4 TB/s HBM3 bandwidth). This confirms the GEMM kernel is in the compute-bound regime, which is the desired operating point for large GEMMs. + +### Cache efficiency is high + +- **L2 hit rate of 84.2%** — the tiled access pattern reuses operand tiles from L2 effectively. +- **L1 hit rate of 66.7%** — inner-loop reuse keeps data in the fast L1 cache. +- **Zero LDS bank conflicts** — the shared memory (LDS) layout avoids bank conflicts completely, a key optimization for high-throughput GEMM. + +### Low coalescing efficiency is expected + +The 25% coalescing efficiency and ~12.5% global load efficiency reflect the block-tiled access pattern inherent in GEMM kernels — the hardware reads full cache lines but only a fraction is used per cycle. This is standard behavior and is offset by the high arithmetic intensity. + +### Communication overhead + +The all-scatter communication (NCCL) adds overhead on top of the GEMM: +- GEMM kernel: ~543 μs (avg profiled) +- Total wall time: ~677 μs (including communication) +- Communication overhead: ~134 μs (~20% of total) + +--- + +## Summary + +The `persistent_gemm_all_scatter` kernel achieves **~126 TFLOPS per GPU** (202 TFLOPS aggregate across 2 GPUs) on MI300X with: +- Excellent compute utilization in the compute-bound regime +- High cache hit rates (L2: 84%, L1: 67%) +- Zero LDS bank conflicts +- Communication adding ~20% overhead on top of pure compute + +The kernel is well-optimized for compute throughput. The primary opportunity for further improvement would be to reduce communication latency, which currently accounts for ~20% of total runtime. From 329e4e46d8d212d984377aa036753aa84fb47c86 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Mar 2026 15:47:36 +0000 Subject: [PATCH 3/3] Remove profiling artifacts from tracking, add to .gitignore Co-authored-by: JoseSantosAMD <87447437+JoseSantosAMD@users.noreply.github.com> --- .agents/skills/accordo/SKILL.md | 68 -------------- .agents/skills/linex/SKILL.md | 98 -------------------- .agents/skills/metrix/SKILL.md | 76 --------------- .agents/skills/nexus/SKILL.md | 74 --------------- .gitignore | 3 + .intellikit | 1 - .rocprofv3/435992-436061-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/435992-436062-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/436125-436195-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/436125-436196-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/436266-436337-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/436266-436338-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/436403-436481-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/436403-436482-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/436543-436612-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/436543-436613-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/436801-437681-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/436801-437682-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/439023-439093-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/439023-439094-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/439155-439226-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/439155-439227-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/439300-439370-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/439300-439371-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/439437-439506-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/439437-439507-counter_values.dat | Bin 4184 -> 0 bytes .rocprofv3/439592-439661-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/439592-439662-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/439745-439817-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/439745-439818-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/439964-440033-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/439964-440034-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/440120-440205-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/440120-440206-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/440277-440346-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/440277-440347-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/440421-440491-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/440421-440492-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/440591-440662-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/440591-440663-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/440734-440803-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/440734-440804-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/440940-441024-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/440940-441025-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/441095-441164-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/441095-441165-counter_values.dat | Bin 4136 -> 0 bytes .rocprofv3/441278-441361-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/441278-441362-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/441426-441501-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/441426-441502-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/441582-441691-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/441582-441692-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/441796-441865-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/441796-441866-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/441931-442004-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/441931-442005-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/442078-442151-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/442078-442152-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/442221-442292-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/442221-442293-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/442370-442439-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/442370-442440-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/442520-442590-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/442520-442591-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/442743-442812-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/442743-442813-counter_values.dat | Bin 2312 -> 0 bytes .rocprofv3/442881-442950-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/442881-442951-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/443017-443086-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/443017-443087-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/443159-443228-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/443159-443229-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/443300-443369-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/443300-443370-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/443433-443502-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/443433-443503-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/443662-443732-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/443662-443733-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/443805-443874-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/443805-443875-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/443938-444009-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/443938-444010-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/444079-444148-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/444079-444149-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/444221-444290-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/444221-444291-counter_values.dat | Bin 72 -> 0 bytes .rocprofv3/444356-444430-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/444356-444431-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/444534-444614-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/444534-444615-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/444714-444783-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/444714-444784-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/444848-444917-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/444848-444918-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/444981-445052-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/444981-445053-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/445122-445191-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/445122-445192-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/445274-445343-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/445274-445344-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/445420-445489-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/445420-445490-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/445643-445712-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/445643-445713-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/445776-445845-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/445776-445846-counter_values.dat | Bin 24 -> 0 bytes .rocprofv3/445962-446031-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/445962-446032-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/446105-446212-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/446105-446213-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/446321-446391-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/446321-446392-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/446453-446525-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/446453-446526-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/446602-446676-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/446602-446677-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/446747-446820-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/446747-446821-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/446901-446970-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/446901-446971-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/447032-447102-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/447032-447103-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/447260-447329-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/447260-447330-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/447393-447462-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/447393-447463-counter_values.dat | Bin 200 -> 0 bytes .rocprofv3/447524-447593-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/447524-447594-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/447659-447729-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/447659-447730-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/447799-447868-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/447799-447869-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/447930-448000-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/447930-448001-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/448159-448228-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/448159-448229-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/448301-448370-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/448301-448371-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/448432-448501-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/448432-448502-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/448572-448641-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/448572-448642-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/448704-448781-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/448704-448782-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/448846-448920-counter_values.dat | Bin 56 -> 0 bytes .rocprofv3/448846-448921-counter_values.dat | Bin 56 -> 0 bytes 146 files changed, 3 insertions(+), 317 deletions(-) delete mode 100644 .agents/skills/accordo/SKILL.md delete mode 100644 .agents/skills/linex/SKILL.md delete mode 100644 .agents/skills/metrix/SKILL.md delete mode 100644 .agents/skills/nexus/SKILL.md delete mode 160000 .intellikit delete mode 100644 .rocprofv3/435992-436061-counter_values.dat delete mode 100644 .rocprofv3/435992-436062-counter_values.dat delete mode 100644 .rocprofv3/436125-436195-counter_values.dat delete mode 100644 .rocprofv3/436125-436196-counter_values.dat delete mode 100644 .rocprofv3/436266-436337-counter_values.dat delete mode 100644 .rocprofv3/436266-436338-counter_values.dat delete mode 100644 .rocprofv3/436403-436481-counter_values.dat delete mode 100644 .rocprofv3/436403-436482-counter_values.dat delete mode 100644 .rocprofv3/436543-436612-counter_values.dat delete mode 100644 .rocprofv3/436543-436613-counter_values.dat delete mode 100644 .rocprofv3/436801-437681-counter_values.dat delete mode 100644 .rocprofv3/436801-437682-counter_values.dat delete mode 100644 .rocprofv3/439023-439093-counter_values.dat delete mode 100644 .rocprofv3/439023-439094-counter_values.dat delete mode 100644 .rocprofv3/439155-439226-counter_values.dat delete mode 100644 .rocprofv3/439155-439227-counter_values.dat delete mode 100644 .rocprofv3/439300-439370-counter_values.dat delete mode 100644 .rocprofv3/439300-439371-counter_values.dat delete mode 100644 .rocprofv3/439437-439506-counter_values.dat delete mode 100644 .rocprofv3/439437-439507-counter_values.dat delete mode 100644 .rocprofv3/439592-439661-counter_values.dat delete mode 100644 .rocprofv3/439592-439662-counter_values.dat delete mode 100644 .rocprofv3/439745-439817-counter_values.dat delete mode 100644 .rocprofv3/439745-439818-counter_values.dat delete mode 100644 .rocprofv3/439964-440033-counter_values.dat delete mode 100644 .rocprofv3/439964-440034-counter_values.dat delete mode 100644 .rocprofv3/440120-440205-counter_values.dat delete mode 100644 .rocprofv3/440120-440206-counter_values.dat delete mode 100644 .rocprofv3/440277-440346-counter_values.dat delete mode 100644 .rocprofv3/440277-440347-counter_values.dat delete mode 100644 .rocprofv3/440421-440491-counter_values.dat delete mode 100644 .rocprofv3/440421-440492-counter_values.dat delete mode 100644 .rocprofv3/440591-440662-counter_values.dat delete mode 100644 .rocprofv3/440591-440663-counter_values.dat delete mode 100644 .rocprofv3/440734-440803-counter_values.dat delete mode 100644 .rocprofv3/440734-440804-counter_values.dat delete mode 100644 .rocprofv3/440940-441024-counter_values.dat delete mode 100644 .rocprofv3/440940-441025-counter_values.dat delete mode 100644 .rocprofv3/441095-441164-counter_values.dat delete mode 100644 .rocprofv3/441095-441165-counter_values.dat delete mode 100644 .rocprofv3/441278-441361-counter_values.dat delete mode 100644 .rocprofv3/441278-441362-counter_values.dat delete mode 100644 .rocprofv3/441426-441501-counter_values.dat delete mode 100644 .rocprofv3/441426-441502-counter_values.dat delete mode 100644 .rocprofv3/441582-441691-counter_values.dat delete mode 100644 .rocprofv3/441582-441692-counter_values.dat delete mode 100644 .rocprofv3/441796-441865-counter_values.dat delete mode 100644 .rocprofv3/441796-441866-counter_values.dat delete mode 100644 .rocprofv3/441931-442004-counter_values.dat delete mode 100644 .rocprofv3/441931-442005-counter_values.dat delete mode 100644 .rocprofv3/442078-442151-counter_values.dat delete mode 100644 .rocprofv3/442078-442152-counter_values.dat delete mode 100644 .rocprofv3/442221-442292-counter_values.dat delete mode 100644 .rocprofv3/442221-442293-counter_values.dat delete mode 100644 .rocprofv3/442370-442439-counter_values.dat delete mode 100644 .rocprofv3/442370-442440-counter_values.dat delete mode 100644 .rocprofv3/442520-442590-counter_values.dat delete mode 100644 .rocprofv3/442520-442591-counter_values.dat delete mode 100644 .rocprofv3/442743-442812-counter_values.dat delete mode 100644 .rocprofv3/442743-442813-counter_values.dat delete mode 100644 .rocprofv3/442881-442950-counter_values.dat delete mode 100644 .rocprofv3/442881-442951-counter_values.dat delete mode 100644 .rocprofv3/443017-443086-counter_values.dat delete mode 100644 .rocprofv3/443017-443087-counter_values.dat delete mode 100644 .rocprofv3/443159-443228-counter_values.dat delete mode 100644 .rocprofv3/443159-443229-counter_values.dat delete mode 100644 .rocprofv3/443300-443369-counter_values.dat delete mode 100644 .rocprofv3/443300-443370-counter_values.dat delete mode 100644 .rocprofv3/443433-443502-counter_values.dat delete mode 100644 .rocprofv3/443433-443503-counter_values.dat delete mode 100644 .rocprofv3/443662-443732-counter_values.dat delete mode 100644 .rocprofv3/443662-443733-counter_values.dat delete mode 100644 .rocprofv3/443805-443874-counter_values.dat delete mode 100644 .rocprofv3/443805-443875-counter_values.dat delete mode 100644 .rocprofv3/443938-444009-counter_values.dat delete mode 100644 .rocprofv3/443938-444010-counter_values.dat delete mode 100644 .rocprofv3/444079-444148-counter_values.dat delete mode 100644 .rocprofv3/444079-444149-counter_values.dat delete mode 100644 .rocprofv3/444221-444290-counter_values.dat delete mode 100644 .rocprofv3/444221-444291-counter_values.dat delete mode 100644 .rocprofv3/444356-444430-counter_values.dat delete mode 100644 .rocprofv3/444356-444431-counter_values.dat delete mode 100644 .rocprofv3/444534-444614-counter_values.dat delete mode 100644 .rocprofv3/444534-444615-counter_values.dat delete mode 100644 .rocprofv3/444714-444783-counter_values.dat delete mode 100644 .rocprofv3/444714-444784-counter_values.dat delete mode 100644 .rocprofv3/444848-444917-counter_values.dat delete mode 100644 .rocprofv3/444848-444918-counter_values.dat delete mode 100644 .rocprofv3/444981-445052-counter_values.dat delete mode 100644 .rocprofv3/444981-445053-counter_values.dat delete mode 100644 .rocprofv3/445122-445191-counter_values.dat delete mode 100644 .rocprofv3/445122-445192-counter_values.dat delete mode 100644 .rocprofv3/445274-445343-counter_values.dat delete mode 100644 .rocprofv3/445274-445344-counter_values.dat delete mode 100644 .rocprofv3/445420-445489-counter_values.dat delete mode 100644 .rocprofv3/445420-445490-counter_values.dat delete mode 100644 .rocprofv3/445643-445712-counter_values.dat delete mode 100644 .rocprofv3/445643-445713-counter_values.dat delete mode 100644 .rocprofv3/445776-445845-counter_values.dat delete mode 100644 .rocprofv3/445776-445846-counter_values.dat delete mode 100644 .rocprofv3/445962-446031-counter_values.dat delete mode 100644 .rocprofv3/445962-446032-counter_values.dat delete mode 100644 .rocprofv3/446105-446212-counter_values.dat delete mode 100644 .rocprofv3/446105-446213-counter_values.dat delete mode 100644 .rocprofv3/446321-446391-counter_values.dat delete mode 100644 .rocprofv3/446321-446392-counter_values.dat delete mode 100644 .rocprofv3/446453-446525-counter_values.dat delete mode 100644 .rocprofv3/446453-446526-counter_values.dat delete mode 100644 .rocprofv3/446602-446676-counter_values.dat delete mode 100644 .rocprofv3/446602-446677-counter_values.dat delete mode 100644 .rocprofv3/446747-446820-counter_values.dat delete mode 100644 .rocprofv3/446747-446821-counter_values.dat delete mode 100644 .rocprofv3/446901-446970-counter_values.dat delete mode 100644 .rocprofv3/446901-446971-counter_values.dat delete mode 100644 .rocprofv3/447032-447102-counter_values.dat delete mode 100644 .rocprofv3/447032-447103-counter_values.dat delete mode 100644 .rocprofv3/447260-447329-counter_values.dat delete mode 100644 .rocprofv3/447260-447330-counter_values.dat delete mode 100644 .rocprofv3/447393-447462-counter_values.dat delete mode 100644 .rocprofv3/447393-447463-counter_values.dat delete mode 100644 .rocprofv3/447524-447593-counter_values.dat delete mode 100644 .rocprofv3/447524-447594-counter_values.dat delete mode 100644 .rocprofv3/447659-447729-counter_values.dat delete mode 100644 .rocprofv3/447659-447730-counter_values.dat delete mode 100644 .rocprofv3/447799-447868-counter_values.dat delete mode 100644 .rocprofv3/447799-447869-counter_values.dat delete mode 100644 .rocprofv3/447930-448000-counter_values.dat delete mode 100644 .rocprofv3/447930-448001-counter_values.dat delete mode 100644 .rocprofv3/448159-448228-counter_values.dat delete mode 100644 .rocprofv3/448159-448229-counter_values.dat delete mode 100644 .rocprofv3/448301-448370-counter_values.dat delete mode 100644 .rocprofv3/448301-448371-counter_values.dat delete mode 100644 .rocprofv3/448432-448501-counter_values.dat delete mode 100644 .rocprofv3/448432-448502-counter_values.dat delete mode 100644 .rocprofv3/448572-448641-counter_values.dat delete mode 100644 .rocprofv3/448572-448642-counter_values.dat delete mode 100644 .rocprofv3/448704-448781-counter_values.dat delete mode 100644 .rocprofv3/448704-448782-counter_values.dat delete mode 100644 .rocprofv3/448846-448920-counter_values.dat delete mode 100644 .rocprofv3/448846-448921-counter_values.dat diff --git a/.agents/skills/accordo/SKILL.md b/.agents/skills/accordo/SKILL.md deleted file mode 100644 index 808c73ef9..000000000 --- a/.agents/skills/accordo/SKILL.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -name: accordo-validation -description: Validate GPU kernel correctness by comparing reference and optimized outputs. Use when verifying that an optimized or modified kernel matches a reference implementation. ---- - -# Accordo: GPU Kernel Validation - -Capture and compare kernel outputs from reference and optimized binaries to validate correctness. Uses kernelDB for automatic kernel extraction; supports configurable tolerance and execution-time comparison. - -## When to Use - -- User has a reference and an optimized (or modified) GPU kernel and wants to check they produce the same results -- Regression testing after kernel or build changes -- Validating multiple optimization variants against one baseline - -## Instructions - -1. **Require two or more binaries:** one reference (e.g. `./app_ref`) and one or more to validate (e.g. `./app_opt`). All must expose the same kernel by name. -2. **Ensure binaries are built with debug symbols** (`-g`) so kernel arguments can be extracted. -3. **Choose execution path:** - - If an Accordo MCP server is available, call its `validate_kernel_correctness` tool, which performs capture-and-compare with the same semantics described below. - - Otherwise use the Python API from the environment where Accordo is installed. - -### Python API - -```python -from accordo import Accordo - -# Validator for the kernel to validate (binary used to extract signature) -validator = Accordo(binary="./app_ref", kernel_name="reduce_sum") - -# Optional: set working directory if binaries expect it -validator = Accordo(binary="./app_ref", kernel_name="reduce_sum", working_directory="./run") - -# Capture snapshots -ref = validator.capture_snapshot(binary="./app_ref") -opt = validator.capture_snapshot(binary="./app_opt") - -# Compare with tolerance (default 1e-6) -result = validator.compare_snapshots(ref, opt, tolerance=1e-6) - -if result.is_valid: - print("PASS:", result.num_arrays_validated, "arrays matched") -else: - print(result.summary()) -``` - -For multiple optimizations, capture the reference once and compare each optimized snapshot against it. - -### Snapshot and result attributes - -- **Snapshot:** `arrays`, `execution_time_ms`, `grid_size`, `block_size` -- **ValidationResult:** `is_valid`, `num_arrays_validated`, `num_mismatches`, `mismatches`, `success_rate`; use `summary()` for a human-readable report. - -## Workflow - -1. Build reference and optimized binaries with the same kernel name and `-g`. -2. Create an `Accordo(binary=ref_binary, kernel_name="...")` validator; set `working_directory` if needed. -3. Capture reference snapshot with `capture_snapshot(binary=ref_binary)`. -4. For each variant, capture with `capture_snapshot(binary=opt_binary)` and compare with `compare_snapshots(ref, opt, tolerance=...)`. -5. If `result.is_valid` is false, use `result.summary()` and `result.mismatches` to diagnose. -6. Use relative paths for binaries and working directory so the skill is portable. - -## Notes - -- kernelDB is used automatically; no separate kernelDB setup is required when using the Python API. -- Increase `tolerance` for floating-point comparisons when appropriate (e.g. 1e-4 or 1e-5 for single precision). -- Use `timeout_seconds` in `capture_snapshot` if the run may hang. diff --git a/.agents/skills/linex/SKILL.md b/.agents/skills/linex/SKILL.md deleted file mode 100644 index dca5b7d6d..000000000 --- a/.agents/skills/linex/SKILL.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -name: linex-profiling -description: Profile GPU kernels at source-line granularity with cycle-level timing and stall analysis. Use when identifying performance hotspots at the source code level or analyzing instruction-level metrics mapped to source lines. ---- - -# Linex: Source-Level GPU Performance Profiling - -Map GPU performance metrics to your source code lines. Get cycle-level timing, stall analysis, and instruction-level metrics for each line of source code. - -## When to Use - -- User asks to profile a GPU application at source-line granularity -- Need to identify which specific lines of code are performance bottlenecks -- Analyzing stall patterns and execution bottlenecks at the source level -- Understanding cycle-level timing for each line of code -- Instruction-level analysis mapped to source lines - -## Instructions - -1. **Ensure the target runs on AMD ROCm 7.0+** with `rocprofv3` available. -2. **Kernels must be compiled with `-g`** (debug symbols) for source mapping. -3. **Choose execution path:** - - If a Linex MCP server is available, use its MCP tools: - - `profile_application` to run and profile a target application with the options below. - - `analyze_instruction_hotspots` to perform instruction-level hotspot analysis on collected profiles. - - Otherwise use the Python API from the environment where Linex is installed. - -### Python API - -```python -from linex import Linex - -profiler = Linex( - target_cu=0, # Target compute unit - shader_engine_mask="0xFFFFFFFF", # All shader engines - activity=10, # Activity counter polling -) - -profiler.profile("./my_app", kernel_filter="my_kernel") - -# Show hotspots (sorted by total_cycles) -for line in profiler.source_lines[:5]: - print(f"{line.file}:{line.line_number}") - print(f" {line.total_cycles:,} cycles ({line.stall_percent:.1f}% stalled)") - print(f" Executed {line.execution_count} times") - -# Find memory-bound lines -memory_bound = [ - l for l in profiler.source_lines - if l.stall_percent > 50 -] - -# Instruction-level analysis -for line in profiler.source_lines[:1]: - for inst in line.instructions: - print(f"{inst.isa}: {inst.latency_cycles} cycles") -``` - -### SourceLine Properties - -- `file` - Source file path -- `line_number` - Line number -- `total_cycles` - Sum of all instruction cycles -- `stall_cycles` - Cycles spent waiting -- `idle_cycles` - Cycles slot was idle -- `execution_count` - Total executions -- `instructions` - List of ISA instructions -- `stall_percent` - Convenience: stall_cycles / total_cycles * 100 - -### InstructionData Properties - -- `isa` - ISA instruction text -- `latency_cycles` - Total cycles for this instruction -- `stall_cycles` - Cycles spent waiting -- `idle_cycles` - Cycles slot was idle -- `execution_count` - How many times it ran -- `instruction_address` - Virtual address in GPU memory -- `file` - Parsed from source_location -- `line` - Parsed from source_location -- `stall_percent` - Convenience: stall_cycles / latency_cycles * 100 - -## Workflow - -1. Ensure the target binary is built with `-g` (debug symbols) for source mapping. -2. Create a `Linex()` profiler; optionally set `target_cu`, `shader_engine_mask`, or `activity`. -3. Call `profiler.profile(command, kernel_filter=...)` to run profiling. -4. Access `profiler.source_lines` (sorted by total_cycles) to find hotspots. -5. Use `line.stall_percent` to identify memory-bound or dependency-bound lines. -6. Drill down into `line.instructions` for instruction-level analysis. -7. Use relative paths for the target binary so the skill is portable. - -## Notes - -- Requires ROCm 7.0+ with `rocprofv3` support. -- Source mapping requires kernels compiled with `-g` (debug symbols). -- `source_lines` are automatically sorted by `total_cycles` (descending). -- Use `kernel_filter` to profile specific kernels by name (regex pattern). -- For Triton or other frameworks, ensure debug symbols are available in the compiled output. diff --git a/.agents/skills/metrix/SKILL.md b/.agents/skills/metrix/SKILL.md deleted file mode 100644 index 9a5564ece..000000000 --- a/.agents/skills/metrix/SKILL.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -name: metrix-profiling -description: Profile GPU kernels when performance analysis or optimization is required. Use for AMD ROCm GPU metrics, bandwidth, cache hit rates, coalescing, or kernel timing. ---- - -# Metrix: GPU Profiling - -Profile AMD GPU kernels and get human-readable metrics (bandwidth, cache, coalescing, FLOPS). Architecture is auto-detected. - -## When to Use - -- User asks to profile a GPU application or kernel -- Performance analysis, optimization, or bottleneck investigation -- Need HBM/L2/L1 bandwidth, hit rates, or compute metrics -- Need timing-only runs (fast, no hardware counters) - -## Instructions - -1. **Ensure the target runs on AMD ROCm** (e.g. `hipcc`-built binary or Python script that launches HIP/ROCm kernels). -2. **Choose execution path:** - - If a Metrix MCP server is available, use its profile tool with the same options below. - - Otherwise run the CLI or Python API from the environment where Metrix is installed. - -### CLI - -From the project or install prefix: - -```bash -# Profile with all metrics (auto-detected arch) -metrix ./my_app - -# Time only (fast, no counters) -metrix --time-only -n 10 ./my_app - -# Filter kernels by name -metrix --kernel matmul ./my_app - -# Specific metrics -metrix --metrics memory.l2_hit_rate,memory.coalescing_efficiency,compute.total_flops ./my_app - -# Save to JSON/CSV -metrix -o results.json ./my_app -``` - -Options: `--profile` (quick|memory|compute), `--metrics` (comma-separated), `--time-only`, `--kernel` (substring), `--num-replays`/`-n`, `--output`/`-o`, `--top K`, `--aggregate`, `--log`/`-l` (debug|info|warning|error), `--quiet`. - -### Python API - -```python -from metrix import Metrix - -profiler = Metrix() -results = profiler.profile("./my_app", num_replays=5) - -for kernel in results.kernels: - print(kernel.name, kernel.duration_us.avg) - for metric, stats in kernel.metrics.items(): - print(f" {metric}: {stats.avg}") -``` - -Use `metrics=[...]` for a subset; omit for all metrics. Use `cwd` when the binary expects a specific working directory. - -## Workflow - -1. Identify the executable or script to profile (e.g. `./app` or `python run_kernels.py`). -2. If only timing is needed, use `--time-only` for speed. -3. If full metrics are needed, run `metrix ./app` (or MCP equivalent); optionally restrict with `--kernel` or `--metrics`. -4. Interpret results: low L2 hit rate, low coalescing, or low HBM utilization suggest optimization targets. -5. For automation or tooling, use `-o results.json` and parse the JSON output. - -## Key Metrics (reference) - -- **Memory:** `memory.hbm_bandwidth_utilization`, `memory.l2_hit_rate`, `memory.l1_hit_rate`, `memory.coalescing_efficiency`, `memory.global_load_efficiency`, `memory.lds_bank_conflicts`, `memory.atomic_latency` -- **Compute:** `compute.total_flops`, `compute.hbm_gflops`, `compute.hbm_arithmetic_intensity`, `compute.l2_arithmetic_intensity`, `compute.l1_arithmetic_intensity` - -Use relative paths for the target binary and output files so the skill is portable across environments. diff --git a/.agents/skills/nexus/SKILL.md b/.agents/skills/nexus/SKILL.md deleted file mode 100644 index ad714bc4d..000000000 --- a/.agents/skills/nexus/SKILL.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -name: nexus-trace -description: Extract GPU kernel assembly and HIP source from HSA packet traces. Use when analyzing what code ran on the GPU, debugging kernel dispatch, or inspecting assembly and source mapping. ---- - -# Nexus: HSA Packet Source Code Extractor - -Intercepts HSA packets from a running process and extracts, per kernel, assembly and HIP source into a structured trace (e.g. JSON). Use for kernel-level inspection and assembly/source correlation. - -## When to Use - -- User needs to see which kernels ran and their assembly or HIP source -- Debugging or analyzing GPU dispatch and code generation -- Inspecting assembly-to-source mapping for a HIP (or ROCm) application - -## Instructions - -1. **Ensure the target runs on AMD ROCm** and uses HSA (e.g. HIP application or ROCm runtime). -2. **Choose execution path:** - - If a Nexus MCP server is available, use its tools: `list_kernels` to enumerate kernels in a trace, and `extract_kernel_code` to get assembly and HIP/source mapping (signature, files, lines). See `nexus/nexus/mcp/server.py` for tool parameters and schemas. - - Otherwise use the Python API from the environment where Nexus is installed. - -### Python API (recommended when no MCP) - -```python -from nexus import Nexus - -nexus = Nexus(log_level=1) -trace = nexus.run(["python", "my_gpu_script.py"]) - -# Or run a binary: -# trace = nexus.run(["./my_hip_app"]) - -for kernel in trace: - print(kernel.name, len(kernel.assembly), "instructions") - for i, asm_line in enumerate(kernel.assembly, 1): - print(f" {i}. {asm_line}") - for line_no, hip_line in zip(kernel.lines or range(1, len(kernel.hip)+1), kernel.hip): - print(f" {line_no}: {hip_line}") - -# Access by kernel name -k = trace["vector_add(float const*, float const*, float*, int)"] -print(k.assembly, k.hip, k.signature, k.files, k.lines) - -# Save/load trace -trace.save("trace.json") -loaded = Nexus.load("trace.json") -``` - -Set `log_level` (0–4) to control verbosity. Use relative paths for the run command and output file so the skill is portable. - -### Environment-based usage (no Python API) - -When the process cannot be launched via `nexus.run()`: - -1. Set `HSA_TOOLS_LIB` to the Nexus shared library path (e.g. `build/lib/libnexus.so` or the installed path). -2. Set `NEXUS_OUTPUT_FILE` to the output JSON path. -3. Set `NEXUS_LOG_LEVEL` (0–4) if needed. -4. Run the application as usual; it will be traced and the output file will contain the kernel data. - -Optional: `NEXUS_EXTRA_SEARCH_PREFIX` (colon-separated) for HIP source search; `TRITON_DISABLE_LINE_INFO=0` for Triton kernel line info. - -## Workflow - -1. Identify the command that runs the GPU workload (e.g. `python script.py` or `./app`). -2. If using the Python API: create `Nexus(log_level=...)`, call `nexus.run([...])`, then iterate `trace` and optionally `trace.save(...)`. -3. If using the env method: set `HSA_TOOLS_LIB` and `NEXUS_OUTPUT_FILE`, then run the app; open the JSON and parse the `kernels` structure. -4. Use kernel `signature`, `assembly`, `hip`, `files`, and `lines` to analyze what ran and map assembly back to source. -5. Use relative paths for commands and output files. - -## Notes - -- Nexus is intended for research/analysis; ensure the target environment has the Nexus library and compatible ROCm/HSA stack. -- For Triton kernels, enable line info via `TRITON_DISABLE_LINE_INFO=0` when using the Python API. diff --git a/.gitignore b/.gitignore index d8f9754f7..241ac7558 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,9 @@ omni*.pdf slurm*.out *.egg-info +.rocprofv3/ +.intellikit/ +.agents/ examples/gemm/results/* asm/ diff --git a/.intellikit b/.intellikit deleted file mode 160000 index f69ecf13c..000000000 --- a/.intellikit +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f69ecf13c59fe73e58fb37ee2f6ea02fafd22444 diff --git a/.rocprofv3/435992-436061-counter_values.dat b/.rocprofv3/435992-436061-counter_values.dat deleted file mode 100644 index 41aecb53c6f2200172e137a47ca3dc2f8d4efc0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4184 zcmeH{F$%&!5JlHQEEHU9170Lewy{fLpGz1-u#s)NgE#UhUc=E4GXDz+wv$Pb&13%r z_CMI=B7C3Kx?B6VbKgX_TJK{+{+-dk^*##n?~MMf_feC7XY_BqkB0m^qkrptoV5RZ zser?EoH@@txA}0UzNk;`Cv(1~dERH{JTvE++bWZPVDUG~avs=cp4+_mhd#nYKjI(r xMlyLw6 diff --git a/.rocprofv3/435992-436062-counter_values.dat b/.rocprofv3/435992-436062-counter_values.dat deleted file mode 100644 index 3345f6e3cd2d624c404cf84b3a6ad5e797b59fb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEzpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGi64?zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGiEmP5?HGf^_n0H^I70|Yy+EBK0FDln A&j0`b diff --git a/.rocprofv3/436266-436337-counter_values.dat b/.rocprofv3/436266-436337-counter_values.dat deleted file mode 100644 index 13c87714a3302c2df75202f97ade0aa0a749142c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGiLaS&?HGf^Kl5GAafT3*dVxAe0H4E^ AsQ>@~ diff --git a/.rocprofv3/436266-436338-counter_values.dat b/.rocprofv3/436266-436338-counter_values.dat deleted file mode 100644 index fbb09a4510dd3a8ef89cc3f32f31dd136210bd05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGi68A|?HGf^*ZC#yI70|Yy+EBK0Fm^S A3IG5A diff --git a/.rocprofv3/436403-436481-counter_values.dat b/.rocprofv3/436403-436481-counter_values.dat deleted file mode 100644 index 394b25665b583e5cca3c99da12308dd2b88f3d34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoE9I|}e4_#l=W68~k5wPOqte@~B`;|w7r^#XN{0O|ym A$p8QV diff --git a/.rocprofv3/436403-436482-counter_values.dat b/.rocprofv3/436403-436482-counter_values.dat deleted file mode 100644 index 17bafdd82da1242d7787a4c5b1dda58184189b04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGiNDCo+A#)+KZ#MnafT3*dVxAe0HcqT A{Qv*} diff --git a/.rocprofv3/436543-436612-counter_values.dat b/.rocprofv3/436543-436612-counter_values.dat deleted file mode 100644 index 34c485d85c2918316ce48af3df51930a1ab9c0d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoECi;|w7r^#XN{0Io%q Ah5!Hn diff --git a/.rocprofv3/436543-436613-counter_values.dat b/.rocprofv3/436543-436613-counter_values.dat deleted file mode 100644 index 3840360a11236e10400cfa45b4309bf05a1dfdd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEYlMI|}e4_#l=W691H~wPOqtpW~3c;|w7r^#XN{0J(~l AjQ{`u diff --git a/.rocprofv3/436801-437681-counter_values.dat b/.rocprofv3/436801-437681-counter_values.dat deleted file mode 100644 index 55e237d8d77ac3e1d3ddd7a390644f27f1cf70e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4184 zcmeH{F$%&!5JlHQEEHU91uv3jx3TjC20ep81RL4L$_scyA*XOPgv|d!g6(8dWb@cR zf&CA5I&t4;HgDGUZQM4|tlIlnkbh(Juf2~o`8P)Y+WXj%e`EBoy^oUo8>4^ieVnBK zbP2%j+RvP49^1S-Q(x34_menZ(LC=nbDo*=%vDI_A2|E#<$NC4XCB*p_78oyfqt@o z%#)9w{|)8;pTA50`RX&q`(Jw>FW;T_urH!tcKrF;3Vs}mSPBmHCO%gp?{D!9uXL53 diff --git a/.rocprofv3/436801-437682-counter_values.dat b/.rocprofv3/436801-437682-counter_values.dat deleted file mode 100644 index b19f776e7eac9fbdd9def68e4a19ba7f32de7b43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGiJuu~?HGf^zY;F*I70|Yy+EBK0IIu{ AdjJ3c diff --git a/.rocprofv3/439023-439093-counter_values.dat b/.rocprofv3/439023-439093-counter_values.dat deleted file mode 100644 index 4a9cd04c4630bb68289b5aef6a019c532ce62fca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4184 zcmeH{F$%&!5JlHQEEHU91zQi1X1B5P2DyYm6hUMg@8AIiZxI{~A^X3OU^|%<**x}7 zVE==iPTcpI&6~A-8@Ej~tM)z?1WO}k8R!^sW0l2`$?RyXrA|(InT^_<|-ue4=nzASv#K$Vj`&)bi*1eVu diff --git a/.rocprofv3/439023-439094-counter_values.dat b/.rocprofv3/439023-439094-counter_values.dat deleted file mode 100644 index b37f6a6b26c025bf4e53ea51b12dc1965f3dd9ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4184 zcmeH{F$%&!5JlHQEEHU9Eo{9*nq3epJ%ItwU=YDZw($<$FxPN2gzW!9g6(8dWb@cR zf&CA5I&t4;HgDGUZQM4|tlIlnkbh(Juf2~o`8P)Y+WR4^ieOz+? z=@x+9y`MSHJhpjvrM{?7?k91+qIuqD<~%d!nX8bzpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGi9apd+A#)+|6#wJ;|w7r^#XN{0LF8c AT>t<8 diff --git a/.rocprofv3/439155-439227-counter_values.dat b/.rocprofv3/439155-439227-counter_values.dat deleted file mode 100644 index abbab72caace1b5454aef778c7d1b4ae73f75c9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGiNCJa+A#)+Z?i<+afT3*dVxAe0Kr6+ A%m4rY diff --git a/.rocprofv3/439300-439370-counter_values.dat b/.rocprofv3/439300-439370-counter_values.dat deleted file mode 100644 index 3bdf89082157fc723abcdf8e056639eaec5458dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4184 zcmZQ&WB>zpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEzpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEzpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEzpZU_w{NBOXjfY8G|Jb2LJf0U0J|HC~zq|xGkl#d$!!#zBF(c*uUj~f5O zJv?I2;(wHn8vnyRJPMKHzoEIid=SeGiEra)?HGf^_n9Z}I70|Yy+EBK0E!Tl Awg3PC diff --git a/.rocprofv3/439592-439661-counter_values.dat b/.rocprofv3/439592-439661-counter_values.dat deleted file mode 100644 index f14a83dfc78ea5dbee2aaa73a8d0a6f5b8e05df4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ u|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>(WHRd%cuK=55SGaUiEp=eG3 diff --git a/.rocprofv3/439592-439662-counter_values.dat b/.rocprofv3/439592-439662-counter_values.dat deleted file mode 100644 index d9b149cdb92435b87bb43d6fa2a8a35ec03420e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>)7KRd%cufb$bxaAZ0H0Kmp+PXGV_ diff --git a/.rocprofv3/439745-439817-counter_values.dat b/.rocprofv3/439745-439817-counter_values.dat deleted file mode 100644 index f61cbb8c9afd2cf47afd4fa7b9a12c866fbe1718..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ v|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>%8#D?8Q-!1)i{IWrvrvo~mW diff --git a/.rocprofv3/439745-439818-counter_values.dat b/.rocprofv3/439745-439818-counter_values.dat deleted file mode 100644 index 6e9982866fd6f34e5b519c93e65cbd6db006ecab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ v|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>*KJt2ovQ!1)UAIWipqxr%7R diff --git a/.rocprofv3/439964-440033-counter_values.dat b/.rocprofv3/439964-440033-counter_values.dat deleted file mode 100644 index 4edaf762cbd663acd9e6491672cca03887152882..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ v|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>(XRQFg2qfb$bPI5QmqypCv> diff --git a/.rocprofv3/439964-440034-counter_values.dat b/.rocprofv3/439964-440034-counter_values.dat deleted file mode 100644 index 48597dac22385ece3116f8dcabc0c70ad0fc2ad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>)gyuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>;%Dt?XDU0Ou#Tb7ndM0LyuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>-e)Q*o>nfb$nT;mC9Z0Ka=_X#fBK diff --git a/.rocprofv3/440277-440346-counter_values.dat b/.rocprofv3/440277-440346-counter_values.dat deleted file mode 100644 index ecb9fa3d25f0fb8c7fa007bd1b7135fa733e1743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ v|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>&MJC_B~)!1)h6IWrvrydr4u diff --git a/.rocprofv3/440277-440347-counter_values.dat b/.rocprofv3/440277-440347-counter_values.dat deleted file mode 100644 index d7adbb504cc7ee34f655594f8c148231f5a8edac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>&iJQgN&mfb$*Rb7VRK0K9`}{r~^~ diff --git a/.rocprofv3/440421-440491-counter_values.dat b/.rocprofv3/440421-440491-counter_values.dat deleted file mode 100644 index d6e957c90c70c9d42e0d0467cef7246eb68dceb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>))&PyuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>+ftsO(rP0OvP6yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>)6fQF5#mfb$o)a%MUL0KO<_+W-In diff --git a/.rocprofv3/440591-440663-counter_values.dat b/.rocprofv3/440591-440663-counter_values.dat deleted file mode 100644 index 49e671b11fa984945e634a4eb0117f6d1f4dcd68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>%-FQE{vlfb$!ka%4IJ0KV~QOaK4? diff --git a/.rocprofv3/440734-440803-counter_values.dat b/.rocprofv3/440734-440803-counter_values.dat deleted file mode 100644 index ed0554ca2adcd57024a4cda737ebedb85f1b3aea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ v|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>(`mQFg2qfb$zXIWrvr#yV** diff --git a/.rocprofv3/440734-440804-counter_values.dat b/.rocprofv3/440734-440804-counter_values.dat deleted file mode 100644 index fdaf8a81d8ced151f499a92e019490fbf2f4c4ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>&)*RB@~ofb$nT=E!se0LNHq&j0`b diff --git a/.rocprofv3/440940-441024-counter_values.dat b/.rocprofv3/440940-441024-counter_values.dat deleted file mode 100644 index eec525976f06bd1bd968bc7f04f070e50c3d15fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ v|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>-G@PyuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>(`is5sUN!1)KBb7VRK0KGkFVgLXD diff --git a/.rocprofv3/441095-441164-counter_values.dat b/.rocprofv3/441095-441164-counter_values.dat deleted file mode 100644 index a9aad446a730dc2255a8e4bebce346244a685ecb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ v|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>*KZC_B~)!1)V2I5QmqyM}1F diff --git a/.rocprofv3/441095-441165-counter_values.dat b/.rocprofv3/441095-441165-counter_values.dat deleted file mode 100644 index 9d0bc34b3abf87db46c92602d7087f7ce567b832..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4136 zcmZQ#WB>yuZU_w{NBOXjfY8G|JjBrAf0U0J|HC~z6wu;-l#d$!!#zBLP~tzx5tSc8 zfRC;ooj=m_d!dDw4;tSOjgKzxgeLDofRC;ooljVQI7<98FpTn1^Z#%Uj~ul4ALXOQ w|8NhFGPL*~<)g;`a1W1awD=$8qsISm503@>2>-^sR&lHqfb$z3b7VRK0L9j6r2qf` diff --git a/.rocprofv3/441278-441361-counter_values.dat b/.rocprofv3/441278-441361-counter_values.dat deleted file mode 100644 index 50adb10ae2b754ef61cce0f00a02985591ee53b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312 zcmbQh00I8&PzI3NcG|!ZnP0UXmCttqm7lQ`mA~mQD!&pe2ZlO~1ni)bMK9h{`{(36+m7->?i-o?#_^KDv5zJ`ws2c#!fxkU7d9S>fTv zkMQrSAZy1MB>s)Ha*q50aQO!X5~+@=2tLEMHhagbf(ZG83@MKKLU2Bi;o?|=%%3pL LaRxG9pw1BhSnJzb diff --git a/.rocprofv3/441278-441362-counter_values.dat b/.rocprofv3/441278-441362-counter_values.dat deleted file mode 100644 index b74345f0dd4b54d9b1db47c6f5db9207b92a283e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312 zcmbQh00I8&PzI2?Kf%xunP1e8%AYX{m2Xjs%9m_H<-f{7Hq715}pnJQTY!T(83c<-r)eHW9j;cs}=N@~mESf4m49v(D*wW4RQ~VJsQk;f3>>F(A?#;x zU_s?Ku;J&Ut4HULIQ@SeP{Om}KPvwL16p{Z$vb>ORp0OpKObE^I-dyrQ@D}hf6_At z6u!ty{Csrv==_nU-}eD(c=bI*<)43q%14)$Z&BiLFP}G M<~ReHFHq+Q01T+x>i_@% diff --git a/.rocprofv3/441426-441502-counter_values.dat b/.rocprofv3/441426-441502-counter_values.dat deleted file mode 100644 index 81148c17895cd5bca29c386b1f6ba4f3e116655e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312 zcmbQh00I8&PzI2CzsArJnV-8Dl|StuD*yWwRQ}g#sQlR-sC>CcsC?BEhK|#@5cV@T zu%PlA*zohw)uZ!Aoc_NKDB;=gAC>=r0WCbyo-B0}7vE zCw@MnyIk>Y>SGY1sD z$V>cuboJ=`k*44G0cv>lJw)Z7e}u|Mm!EVERbJ#Kem=T-bUqRK=OV{{!!`#LKEqD@ ze025b{E?>LVFPM-HEcxXAJ~M-N0)C{hAPjn53<|E~i|csBe;y z|2_)0c8o#dm)w+h9#^GBTizYZwj+3+8g|9}B4JkjJGzM!ga_=ca4t{$CFg#IbqNbx`EnF9)6 zB JAoB(490A<1*AxH% diff --git a/.rocprofv3/441796-441866-counter_values.dat b/.rocprofv3/441796-441866-counter_values.dat deleted file mode 100644 index 5739606172916824b0711634cea0f7391f94cbb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312 zcmbQh00I8&PzI2?{mRG@ng9OF^c?}JE-zM9;5Pqok8Vq)2 zGwj6AM^}%|A8Gm>HlT)A!$ws8fla7Tas zH-3bFWs9sGW03d@8s#1N1>o`r48&3$RS|rKKU3`;uL{ED6(Si@9QB3Zd?3Tcu>_ev NVVdI%WWGS1BLI*^+Wr6l diff --git a/.rocprofv3/441931-442004-counter_values.dat b/.rocprofv3/441931-442004-counter_values.dat deleted file mode 100644 index a613d9e37475b9e626ba8d109a10b06d4e4b7ca0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312 zcmbQh00I8&PzI0^6*Y21=09dae2ZlO~1ni)bMK9h{`{(36+m7->?i-o?#_^KDv5zJ`ws2c#!fxkU7d9S>fTv zkMM7om$hRI693P9IY)j0xV(a=WU8Yog3s`=-rn)5AYA^yA%+x3eIYm>$Z&BiLFP}G M<~ReHFHq+Q05uoa4FCWD diff --git a/.rocprofv3/441931-442005-counter_values.dat b/.rocprofv3/441931-442005-counter_values.dat deleted file mode 100644 index 1361db8fa8b5552e47eeffd10d1cae23f76ac370..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312 zcmbQh00I8&PzI1PQ802u=10k(@^7i2^5q0k`6)c8{QbWTQOqlFL6u*lX5=`X3t>Nl z0}Cp@fek+&T|GK~#OeR*fD)b!|55o57|_BKP2S-Ps``d+`1$DS(fLH^pTdn4|C63M zpzuXr;^(8QN9T_;{k{)S!>jKhD*yZ=R6e@=q-&`1A~*5#(bc2#iO@e6IsO~AIiT9#^NG+ug&QgUCp~jO z;fuV)&qr5}&L3&|eIKBPSKmWa{`p6!e02Fq*HGm}ZsO;ot4HS(p?@xN{5NcKK;bj& z#Lq`pkIo-y`W-f)hF8NzRQ`cYsC;z!hGnSo3@h>T(bc2#iO_GrgOvY)%u)Wx3J*7a zgnv0ptsP^K_#0-*Ir0l23<|E~i|csBe;y z|CT#hJH{aK=PZ(Ue2ZlO~3C0)bQ$ih{`|z2$hd6Kj|8(yvR-be025bd?NJEMUMZ5Z4M}W zhMoBN=<3n=BTc`<2GsCs*oewMunCoqF5j>WRi0rbem=T-bUqRK4S109Kae@fA6eny z#*gstq^;JDF-ZIa-{c(m1>o`xCA_JQst7*Atb6v3R|Vnn42Ky~9QB0|dRQ~jzsQks(4IQU*A?#;x zU_s?Ku;J&Ut4HULIQ@SeP{Om}KPvwL16p{Z$vb>ORp0OpKObE^I-dyrQ@D}hf6_At z6u!ty{Csrv==_nU-}eD(c=bI*<)43q%14)S;O>Zppumo2t;yebHnSMX&>anu)r^MMQ(#}Z`zglUd5 Jkof|2jsRzk*%kl* diff --git a/.rocprofv3/442370-442439-counter_values.dat b/.rocprofv3/442370-442439-counter_values.dat deleted file mode 100644 index 1c541c097e8cbd01d95fe4175eb0b38b14b27578..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312 zcmbQh00I8&PzI2SlQwij=Bx0a@~^R?@<04EKv5sWhAPka4^{qd0IEEfj-lgpE`M|M^}%|Cqn;R2_@A20`%pV@)RXMc#wXWnb*IGqb&KZ64c zD!+jZKObE^I)B9J|LcGfo(=y|`41S-!V^v2;R~wzhHv=!=<3n=MChNwjTHZro;jfK zMPB0PqpL^fk2L+h4^YFa?;$Gx{3BF8y8NVTsPZB=@$=Euqw|T-KNmUv8@4&1@ELaE z=cB7f=Z`e~4jWLzt6?K5|G*|xKDvCvGE{knmH7GS>e2Z`=r`a&%Kt#-D1T&yhZ{e_ zzY`;^9b=IA5ewuU`32ze4>+Y#9aRy0hRm diff --git a/.rocprofv3/442520-442590-counter_values.dat b/.rocprofv3/442520-442590-counter_values.dat deleted file mode 100644 index ba2ff3cc41b5b50ef37c590a62f0202e9a1eaf05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312 zcmbQh00I8&PzI3lm}}sO%s)H@mA|(el|Q!#mCra8mH)dPmB0HUDnDa~f#Y;8g#8Q- zEU5ejHvD{a_2~Q&r~j`5N_aN>N98|YKnqVad515k>Kne{=cB7f=M$lS3O7>xPkQEn z!WVgopO3B{oj=m_`#wMoufB(<{PT}c`RMYKuA$0{+{DjESC7soLjPRk_;1+efWl|k ziJy(8-vv!O@;=9a}bL1C5$WIqabyP*-mu|IpyebHncR0k5;;1hK=K~oojwQ(a3DX>B JAoB(490BU{**5?H diff --git a/.rocprofv3/442520-442591-counter_values.dat b/.rocprofv3/442520-442591-counter_values.dat deleted file mode 100644 index 65ab7e01e96ade5e38a233ab17abf750bcf4f571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312 zcmbQh00I8&PzI3tX<+1t%-2*$<%^r5^7Z*q`7hDnyIk>Y>SGY1sD z$V>cuboJ=`k*44G0cv>lJw)Z7e}u|Mm!EVERbJ#Kem=T-bUqRK=OV{{!!`#LKEqD@ ze025b{E?>LVFPM-HEcxXAJ~M-N0)C{hAPjn5WAk%5@cvTQCe;}G6#Zg}f&IdAF97~Y-6Q()N KK;{e7IRXHPl-0BV diff --git a/.rocprofv3/442743-442812-counter_values.dat b/.rocprofv3/442743-442812-counter_values.dat deleted file mode 100644 index 30e7d7cddd73e39f33db34d6afff69ec641f4149..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312 zcmbQh00I8&PzI3tlxpaR%wOk=%GZfQ}@}POb zLFG5F;pd~PN9T_?{eK-$!n5H&D*pikT6m(#JA6S^-|!7TA6-2L_W^2n^*u!8pMQkPN0*;;4OL#`CVoD;dUQS!`sX6Yf5SEh6h6aF z{Csrv==_nU-(dr4cr|Q9k{;NckVg9OaL!@NnZt z_*bjZ+A#)+uhApt$S;79e=nHosEWitvCH1^svunc!6AkeM|~kUAINZVEJ5Z^nC3VG JnJ-Z12mrk|*T(<= diff --git a/.rocprofv3/442743-442813-counter_values.dat b/.rocprofv3/442743-442813-counter_values.dat deleted file mode 100644 index 762082740d311fa70c0f5f056c15b870b2917367..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312 zcmbQh00I8&PzI37b~kiH=6~}+}POb zLFG5F;pd~PN9T_?{eK-$!n5H&D*pikT6m(#JA6S^-|!7TA6-2L_W^2n^*u!8pMQkPN0*;;4OL#`CVoD;dUQS!`sX6Yf5SEh6h6aF z{Csrv==_nU-(dr4cr|Q9k{;NckVg9OaL!@NnZt z_?JJ!+A#)+Ur{FS$S(kwZ;%jAbyP+08SMM)9j^+)Px# diff --git a/.rocprofv3/443159-443229-counter_values.dat b/.rocprofv3/443159-443229-counter_values.dat deleted file mode 100644 index 286d00eeb5338cb535f4016e9d7bbad51ac716a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 kcmZQ!fPm)$PzI2i?QQM&pAW$Yu~_&~`3sQvZ?cpf0m_91=Kufz diff --git a/.rocprofv3/443300-443369-counter_values.dat b/.rocprofv3/443300-443369-counter_values.dat deleted file mode 100644 index ee47d0bdc8dd1d860cd77e76a0f1cfd9681c02d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 lcmZQ!fPm)$PzI1%<7w^qpAW$Yu~_&~`3sQvv$iNZ0sze^1?~U< diff --git a/.rocprofv3/443300-443370-counter_values.dat b/.rocprofv3/443300-443370-counter_values.dat deleted file mode 100644 index 1758022472893d2187cccdd7b82711a9ec76b7b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 kcmZQ!fPm)$PzI1vjIeh6&xhcHSSz>% diff --git a/.rocprofv3/443433-443503-counter_values.dat b/.rocprofv3/443433-443503-counter_values.dat deleted file mode 100644 index 59e13bd83ea244fc428dabb1e39bed4f9ca03793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 kcmZQ!fPm)$PzI0^<+O49&xhcHSSC0LSJ9E&u=k diff --git a/.rocprofv3/443805-443874-counter_values.dat b/.rocprofv3/443805-443874-counter_values.dat deleted file mode 100644 index a7d89ec417bdf4a7593904ff06cb019469979292..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 kcmZQ!fPm)$PzI1<-EHmopAW$Yu~_&~`3sQvBFB^+0l*OjMF0Q* diff --git a/.rocprofv3/443805-443875-counter_values.dat b/.rocprofv3/443805-443875-counter_values.dat deleted file mode 100644 index 732cd0cb19598b7eafeaef935d9b0802ecc8b905..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 kcmZQ!fPm)$PzI2a39xqj&xhcHSSTB)zpAW$Yu~_&~`3sQv6S`C!0n%j!*Z=?k diff --git a/.rocprofv3/444356-444430-counter_values.dat b/.rocprofv3/444356-444430-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/444356-444431-counter_values.dat b/.rocprofv3/444356-444431-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/444534-444614-counter_values.dat b/.rocprofv3/444534-444614-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/444534-444615-counter_values.dat b/.rocprofv3/444534-444615-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/444714-444783-counter_values.dat b/.rocprofv3/444714-444783-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/444714-444784-counter_values.dat b/.rocprofv3/444714-444784-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/444848-444917-counter_values.dat b/.rocprofv3/444848-444917-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/444848-444918-counter_values.dat b/.rocprofv3/444848-444918-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/444981-445052-counter_values.dat b/.rocprofv3/444981-445052-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/444981-445053-counter_values.dat b/.rocprofv3/444981-445053-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/445122-445191-counter_values.dat b/.rocprofv3/445122-445191-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/445122-445192-counter_values.dat b/.rocprofv3/445122-445192-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/445274-445343-counter_values.dat b/.rocprofv3/445274-445343-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/445274-445344-counter_values.dat b/.rocprofv3/445274-445344-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/445420-445489-counter_values.dat b/.rocprofv3/445420-445489-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/445420-445490-counter_values.dat b/.rocprofv3/445420-445490-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/445643-445712-counter_values.dat b/.rocprofv3/445643-445712-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/445643-445713-counter_values.dat b/.rocprofv3/445643-445713-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/445776-445845-counter_values.dat b/.rocprofv3/445776-445845-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/445776-445846-counter_values.dat b/.rocprofv3/445776-445846-counter_values.dat deleted file mode 100644 index c389f3e7d7fbf533873352a1be566befe5c9d306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 QcmZQ%fB*r0C<96X00I#JApigX diff --git a/.rocprofv3/445962-446031-counter_values.dat b/.rocprofv3/445962-446031-counter_values.dat deleted file mode 100644 index ccbd3271855624977f450ef0f274d4d23cc56112..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmd;KfB=7XC<91MJ7M66%s;Ucl`nf3m49m$DnDx%DxZ5jDqsE!D!==VfukEg!hYr^ eYsUph{Cf$?j{E{}`2z+*sg9}$KEtjZ_KpCmPZxCn diff --git a/.rocprofv3/445962-446032-counter_values.dat b/.rocprofv3/445962-446032-counter_values.dat deleted file mode 100644 index 8c7c9fddfe47cd6d4f34bbb961b9551ac9fd6792..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmd;KfB=7XC<90dwHi4h^DEj=`E@<0{Ac;7e2-dG{(@{&{=?ms<*Qsq<+p!Csz&%8vX3aQO%OMN%DA5qt)NCH9U0H6j*; diff --git a/.rocprofv3/446105-446213-counter_values.dat b/.rocprofv3/446105-446213-counter_values.dat deleted file mode 100644 index 4e413836dcf54e7ea3dc2048e22a70602a236a98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmd;KfB=7XC<92bIvY76^AB2}@*_P^`GR_=d}$+8zOXJT|8o&4e@l#!qZ>cMev5u< d#|23Is45jlegU}rgCN0FM^yx$;maO-M*v2i6J-DZ diff --git a/.rocprofv3/446321-446391-counter_values.dat b/.rocprofv3/446321-446391-counter_values.dat deleted file mode 100644 index 5ac0ce77aa0113937891703f827c784c93c17f02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmd;KfB=7XC<912`x!bS^S?Qw^4(og`L|V2`Dp>Dd>Io|enbx{KcU3X(TyKr|EX+i b#|21yuRF?)`~nF1$HJ+Osz`j@)%K162SO9& diff --git a/.rocprofv3/446321-446392-counter_values.dat b/.rocprofv3/446321-446392-counter_values.dat deleted file mode 100644 index 40d4e0e9f094ec6a1b35a931fcf516d63b627665..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmd;KfB=7XC<90ZJvDSh<{x;1%K!Ebm7jhAmA~gYDqsHuD&Jbe2*vzWUkx4I_!0I? fWLi5eK;ny}sW|crz~vj-#Zw(s5qt)oZhJ=n8Nn9c diff --git a/.rocprofv3/446453-446525-counter_values.dat b/.rocprofv3/446453-446525-counter_values.dat deleted file mode 100644 index c4c0e9d0cc5b1a7a879316ce30f70ec4fbc14cf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmd;KfB=7XC<90x)-iNM<}X)7<^MEB<)30lW5dc;W6l4GZ diff --git a/.rocprofv3/446453-446526-counter_values.dat b/.rocprofv3/446453-446526-counter_values.dat deleted file mode 100644 index 4a6e77b7b54424a00e1b6cf26dd322f9f49b6c5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmd;KfB=7XC<91w)EGG;^Iun@@~bAJ@~!ev`EN2&`EC)Y{HBele4pt?j&A%2`{%n^ dJ1#)tXM9j`L{0RHc fgjqW-K;p}(s5<~4Lg<{$fGfWqIwj4Ge?1y!Dp4^@88KUDd62UPhF+J=s9{0RG- f9IPD|An|8>P+Br?0y-8c diff --git a/.rocprofv3/446901-446971-counter_values.dat b/.rocprofv3/446901-446971-counter_values.dat deleted file mode 100644 index 3fb24c9a5bfb47a60f85fbd5ba5ca169903e4d57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmd;KfB=7XC<91E+%#Q9YAn~0zR2=yQ5b|z(sg9~h{C`*M9RWcD7B2t* diff --git a/.rocprofv3/447032-447102-counter_values.dat b/.rocprofv3/447032-447102-counter_values.dat deleted file mode 100644 index b9b202aeb83a885c5b74b437a62a8eb219f5967e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmd;KfB=7XC<92DN*g&M^AB*N@(mqNv{`f+}Cjj>=!}iOO%ZFmiO`N7%0$ fWbL>BiLdfY*^yrWF5jRmk?N?5;4_$Y+B*UO)PNHP diff --git a/.rocprofv3/447032-447103-counter_values.dat b/.rocprofv3/447032-447103-counter_values.dat deleted file mode 100644 index 56c8a143bd3430045c0e2673414a2bc8cf91be3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmd;KfB=7XC<90pMH)IH^OMq0`Ftg){P`iM{I_nX{9hKR{GC%#`N?I5j&A%2`&n|W d9Ty<+cbKa<@(aM_6cMez{_6 d#|23IWBZjI`32ze4ne}Hj;aVg!_xKkjsP1j6e|D# diff --git a/.rocprofv3/447260-447330-counter_values.dat b/.rocprofv3/447260-447330-counter_values.dat deleted file mode 100644 index ca1557e1fbe61089324db469358afe6ff9b9b616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmd;KfB=7XC<90ZE;DpQ=FeM>%HOySmH%@xDnDZ`Dqp4(m4D$jD*wbTLq|7$g#AZn fSvxL3;;(z5?8q+wmtW8(km{(4;4_3Aws!;o>iih% diff --git a/.rocprofv3/447393-447462-counter_values.dat b/.rocprofv3/447393-447462-counter_values.dat deleted file mode 100644 index ceaa85c61143a93b65f6ce8d5d8ef519410049f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmd;KfB=7XC<90>sWWs$=Ii93@}p`|`S}s3e5-m?zC#)+zi%@tUv;LTqZ>cMe#;zd d#|21yBMB8pegU|A!&l){M^yx$p<$K1BLE@j6axSN diff --git a/.rocprofv3/447393-447463-counter_values.dat b/.rocprofv3/447393-447463-counter_values.dat deleted file mode 100644 index 796c20e0c27d49cd66ef63c577a003e6b94a9b8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmd;KfB=7XC<92PRT?=W^ZBY!`R%=^{J=6)zF0mgzc2xne|se=|3;^gqZ>cMeup4y d#|23IKc`e2`32ze2YMt^9aRy0h67dhjsSTF7AOD! diff --git a/.rocprofv3/447524-447593-counter_values.dat b/.rocprofv3/447524-447593-counter_values.dat deleted file mode 100644 index 68d2062941ac00f9f55b1fe31aaa5b99ae738d09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ(fPm)$PzI1HS!V4hz>naASTRWaCAZ}q0d{Ew`2YX_ diff --git a/.rocprofv3/447524-447594-counter_values.dat b/.rocprofv3/447524-447594-counter_values.dat deleted file mode 100644 index 8a844f978c893466561a757307016b35f401c4c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ(fPm)$PzI37FR^wM;79O5tQaKzgJtrL0Bk5dZ)H diff --git a/.rocprofv3/447799-447869-counter_values.dat b/.rocprofv3/447799-447869-counter_values.dat deleted file mode 100644 index 8dbb391218bdcfcde8aaa92f344ba917d5a660af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ(fPm)$PzI3NdeGWYfFHpJv0{+;5nb|*0D&C@xc~qF diff --git a/.rocprofv3/447930-448000-counter_values.dat b/.rocprofv3/447930-448000-counter_values.dat deleted file mode 100644 index 052a5de512b99997850cf64eaf737e8b38bf8eba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ(fPm)$PzI1Hud;R&;79O5tQaJI!Am(u0B|b=ssI20 diff --git a/.rocprofv3/447930-448001-counter_values.dat b/.rocprofv3/447930-448001-counter_values.dat deleted file mode 100644 index eeb730d1dfe7e79c4d1d70b1f15abe26ed4825c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ(fPm)$PzI2?>}BmJz>naASTRWaoJ;bK0CqS8yZ`_I diff --git a/.rocprofv3/448159-448228-counter_values.dat b/.rocprofv3/448159-448228-counter_values.dat deleted file mode 100644 index f8a9f33d75be5800e8e108b85e182d54071e09d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ(fPm)$PzI1X5o+xyz>naASTRWa9Y^FG0e3M3`2YX_ diff --git a/.rocprofv3/448159-448229-counter_values.dat b/.rocprofv3/448159-448229-counter_values.dat deleted file mode 100644 index 593e73f542c6b3d1cc9f05d2ba6e711573b61667..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ(fPm)$PzI1%Rc`Glz>naASTRWaH+k}o0C#T$+yDRo diff --git a/.rocprofv3/448301-448370-counter_values.dat b/.rocprofv3/448301-448370-counter_values.dat deleted file mode 100644 index 36c2694bf851fd094ddd418c8e3c8ff6468f849e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ(fPm)$PzI2S@3eLl;79O5tQaJ|&vQ9P0B%AAdjJ3c diff --git a/.rocprofv3/448301-448371-counter_values.dat b/.rocprofv3/448301-448371-counter_values.dat deleted file mode 100644 index 25c769cf367d026cd0c8f1ae2222a24d80297a04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ(fPm)$PzI3NnrQ7Pz>naASTRU^fj)Uh0CMRB6#xJL diff --git a/.rocprofv3/448432-448501-counter_values.dat b/.rocprofv3/448432-448501-counter_values.dat deleted file mode 100644 index 8b5ba221fe629e27d88e9e221cba538ab769e942..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ(fPm)$PzI2)tFU$y;79O5tQaKzlml{(0B80DY5)KL diff --git a/.rocprofv3/448432-448502-counter_values.dat b/.rocprofv3/448432-448502-counter_values.dat deleted file mode 100644 index 9aff487ec51e81ce9a062d0e728d739bbb9efa6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ(fPm)$PzI1Xk!0;Cz>naASTRU^mR5O30CjBy6aWAK diff --git a/.rocprofv3/448572-448641-counter_values.dat b/.rocprofv3/448572-448641-counter_values.dat deleted file mode 100644 index e0be2d7e54fbbbc1e68210b9e3ab62ba84d48dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ(fPm)$PzI1%lw<8Ez>naASTRWa4MlQ}0CVUBkN^Mx diff --git a/.rocprofv3/448572-448642-counter_values.dat b/.rocprofv3/448572-448642-counter_values.dat deleted file mode 100644 index 9e3b90b937689710a66125a16b80234a96ee588b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ(fPm)$PzI1%k!|fLz>naASTRWaKYj9!0Cpn;{r~^~ diff --git a/.rocprofv3/448704-448781-counter_values.dat b/.rocprofv3/448704-448781-counter_values.dat deleted file mode 100644 index ddd2584658ae1d916a844bdc1aea737a55c56a11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ(fPm)$PzI3FO|fnaASTRWaFDv960e;^FOaK4? diff --git a/.rocprofv3/448846-448921-counter_values.dat b/.rocprofv3/448846-448921-counter_values.dat deleted file mode 100644 index e8c5039f6575cccb880f670b07f6c84567eb0eca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ(fPm)$PzI3Fcd>R9;79O5tQaJ|#}#=;0A0)j@Bjb+