Visual Studio'yu CUDA için hazırlamak ve ilk CUDA programını derlemek
Şurda kurulumdan bahsetmiştim
Şimdi sıra geldi CUDA geliştirilecek olan ortamı hazırlamaya. Nvidia iyi etmiş güzel etmiş de şöyle bi yüklemede olabilen bi Visual Studio eklentisi yapmamış. Ya da ben bulamadım bilmiyorum. Official olarak yok yani. Unofficial Cuda Wizardları var da gerek yok. Şimdi anlatcam ben. Burda dikkatli edilmesi gereken husus hangi CUDA Toolkitini kuracağınız. Şu anda 28.10.2010 itibariyle 3.2 RC yayında. Ben hem 3.2’yi hem 3.1’i anlatacağım.
Nvidia CUDA Toolkit 3.2 RC için konfigürasyon:
Önce kolaydan başliyim. Bunun içine Nvidia hem visual studio konfigurasyon dosyalarını gömmüş hem de build rule dosyalarını. Böylece bize daha az iş kalıyor. Yapılması gerekenler:
1) CUDA dosyaları için renklendirme: Visual Studio 2008(veya 2008 SP1)’i açıp Tools ->Options -> Text Editor -> File extension’a geliyoruz. Extension kısmına “cu” yazıyoruz tabi ki tırnaklar olmadan. “Microsoft Visual C++” seçip add diyoruz. Artık cu dosyaları renklenecek.
2) CUDA dosyaları için intellisense’i etkinleştirmek: Bu büyük ihtimalle etkin olarak gelecek. Etkin değilse de elimizle konfigure edebildiğimiz gibi Nvidia sağolsun bu toolkitte şöyle bir reg dosyası hazırlamış. Onunla da ayarlanabilir. Bu reg dosyasının konumu şurada -ben buraya yükledim SDKyı-:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\extras\visual_studio_integration
Bu klasörün altında “gpucomputing_intellisense.reg” var onu çalıştırınca kayıt defterine cu ve cuh uzantılı dosyalar için intellisense’i etkinleştirme olayını ekliyor.
3) CUDA dosyalarını derleme/build etme: Yeni toolkit ile bu da kolaylaştırılmış. Önceki versiyonda elimizle cuda.rules’ı custom build rule olarak tanımlayıp konumunu gösterip seçip derletiyorduk. Şimdi olay basitleşmiş. Visual Studio’nun klasörlerinin ilgili yerlerine Nvidia kendi rules dosyalarını kopyalamış oluyor. Bize kalan tek şey Projeye sağ tıklayıp Custom Build Rules’a basıp en altın bi üstündeki “CUDA Runtime Api Build Rule (v3.2)”yi işaretleyip OK diyoruz. Artık nvcc kullanarak derleme yapılabilir. Tabi daha işimiz bitmedi.
Bu noktaya kadar her şeyi yapıp başarılı olunduysa “Visual Studio ile ilk projenin derlenmesi” kısmına atlayın yazının.
Nvidia CUDA Toolkit 3.1 için konfigürasyon:
1) Öncelikle elimizde Visual Studio 2008 olmalı. C’de yüklü olursa daha iyi olur. Başınız ağrımaz. D’de yüklü olunca ortam değişkenlerini falan ayarlamak gerekiyor. Şimdi de ayarliciz gerçi de o kadar değil. CL.exe’yi kullanacak çünkü bizim nvcc.exe CUDA derleyicisi. VS 2008 kurulduktan sonra(SP1 de kurulabilir. Şayet Nvidia Parallel Nsight kullancam ben diyen arkadaşların yüklemesi şart zaten. SP1 yüklü değil diyor daha setupta)
2) CUDA dosyaları için renklendirme: Şimdi Visual Studio’nun “cu” uzantılı dosyaları tanıyıp renklendirmesini(syntax highlighting dediğimiz olay) sağlamak lazım. Cuda sözdizimi C++ gibi azcık değişik zaten. Bu uzantıyı eklemek için Visual Studio’yu açıp Tools ->Options -> Text Editor -> File extension’a geliyoruz. Extension kısmına “cu” yazıyoruz tabi ki tırnaklar olmadan. “Microsoft Visual C++” seçip add diyoruz. Artık cu dosyaları renklenecek.
3) CUDA dosyaları için intellisense’i etkinleştirmek: Başlat -> çalıştır açıp regedit.exe yazıyoruz ve kayıt defterini açıyoruz. Ordan şu kayıda gidiyoruz:
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Languages\Language Services\C/C++
Ordaki cpp falan olan kaydı açıyoruz ve şunları ekliyoruz:
.cu;.cuh
Artık Visual Studio cu uzantılı dosyalarda da intellisense’i açıp code complete yapacak.
4) CUDA dosyalarını derleme/build etme: Bunun için Nvidia bir rules dosyası hazırlamış onu kullaniciz. Yeni bir C++ Win32 console application oluşturuyoruz. Empty project yapıyoruz. src’nin içine yeni bir item ekliyoruz. cpp dosyası ekleyip adını .cu uzantılı yazabilirsiniz. Ya da cu dosyasını sürükleyip src’nin içine atabilirsiniz. Hiç farketmez. hello.cu misal. Neyse bunu yaptıktan sonra Solution Explorer’dan olabilir mesela projemize sağ tıklayıp “Custom Build Rules”a basıyoruz. Çıkan pencerede “Find existing”e basıyoruz. Aradığımız dosya “rules” uzantılı Cuda.rules dosyası. Şu konumda olmalı yani en azından bende orda:
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK\C\common
Sizde yoksa burda arattırın bilgisayarda. SDK’yı kurduysanız elbet gelmiştir bir yere. Bu dosyayı ekleyip başına da tik attık mı tamamdır. OK diyip çıkıyoruz. Yalnız bu build rule ayarlama olayını her yeni proje açılışında yapmak gerekiyor. Her seferinde dosyayı bulmak değil de CUDA Build Rule’a tik atmak gerekiyor.
5) Artık her şey hazır. Tabi görünen kısım bu. Görünmeyen kısım bu kadar kolay değil. En azından bana zor oldu. Adam gibi Visual Studio kullanmayı bilmeyince. Artık sıra ilk kodu derlemede
Visual Studio ile ilk projenin derlenmesi:
Projeyi açtık, custom build rule’u seçtik. src’nin içine yeni bi cpp dosyası yaratmaya girilir. Adını cu uzantılı bişiler konur. Uzantısı cu olmalı yoksa sözdizimsel hatalar geliyor. CUDA syntaxi değişik sonuçta az biraz. Sonra kod derlenir. Şimdilik örnek kodlar üzerinden gidelim. SDK’da Nvidia bizi düşünmüş ve büssürü örnek proje koymuş. SDK’yı kurunca onlar da geliyor haliyle. Bulundukları lokasyon:
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\C\src
Böyle bişi olmalı. SDK’nın alt klasöründe yani. Tavsiye edilen buradaki “bandwidthTest”i derleyip çalıştırmaktır. Solution açıldığı vakit zaten kendiliğinden custom build rules’u seçilmiş olur. Biz de renklendirme ayarını yaptığımız için intellisense ve renklendirme de olacaktır. Start Debuging diyince büyük ihtimal çalışması lazım. Çalışmazsa muhtemelen gerekli kütüphaneleri bulamamıştır. Onların nasıl Visual Studio’ya gösterileceği konusuna ileriki bir yazıda değineceğim.
BandwidthTest’in çıktısı şöyle bişi olmalı:
- Hakan Uysal