Stream process(opencl, Cuda) öğrenirken...

    Opencl ve cuda neden öğreneyim derseniz; thread, thread rush ve process kavramlarıyla çok uğraşmadan hızlı hesap yapmak isteyenler öğrensin.

    Stream process genelde Cuda ve OpenCL ile yapılıyor. Bende önce opencl sonra cuda öğrenmeye başlamıştım. Sakın korkmayın. Unutmayın host program işlemci üzerinden PCI aracılığıyla stream processore veriyi gönderir ve oradan veriyi alır. host olmaksızın stream process yapılamaz. Kernel stream processor üzerinde çalışır. Sürücüleriniz yüklü değilse cihazlar bağlı host ile bağlantı kuramadığından çalışmaz.

    Cuda yeni bir dil değil. Aslında c/c++ dili. fazladan "<<< x,y >>>", "cudamalloc,cudafree","__global, __local"gibi birkaç ifade geliyor. Kernel denilen kısım derlenip cihazdaki her çekirdeğe gönderiliyor ve data parçalanıp işleniyor. Cuda kerneli nvcc de derle dediğiniz zaman derliyor. Tüm c/c++ fonksiyonlarını kullanabilirsiniz. nvcc gcc gibi bir derleyici. Cuda nvidia sitesinden ve udacityden öğrenebilirsiniz. Udacity Cuda kursu bedavadır. Cuda opencl karşısında daha kolay olmasına karşın opencl çalıştığı yarı iletken çeşidi daha fazladır. Cuda sadece nvidia ekran kartlarında çalışır.

    OpenCL kerneli işlemci üzerinde çalışan program derlendikten sonra derlenir. GPU(amd,nvidia,intel), CPU, FPGA(intel) kartlarında çalır. kerneli cuda kerneline çok benzer. Host kodu cudaya göre biraz uzun olduğundan zor gibi görünür ama birkaç alıştırmayla aslında tekrarlanan birkaç kalıp olduğunu fark edersiniz. Kerneli hangi cihaz için derleyecekseniz host programda onun adını yazmanı yeterli. OpenCL de tek sıkıntı standart firmadan firmaya değişir ama özü hep çalışır. Her cihazın ihtiyacına göre birkaç fonksiyon ekleyebilir üretici. OpenCL OpenGL gibi bir spesifikasyondur. Eğer hesap sonrası görüntü almak istiyorsanız GSGL(opengl), HLSL(directx) yönelin. Bu uygulamalarında kendi kernelleri vardır ve yine hesabı yapıp fazladan ekrana yansıtır. Fakat birden çok bilgisayarda hesaplamaya gelince OpenCL ön plana çıkmaktadır. En iyi kaynak amdnin sitesi ve partnerlerinin sitesidir. nvidia birkaç örnek paylaşmış. intel nvidia gibi birkaç örnek paylaşıp açıklamasını yapmıştır. OpenCL kitabı vardı 1.2 versiyonu anlatıyor. 1.1 ve 1.2 taşınabilir versiyonlardır. android opencl desteği var fakat kontrol edin.

Yorumlar

Popüler Yayınlar