SON DAKİKA

Nvdia

CUDA Geliştiricileri için Temel Bir Kernel Oyun Alanı: Compiler Explorer Nasıl Kullanılır?

CUDA çekirdekleri yazarken, CUDA derleyicisinin tam olarak ne ürettiğini hiç merak ettiniz mi? Ya da, belirli bir CUDA araç seti sürümünü önce kurmadan, kolayca bir CUDA örneğini bir meslektaşınızla paylaşmak istediniz mi? Ya da belki de CUDA’ya tamamen yeni başladınız ve herhangi bir şey kurmadan, hatta bir GPU olmadan kolay bir şekilde başlamak istiyorsunuz?

İşte bu noktada, Compiler Explorer, ya da yaygın adıyla godbolt, devreye giriyor. Hem etkileşimli hem de anlık bir şekilde tarayıcınızdan bu işlemleri gerçekleştirebilmenizi sağlıyor. Bu yazıda, Compiler Explorer‘ın sunduğu avantajları ve neden CUDA geliştirme aracınızda yer alması gerektiğini açıklayacağız.

Compiler Explorer Nedir?

Compiler Explorer, geliştiricilerin kaynak kodu yazmasına, çeşitli derleyicilerle canlı bir şekilde derlemesine ve anında oluşturulan çıktıların, örneğin assembly, intermediate representation (IR), PTX ve daha fazlasının görülmesine olanak tanıyan web tabanlı bir araçtır.

İlk olarak, Matt Godbolt tarafından derleyici optimizasyonlarını anlamalarına yardımcı olmak için oluşturulan Compiler Explorer, sistem programlama dünyasında yaygın olarak kullanılan güçlü bir çoklu dil aracına dönüşmüştür. Şu anda godbolt.org sitesi, C++, C, Rust, Python ve CUDA dahil olmak üzere 70’ten fazla dili desteklemekte ve haftada bir milyondan fazla derleme gerçekleştirmektedir.

‘Compiler Explorer’ ve ‘godbolt’ isimleri genellikle birbirinin yerine kullanılsa da tam olarak aynı şey değildir. Compiler Explorer, uygulamanın adıdır; Godbolt ise, aracın yaratıcısının soyadıdır ve en yaygın şekilde kullanılan halka açık örneğini godbolt.org adresinde barındırmaktadır. Herkes, Compiler Explorer’ı yerel olarak çalıştırabilir veya kendi örneğini barındırabilir; ancak “godbolt” terimi genellikle godbolt.org örneğine atıfta bulunur.

Compiler Explorer’ın en önemli avantajlarından biri, hem kodu derleyip çalıştırabilmenizdir. Bu özellik, CPU tarafında uzun süredir mevcuttur ve öğrenme, doğrulama ve hata ayıklama iş akışlarını basitleştirmesi açısından çok beğenilmektedir. Compiler Explorer, yıllardır CUDA kodunu derleme desteği sunmakta ve tam bir araç seti kurmadan, CUDA C++ kodlarını prototiplemeyi ve PTX veya SASS çıktısını incelemeyi kolaylaştırmaktadır. Ancak, başlangıçta CPU iş akışlarının sağladığı bir avantajdan yoksundu: CUDA kodunu gerçekten çalıştırma yeteneği.

NVIDIA mühendisleri ile Compiler Explorer geliştiricileri arasındaki yakın iş birliği sayesinde, 2022’de bu boşluk kapatılmıştır. Compiler Explorer, kullanıcıların CUDA kodunu doğrudan NVIDIA GPU’larında çalıştırmasını sağlayacak şekilde genişlemiş ve tarayıcıda CUDA geliştiricilerine tam yazma-derleme-çalıştırma yeteneği sunmuştur.

CUDA Geliştiricileri için Güçlü Özellikler

Bu bölümde, Compiler Explorer’ı CUDA geliştiricileri için vazgeçilmez kılan beş pratik yolu paylaşacağız.

1. Tarayıcınızda CUDA C++ Kodunu Çalıştırma

Compiler Explorer, küçük CUDA programlarını tarayıcınızda doğrudan yazmanıza, derlemenize ve çalıştırmanıza olanak tanır. Bu, prototipleme, hata ayıklama ve öğrenme süreçlerini büyük ölçüde kolaylaştırır. Fikirden sonuca sadece birkaç saniye içerisinde ulaşabilirsiniz.

Bunlar sizin üretkenliğinizi artıracaktır. Öne çıkan özellikler:

  • Yerel bir kurulum yapmadan çalışma imkanı
  • Gerçek zamanlı geri bildirim: yaz → derle → çalıştır → çıktı
  • Kolay prototipleme, doğrulama ve öğretme

Örnek iş akışları:

  • Bir tam yerel ortam kurmadan CUDA C++ kodunu hızla prototipleme
  • Hataları yeniden üretme ve hata ayıklama
  • CUDA’yı öğretmek ve öğrenmek için etkileşimli çalıştırma kullanma

2. Kolay Paylaşım ve İşbirliği

Compiler Explorer, hata ayıklama, işbirliği veya eğitim amacıyla minimal CUDA örneklerini paylaşmayı kolaylaştırır.

  • Bir CUDA parçası yazın, Paylaş düğmesine tıklayın ve kalıcı bir URL alın; alıcınız kesinlikle aynı kodu, derleyici ayarlarını ve çıktıları görecektir.
  • Derleyici hataları veya performans sorunlarını raporlama
  • CUDA kavramlarını öğretme

