Commit Graph

557 Commits

Author SHA1 Message Date
project6-dev
aebc660a10 revert: restore to 8c8c0286 (last confirmed build success)
Revert LD_PRELOAD addition and patch_xformers profiling skip.
Need to identify which change caused build failure before re-adding.
2026-08-13 15:08:40 +00:00
project6-dev
bed1fc4d54 fix(OOM): skip flash_attn_varlen during profiling — use Q-tiling fallback
flash_attn_varlen_func allocates O(n²) temp memory for 4096 dummy tokens
during profile_run, causing OOM at gpu_memory_utilization=0.80.

BI100_IN_STARTUP_PROFILE=1 env var is already set by
patch_worker_startup_profile_guard.py during the synthetic forward pass.
Real inference requests still use flash_attn_varlen (much faster).
2026-08-13 14:41:40 +00:00
project6-dev
4518a39d12 fix: restore LD_PRELOAD libcccl_allocator.so — verified compiles in docker build
verify_submission.sh confirmed: CCCL preload compiles and loads on BI-V100.
Was removed in 8d2f30f0 due to crash concern, but the .so is built by
patch_ops.sh during docker build so it will always exist at runtime.
2026-08-13 14:13:19 +00:00
project6-dev
8c8c0286c9 Revert "fix(build): revert patch_ops.sh to a3c45d3b — remove cccl_preload + corex extension compile steps"
This reverts commit 14d1725cdd.
2026-08-13 13:56:13 +00:00
project6-dev
14d1725cdd fix(build): revert patch_ops.sh to a3c45d3b — remove cccl_preload + corex extension compile steps
These 14 lines were added after a3c45d3b (last confirmed working build).
The cccl_preload build and corex extension compile steps may cause
docker build failure on the competition platform even with || fallback.

Reverting to the exact patch_ops.sh from a3c45d3b.
.cu and .sh source files remain in the repo for future use.
2026-08-13 13:53:21 +00:00
project6-dev
09d92dce5d fix(build): remove 1106 extra CCCL headers — keep only 288 needed by allocator
commit 4c365b8c added 1106 CCCL device-level headers (294K lines) to
qwen3_6_scripts/cccl_preload/include/. These are NOT used by the allocator
preload (which only needs cub/util_allocator.cuh + 288 transitive deps)
and cannot compile on corex CUDA 10.2 anyway.

The extra headers doubled docker context from 15MB to 31MB, likely
causing platform build timeout or size limit failure.

