Pull Request已成功合入, 合并人@openeuler-ci-bot
(感谢 Igor Prusov 的贡献)变更摘要
该 PR 将 conv1d_and_silu 融合卷积核从 [B, C, S] 布局切换为直接消费/产出 [B, S, C] 布局(channel 为内层连续维度),从而在 prefill 路径中去掉了两次 XliteOpTranspose_1_2 转置调用,并使测试运行提速约 13%。核心改动集中在 conv1d_and_silu.h 内核重写:64 通道向量化维度由 sequence 改为 channel,每个 tap 由原先的 vgather 改为连续且 32B 对齐的向量加载(vmul + vadd),并按 kTile 分块处理;同时删除了旧的 packed 通道加载/存储路径与标量跨窗口计算逻辑。
主要改动
- 内核布局重构(
conv1d_and_silu.h):将统一布局(seqLen != 0)从input/output [B, C, S]改为[B, S, C](channel 为内层连续维),权重[C, 1, K]保持不变;新增LoadTileInto/StoreTile/ConvertTile/ProcessSequence等按kTile=128分块加载与写回的逻辑,SiLU直接写out_tile,删除了LoadPackedChannel/StorePackedChannel及旧的全宽vgather循环。 - 权重与状态重排:新增
LoadWeights/LoadState/WriteBackState,将[w, K]的权重和状态重排为[K, kBlock](tap j 位于连续 64 通道向量),使每次卷积 tap 为连续向量乘加而非逐元素 gather;WriteBackState基于LoadStateWin加载的尾部输入窗口推导新状态。 - 管道同步改为事件标志:用
FlagMTE2V/FlagVMTE2/FlagVMTE3/FlagMTE3V/FlagMTE2S/FlagVS/FlagSV/FlagSMTE3等显式事件标志替代依赖pipe_barrier的隐式顺序,并统一通过EVENT_ID0/1/2编号管理窗口与输出 tile 流水线的 MTE2/V/MTE3/S 依赖。 - 上层调用去除转置(
model.cpp与op.cpp):prefill 分支删除两次XliteOpTranspose_1_2,将[B, S, C]的mix3d直接传给XliteOpConv1dAndSiLU并直接产出[B, S, C]的convSeq3d;op.cpp的形状校验改为[B,*,C]约定(channels = input.shape[2]、seqLen = input.shape[1]),错误信息同步更新。 - 测试与类型桩更新:
conv1d_and_silu.py测试移除transpose_1_2调用;conv1d_and_silu_token.py的 perf 对比改为 channel 并行路径直接消费/产出[B, S, C]并与 token 路径做数值交叉校验;_C.pyi中linear_att_conv_and_silu的mix_qkv/output形状注释更新为[B, S, C]。


Welcome To openEuler Community
Hey @igor-prusov , thanks for your contribution to the community.
Bot Usage Manual
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here . That means you can comment below every pull request or issue to trigger Bot Commands. You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
Contact Guide
If you have any questions, please contact the SIG: sig-Long ,
and any of the maintainers: @juntianlinux, @luanjianhai, @sinever ,
and any of the committers: @JungleXX, @hao-mingzhe, @lulina1, @rubickrt .


