ソース情報
- リポジトリ
- mindspore-ai/akg
- ソースの最終更新活動
- 2026年3月2日 02:46
- 検出された SKILL.md の言語
- 中国語
- スター
- 259
- フォーク
- 48
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/mindspore-ai/akg --skill pypto-case-matvecコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
矩阵乘法矩阵乘法 A[M, K] @ B[K, N] = C[M, N]中,大K维度矩阵乘法(K>>M,N)优化:针对M/N较小但K极大(如M=N=256,K=131072)的场景,Split-K切分K维度并行化、Workspace+Reduce替代全局同步,实现显著性能提升
Triton Ascend hard API restrictions and forbidden syntax. MUST-follow rules that apply to every kernel: forbidden control flow (return/break/continue/lambda/while), tensor slice/index restrictions, scalar conversion rules, BLOCK_SIZE upper bound. Violating any of these produces a compile or runtime error on Ascend.
Triton Ascend 性能优化通用策略: BLOCK_SIZE 选择 (1024-2048 for elementwise, must be <65536), grid configuration (use VEC_CORE_NUM / CUBE_CORE_NUM, 2D/3D grid for matmul / conv / reduce, 1D grid + inner loop for elementwise / pointwise), 256B alignment for memory transfers, autotune block-size patterns, fp16 / fp32 precision conversion. Bind via keywords like matmul, elementwise, reduce, block_size, grid, autotune, alignment, fp16, fp32, tile, interleaved-loop, cube-core, vec-core.
SOC 職業分類に基づく
SKILL.md を表示中
| name | pypto-case-matvec |
| description | 矩阵-向量乘法:K > 65535 时用 elementwise mul + sum 替代 matmul |
| category | case |
| version | 1.0.0 |
| metadata | {"backend":"ascend","dsl":"pypto","operator_patterns":"matrix_vector,matvec,large_k"} |
A: (256, 131072), B: (131072, 1) -> C: (256, 1)
K=131072 超过 pypto.matmul 限制(最后一维 <= 65535),用 sum(a * b_row, dim=1) 替代。
def create_matvec_sum_kernel(a_shape, b_shape):
out_shape = (a_shape[0], 1)
@pypto.frontend.jit(...)
def matvec_sum_kernel(
a: pypto.Tensor(a_shape, pypto.DT_FP32),
b_row: pypto.Tensor(b_shape, pypto.DT_FP32),
) -> pypto.Tensor(out_shape, pypto.DT_FP32):
output = pypto.tensor(list(out_shape), pypto.DT_FP32)
pypto.set_vec_tile_shapes(1, 8192)
output[:] = pypto.sum(a * b_row, dim=1, keepdim=True)
return output
return matvec_sum_kernel
class ModelNew(torch.nn.Module):
def forward(self, A, B):
assert A.dim() == 2
assert tuple(A.shape) == (256, 131072)
assert B.dim() == 2
assert tuple(B.shape) == (131072, 1)
A = A.contiguous()
# B: (K, 1) -> (1, K) 用于广播乘法
B_row = B.contiguous().reshape(1, -1)
return create_matvec_sum_kernel(tuple(A.shape), tuple(B_row.shape))(A, B_row)
关键点:forward 中 B.reshape(1, -1) 将列向量转为行向量,使 a * b_row 可广播。