Kütüphane karşılaştırması
NexusModel, NumPy ve PyTorch ile aynı CPU işlemini ölçmek.
01Karşılaştırma tam olarak ne?#
NexusModel bir C++ sinir ağı katman kütüphanesi, PyTorch bir tensör/eğitim çatısı, NumPy sayısal dizi kütüphanesidir. Burada ortak payda olan CPU float32 GEMM ve ReLU ileri işlemleri ölçülür. Model kalitesi, eğitim kapasitesi veya tüm API’lerin genel hız sıralaması ölçülmez.
02NexusModel çağrıları#
Aynı X=[M,K], W=[N,K], Y=[M,N] düzeninde bias=nullptr ile ham linear_forward çekirdeği çalışır. Tam Linear modülündeki eğitim önbelleği bu ölçümde yoktur. ReLU için girdi/çıktı tamponları ayrıdır ve önceden ayrılmıştır.
kernels::linear_forward(x.data(), w.data(), nullptr, y.data(), rows, in_features, out_features);kernels::relu(x.data(), y.data(), x.numel());03NumPy çağrıları#
Diziler float32 ve satır-major oluşturulur. W.T görünümü ölçümden önce hazırlanır; matmul out ile çıktı tamponunu yeniden kullanır. maximum ReLU işlemini uygular. Yüklü BLAS backend bilgisi threadpoolctl ile JSON’a kaydedilir.
import numpy as npy = np.empty((rows, out_features), dtype=np.float32)wt = w.Tnp.matmul(x, wt, out=y)np.maximum(relu_input, np.float32(0), out=relu_output)04PyTorch çağrıları#
torch.set_num_threads(1) ve set_num_interop_threads(1) ölçüm öncesi çağrılır. inference_mode içinde mm/clamp out tamponlarını kullanır. CPU’da float32 çalışır; CUDA ve autograd bu ölçümün dışında kalır.
import torchtorch.set_num_threads(1)torch.set_num_interop_threads(1)with torch.inference_mode(): torch.mm(x, wt, out=y) torch.clamp(relu_input, min=0, out=relu_output)05Ölçüm ve doğruluk#
Üç turda kütüphane sırası değiştirilir. Her turda 20 ısınma çağrısından sonra 30 örnek alınır; her örnek 5 çağrının ortalama süresidir. Medyan ve p95 birleştirilmiş 90 değerden hesaplanır. Her çıktı elemanı float64 referansına karşı rtol=1e−4, atol=1e−5 ile doğrulanır. ReLU sonuçları birebir eşittir. Doğrulama başarısızsa script sonuç yayımlamaz.
06Nasıl yorumlanmalı?#
Bu sayfa 29 Eylül 2026, tek iş parçacığı, küçük GEMM ve ReLU ölçümüdür. NexusModel C++ çağrı maliyeti, diğerlerinde Python API çağrı maliyeti dahildir. Dokuz iş yükünün yedisinde düşük medyan yalnız bu tabloya aittir. 21 Ekim 2026 akşamı ayrıdır: GEMM avx2-4x16, N=2048 Nexus 330/362/369 GFLOPS, TensorFlow 389. CPU Conv2d PyTorch 31.6 GFLOPS gerisindeydi; Nexus yaklaşık 4.9–6.8 GFLOPS. Depthwise AVX, PyTorch 4.93 ve TensorFlow 0.688 önündeydi. AVX-512 Ryzen 7 5800H üzerinde seçilmez. Dünya sıralaması yoktur.
07Kendi ölçümünüz#
Komutlar docs içinde çalıştırılır. NumPy, CPU PyTorch ve threadpoolctl bulunan izole bir Python ortamı kullanın. Script paket sürümleri, iş parçacığı sayıları, BLAS backend, kaynak ve çalıştırılabilir dosya SHA-256 değerlerini kaydeder.
cmake -S examples -B .example-buildcmake --build .example-build --config Releasepython benchmarks/compare_libraries.pynpm run build