# amdgpu-asm-tool **Repository Path**: feifei14119/amdgpu-asm-tool ## Basic Information - **Project Name**: amdgpu-asm-tool - **Description**: AMDGPU ROCM汇编语言kernel辅助开发插件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-13 - **Last Updated**: 2026-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # amdgpu-asm-tool — VS Code Extension --- ## 实现的功能 1. llvm amdgpu 汇编语言语法着色 2. AMDGPU HSA Code Object (.co) ELF 解析查看器 3. 反汇编 .co 文件为 .asm 文件 4. 将 .asm 文件汇编为 .co 文件 5. AMDGPU 调试视图(asm kernel 寄存器与变量查看) 6. LDS 布局可视化(静态分析) 7. Global 布局可视化(静态分析) 8. Buffer 布局可视化(静态分析,VMEM + LDS 双端点) 9. 指令排序时间轴视图 10. ATT Trace 可视化 ## 前置依赖项 #### 运行时依赖 - 反汇编 `.co` 和 ATT Viewer 的 PC→反汇编映射需要 `llvm-objdump`,默认路径为 `/opt/rocm/llvm/bin/llvm-objdump`(安装 ROCm 后通常自带)。 - 汇编 `.asm` / `.s` 为 `.co` 需要 `/opt/rocm/llvm/bin/clang++`(安装 ROCm 后通常自带)。 - AMDGPU 调试视图需要可用的 `rocgdb`,或 VS Code C/C++ 扩展启动的 `cppdbg` 调试会话。 - ATT Trace 可视化需要 Python 3(默认 `python3`,仅使用标准库 `ctypes/json/subprocess` 等)、`librocprofiler-sdk.so`(默认 `/opt/rocm/lib/librocprofiler-sdk.so`)以及 ATT 解码后端 `librocprof-trace-decoder.so`。 - `librocprof-trace-decoder.so` 可能不在 `/opt/rocm/lib`,可通过 VS Code 设置 `amdgpu.att.decoderDir` 或环境变量 `AMDGPU_ATT_DECODER_DIR` 指向其所在目录。 #### 开发与打包依赖 - Node.js 20。 - npm 依赖:在 `vsext/` 下执行 `npm install` 安装 `typescript`、`@types/vscode`、`@types/node` 等开发依赖。 - 打包 `.vsix` 需要 `@vscode/vsce`,可通过 `npm install -g @vscode/vsce` 或 `npx @vscode/vsce package` 使用。 --- ## 开发调试 ### 源码模块结构 `vsext/src/extension.ts` 是扩展统一入口,具体功能按目录归档: - `langAssist/`:语法着色、tokenizer、悬停、跳转/引用、大纲、ISA 指令数据。 - `elfAssist/`:AMDGPU HSA Code Object (`.co`) 自定义查看器、反汇编、ELF/metadata 解析。 - `attAssist/`:ATT trace (`*.att`) 解码与可视化。 - `ldsAssist/`、`globalAssist/`、`buffAssist/`:LDS / Global / Buffer 布局可视化与公式/Intent 辅助分析。 - `instrAssist/`:指令排序时间轴视图。 - `dbgAssist/`:AMDGPU 调试视图(rocgdb / cppdbg)。 ### 0. 开发环境 安装 nvm ```bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash source ~/.bashrc ``` 安装 Node.js 20 的最新版本 ```bash nvm install 20 ``` 切换Node.js到v20版本 ```bash nvm use 20 ``` 安装vsce(如果ERR_SOCKET_TIMEOUT,因为网络问题,需要重复尝试多次) ```bash npm install -g @vscode/vsce ``` ### 1. 编译 ```bash cd vsext npm install npm run compile # 按 F5 在 VS Code Extension Host 中启动调试 ``` ### 2. 打包 ```bash cd vsext npx @vscode/vsce package # 生成 amdgpu-asm-tool-.vsix ``` 或者 ```bash vsce package ``` ### 3. 安装 ```bash code --install-extension amdgpu-asm-tool-0.3.3.vsix ``` 也可以在 VS Code 中通过 **Extensions → ⋯ → Install from VSIX...** 手动选择 `.vsix` 文件安装。 ### 4. 监听模式(开发时自动重编译) ```bash npm run watch ``` --- ## 发布到 VS Code 扩展市场 (参考 https://rackar.github.io/vscode-ext-doccn/working-with-extensions/publish-extension.html) (参考 https://code.visualstudio.com/api/working-with-extensions/publishing-extension) (参考 https://vscode.js.cn/api/working-with-extensions/publishing-extension) ### 1. 创建 Azure DevOps 组织 VS Code 扩展市场基于 Azure DevOps 账号体系。 1. 打开 https://dev.azure.com 2. 用 Microsoft 账号登录(没有的话先注册一个) 3. 创建一个组织(Organization),例如 `feifei-dev` ### 2. 创建 Personal Access Token (PAT) 1. 在 Azure DevOps 右上角点击头像 → **Personal access tokens** 2. 点击 **New Token**,填写: - **Name**:随意,例如 `vsce-publish` - **Organization**:选 **All accessible organizations** - (忽略)**Scopes**:选 **Custom defined**,展开 **Marketplace**,勾选 **Manage** - **Scopes**:不选 **Custom defined** - **Expiration**:按需选择 3. 点击 **Create**,复制生成的 Token(只显示一次,务必保存好) ### 3. 创建发布者 (Publisher) 注意:需要开加速器,用于谷歌验证码(reCAPTCHA) 1. 打开 https://marketplace.visualstudio.com/manage 2. 用同一个 Microsoft 账号登录 3. 点击 **Create publisher**,填写: - **ID**:例如 `feifei14119`(需与 `package.json` 中的 `publisher` 字段一致) - **Display Name**:显示名称 4. 创建完成后,确保 `package.json` 中的 `publisher` 与此 ID 一致 ### 4. 登录 vsce 并发布 ```bash cd vsext # 登录(会提示输入上面的 PAT) npx @vscode/vsce login <你的publisher-id> # 发布 npx @vscode/vsce publish ``` 或者用 PAT 直接发布: ```bash npx @vscode/vsce publish -p ``` ### 5. 版本更新 后续更新版本时: ```bash # 自动递增版本号并发布 npx @vscode/vsce publish patch # 0.1.0 → 0.1.1 npx @vscode/vsce publish minor # 0.1.0 → 0.2.0 npx @vscode/vsce publish major # 0.1.0 → 1.0.0 ``` ### 6. 发布前检查清单 | 检查项 | 说明 | |--------|------| | `package.json` 中 `publisher` | 必须与市场上创建的 Publisher ID 一致 | | `package.json` 中 `name` | 扩展唯一标识,发布后不可更改 | | `package.json` 中 `repository` | 建议填写实际 Git 仓库地址 | | `README.md` | 会作为市场页面的扩展详情展示 | | `LICENSE` | 已有 | | 图标(可选) | 可添加 `"icon": "icon.png"` 到 `package.json`,建议 128×128 PNG | 发布后大约几分钟内即可在 VS Code 扩展市场搜索到。 Token 管理页面:https://dev.azure.com/feifei14119/_usersSettings/tokens publisher管理页面:https://marketplace.visualstudio.com/manage/publishers/feifei14119 ### 7. 登出 ```bash vsce logout feifei14119 ```