TornadoVM 7, Java Uygulamalarından Doğrudan GPU Yüklerini Çalıştırmayı Sağlıyor
Kaynak: Hacker News
İçindekiler 4 başlık
Java için açık kaynaklı heterojen bir GPU programlama çatısı olan TornadoVM, proje için önemli bir dönüm noktası olan 7.3 sürümüne ulaştı. TornadoVM, Java programlarını çok çekirdekli CPU'lar ve GPU'lar üzerinde otomatik olarak hızlandırıyor. Mevcut JVM'lerin yerini almak yerine onlarla birlikte çalışarak OpenJDK, GraalVM, Temurin veya Zulu gibi ana akım JDK dağıtımlarıyla kullanılabilen zengin bir GPU programlama ekosistemi sunuyor.
Heterojen Hesaplama ve "Bir Kez Yaz, Her Yerde Çalıştır" Yaklaşımı#
TornadoVM, Java kodunu donanım arka uçlarına (backend) aktarır, Java yığını (heap) ile hızlandırıcılar arasındaki belleği yönetir ve ortaya çıkan hesaplama çekirdeklerini (compute kernels) çalıştırır. Bu özellik, onu modern bulut ve makine öğrenimi (ML) iş yükleri için oldukça değerli bir yapı taşı haline getirir.
Geliştirme sürecinde TornadoVM, kaynak Java kodunu OpenCL ve Apple Metal arka uçlarına derler. Buradaki temel pratik çıkarım şudur:
- Geliştiriciler yerel dizüstü bilgisayarlarında mevcut donanımı kullanarak geliştirme yapabilirler.
- Ardından aynı kodu Nvidia GPU'larına sahip bir sunucuya dağıtarak büyük performans artışları elde edebilirler.
- Bu yaklaşım, modern makine öğrenimi iş yükleri için "Bir Kez Yaz, Her Yerde Çalıştır" (Write Once, Run Anywhere) felsefesinin yeniden hayat bulmasıdır.
Sürüm 7 ile Gelen Mimari Değişiklikler#
Yeni sürüm, Java ekosisteminin modern standartlarına uyum sağlayan önemli mimari değişiklikler içeriyor:
- FFM API Geçişi: Arka uçlar artık Java Native Interface (JNI) yerine Foreign Function & Memory (FFM) API kullanıyor.
- JVMCI Bağımlılığının Kaldırılması: Deneysel JVM Compiler Interface (JVMCI) bağımlılığı tamamen kaldırıldı.
- Tekdüze Derleyici Yolu: TornadoVM artık tüm derleyici üst verilerini (metadata), desteklenen her JDK'da (21, 25, 26 ve 27) tek ve standart bir yol olan reflection + ASM + Unsafe katmanı üzerinden alıyor.
Nvidia, Apple MXL ve Çoklu GPU Entegrasyonu#
Bu sürüm, optimize edilmiş bir CUDA arka ucu aracılığıyla Nvidia ekosistemiyle entegrasyonu derinleştiriyor:
- Yeni bir
TileContextaracılığıyla cuTile programlama modeli desteği eklendi. - TornadoVM TaskGraphs içerisinden doğrudan cuBLAS ve CUTLASS gibi CUDA kütüphanelerini çağırma yeteneği sunuldu.
- Geliştiriciler, performans ve taşınabilirlik ihtiyaçlarına bağlı olarak JIT tarafından üretilen çekirdekleri CUDA kütüphane çağrılarıyla değiştirebilir veya ikisini birbirine zincirleyebilir.
- Benzer işlevsellik, hibrit API aracılığıyla Apple MXL kütüphanesi için de eklendi ve çoklu GPU (multi-GPU) çalıştırma desteği sağlandı.
Hangi İş Yükleri İçin Uygun?#
Her Java hesaplaması donanım hızlandırmadan fayda sağlamaz. Yazılım geliştiriciler için en iyi adaylar, iterasyonlar arasında bağımlılık bulunmayan döngüler gibi veri-paralel (data-parallel) iş yükleridir; çünkü bu iterasyonlar hızlandırıcı üzerinde paralel olarak çalışabilir.
Son TornadoVM sürümlerinin temel hedeflerinden biri, Nvidia'nın farklı donanım platformları için optimize ettiği kütüphanelere erişmek amacıyla deyimsel (idiomatic) bir JVM ortamı üretmektir. Böylece Java geliştiricileri; Lineer Cebir, Hızlı Fourier Dönüşümleri (Sinyal Analizi için), Derin Sinir Ağları ve seyrek matrisler için optimize edilmiş matris çarpımı gibi alanlardan kolayca yararlanabilir. Ayrıca TornadoVM; Quarkus, LangChain4j (Lang4j), Flink ve Spring AI gibi popüler kütüphanelerle entegrasyonlara sahiptir.
Kaynak ve atıf
Bu yazı, Hacker News üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:
- infoq.com/news/2026/10/tornadovm-7-gpu