“Jetson Thor için CUDA Toolkit 13.0: Birleşik ARM Ekosistemi ve Yenilikler”

Dahili ve kenar bilişimi dünyası, NVIDIA’nın Blackwell GPU mimarisiyle desteklenen Jetson Thor SoC için yayımlanacak CUDA 13.0 ile daha hızlı, daha verimli ve daha çok yönlü hale geliyor.

Bu sürümün merkezinde, Arm platformları için birleşik bir CUDA aracılığı vardır. Artık sunucu sınıfı ve gömülü sistemler için ayrı araçlar üzerinde durmanız gerekmiyor. Jetson Thor, tam uyumlulukla birlikte Birleşik Sanal Bellek (UVM), Multi-Process Service (MPS) gibi GPU paylaşım özellikleri, geliştirilmiş geliştirici araçları ve yeni birlikte çalışabilirlik seçenekleri kazanıyor. Tüm bu yenilikler, daha akıcı bir geliştirme akışı sunuyor ve kenar yapay zeka uygulamaları arasında performans ve taşınabilirlik için yeni olanaklar açıyor.

Arm için CUDA’nın Birleştirilmesi: Bir Kere Oluştur, Her Yerde Dağıt

CUDA 13.0, Arm platformları için sunucu sınıfı ve gömülü cihazlar arasında birleşik bir CUDA araç seti ile geliştirme sürecini kolaylaştırıyor. Artık Server Base System Architecture (SBSA) uyumlu sunucular ile Thor gibi gelecek nesil gömülü sistemler için ayrı kurulumlar veya araç setleriyle uğraşmaya gerek kalmadı. Tek istisna, Orin (sm_87) şu an mevcut yolunda devam edecek.

Bu değişiklik, büyük bir üretkenlik kazancı sağlıyor. Geliştiriciler, bir robotik veya yapay zeka uygulamasını bir kez inşa edebiliyor, yüksek performanslı sistemlerde simüle edebiliyor ve herhangi bir kod değişikliği olmaksızın tam olarak aynı ikili dosyayı gömülü hedefler olan Thor’a dağıtabiliyor. Derleyici ve çalışma zamanı, hedef GPU mimarisi için optimize edilmiş kod üretiyor, ancak bunu başarmak için iki farklı araç seti yönetmek gerekmiyor.

Birleşme, konteynerlere de yayılıyor ve görüntü ekosistemini birleştiriyor. Bu, simülasyon, test ve dağıtım iş akışlarının paylaşılan bir konteyner çizgisine dayanmasını sağlıyor. Bu, yeniden oluşturma süreçlerini azaltıyor, sürekli entegrasyon (CI) yükünü düşürüp, koddan donanıma daha akıcı bir yol sunuyor.

Birleşik Sanal Bellek (UVM) ve Tam Uyumluluğun Çalışma Prensibi

NVIDIA Jetson platformları, ilk kez Birleşik Sanal Bellek ve tam uyum desteği sunuyor. Bu, cihazın, ana bilgisayarın sayfa tabloları üzerinden sayfalanabilir ana belleğe erişmesini sağlıyor.

Jetson Thor platformlarında cudaDeviceProp::pageableMemoryAccessUsesHostPageTables değeri 1 olarak ayarlandığı için GPU, sayfalanabilir ana belleği ana bilgisayarın sayfa tabloları üzerinden erişebiliyor. CPU önbellekli bu bellek için GPU’nun erişimi de önbellekleniyor ve tam uyum, donanım arayüzü tarafından yönetiliyor. Pratikte, mmap() veya malloc() ile oluşturulan sistem tahsisli bellek, artık GPU üzerinde doğrudan kullanılabilir hale geliyor.

Benzer şekilde, cudaMallocManaged() ile oluşturulan tahsisler de cudaDeviceProp::concurrentManagedAccess değerini 1 olarak raporlayacak. Bu, cihazın bu belleği CPU ile eşzamanlı erişmesini sağlayacak ve cudaMemPrefetchAsync() gibi API’lerin beklenildiği gibi çalışmasını temin edecek. Ancak, CUDA 13.0’da cudaMallocManaged() tahsisleri GPU önbelleğini kullanmayacak. Bu değişiklikler, UVM işlevselliğini Jetson platformlarının dGPU sistemleri ile uyumlu hale getiriyor.

İş Yükleri Arası GPU Paylaşımını İyileştirmek

CUDA 13.0, GPU kullanımını ve performansını artıran birçok GPU paylaşım özelliği ile devam ediyor.

Tegra’da MPS ile GPU’nun Tam Potansiyelini Ortaya Çıkarma

