· kaynak Hacker News – Front Page (hnrss.org)
Vx, CPU, GPU ve NPU bellek uyuşmazlıklarını derleme zamanı tip hatalarına dönüştürüyor
Yeni bir sistem programlama dili olan Vx, verinin nerede yaşadığını — host DRAM, GPU HBM veya NPU belleği — değerin tipinin bir parçası olarak ele alıyor ve cihazlar arası pointer hataları ile yanlış yere yapılan transferleri derleme hatalarına çeviriyor.

Bellek konumlarını tiplendiren bir dil
Vx, heterojen makineler için tasarlanmış, tek bir fikir etrafında şekillenmiş yeni bir sistem programlama dili: verinin fiziksel olarak nerede yaşadığı — host DRAM, GPU yüksek bant genişlikli belleği, NPU çip üstü depolama — değerin tipinin bir parçasıdır. Bir host thread'inin cihaz pointer'ını dereference etmesi, runtime çökmesi veya sessiz veri bozulması yerine derleme zamanı hatası olur. Projenin tanıtım sitesi 3 Ekim 2026'da Hacker News ana sayfasına çıktı; Linux x86_64 ve Apple Silicon üzerindeki macOS için yükleyiciler, curl tabanlı bir yükleyici dâhil, sunuyor.
Vx sitesine göre çoğu dil hızlandırıcıları altyapı olarak görür: matematiği siz yazarsınız, onu nasıl taşıyacağına büyük ve opak bir runtime karar verir. Vx ise hızlandırıcıyı programın anlamının bir parçası olarak ele alır. NPU yüksek bant genişlikli belleğine sabitlenmiş bir tensor, host DRAM'deki bir tensor'den farklı tipe sahiptir ve ikisi arasında geçiş açık bir transfer() gerektirir — donanım geçişinin neredeyse bedava olduğu Apple'ın birleşik belleğinde bile. Aktarım yine de yazıya dökülür; böylece veri yerelliği binary'yi profil etmek yerine kaynak kodu okuyarak tespit edilebilir.
Derleyicinin dışarıda bıraktığı hatalar
Dokümantasyon, tip denetimine önceden yüklenen hata sınıflarını sıralıyor:
- Adres uzayı tiplemesi: host kodundan bir cihaz pointer'ının dereference edilmesi veya NPU SRAM'ine sabitlenmiş bir değerin host ifadesine sızmasına izin verilmez.
- Kapasite kabulü: çalışma kümesi hedeflediği bellek alanına sığmayan bir yerleşim, binary var olmadan önce bildirilen makineye karşı denetlenir.
- Birleşme noktası sözleşmeleri: asenkron transferi henüz görünür kılınmamış bir tamponu okumak hatadır; bu denetim bir SMT çözücü ile doğrulanır.
- Doğrusal tipler: tüketildikten sonra bir tamponun kullanılması yasaktır; bunun üstüne varyans ve bölge takibi yapan bir borrow checker bulunur.
- Topoloji erişilebilirliği: aralarında bildirilmiş bir yol bulunmayan iki bellek alanı arasındaki transfer reddedilir.
- Otomatik türev: adjoint'i tanımlı olmayan bir bölgeden türev alma işaretlenir.
Amiral gemisi kod örneği, girdilerin belirli bir NPU'ya sabitlendiği (Pinned<Tensor<f32, [4, 4]>, Topology::NPU[0]>), sonucun NPU belleğini gösteren bir Verified sarmalayıcısı ile döndüğü ve döngü gövdesinin spawn on ile hızlandırıcıya gönderildiği 4x4 bir matris çarpımıdır.
Makineler dosyalarda tanımlanır, koda gömülmez
Vx, derleyiciye bir maliyet modeli gömmek yerine onu dışarıdan okur. Bir makine dosyası, gerçek bir parçanın bellek hiyerarşisini ve bağlantılarını tanımlar; yerleşimler buna göre kabul veya reddedilir. Depo, NVIDIA'nın H100, H200, B200 ve A100'i, AMD'nin MI300X'i, Apple'ın M4'ü ve çok GPU'lu düğümler için makine dosyaları içeriyor — her biri rakamlarının kaynağını belirtiyor ve doğrulanmamış sayıları işaretliyor. Boyutlar float değil tam sayılardır; ondalık SI önekleri ikili IEC birimlerinden ayrı tutulur, böylece üretici veri sayfasından alınan bir rakam, veri sayfasının kastettiği anlamı korur.
Paralel frontend, takılabilir backend'ler
Frontend veri odaklıdır: her sembol, nominal tip ve monomorphize edilmiş varyant düz bir 256-bit tanımlayıcı taşır ve özyinelemeli tipler box'lanmak zorundadır. Bu, modülleri birbirinden koparır; pipeline, bir sorgu motoru veya kilit çekişmesi olmadan çekirdekler arasında paralel çalışabilir. Proje, test setinde — yalnızca ummak yerine — aynı kaynağın seri veya paralel derlendiğinde bayt bayt aynı MLIR ürettiğini iddia ediyor; bu, benchmark ölçeğinde, bir ve dört thread ile, thread havuzu atlanarak ve her seferinde yeni süreçlerde doğrulanıyor. MLIR'in altındaki her şey LLVM'in sorumluluğundadır.
Listelenen backend'ler CPU'ları (x86-64 ve arm64, ahead-of-time veya JIT), NVIDIA GPU'larını (NVVM üzerinden PTX ve SASS'e MLIR), Apple'ın AMX ve ANE'sini (plugin üzerinden CoreML primitive dispatch) ve bir manifest tarafından yönetilen, kablo protokolü konuşan uzak bölgelerle dağıtık yürütmeyi kapsıyor. Üreticilerin derleyiciyi yamalamak yerine MLIR pass plugin'leriyle genişletmesi bekleniyor.
Projenin kullanmayın dediği yerler
Site sınırları konusunda açık sözlü. Bir PyTorch kullanıcısı mimariyi döngü ortasında yeniden şekillendirebilir, bir tensor'ün şeklini runtime'da inceleyip sonuca göre dallanabilir; statik bölgelere sahip bir ahead-of-time dilde bu tür dinamizm gerçek emek ister. Vx, birçok türde silikon üzerinde doğru ve hızlı olması gereken kod için konumlanıyor — hâlâ keşfedilmekte olan kod için değil.
Neden önemli
Heterojen bilişimdeki en pahalı hatalar — geçersiz cihaz pointer'ları, transferleri tamamlanmadan okunan tamponlar, uzun bir işin derinliklerindeki bellek yetersizliği — nedenlerinden uzakta ortaya çıkar. Vx'nin bahsi, bellek yerleşimini tip sistemine kodlamanın bu maliyeti hata ayıklamadan, görülebileceği ve incelenebileceği yazma aşamasına taşıdığıdır. Hedef makineyi dosya olarak bildirmek ayrıca programları donanımdan ayırır; bu da taşınabilirliği mühendislerin varsaydığı bir şey değil, derleyicinin denetlediği bir şey yapabilir. Uyarılar gerçek: iddialar projenin kendi tanıtım materyalinden geliyor, kaynakta bağımsız benchmark yok ve gereken disiplin keşif amaçlı ML çalışmasıyla pek uyumlu değil. Yine de hızlandırıcı çağı için bir tasarım yönü olarak tutarlı ve iyi savunulmuş bir öneri.
- #programming-languages
- #compilers
- #gpu
- #heterogeneous-computing
- #systems-programming