Sayısal çekirdekler
Ham işaretçi API’si, dispatch tablosu ve yapısal işlemler.
01Düşük seviyeli sözleşme#
nexus_model::kernels fonksiyonları satır-major float32 işaretçilerle çalışır; Tensor sahipliği veya ömür yönetmez. Çıktı, çalışma alanı ve gradyan tamponlarını doğru boyutta çağıran ayırır. Boyutlar çoğunlukla int veya size_t’dır; taşan büyük boyutları çağıran önlemelidir.
02KernelTable#
cpu() sabit referansla seçilmiş fonksiyon tablosunu verir; sarmalayıcılar tabloya yönlendirir. set_force_scalar tabloyu yeniden kurar. Bu ham API uygulama detayına yakındır; genel kullanımda Module tercih edin.
| Aile | İşlemler |
|---|---|
| Vector | fill, add, mul, scale, axpy, dot |
| Activation | relu, leaky_relu, sigmoid, tanh_fwd, gelu, gelu_tanh, silu, elu, mish |
| Activation backward | corresponding *_bwd functions |
| Row reductions | softmax, log_softmax, softmax_bwd, log_softmax_bwd |
| Dense | linear_forward, linear_backward |
| Normalization | layernorm, layernorm_bwd |
03Biriktirme ve önbellekler#
linear_backward dX, dW ve db içine ekler; kendisi sıfırlamaz. LayerNorm geri geçişi forward’ın mean ve reciprocal-std tamponlarını kullanır. Sigmoid/Tanh türevi çıkış y üzerinden, ReLU türevi giriş x üzerinden alınır; yanlış önbellek aynı şekille bile yanlış sonuç üretir.
04Yapısal çekirdekler#
ConvDesc n/c/k, üç elemanlı spatial_in/out, kernel, stride, pad, dilation dizileri, groups=1 ve rank=2 içerir. conv_col_size gerekli im2col çalışma alanını belirler. Conv içinde GEMM SIMD kullanabilir; yapısal döngüler farklı çekirdeklerdir.
| Aile | İşlemler |
|---|---|
| Normalization | batch_norm / batch_norm_bwd / group_norm / group_norm_bwd |
| Convolution | conv_out_size / conv_col_size / conv_forward / conv_backward |
| Max pooling | max_pool2d / max_pool2d_bwd; saved int indices |
| Average pooling | avg_pool2d / avg_pool2d_bwd; count_include_pad |
| Embedding | embedding_forward / embedding_backward; float indices |
| Dropout | dropout_mask(mask,n,p,seed) |