Örnek iş akışları:

  • Bir derleyici optimizasyon sorununu hızlıca çözmek için meslektaşlarınıza tam kod örnekleri göndermek
  • CUDA en iyi uygulamalarını veya yaygın tuzakları ekip üyelerine veya öğrencilere açıklamak için minimal, çalıştırılabilir örnekler paylaşmak

3. Kütüphanelerle Deney Yapma

Compiler Explorer yalnızca temel CUDA C++ kodu ile sınırlı değildir. CCCL veya MatX gibi CUDA kütüphanelerini de kutudan çıkar çıkmaz kullanabilirsiniz. Ayrıca açık kaynak olduğu için, onu daha da genişletmekte özgürsünüz. Kendi CUDA kütüphanenizi entegre etmek isterseniz, bunu compiler-explorer GitHub deposuna katkıda bulunarak gerçekleştirebilirsiniz.

4. PTX ve SASS Assembly’yi Yan Yana İnceleme

CUDA C++ kodunuzdan üretilen assembly’i incelemek, performans optimizasyonları hakkında kritik bilgiler verebilir. PTX hakkında daha fazla bilgi edinmek için Understanding PTX, the Assembly Language of CUDA GPU Computing makalesini inceleyebilirsiniz.

CUDA ile GPU assembly incelemek için cuobjdump, nvdisasm veya NVIDIA Nsight Compute gibi araçları kullanmanın birçok yolu vardır. Ancak, Compiler Explorer genellikle hızlı deneyler, öğretici anlar veya erken aşama hata ayıklama için en kullanışlı olanıdır.

Compiler Explorer, kaynak kodunun her bir satırını oluşturulan talimatlarla eşleştirir. Bu eşleştirme, kullanıcı arayüzünde görsel olarak renklendirilir; böylece her bir CUDA C++ kodu satırının PTX ve SASS talimatlarına nasıl dönüştüğünü takip etmek kolaylaşır. Örneğin, Şekil 1’de, 4. satırdaki printf çağrısının sağdaki oluşturulan PTX talimatlarıyla eşleştiğini renklendirilmiş olarak görebilirsiniz.

Compiler Explorer ile kolayca:

  • Tarayıcınızda CUDA C++ çekirdekleri yazabilirsiniz
  • PTX ve SASS’in yan yana görünümlerini görebilirsiniz

Örnek iş akışları:

  • Döngü açma pragmaları gibi değişikliklerin assembly üzerindeki etkisini gözlemleme
  • __restrict__ anahtar kelimesinin oluşturulan yükleme talimatlarını nasıl etkilediğini takip etme
  • Vektör yükleme/depolama talimatlarının üretilip üretilmediğini doğrulama

5. Derleyici Sürümlerini ve Bayraklarını Anında Karşılaştırma

Farklı CUDA derleyici sürümlerinin veya belli derleyici bayraklarının ürettiğiniz GPU kodu üzerindeki etkisini merak mı ediyorsunuz? Compiler Explorer bunu kolaylaştırır:

  • Birden çok CUDA derleyici sürümü arasından seçim yapma imkanı
  • Birden fazla yerel kurulumla uğraşmadan sonuçları anında görme
  • Farklı sürümlerdeki derleyici davranışındaki değişiklikleri anında doğrulama veya yalanlama

Örnek iş akışları:

  • Son CUDA araç seti sürümlerinin cihaz kodunuzu daha iyi optimize edip etmediğini doğrulama
  • -use_fast_math bayrağının oluşturulan assembly üzerindeki etkisini izleme
  • --resource-usage ile her bir iş parçacığı başına kaynak kullanımını kontrol etme

Compiler Explorer ile Başlamak

Compiler Explorer, modern CUDA geliştirme iş akışlarının vazgeçilmez bir parçası haline geldi; hata ayıklamadan performans analizine, öğretimden kod paylaşımına kadar birçok alanda kolaylık sağlamaktadır. Bu nedenle, geliştiricilere gerçek bir katkı sağlayan açık kaynak araçları destekleyen NVIDIA FOSS Fund’ın ilk ödülünü almak için seçildi. Takım, projeyi desteklemekten gurur duyuyor ve bu aracın sizin CUDA setinizin temel aracı haline gelmesini umuyor.

Eğer zaten Compiler Explorer kullanmıyorsanız, bunu CUDA kavramlarını prototiplemek ve keşfetmek; performans gerilemelerini hata ayıklamak veya derleyici davranışlarını doğrulamak; ve minimal tekrar edilebilir örnekleri kolayca paylaşmak için deneyin.

Başlangıç için bu örneklere göz atın: Merhaba Dünya, Vektör Toplama ve CCCL. Daha fazla bilgi için godbolt.org adresini ziyaret edin, compiler-explorer GitHub deposuna katkıda bulunun ve Compiler Explorer Discord’a katılın.

Teşekkürler

Özellikle Compiler Explorer’ın yaratıcısı Matt Godbolt‘a ve geliştiricilere böyle güçlü bir kaynak oluşturan tüm topluluğa teşekkür ederiz. Özellikle Patrick Quist‘ye, CUDA desteğini genişletme konusunda uzun vadeli işbirliği ve teknik katkılarından dolayı teşekkürlerimizi sunuyoruz.

Kaynak

Nvdia Blog

Düşüncenizi Paylaşın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgili Teknoloji Haberleri