Tegra GPU’ları geliştikçe, bireysel süreçlerin mevcut GPU kaynaklarını tam olarak kullanamama riski ortaya çıkıyor. Küçük veya ani yükler gibi çok sayıda işlem söz konusu olduğunda bu durum verimsizliklere yol açabiliyor. MPS, birden fazla sürecin aynı anda GPU’yu paylaşmasını sağlayarak bu problemi çözüyor ve atlama yükünü ortadan kaldırıyor. MPS, hafif yükleri tek bir GPU bağlamında toplayarak doluluk oranını, verimliliği ve ölçeklenebilirliği artırıyor. Üstelik, MPS’nin benimsenmesi için uygulama kodunda herhangi bir değişiklik yapmanıza gerek yok.

MPS ile Tegra’da Başlarken

MPS ile ilgili iki ikincil dosya vardır: nvidia-cuda-mps-control ve nvidia-cuda-mps-server. Bu dosyalar genellikle /usr/bin altında saklanır.

MPS Kontrol Daemon’u başlatmak için aşağıdaki adımları izleyin:

export CUDA_MPS_PIPE_DIRECTORY=
export CUDA_MPS_LOG_DIRECTORY=
nvidia-cuda-mps-control -d # Arka planda kontrol daemonunu başlatın
ps –ef | grep mps # MPS kontrol daemonunun başlatıldığını kontrol edin

Bir uygulamayı MPS istemcisi olarak çalıştırmak için aynı boru ve log dizinini ayarlayın, ardından uygulamayı normal olarak çalıştırın. Loglar $CUDA_MPS_LOG_DIRECTORY/control.log ve $CUDA_MPS_LOG_DIRECTORY/server.log konumunda saklanacaktır. MPS’yi durdurmak için:

echo quit | nvidia-cuda-mps-control

Daha fazla bilgi için MPS belgelerine başvurabilir.

Deterministik GPU Planlaması ile Yeşil Bağlamlar

Yeşil bağlamlar, belirli CUDA kaynaklarını, özellikle genişletilmiş çoklu işlemcileri (SM’ler) önceden atayarak deterministik bir yürütme sağlar. Önceden atanan SM’ler sayesinde, her bir bağlam, diğerlerinin etkinliğinden etkilenmeden çalışabilir ve bu da zaman hassasiyetine sahip işler için öngörülebilirliği artırır.

Örneğin, Jetson’da bir robotik uygulama SLAM, nesne tespiti ve hareket planlamasını aynı anda çalıştırabilir. Zaman hassasiyetine göre farklı gereksinimleri karşılamak için geliştirici, Multi-Instance GPU (MIG) ve yeşil bağlamlar gibi yöntemlerden yararlanabilir.

MIG, GPU’yu izole parçalar halinde ayırarak zaman kritik modüllerin, daha az zaman hassasiyetine sahip görevlerin kaynak taleplerinden etkilenmemesini sağlar. Her MIG bölümünde, yeşil bağlamlar, belirli CUDA bağlamlarına SM atamasını deterministik bir şekilde sağlar.

Yeşil bağlamlar ile birlikte MPS kullanıldığında, bu yapı, süreçler arasında eşzamanlı yürütmeyi sağlar ve SM izolasyonunu korur.

Geliştirici Araçlarında Daha İyi Görsellik ve Kontrol

CUDA 13.0, Jetson Thor platformuna önemli geliştirici araçları iyileştirmeleri getiriyor. Şimdi, NVIDIA’nın nvidia-smi aracı ve NVIDIA Yönetim Kütüphanesi (NVML) desteği ile geliştiriciler, GPU kullanımını daha iyi gözlemleyebiliyor ve kaynakların kontrolünü artırabiliyor.

Geliştiriciler, nvidia-smi ile cihaz bilgilerini sorgulayabiliyor. GPU’nun adı, modeli, sürücü versiyonu ve desteklenen CUDA sürümü gibi bilgileri raporlamak ve GPU kullanımını gerçek zamanlı izlemek mümkün hale geliyor.

NVML kütüphanesi, C ve Python API’leri aracılığıyla benzer işlevselliğe programatik erişim sunuyor. Bu durum, özel araçların, CI boru hatlarının veya dağıtım betiklerinin GPU izleme ve yönetim entegrasyonu gerektiren durumlarda oldukça faydalı.

Bununla birlikte, nvidia-smi ve NVML Jetson Thor’da desteklense de, bazı özellikler – saat, güç ve ısı çalışmaları, süreç başına kullanım ve SoC bellek izleme gibi – henüz mevcut değil. Ancak, bu sürüm önemli bir adım ve daha geniş özellik eşdeğerliği ilerleyen güncellemelerde bekleniyor.

DMABUF ile Bellek Paylaşımını Kolaylaştırma