CI Test Results
1. GVirt/xlite Static Check
Status: Passed
Check Results:
- C++: Passed
- Python: Passed
Click to see detailed output
Checking 174 C++ files...
Building project to generate operator header files...
Generating compile_commands.json...
[K Checked 1/174 files
[K Checked 2/174 files
[K Checked 3/174 files
[K Checked 4/174 files
[K Checked 5/174 files
[K Checked 6/174 files
[K Checked 7/174 files
[K Checked 8/174 files
[K Checked 9/174 files
[K Checked 10/174 files
[K Checked 11/174 files
[K Checked 12/174 files
[K Checked 13/174 files
[K Checked 14/174 files
[K Checked 15/174 files
[K Checked 16/174 files
[K Checked 17/174 files
[K Checked 18/174 files
[K Checked 19/174 files
[K Checked 20/174 files
[K Checked 21/174 files
[K Checked 22/174 files
[K Checked 23/174 files
[K Checked 24/174 files
[K Checked 25/174 files
[K Checked 26/174 files
[K Checked 27/174 files
[K Checked 28/174 files
[K Checked 29/174 files
[K Checked 30/174 files
[K Checked 31/174 files
[K Checked 32/174 files
[K Checked 33/174 files
[K Checked 34/174 files
[K Checked 35/174 files
[K Checked 36/174 files
[K Checked 37/174 files
[K Checked 38/174 files
[K Checked 39/174 files
[K Checked 40/174 files
[K Checked 41/174 files
[K Checked 42/174 files
[K Checked 43/174 files
[K Checked 44/174 files
[K Checked 45/174 files
[K Checked 46/174 files
[K Checked 47/174 files
[K Checked 48/174 files
[K Checked 49/174 files
[K Checked 50/174 files
[K Checked 51/174 files
[K Checked 52/174 files
[K Checked 53/174 files
[K Checked 54/174 files
[K Checked 55/174 files
[K Checked 56/174 files
[K Checked 57/174 files
[K Checked 58/174 files
[K Checked 59/174 files
[K Checked 60/174 files
[K Checked 61/174 files
[K Checked 62/174 files
[K Checked 63/174 files
[K Checked 64/174 files
[K Checked 65/174 files
[K Checked 66/174 files
[K Checked 67/174 files
[K Checked 68/174 files
[K Checked 69/174 files
[K Checked 70/174 files
[K Checked 71/174 files
[K Checked 72/174 files
[K Checked 73/174 files
[K Checked 74/174 files
[K Checked 75/174 files
[K Checked 76/174 files
[K Checked 77/174 files
[K Checked 78/174 files
[K Checked 79/174 files
[K Checked 80/174 files
[K Checked 81/174 files
[K Checked 82/174 files
[K Checked 83/174 files
[K Checked 84/174 files
[K Checked 85/174 files
[K Checked 86/174 files
[K Checked 87/174 files
[K Checked 88/174 files
[K Checked 89/174 files
[K Checked 90/174 files
[K Checked 91/174 files
[K Checked 92/174 files
[K Checked 93/174 files
[K Checked 94/174 files
[K Checked 95/174 files
[K Checked 96/174 files
[K Checked 97/174 files
[K Checked 98/174 files
[K Checked 99/174 files
[K Checked 100/174 files
[K Checked 101/174 files
[K Checked 102/174 files
[K Checked 103/174 files
[K Checked 104/174 files
[K Checked 105/174 files
[K Checked 106/174 files
[K Checked 107/174 files
[K Checked 108/174 files
[K Checked 109/174 files
[K Checked 110/174 files
[K Checked 111/174 files
[K Checked 112/174 files
[K Checked 113/174 files
[K Checked 114/174 files
[K Checked 115/174 files
[K Checked 116/174 files
[K Checked 117/174 files
[K Checked 118/174 files
[K Checked 119/174 files
[K Checked 120/174 files
[K Checked 121/174 files
[K Checked 122/174 files
[K Checked 123/174 files
[K Checked 124/174 files
[K Checked 125/174 files
[K Checked 126/174 files
[K Checked 127/174 files
[K Checked 128/174 files
[K Checked 129/174 files
[K Checked 130/174 files
[K Checked 131/174 files
[K Checked 132/174 files
[K Checked 133/174 files
[K Checked 134/174 files
[K Checked 135/174 files
[K Checked 136/174 files
[K Checked 137/174 files
[K Checked 138/174 files
[K Checked 139/174 files
[K Checked 140/174 files
[K Checked 141/174 files
[K Checked 142/174 files
[K Checked 143/174 files
[K Checked 144/174 files
[K Checked 145/174 files
[K Checked 146/174 files
[K Checked 147/174 files
[K Checked 148/174 files
[K Checked 149/174 files
[K Checked 150/174 files
[K Checked 151/174 files
[K Checked 152/174 files
[K Checked 153/174 files
[K Checked 154/174 files
[K Checked 155/174 files
[K Checked 156/174 files
[K Checked 157/174 files
[K Checked 158/174 files
[K Checked 159/174 files
[K Checked 160/174 files
[K Checked 161/174 files
[K Checked 162/174 files
[K Checked 163/174 files
[K Checked 164/174 files
[K Checked 165/174 files
[K Checked 166/174 files
[K Checked 167/174 files
[K Checked 168/174 files
[K Checked 169/174 files
[K Checked 170/174 files
[K Checked 171/174 files
[K Checked 172/174 files
[K Checked 173/174 files
[K Checked 174/174 files
✅ All C++ checks passed!
Checking 3 Python files...
[K Checking xlite/__init__.py
[K Checking xlite/tools/__init__.py
[K Checking xlite/tools/fp8_cast_bf16.py
Running flake8...
Running mypy...
✅ All Python checks passed!
============================================================
xlite Static Checker
============================================================
============================================================
Running C++ Static Checks
============================================================
============================================================
Running Python Static Checks
============================================================
============================================================
Summary
============================================================
CPP : ✅ PASSED
PYTHON : ✅ PASSED
✅ All checks passed!
2. vllm-ascend Static Check
Status: Passed
Click to see detailed output
Success: no issues found in 1 source file
3. UT Test
Status: Passed
Click to see detailed output
Running accuracy test for qwen3_0.6B...
[38;5;210m(R0) [0mEuler Xlite Model Inited! [tensor paralled(1), data parallel(1), expert parallel(1)]
Qwen3ModelArgs(max_batch_size=4, max_seq_len=1024, dim=1024, head_dim=128, inter_dim=3072, vocab_size=151936, n_layers=28, n_heads=16, n_kv_heads=8, norm_eps=1e-06, rope_theta=1000000.0, dtype='bfloat16', tie_word_embeddings=True, qkv_bias=False, qk_norm=True, model_type='qwen3', config_path=PosixPath('/mnt/nvme0n1/models/Qwen3-0.6B/config.json'))
Memory usage: Model: 1433 MB KV Cache: 448 MB Tensor pool: 104 MB
start to run
Query: Hello, my name is
Completion: Lina. I'm a 22-year-old student from China. I'm interested in studying in the US. I'm looking for a job in the
Query: The president of the United States is
Completion: the same as the president of the United Nations. This is because the president of the United States is the same as the president of the United Nations. The president
Query: The capital of France is
Completion: Paris. The capital of Italy is Rome. The capital of Spain is Madrid. The capital of China is Beijing. The capital of Japan is Tokyo. The capital
Query: The future of AI is
Completion: not just a technological challenge but a profound transformation of how we live, work, and interact with the world. As we stand at the intersection of artificial intelligence and
generate 146 tokens take 411.38 ms. avg: 354.90 tokens/s @ 12.10 ms bs: 4
The results have been written into the input_file.
========================================
Accuracy Test Results
========================================
✓ Test 0 PASSED
✓ Test 1 PASSED
✓ Test 2 PASSED
✓ Test 3 PASSED
========================================
Summary: 4 passed, 0 failed out of 4 tests
========================================
All accuracy tests PASSED!
This comment was automatically generated by CI bot


CI Test Results
1. GVirt/xlite Static Check
Status: Passed
Check Results:
- C++: Passed
- Python: Passed
Click to see detailed output
Checking 174 C++ files...
Building project to generate operator header files...
Generating compile_commands.json...
[K Checked 1/174 files
[K Checked 2/174 files
[K Checked 3/174 files
[K Checked 4/174 files
[K Checked 5/174 files
[K Checked 6/174 files
[K Checked 7/174 files
[K Checked 8/174 files
[K Checked 9/174 files
[K Checked 10/174 files
[K Checked 11/174 files
[K Checked 12/174 files
[K Checked 13/174 files
[K Checked 14/174 files
[K Checked 15/174 files
[K Checked 16/174 files
[K Checked 17/174 files
[K Checked 18/174 files
[K Checked 19/174 files
[K Checked 20/174 files
[K Checked 21/174 files
[K Checked 22/174 files
[K Checked 23/174 files
[K Checked 24/174 files
[K Checked 25/174 files
[K Checked 26/174 files
[K Checked 27/174 files
[K Checked 28/174 files
[K Checked 29/174 files
[K Checked 30/174 files
[K Checked 31/174 files
[K Checked 32/174 files
[K Checked 33/174 files
[K Checked 34/174 files
[K Checked 35/174 files
[K Checked 36/174 files
[K Checked 37/174 files
[K Checked 38/174 files
[K Checked 39/174 files
[K Checked 40/174 files
[K Checked 41/174 files
[K Checked 42/174 files
[K Checked 43/174 files
[K Checked 44/174 files
[K Checked 45/174 files
[K Checked 46/174 files
[K Checked 47/174 files
[K Checked 48/174 files
[K Checked 49/174 files
[K Checked 50/174 files
[K Checked 51/174 files
[K Checked 52/174 files
[K Checked 53/174 files
[K Checked 54/174 files
[K Checked 55/174 files
[K Checked 56/174 files
[K Checked 57/174 files
[K Checked 58/174 files
[K Checked 59/174 files
[K Checked 60/174 files
[K Checked 61/174 files
[K Checked 62/174 files
[K Checked 63/174 files
[K Checked 64/174 files
[K Checked 65/174 files
[K Checked 66/174 files
[K Checked 67/174 files
[K Checked 68/174 files
[K Checked 69/174 files
[K Checked 70/174 files
[K Checked 71/174 files
[K Checked 72/174 files
[K Checked 73/174 files
[K Checked 74/174 files
[K Checked 75/174 files
[K Checked 76/174 files
[K Checked 77/174 files
[K Checked 78/174 files
[K Checked 79/174 files
[K Checked 80/174 files
[K Checked 81/174 files
[K Checked 82/174 files
[K Checked 83/174 files
[K Checked 84/174 files
[K Checked 85/174 files
[K Checked 86/174 files
[K Checked 87/174 files
[K Checked 88/174 files
[K Checked 89/174 files
[K Checked 90/174 files
[K Checked 91/174 files
[K Checked 92/174 files
[K Checked 93/174 files
[K Checked 94/174 files
[K Checked 95/174 files
[K Checked 96/174 files
[K Checked 97/174 files
[K Checked 98/174 files
[K Checked 99/174 files
[K Checked 100/174 files
[K Checked 101/174 files
[K Checked 102/174 files
[K Checked 103/174 files
[K Checked 104/174 files
[K Checked 105/174 files
[K Checked 106/174 files
[K Checked 107/174 files
[K Checked 108/174 files
[K Checked 109/174 files
[K Checked 110/174 files
[K Checked 111/174 files
[K Checked 112/174 files
[K Checked 113/174 files
[K Checked 114/174 files
[K Checked 115/174 files
[K Checked 116/174 files
[K Checked 117/174 files
[K Checked 118/174 files
[K Checked 119/174 files
[K Checked 120/174 files
[K Checked 121/174 files
[K Checked 122/174 files
[K Checked 123/174 files
[K Checked 124/174 files
[K Checked 125/174 files
[K Checked 126/174 files
[K Checked 127/174 files
[K Checked 128/174 files
[K Checked 129/174 files
[K Checked 130/174 files
[K Checked 131/174 files
[K Checked 132/174 files
[K Checked 133/174 files
[K Checked 134/174 files
[K Checked 135/174 files
[K Checked 136/174 files
[K Checked 137/174 files
[K Checked 138/174 files
[K Checked 139/174 files
[K Checked 140/174 files
[K Checked 141/174 files
[K Checked 142/174 files
[K Checked 143/174 files
[K Checked 144/174 files
[K Checked 145/174 files
[K Checked 146/174 files
[K Checked 147/174 files
[K Checked 148/174 files
[K Checked 149/174 files
[K Checked 150/174 files
[K Checked 151/174 files
[K Checked 152/174 files
[K Checked 153/174 files
[K Checked 154/174 files
[K Checked 155/174 files
[K Checked 156/174 files
[K Checked 157/174 files
[K Checked 158/174 files
[K Checked 159/174 files
[K Checked 160/174 files
[K Checked 161/174 files
[K Checked 162/174 files
[K Checked 163/174 files
[K Checked 164/174 files
[K Checked 165/174 files
[K Checked 166/174 files
[K Checked 167/174 files
[K Checked 168/174 files
[K Checked 169/174 files
[K Checked 170/174 files
[K Checked 171/174 files
[K Checked 172/174 files
[K Checked 173/174 files
[K Checked 174/174 files
✅ All C++ checks passed!
Checking 3 Python files...
[K Checking xlite/__init__.py
[K Checking xlite/tools/__init__.py
[K Checking xlite/tools/fp8_cast_bf16.py
Running flake8...
Running mypy...
✅ All Python checks passed!
============================================================
xlite Static Checker
============================================================
============================================================
Running C++ Static Checks
============================================================
============================================================
Running Python Static Checks
============================================================
============================================================
Summary
============================================================
CPP : ✅ PASSED
PYTHON : ✅ PASSED
✅ All checks passed!
2. vllm-ascend Static Check
Status: Passed
Click to see detailed output
Success: no issues found in 1 source file
3. UT Test
Status: Passed
Click to see detailed output
Running accuracy test for qwen3_0.6B...
[38;5;210m(R0) [0mEuler Xlite Model Inited! [tensor paralled(1), data parallel(1), expert parallel(1)]
Qwen3ModelArgs(max_batch_size=4, max_seq_len=1024, dim=1024, head_dim=128, inter_dim=3072, vocab_size=151936, n_layers=28, n_heads=16, n_kv_heads=8, norm_eps=1e-06, rope_theta=1000000.0, dtype='bfloat16', tie_word_embeddings=True, qkv_bias=False, qk_norm=True, model_type='qwen3', config_path=PosixPath('/mnt/nvme0n1/models/Qwen3-0.6B/config.json'))
Memory usage: Model: 1433 MB KV Cache: 448 MB Tensor pool: 104 MB
start to run
Query: Hello, my name is
Completion: Lina. I'm a 22-year-old student from China. I'm interested in studying in the US. I'm looking for a job in the
Query: The president of the United States is
Completion: the same as the president of the United Nations. This is because the president of the United States is the same as the president of the United Nations. The president
Query: The capital of France is
Completion: Paris. The capital of Italy is Rome. The capital of Spain is Madrid. The capital of China is Beijing. The capital of Japan is Tokyo. The capital
Query: The future of AI is
Completion: not just a technological challenge but a profound transformation of how we live, work, and interact with the world. As we stand at the intersection of artificial intelligence and
generate 146 tokens take 419.95 ms. avg: 347.66 tokens/s @ 12.35 ms bs: 4
The results have been written into the input_file.
========================================
Accuracy Test Results
========================================
✓ Test 0 PASSED
✓ Test 1 PASSED
✓ Test 2 PASSED
✓ Test 3 PASSED
========================================
Summary: 4 passed, 0 failed out of 4 tests
========================================
All accuracy tests PASSED!
This comment was automatically generated by CI bot


/lgtm


/approve


Was This PR authored or co-authored using generative AI tooling?
[ ] No
[x] Yes
__1. AI Agent : OpenCode
__2. AI Model : DeepSeek V4 Pro
__3. Prompt :
Reference: openEuler Community Generative AI Use and Open Source Contribution Policy
What this PR does / why we need it:
Optimize conv1d_and_silu kernel by switching to [B, S, C] layout. This allows to drop 2 transpose calls and optimizes the data layout. With this change conv1d_and_silu.py test completes ~13% faster.
Which issue this PR fixes
(optional, in
fixes #<issue number>(, fixes #<issue_number>, ...)format, will close that issue when PR gets merged): fixes #Special notes for your reviewer:
Even after optimization the conv1d_and_silu is slower compared to conv1d_and_silu_token, so we still need that option for prefill.