Daha başlarken afalladım, nasıl başlayacağımı bilemedim yazıya. Umarım sonunu getirebilirim. Az buz değil, seneler geçmiş üzerinden.
Dergimiz 7. yaşını doldururken, yazıma heyecanla başlıyorum. Ekran kartlarının genel amaçlı kullanımından kısaca sözetmeye çalışacağım.
Ön bilgi olarak, Temmuz 2008 sayımızda yayınlanmış olan "Ekran Kartları" yazımızı inceleyebilirsiniz.
Ekran kartları, temelde ekrana verilecek görüntünün oluşturulması amacı ile üretilmekte idi. Bu amaçla, çok çekirdekli bir yapıya sahiptirler. Her bir çekirdek ekranın küçük bir bölümü için gerekli hesaplamaları yaptığında, ekranın tamamı için gerekli işlemler çok kısa bir sürede paralel olarak yapılmış olur.
Ekran kartı çekirdekleri, işlemci çekirdeklerine kıyasla daha güçsüz ve daha yavaş, ama çok daha fazla sayıdadır. Nvidia'nın son ekran kartlarındaki çekirdek sayısı 2880'e kadar ulaşmıştır. Ekran kartları ve işlemciler arasındaki kıyaslamada en çok kabul görmüş benzetmede, işlemci çekirdekleri boğalara, ekran kartı çekirdekleri de tavuklara benzetilir. İkisinin de birbirine göre avantajlı oldukları farklı durumlar vardır.
Bu çekirdekler için en önemli ayrıntı, hepsinin aynı anda aynı işi yapması gerekliliğidir. Single Instruction Multiple Data şeklinde çalışan bu çekirdekler, farklı işler yapmaları gerektiğinde birbirini beklemekte, bu da performans kaybına yol açmaktadır.
Ekran kartlarının mimari yapısı ile ilgili daha ayrıntılı bir yazıyı gelecekteki sayılarımızda sizlerle paylaşmayı umut ediyorum.
Bu mimari yapısı sayesinde ekran kartları, genel amaçlı olarak da kullanılmaya başlanmıştır (General Purpose GPU Programming). Yüksek işlem gücü gerektiren karmaşık problemleri, paralelleştirerek ekran kartları ile çok daha kısa sürede çözmek mümkün olmaktadır. Günümüzde üretilen ekran kartı modellerinin daha çoğu, genel amaçlı yüksek performanslı hesaplamalar için üretilmekte, bu ekran kartları ile süper bilgisayar kümeleri oluşturulmaktadır. top500.org verilerine göre, Kasım 2013 itibari ile dünyanın bilinen en güçlü 2. bilgisayarı Nvidia K20 ekran kartlarından oluşan bir bilgisayar kümesidir.
Her problem, ekran kartları için uygun değildir. Bir problemin ekran kartlarına uygun olması için, bu problemin birbirinin aynısı ve birbirinden bağımsız çok küçük problemlere bölünebilmesi gerekmektedir. Boğalı ve tavuklu benzetmemizi burada da kullanacaksak, yüklü bir kağnıyı çekmeye benzetebileceğimiz bir iş için, boğaya benzettiğimiz işlemci çekirdekleri daha uygun olacaktır. Ama eğer problemimizi, yere dağılmış milyonlarca mısır tanesini toplamaya benzetebilirsek (bütün mısır taneleri aynı şekilde toplanacak ve mısırlar birbirinden bağımsız), tavuklara benzettiğimiz ekran kartı çekirdekleri çok daha verimli çalışacaklardır.
Paralelleştirilmeye uygun olduklarından dolayı, görüntü işleme çözümleri ekran kartları için en uygun olan uygulamaların başında yer alırlar. Resim işlemenin yanı sıra, canlı görüntü akışı sağlayan kamera verilerinin işlenmesi de görüntü işleme çözümleri arasında yer almaktadır. Bunlar dışında ekran kartları üzerinde geliştirilen ve işlemciye göre hızlanan sayısız problem, çözüm ve uygulama bulunmaktadır. Bazı uygulamalar ekran kartında işlemciye göre daha yavaş çalışsa da, bazı uygulamalarda onlarca, hatta bazılarında da yüzlerce kat hızlanma gözlenebilmektedir. Bu performans artışları genel amaçlı ekran kartı kullanımını bilişim sektörünün vazgeçilmezleri arasına sokmuştur.
Genel amaçlı ekran kartı üretiminde Nvidia ve ATI('yi satın alan AMD)'nin yarışı devam etmektedir. Intel'in yakın gelecekte bu yarışa katılacağı yıllardır söylense de, henüz yüksek performanslı ekran kartı tanıtımı yapmamıştır. Nvidia ile AMD arasındaki yarış sürmekte ve sürecek olsa da, kıyaslamalar genellikle performans için Nvidia'yı işaret etmektedir. Kesin olarak kazananı belirtmek çok doğru olmasa da, Nvidia ürünlerinin performans açısından daha başarılı olduğunun, kabul gören bir kanı olduğunu soyleyebiliriz.
Peki ekran kartlarını nasıl programlıyoruz, işlerimizi ekran kartlarına nasıl gönderiyoruz ? Dilerseniz bunun cevabını Nvidia CUDA ve OpenCL kütüphanelerinden sözedeceğim gelecek yazımda arayalım.
Bergi ile kalın, Nice yıllara e-bergi :)