Optimize hesap motoru
Bloklu matris hesabı, doğruluk ve ölçülen kazanımlar.
01Matris motoru#
Bu depodaki Linear, 6×16 çıktı bloğunu 12 bağımsız FMA akümülatörüyle hesaplar. 128 eleman derinliğindeki ağırlık paneli 8 KiB yerel tamponda tutulur ve bütün girdi satırlarında kullanılır. Küçük batch için dört bağımsız toplama zincirli dot yolu seçilir. Ağırlık paketleme her çağrının süresine dahildir. 21 Ekim 2026 akşamının rakip protokolünde duran GEMM çekirdeği avx2-4x16’dır; N=2048 GFLOPS sütunu (Nexus 330, 362, 369; TensorFlow 389) bu 6×16 karosunun ölçümü değildir.
02Geri geçiş ve convolution#
dX ve dW, geçici transpoz oluşturmadan aynı bloklu çekirdeği kullanır. İstenmeyen gradyan ürünleri hesaplanmaz. Gradyanlar mevcut değerlere eklenir. Convolution im2col düzeninden doğrudan kanal-major çıktıya matris çarpımı yapar; ileri ve geri geçiş aynı motoru paylaşır.
03Hız ve sayısal doğruluk#
LayerNorm iki geçişli float64 toplam/varyans hesabını SIMD ile hızlandırır. Büyük ortalama ve küçük varyansta hassasiyet korunur. Genel fast-math açılmaz. Kernel testleri rastgele girdiler, 16/128 sınırlarının iki tarafı, tek satır, bias, opsiyonel gradyanlar, tekrarlı birikim ve gruplu convolution içerir.
04Dosya düzeni#
src/core altında convolution, normalization, pooling, embedding ve dropout ayrı dosyalardadır. src/simd/avx2 altında matris mikroçekirdeği, Linear ve LayerNorm ayrılmıştır. Her klasörde details.txt, veri düzenini ve kararların nedenini açıklar. Dış C++ API korunmuştur.
05Sonuçları nasıl okuyalım?#
Benchmark sayfasında 29 Eylül 2026 NumPy/PyTorch karşılaştırması ile eski/yeni NexusModel süreleri ayrıdır. Üç turda sıra değişir; her tur 20 ısınma ve 30×5 çağrıdır. 21 Ekim 2026 akşamı, bu Ryzen 7 5800H, ayrı protokoldür. GEMM avx2-4x16 kaldı. N=2048 Nexus 330, 362 ve 369 GFLOPS; TensorFlow 389. CPU Conv2d PyTorch 31.6 GFLOPS gerisindeydi; Nexus yaklaşık 4.9 ile 6.8 GFLOPS arasındaydı. Depthwise AVX, PyTorch 4.93 ve TensorFlow 0.688 önündeydi. AVX-512 seçilmez. Dünya sıralaması yoktur. GPU verileri eski arşivdir.
cmake -S . -B buildcmake --build build --config Releasectest --test-dir build -C Release --output-on-failurecmake -S docs/examples -B docs/.example-buildcmake --build docs/.example-build --config Releasepython docs/benchmarks/compare_libraries.py