Sırada neler var.
Tasarım aşamasında iki uzun soluklu proje: herkesin uygulayabileceği açık bir GPU komut seti ve C++'ı RTL'ye çevirip Lumina'da doğrulayan bir yüksek seviye sentez aracı. İkisi de henüz ürün değil. Planları erkenden paylaşıyoruz, çünkü ikisini de doğru kurmak için partnerlere ihtiyacımız var.
Açık bir GPU komut seti
Herkesin uygulayabileceği, telifsiz bir GPU komut seti: tek bir küçük çekirdekten mobil, masaüstü ve sunucu profillerine. Hedef, RISC-V'nin CPU'lar için yaptığını GPU'lar için yapmak.
Doğrulanmış yüksek seviye sentez
C++ ve SystemC'den Verilog, SystemVerilog ve VHDL'e; her FPGA ve her standart hücre kütüphanesi için. Üretilen her tasarım, C++ testbench'ine karşı Lumina'da simüle edilir ve lint'ten geçirilir.
Bunlar ürün değil, plan. Kapsam ve ayrıntılar, iş kanıtlandıkça değişecek.
Önce kanıt, sonra iddia.
Aşama aşama kanıtlanır
Her proje aşamalarla ilerler; bir aşama ancak testleri ve kıyaslama tasarımları geçtiğinde biter. Çalışmadan hiçbir şey bu sayfada bitmiş diye yazılmaz.
Temiz oda
Standartlardan, yayımlanmış makalelerden ve açık araçlardan kurulur. Ticari araçların kılavuzları, çıktıları ve örnekleri hiç kullanılmaz.
Önemli yerde açık
Spesifikasyonların ve bağımlılığı önleyen parçaların açık olması planlanıyor; böylece başkaları üzerine inşa edebilir ve işimizi denetleyebilir.
Açık bir GPU komut seti
Bugün her GPU'nun kendine ait kapalı bir komut seti var; derleyicisi ve sürücüsü de üreticisine ait. Biz açık bir komut seti tasarlıyoruz: bir kez dondurulup bir daha bozulmayan küçük bir çekirdek, grafik, ışın izleme ve yapay zekâ için uzantılar ve aynı kodlamadan oluşan üç profil. Böylece tek bir derleyici ve sürücü yığını her uygulamaya hizmet edebilir.
- Telifsiz
- Mobil · Masaüstü · Sunucu
- Grafik ve hesaplama
- FP8, FP6, FP4, MX formatları
Küçük çekirdek, modüler uzantılar
Çekirdekte tamsayı ve FP32 aritmetiği, dallanma, bellek, atomik işlemler, bariyerler ve wave işlemleri var. Grafik, ışın izleme, tensör işlemleri, mikro sayı formatları, asenkron kopyalar, çoklu GPU ve ayrıcalıklı işlemler uzantı olarak gelir.
Üç profil, tek kodlama
Mobil profil tile tabanlı, düşük güçlü grafik için; masaüstü rasterleştirme, ışın izleme ve hesaplama için; sunucu ise büyük ölçekli yapay zekâ eğitimi ve çıkarımı için. Bir sunucu çipi grafik birimlerini dışarıda bırakabilir, ama komut kodlaması ortak kalır.
Yapay zekâ sayı formatları baştan
FP16, BF16, FP8, FP6 ve FP4, blok ölçekli (MX) formatlar ve 2:4 seyreklik tasarıma baştan girer, sonradan eklenmez.
Kararlı bir sanal ISA
Derleyiciler, SPIR-V'nin ve LLVM/MLIR'ın doğrudan üretebildiği sürümlü bir sanal komut setini hedefler; böylece kod donanım nesilleri boyunca çalışmaya devam eder. Bağımsız donanım yapılabilsin diye fiziksel komut seti de yayımlanır.
Mikromimariden bağımsız
Wave genişliği, register dosyası boyutu ve önbellek hiyerarşisi ISA'da sabitlenmez; yazılımın sorguladığı parametrelerdir. Her komuttaki bağımlılık ipuçları zamanlamayı derleyiciye bırakır, donanım da sade kalabilir.
Güvenlik baştan
Bellek izolasyonu, sanallaştırma, çok kiracılı bölümleme ve gizli hesaplama sunucu profilinin parçasıdır, sonradan eklenmez.
Tasarımdan açık
- Spesifikasyon
- CC BY 4.0 ile yayımlanması planlanıyor: uygulamak serbest, telif ücreti yok, izin gerekmez.
- Referans yazılım ve RTL
- Apache 2.0 ile yayımlanması planlanıyor.
- Patentler
- Patentlerimizi uygulamalara karşı ileri sürmeyeceğimize dair yazılı bir taahhüt.
- Yönetişim
- Sürüm 1.0 dondurulmadan önce bağımsız bir vakfa devredilir; taslaklar ve yorum dönemleri herkese açıktır.
- Uyumluluk
- Uyumluluk işareti yalnızca uyumluluk test paketini geçen tasarımlara verilir; bizimkiler de dahil.
Nasıl kanıtlanacak
- Spesifikasyonun çalıştırılabilir bir referans modeli; metnin belirsiz kaldığı yerde model belirleyicidir.
- Fonksiyonel ve döngüye yakın simülatörler; böylece derleyiciler ve sürücüler daha silisyum yokken geliştirilebilir.
- Her komutu, her uzantıyı ve bellek modeli litmus testlerini kapsayan bir uyumluluk test paketi.
- FPGA'ya sığan küçük, açık bir RTL çekirdeği: spesifikasyonun gerçekten uygulanabildiğini göstermek için.
- Yazılım hedefleri: bir LLVM arka ucu ve MLIR dialect'i, Mesa içinde bir Vulkan sürücüsü, OpenCL ve SYCL; ardından Triton ve PyTorch desteği.
Kimleri arıyoruz
Üniversiteler ve araştırma grupları, derleyici ve sürücü mühendisleri ve tek bir üreticinin kontrol etmediği bir GPU komut seti isteyen çip şirketleri. Taslağı erkenden incelemek isteyenlere de açığız.
Doğrulanmış yüksek seviye sentez
Yüksek seviye sentez, C++ ile yazılmış bir algoritmanın donanıma dönüşmesini sağlar. Bugünkü araçlar ya tek bir FPGA üreticisinin cihazlarını hedefliyor ya da büyük şirketlere satılıyor ve simülatör, lint ve eşdeğerlik denetleyicisi ayrı ürünler olarak geliyor. Biz her FPGA ve her ASIC kütüphanesi için tek bir araç planlıyoruz; doğrulama da içinde: yazdığı RTL, Lumina'da geldiği C++'ın kendisine karşı denetlenir.
- Girdi: C++ ve SystemC
- Çıktı: Verilog, SystemVerilog, VHDL
- Her FPGA, her ASIC kütüphanesi
- Lumina'da doğrulanır
Doğrulama dahil
Lumina'da C/RTL eş simülasyonu: C++ testbench'i RTL üzerinde yeniden kullanılır, dalga formları C++ kaynağının yanında gösterilir, her çıktı lint'ten geçer. RTL'nin C++'a eşit olduğunun formal ispatı planlanıyor.
Tek kaynak, her hedef
Farklı üreticilerin FPGA'ları ve herhangi bir Liberty hücre kütüphanesiyle ASIC'ler; SkyWater 130 ve IHP 130 gibi açık PDK'larla başlayarak. Kod, yeniden yazılmadan cihazdan cihaza taşınır.
Açık girdi tipleri
Açık Algorithmic C kütüphanesinin bit doğruluklu tamsayı ve sabit noktalı tipleri ile SystemC tipleri; tasarımlar aracımıza kilitlenmez.
Arayüzler otomatik
AXI4, AXI4-Lite, AXI4-Stream ve Avalon; valid/ready el sıkışmaları, FIFO'lar ve bellek portları; yazılım için C başlık dosyasıyla bir kontrol register bloğu.
Okunabilir çıktı
Üretilen RTL'deki isimler ve yorumlar C++ satırlarına bağlı kalır; inceleyenler ve lint, her parçanın nereden geldiğini izleyebilir.
Üzerine iş yapılabilir raporlar
Her tasarım için gecikme, verim, kaynak kullanımı ve tahmini zamanlama; saat döngülerini kaynak satırlarına eşleyen bir zamanlama görünümü.
Akış
- Yaz ve test et
- Sentezlenebilir C++ veya SystemC; sıradan bir yazılım gibi, hata ayıklayıcıyla test edilir.
- Yönlendir
- Pipeline, döngü açma, dizi bölme, fonksiyonlar arası veri akışı; arayüzleri ve saati seç.
- Sentezle
- Seçilen cihaz veya hücre kütüphanesinde bir saat hedefi için zamanlama ve atama.
- Doğrula
- Lumina'da C++ testbench'ine karşı eş simülasyon ve sonucun lint'ten geçirilmesi.
- Dışa aktar
- RTL, IP-XACT paketi, zamanlama kısıtları ve sentez betikleri, bir de C sürücüsü.
Nasıl kanıtlanacak
- Her aşamada üretilen her tasarım, C++ testbench'ine karşı Lumina'da eş simüle edilir ve lint'ten geçirilir.
- Açık HLS kıyaslama paketleri sentezlenir, C++'larıyla aynı sonucu verir ve bir FPGA ailesinde ve bir açık PDK'da zamanlamayı karşılar.
- Açık araçlarla ilk tam akış: C++'tan gerçek bir kartta çalışan bitstream'e kadar bir akış görüntü filtresi.
- Üretilen RTL'ye elle yerleştirilen hatalar (yanlış yuvarlama, bir eksik döngü sınırı, düşen bir akış elemanı) her seferinde yakalanır.
- Müşteri tarzı üç tasarım (bir görüntü filtresi, bir FIR/FFT zinciri, küçük bir sinir ağı katmanı), aracı ilk kez kullanan biri tarafından yalnızca kılavuzla doğrulanmış RTL'ye taşınır.
Kimleri arıyoruz
Algoritmaları C++'ta olan (görüntü işleme, sinyal işleme, küçük sinir ağı katmanları), erken sürümleri deneyip neyin eksik olduğunu söyleyecek tasarım partnerleri.
Bunları birlikte şekillendirelim mi?
Bir taslağı incelemek, erken bir sürümü denemek ya da projelerden birinde bizimle çalışmak isterseniz bize yazın.
Ar-Ge
hello@lumeeslab.comEklemeniz faydalı olur
- Hangi proje ilginizi çekiyor
- Ekibiniz veya araştırma grubunuz
- Nasıl katkı vermek istersiniz