CUDA 13.0, CUDA ile tahsis edilmiş tamponları dmabuf dosya betimleyicilerine ve tersine dönüştürme yeteneğini getiriyor. Linux’ta bu, çeşitli çekirdek düzeyindeki cihaz sürücüleri arasında G/Ç tamponlarının paylaşımı ve senkronizasyonu için standart bir arayüz sağlıyor.

DMABUF’ların CUDA belleğine aktarılması, CUDA Dış Kaynak Birleşebilirlik API’sini kullanarak yapılırken, dmabuf yeni bir dış bellek türü olarak ekleniyor. Tegra platformlarında geleneksel bellek paylaşım çözümleri genellikle EGL veya NVSCI gibi yöntemler kullanırken, OpenRM ve L4T eklentileri ile birlikte dmabuf desteğinin entegre edilmesi, CUDA, üçüncü taraf cihazlar ve açık kaynak yazılım yığınları arasında sorunsuz bir yapı oluşturuyor.

dmabuf içeri aktarma süreci, dmabuf‘un CUDA belleğine dahil edilmesi, ilgili havuz işlemlerinin gerçekleştirildiği bir akış diyagramı ile gösterilmektedir.

NUMA-Bilinçli Uygulamaları Jetson Thor’a Taşıma

CUDA 13.0 ayrıca Tegra için Non-Uniform Memory Access (NUMA) desteği sunuyor. NUMA mimarileri, CPU çekirdekleri ve belleği düğümler halinde gruplar ve her düğümün yerel belleğine erişimi daha düşük gecikmelerle sağlıyor. Bu durum, NUMA-bilinçli uygulamaların bellek yerleştirmesini kontrol etmesine olanak tanıyor ve performansı artırıyor.

Bu özelliğin geliştirilmesi, çok soketli sistemler için geliştirmeyi kolaylaştırıyor ve tek soketli sistemlerde uyumluluğu artırıyor. Daha önce, dGPU platformlarından taşınan NUMA-bilinçli uygulamalar, Jetson’da cuMemCreate() ile CU_MEM_LOCATION_TYPE_HOST_NUMA desteği olmadığı için değişiklik gerektiriyordu. Ancak Jetson Thor’un yalnızca bir NUMA düğümü olmasına rağmen, bu güncelleme, dGPU platformları için yazılmış uygulamaların kod değişikliği yapmadan Tegra’da çalışmasını sağlıyor.

Gelecek İyileştirmeleri

MIG özelliği, büyük bir GPU’yu daha küçük, kaynakları ayrılmış, birbirlerinden izole edilmiş cihazlara ayırmayı mümkün kılacak. Bu, karışık önceliklere sahip iş yüklerinin aynı anda çalışmasını sağlarken, karar alanlarında ve hata izolasyonu sağlar.

Özellikle robotik sistemlerde, bazı iş yükleri (örneğin SLAM) diğerlerine göre daha yüksek önceliğe sahip. Thor GPU’sunun iki parçaya ayrılması, birinin yüksek öncelikli iş yüklerini, diğerinin ise daha düşük öncelikli görevleri yönetmesine olanak tanıyor. Bu yapı, kritik iş yüklerinin diğer görevlerle GPU kaynaklarını paylaşmasını önler, böylece daha öngörülebilir gerçek zamanlı performans sağlanır.

CUDA 13.0, nvidia-smi aracı ve NVML desteği ile birlikte bazı özelliklerin, örneğin saat, güç, ısı çalışmaları, süreç başına kullanım, ve SoC bellek izleme gibi, gelecekteki JetPack sürümlerinde bekleniyor.

Jetson Thor için CUDA 13’teki yeni özellikler, kullanıcı deneyimini birleştirip basitleştirmek yönünde büyük bir adım, ayrı araç setleri ile uğraşmaktan kurtulmayı sağlıyor. Yeni sürücü yetenekleri ve UVM, MIG ve MPS gibi gelişmiş özellikler, Jetson platformunun güçlü performans ve çok yönlülük sunmasını sağlıyor.

Bugünden itibaren JetPack 7.0 sürümünde CUDA 13.0 araç setini keşfetmeye başlayabilirsiniz. Bu yeni yetenekleri uygulamalarınıza entegre ederken deneyimlerinizi paylaşmak veya destek almak için NVIDIA Geliştirici Forumlarına katılabilirsiniz.

Daha fazla yenilik ve CUDA dünyasında nelerin mümkün olduğunu keşfetmek için bizi izlemeye devam edin.

Teşekkürler

Bu makaleye katkıda bulunan NVIDIA ekibine: Saumya Nair, Ashish Srivastava, Debalina Bhattacharjee, Alok Parikh, Quinn Zambeck, Ashutosh Jain ve Raveesh Nagaraja Kote’ye teşekkür ederiz.

Kaynak

Nvdia Blog

Exit mobile version