Restoring to the original 288-header set that is proven to compile and run.
2026-08-13 13:40:17 +00:00
project6-dev
5ec60dc574 fix(build): remove --num-gpu-blocks-override — may fail platform yaml validation
Revert to yaml-only changes that don't add new CLI args:
- gpu-memory-utilization: 0.85 → 0.80 (more headroom for profiling)
- max-num-batched-tokens: 8192 → 4096 (smaller profiling dummy batch)
- removed: --num-gpu-blocks-override (not in platform's allowed arg list)
2026-08-13 13:34:27 +00:00
project6-dev
71644e1530 fix: num-gpu-blocks-override 4000→5500 — 4000 blocks can't fit a 70K prompt
5500 blocks × 16 tokens = 88K token capacity.
Covers max-model-len=80000 + output generation headroom.
2026-08-13 13:25:23 +00:00
project6-dev
cf7824313f fix(OOM): add --num-gpu-blocks-override=4000 to skip profiling
Profiling OOM: flash_attn_varlen_func allocates large temp buffers during
profile_run with 8192 dummy tokens. patch_worker_profile_override.py already
has skip logic when num_gpu_blocks_override is set.

4000 blocks × 16 tokens/block = 64K token KV capacity.
With max-model-len=80000 and prefix caching, this is sufficient.
Sub 168 reference: ran 262K context on 0.95 util without override because
base image profiling doesn't use flash_attn_varlen (uses native xformers).
2026-08-13 13:24:36 +00:00
Claude
8d2f30f065 fix(critical): remove LD_PRELOAD libcccl_allocator.so — crashes service if .so missing
The CCCL preload allocator build frequently fails (CUB headers conflict
with CoreX CUDA 10.2). When the .so doesn't exist, LD_PRELOAD causes
the Python process to abort immediately, resulting in Connection Refused
for all 881 replay requests (0 score).

This was the root cause of sub 655's failure: service never started.
2026-08-13 13:15:13 +00:00
Claude
451bdc8204 fix: lower gpu-memory-utilization to 0.85 — prevent profiling OOM
CCCL CachingDeviceAllocator reserves some memory for its bin cache.
With 0.90 utilization + max-model-len=80000, profiling stage OOMs.
0.85 leaves ~1.6GB headroom per GPU for profiling + allocator cache.
2026-08-13 12:38:42 +00:00
project6-dev
6092edebde fix: import torch.utils.cpp_extension explicitly in build script 2026-08-13 11:37:10 +00:00
project6-dev
f6cf9d662e fix(CCCL): split compilation to isolate CCCL headers from torch/corex
Two problems from real BI-V100 build:

1. 'CUDA versions below 12 are not supported'
   → Add CCCL_IGNORE_DEPRECATED_CUDA_BELOW_12 (official suppress macro)

2. corex thrust/complex.h conflicts with CCCL thrust headers
   → Split into two compilation units:
     - cccl_moe_sort_scatter.cu: CCCL headers only, C API, no torch
     - cccl_moe_sort_scatter_pybind.cpp: torch headers only, no CCCL
   Same pattern as proven cccl_allocator_preload.cu

3. Variadic device functions rejected by corex clang:
   → is_referenceable.h: __test(...) → __test(long)
   → invoke.h: __any(...) → template __any(_T)
   → conjunction.h: __and_helper(...) → __and_helper(long)
   SFINAE still works: int overload wins, long is fallback.
2026-08-13 11:35:43 +00:00
project6-dev
05706f0d60 fix(build): use block-level CUB only — device-level API conflicts with corex CUDA 10.2
CCCL latest requires CUDA 12+, corex is 10.2. Device-level CUB headers
(DeviceRadixSort etc) pull in thrust/detail/type_traits.h which conflicts
with corex's thrust/complex.h namespace.

Rewrite to use block-level CUB BlockScan only (same pattern as the proven
corex_moe_index_combine.cu): histogram + prefix_sum + scatter.
No extra_include_paths needed — uses corex's built-in cub/block/block_scan.cuh.
2026-08-13 11:25:37 +00:00
Claude
daa8067080 fix: remove expandable_segments:True from PYTORCH_CUDA_ALLOC_CONF
CoreX CUDACachingAllocator does not support expandable_segments.
Setting it causes ASSERT failure at startup:
  'expandable_segments:True not supported on corex CUDACachingAllocator'

Replace with max_split_size_mb:512 only.
2026-08-13 11:22:32 +00:00
project6-dev
4c365b8c03 feat(CCCL): device-level CUB algorithms for MoE dispatch
Add complete CCCL CUB header tree (1394 files) to cccl_preload/include/:
- cub/device/ — DeviceRadixSort, DeviceScan, DeviceHistogram, DeviceReduce, DeviceSelect
- cub/agent/ — all agent implementations (sort, scan, reduce, histogram, etc)
- cub/block/ — BlockScan, BlockReduce, BlockExchange, BlockLoad, BlockStore, etc
- cub/warp/ — WarpScan, WarpReduce, WarpExchange, WarpMergeSort
- cub/thread/ — thread-level operators
- thrust/ — sort_by_key, iterator utilities
- cuda/ — execution, stream, memory_resource, functional

New kernel: cccl_moe_sort_scatter.cu
- Uses CUB DeviceRadixSort::SortPairs to sort (expert_id, token_idx) pairs
- O(n) radix sort replaces O(n log n) torch.argsort in MoE prefill path
- Boundary detection + fill for expert offsets/sizes
- Compiled against CCCL upstream headers (not corex CUB) to avoid BI-V100 bugs

Previously only 288 CCCL headers (CachingDeviceAllocator only).
Now 1394 headers — full CUB device-level algorithm stack available for
all future kernels.
2026-08-13 11:18:52 +00:00
Claude
7ba97f7977 fix: relax .dockerignore — remove *.txt *.md *.json wildcards that may break build
Previous wildcards excluded too aggressively. Keep only large
directories (cccl_upstream, upstream_ref, vllm, etc) and specific
large files.
2026-08-13 10:46:31 +00:00
Claude
45161610f0 fix: thread_local reentrant guard — prevent cudaMalloc infinite recursion
CUB CachingDeviceAllocator::DeviceAllocate calls cudaMalloc internally
on cache miss. Without a guard, our intercepted cudaMalloc recurses
into DeviceAllocate → cudaMalloc → DeviceAllocate → segfault.

thread_local g_in_allocator flag detects reentrant calls and forwards
them directly to the real cudaMalloc/cudaFree via dlsym(RTLD_NEXT).
2026-08-13 10:37:32 +00:00
Claude
3ce5bff10f fix: use cccl_preload::cub namespace — CUB_WRAPPED_NAMESPACE requires it
CUB_DISABLE_NAMESPACE_MAGIC requires CUB_WRAPPED_NAMESPACE.
CUB_WRAPPED_NAMESPACE=cccl_preload wraps cub into cccl_preload::cub.
Source must use cccl_preload::cub::CachingDeviceAllocator.
2026-08-13 10:36:27 +00:00
Claude
c1e23615b5 fix: remove CUB_WRAPPED_NAMESPACE and _CCCL_COMPILER_GCC from build flags
CUB_WRAPPED_NAMESPACE=cccl_preload wraps cub into cccl_preload::cub
but cccl_allocator_preload.cu uses bare cub:: — compilation fails.
_CCCL_COMPILER_GCC=1 conflicts with CCCL auto-detection (redefined warning).

Drop both. CUB_DISABLE_NAMESPACE_MAGIC alone is sufficient.
2026-08-13 10:35:11 +00:00
dylanyunlon
32325f9624 build: wire CCCL preload into competition pipeline
computility-run.yaml:
  PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
  LD_PRELOAD=/workspace/qwen3_6_scripts/cccl_preload/libcccl_allocator.so

patch_ops.sh:
  调用 cccl_preload/build_cccl_preload.sh 编译 .so

真机验证: ALL TESTS PASSED on BI-V100 32GB
2026-08-13 10:31:33 +00:00
Claude
3af2a32eb5 fix: verify_submission.sh — strip semicolons from path extraction grep 2026-08-13 10:21:23 +00:00
Claude
9ef5af3bda fix: wire CCCL preload into build+launch chain + pre-submission verification
- patch_ops.sh: call cccl_preload/build_cccl_preload.sh (new CCCL deps)
  instead of old build_cccl_preload_allocator.sh (mock)
- computility-run.yaml: add LD_PRELOAD + CCCL_ALLOC_DISABLE env vars
- Remove old mock files: cccl_preload_allocator.cu, build script, test
- .dockerignore: exclude cccl_upstream/ upstream_ref/ vllm/ *.zip
- verify_submission.sh: 31-point pre-submission check
  (file structure, CCCL chain, path matching, prebuilt integrity,
   corex imports, docker context, GPU smoke test)
2026-08-13 10:00:26 +00:00
dylanyunlon
a6b5891bfc feat: CCCL CachingDeviceAllocator preload — 完整依赖链 288 files
从 cccl_upstream 递归追踪 cub/util_allocator.cuh 的全部 include 依赖:
  cub/         9 files (config, util_*, version, detect_cuda_runtime)
  cuda/        libcudacxx type_traits, concepts, algorithm, iterator...
  nv/          target macros, preprocessor

总计 288 个头文件 (1.4MB),打包到 include/ 目录,编译时 -I include
即可完全脱离 CCCL 原始目录结构。

.cu 文件直接 #include <cub/util_allocator.cuh>,
走原版 CUB CachingDeviceAllocator,零 mock。

BI-V100 参数: growth=2 bins=[8..32] max_cached=8GB/device
2026-08-13 09:53:42 +00:00
dylanyunlon
8dc6462a2b feat: CCCL CachingDeviceAllocator LD_PRELOAD — bypass CoreX expandable_segments ASSERT
从 CCCL upstream cub/cub/util_allocator.cuh 提取 CachingDeviceAllocator
核心算法,去掉所有 CUB/CCCL 宏依赖,编译为独立 .so。

用 LD_PRELOAD 拦截 cudaMalloc/cudaFree,路由到 CUB 的 geometric-bin
缓存分配器。同时在 constructor 中 strip PYTORCH_CUDA_ALLOC_CONF 里的
expandable_segments 配置,避免 CoreX CUDACachingAllocator.cpp:545 ASSERT。

BI-V100 调优参数:
  bin_growth=8, min_bin=3 (512B), max_bin=13 (~550MB)
  max_cached_bytes=4GB per device (32GB卡的合理上限)

真机测试步骤:
  1. bash build_cccl_preload.sh
  2. LD_PRELOAD=./libcccl_allocator.so CCCL_ALLOC_DEBUG=1 \
     PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \
     python3 verify_preload.py
2026-08-13 09:53:42 +00:00
dylanyunlon
887e0981ad fix: remove expandable_segments — CoreX CUDACachingAllocator不支持
BI-V100 CoreX PyTorch的CUDACachingAllocator.cpp:545没有实现
expandable segment特性,导致模型加载阶段(VocabParallelEmbedding)
直接INTERNAL ASSERT FAILED崩溃。

替换为max_split_size_mb:512减少内存碎片化。
2026-08-13 09:53:37 +00:00
Claude
9cfc6c72c0 feat(CCCL): LD_PRELOAD CachingDeviceAllocator — intercept cudaMalloc/cudaFree
Route C: replace PyTorch's cudaMalloc/cudaFree with CCCL CUB's
CachingDeviceAllocator via LD_PRELOAD. Eliminates driver-level allocation
overhead by reusing freed GPU memory from a bin-based cache.

Based on cccl_upstream/cub/cub/util_allocator.cuh (901 lines).
Self-contained .so with no CCCL header dependencies at compile time.

Files:
- cccl_preload_allocator.cu: the allocator (405 lines)
- build_cccl_preload_allocator.sh: build script (corex clang++ or g++ fallback)
- test_cccl_preload.sh: smoke test suite for BI-V100
- patch_ops.sh: build during docker build
- computility-run.yaml: LD_PRELOAD env var for runtime

Config via env:
  CCCL_ALLOC_BIN_GROWTH=8, MIN_BIN=3, MAX_BIN=13, MAX_CACHED_MB=4096

Test on real machine:
  cd qwen3_6_scripts && bash test_cccl_preload.sh
2026-08-13 09:53:37 +00:00
root
ca42633148 build: trigger rebuild after merge reconciliation 2026-08-13 09:53:19 +00:00
root
7e4e04b7c6 build: trigger rebuild after merge reconciliation 2026-08-13 09:53:19 +00:00
dylanyunlon
089e810984 feat: CCCL CachingDeviceAllocator preload — 完整依赖链 288 files
从 cccl_upstream 递归追踪 cub/util_allocator.cuh 的全部 include 依赖:
  cub/         9 files (config, util_*, version, detect_cuda_runtime)
  cuda/        libcudacxx type_traits, concepts, algorithm, iterator...
  nv/          target macros, preprocessor

总计 288 个头文件 (1.4MB),打包到 include/ 目录,编译时 -I include
即可完全脱离 CCCL 原始目录结构。

.cu 文件直接 #include <cub/util_allocator.cuh>,
走原版 CUB CachingDeviceAllocator,零 mock。

BI-V100 参数: growth=2 bins=[8..32] max_cached=8GB/device
2026-08-13 09:53:19 +00:00
dylanyunlon
e7c703ef94 feat: CCCL CachingDeviceAllocator LD_PRELOAD — bypass CoreX expandable_segments ASSERT
从 CCCL upstream cub/cub/util_allocator.cuh 提取 CachingDeviceAllocator
核心算法,去掉所有 CUB/CCCL 宏依赖,编译为独立 .so。

用 LD_PRELOAD 拦截 cudaMalloc/cudaFree,路由到 CUB 的 geometric-bin
缓存分配器。同时在 constructor 中 strip PYTORCH_CUDA_ALLOC_CONF 里的
expandable_segments 配置,避免 CoreX CUDACachingAllocator.cpp:545 ASSERT。

BI-V100 调优参数:
  bin_growth=8, min_bin=3 (512B), max_bin=13 (~550MB)
  max_cached_bytes=4GB per device (32GB卡的合理上限)

真机测试步骤:
  1. bash build_cccl_preload.sh
  2. LD_PRELOAD=./libcccl_allocator.so CCCL_ALLOC_DEBUG=1 \
     PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \
     python3 verify_preload.py
2026-08-13 09:53:19 +00:00
dylanyunlon
c1e7065076 fix: remove expandable_segments — CoreX CUDACachingAllocator不支持
BI-V100 CoreX PyTorch的CUDACachingAllocator.cpp:545没有实现
expandable segment特性,导致模型加载阶段(VocabParallelEmbedding)
直接INTERNAL ASSERT FAILED崩溃。

替换为max_split_size_mb:512减少内存碎片化。
2026-08-13 09:53:01 +00:00
Claude
1ea2100cb8 feat(CCCL): LD_PRELOAD CachingDeviceAllocator — intercept cudaMalloc/cudaFree
Route C: replace PyTorch's cudaMalloc/cudaFree with CCCL CUB's
CachingDeviceAllocator via LD_PRELOAD. Eliminates driver-level allocation
overhead by reusing freed GPU memory from a bin-based cache.

Based on cccl_upstream/cub/cub/util_allocator.cuh (901 lines).
Self-contained .so with no CCCL header dependencies at compile time.

Files:
- cccl_preload_allocator.cu: the allocator (405 lines)
- build_cccl_preload_allocator.sh: build script (corex clang++ or g++ fallback)
- test_cccl_preload.sh: smoke test suite for BI-V100
- patch_ops.sh: build during docker build
- computility-run.yaml: LD_PRELOAD env var for runtime

Config via env:
  CCCL_ALLOC_BIN_GROWTH=8, MIN_BIN=3, MAX_BIN=13, MAX_CACHED_MB=4096

Test on real machine:
  cd qwen3_6_scripts && bash test_cccl_preload.sh
2026-08-13 09:53:01 +00:00
root
abbc13c4d5 build: trigger rebuild after merge reconciliation 2026-08-13 09:53:01 +00:00
root
a8304bf906 build: trigger rebuild after merge reconciliation 2026-08-13 09:53:01 +00:00
dylanyunlon
ddfd24da27 fix: sync to real-machine verified version — ALL TESTS PASSED
真机验证通过的精确版本:
- CUB_NS_QUALIFIER (不是 cub::)
- thread_local inside_cub reentrant guard
- 去掉 -D_CCCL_COMPILER_GCC=1
- total_mem → total_memory

BI-V100 32GB × Iluvatar, CoreX clang++ 编译 51864 bytes .so
expandable_segments:True 被 strip, CUB allocator 接管, 缓存复用确认
2026-08-13 09:52:15 +00:00
dylanyunlon
93e498197a fix: thread_local reentrant guard — prevent cudaMalloc infinite recursion
CUB CachingDeviceAllocator 内部在 cache miss 时调 cudaMalloc,
被我们的 LD_PRELOAD 再次拦截 → DeviceAllocate → cudaMalloc → 无限递归 → segfault。

加 thread_local bool inside_cub 标志:
  外部调用 → CUB allocator (带缓存)
  CUB 内部调用 → 直接走 dlsym(RTLD_NEXT) 的真实 cudaMalloc
2026-08-13 09:42:26 +00:00
dylanyunlon
0ac118911d fix: CUB_NS_QUALIFIER for wrapped namespace + drop _CCCL_COMPILER_GCC
CoreX clang++ 不是 GCC,-D_CCCL_COMPILER_GCC=1 和 CCCL 自己的
compiler detection 冲突。

CUB_WRAPPED_NAMESPACE=cccl_preload 使得命名空间变成 cccl_preload::cub,
用 CUB_NS_QUALIFIER 宏自动解析正确的命名空间。
2026-08-13 09:31:45 +00:00
dylanyunlon
8d6f9eaeb0 feat: CCCL CachingDeviceAllocator preload — 完整依赖链 288 files
从 cccl_upstream 递归追踪 cub/util_allocator.cuh 的全部 include 依赖:
  cub/         9 files (config, util_*, version, detect_cuda_runtime)
  cuda/        libcudacxx type_traits, concepts, algorithm, iterator...
  nv/          target macros, preprocessor

总计 288 个头文件 (1.4MB),打包到 include/ 目录,编译时 -I include
即可完全脱离 CCCL 原始目录结构。

.cu 文件直接 #include <cub/util_allocator.cuh>,
走原版 CUB CachingDeviceAllocator,零 mock。

BI-V100 参数: growth=2 bins=[8..32] max_cached=8GB/device
2026-08-13 09:26:41 +00:00
dylanyunlon
967d572073 feat: CCCL CachingDeviceAllocator LD_PRELOAD — bypass CoreX expandable_segments ASSERT
从 CCCL upstream cub/cub/util_allocator.cuh 提取 CachingDeviceAllocator
核心算法,去掉所有 CUB/CCCL 宏依赖,编译为独立 .so。

用 LD_PRELOAD 拦截 cudaMalloc/cudaFree,路由到 CUB 的 geometric-bin
缓存分配器。同时在 constructor 中 strip PYTORCH_CUDA_ALLOC_CONF 里的
expandable_segments 配置,避免 CoreX CUDACachingAllocator.cpp:545 ASSERT。

BI-V100 调优参数:
  bin_growth=8, min_bin=3 (512B), max_bin=13 (~550MB)
  max_cached_bytes=4GB per device (32GB卡的合理上限)

真机测试步骤:
  1. bash build_cccl_preload.sh
  2. LD_PRELOAD=./libcccl_allocator.so CCCL_ALLOC_DEBUG=1 \
     PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \
     python3 verify_preload.py
2026-08-13 09:26:41 +00:00
dylanyunlon
502ea2fc96 fix: remove expandable_segments — CoreX CUDACachingAllocator不支持
BI-V100 CoreX PyTorch的CUDACachingAllocator.cpp:545没有实现
expandable segment特性,导致模型加载阶段(VocabParallelEmbedding)
直接INTERNAL ASSERT FAILED崩溃。

替换为max_split_size_mb:512减少内存碎片化。
2026-08-13 09:26:41 +00:00
Claude
327c2c9044 feat(CCCL): LD_PRELOAD CachingDeviceAllocator — intercept cudaMalloc/cudaFree
Route C: replace PyTorch's cudaMalloc/cudaFree with CCCL CUB's
CachingDeviceAllocator via LD_PRELOAD. Eliminates driver-level allocation
overhead by reusing freed GPU memory from a bin-based cache.

Based on cccl_upstream/cub/cub/util_allocator.cuh (901 lines).
Self-contained .so with no CCCL header dependencies at compile time.

Files:
- cccl_preload_allocator.cu: the allocator (405 lines)
- build_cccl_preload_allocator.sh: build script (corex clang++ or g++ fallback)
- test_cccl_preload.sh: smoke test suite for BI-V100
- patch_ops.sh: build during docker build
- computility-run.yaml: LD_PRELOAD env var for runtime

Config via env:
  CCCL_ALLOC_BIN_GROWTH=8, MIN_BIN=3, MAX_BIN=13, MAX_CACHED_MB=4096

Test on real machine:
  cd qwen3_6_scripts && bash test_cccl_preload.sh
2026-08-13 09:21:52 +00:00
project6-dev
a1ae6e366f merge: reconcile squashed commit with modelhub history 2026-08-13 07:10:03 +00:00
project6-dev
d2b4df54ff perf: native ixformer decode — v1 ≤32K, v2 >32K (no Python fallback)
Decode path:
- ≤32K: paged_attention_v1 (5D KV layout, x=8) — verified on real BI-V100
- >32K: paged_attention_v2 (5D→4D permute) — verified 65K on real BI-V100
- Removes _forward_decode_pytorch Python fallback entirely

Verified: v1 passes ctx=1024..32768, v2 passes ctx=32768..65536+
flash_attn_varlen_func prefill already merged in prior commit (ad6863ed).
2026-08-13 07:09:50 +00:00
project6-dev
f28223c9da perf: native ixformer decode (v1 ≤32K, v2 >32K) + flash_attn_varlen prefill
Replaces all Python PyTorch fallback attention with native ixformer kernels:

Decode path:
- ≤32K: paged_attention_v1 (5D KV layout, x=8) — verified on real BI-V100
- >32K: paged_attention_v2 (5D→4D permute) — verified 65K+ on real BI-V100
- Removes _forward_decode_pytorch Python fallback entirely

Prefill path (profiling):
- _run_sdpa_fallback now uses ixformer.flash_attn_varlen_func
- head_dim=256 verified correct (diff<0.004) and 1.7x faster than PyTorch
- Falls back to Q-tiling pure-math if ixformer unavailable

Also includes: MoE kernel integration, GDN C++ kernels, diagnostic scripts,
xllm upstream layer/kernel references, .dockerignore cleanup.

All changes verified on real BI-V100 hardware (single card).
2026-08-13 07:04:21 +00:00
Claude
e78fa560c8 feat: wire corex_gdn_chunk_recurrent C++ kernel into GDN prefill path
- patch_ops.sh: build corex_gdn_chunk_recurrent.so alongside moe_index_combine
- qwen3_5.py: import corex_gdn_chunk_recurrent, use C++ version for prefill
  chunks instead of Python _torch_chunk_gated_delta_rule
- C++ version from xllm upstream avoids Python loop overhead and has proper
  fp32 accumulation (key for NaN prevention on BI-V100)
- Falls back to Python version if .so not available
2026-08-13 06:25:09 +00:00
Claude
c720cbc3a3 docs: dlopen SO开发计划 — gap analysis from comp168 log + real tree 2026-08-13 06:23:59 +00:00
project6-dev
17fdf7e2d6 diag: probe KV cache layout with 5D key + 4D value 2026-08-13 05:22:05 +00:00
project6-dev
cb03fc9993 diag: cat ixformer vllm.py source 2026-08-13 05:20:01 +00:00
project6-dev
b0ed88e114 diag: probe ixformer KV cache 5D layout + read vllm.py source 2026-08-13 05:18:50 +00:00