OpenCL’in çıkış noktası, son kullanıcıların ve programcıların gerçek sorunlarını çözmek. OpenCL gibi açık, platformlar arası, heterojen bir dilin mümkün olması, son kullanıcıların aradığı hızlı ve verimli bilgisayar ütopyasının gerçekleştirilmesinde önemli bir adım olabilir.
Teknoloji ve kullanıcıları arasındaki en büyük çatışmalardan biri, bazı unsurların diğerleriyle çalışmaması, karmaşık ve uzun çözümler gerektiren bütünleşme sorunları doğurması oldu; vaat edilen “tak ve çalıştır” teknolojisi böyle bir şey değildi. Yazıcılar bilgisayarları göremedi, sunucular farklı işletim sistemi çalıştıran sunucularla konuşamıyordu, cihazlar uyum sağlayamıyordu, bu listenin de sonu gelmiyordu.
Üstelik sorun sadece yazılımla donanım arasında da değildi; mikroişlemci ve grafik işlemcisi alanında süregelen değişiklikler, hem geliştiricilerin hem kullanıcıların teknolojileri benimsemesini yavaşlatmıştı.
Yakın zamanda, grafik işlemcilerin genel bilgiişlem görevlerini de üstlenmesine özel ilgi gösterilmeye başladı. Grafik işlemci donanımları sabit işlevli ünitelerden programlanabilirliği yüksek işlem çekirdeklerine dönüştü.
Bunun sonucunda meraklı geliştiriciler, olağanüstü miktardaki paralel işlem gücünden yararlanmak için uygulamalarını Microsoft® DirectX® ve OpenGL® gibi geleneksel uygulama programlama arabirimlerinin (API) programlama modellerine uyacak şekilde baştan yazdı.
Bu durum araştırma çevrelerinde rağbet görürken, grafik API’lara alışık olmayan geliştiriciler için sorun doğurdu. Bunun sonucunda, bilgisayarla dost bir arabirimi olan ve grafik programlama modelinin ayrıntılarını geliştiriciden saklayan API’lar geliştirildi. Ancak bunlar da genel kabul görmedi. Bu API’lar ancak arabirimi sağlayan üreticinin ürünleri üzerinde çalışıyordu. Üstelik grafik işlemcisi, daha büyük, dengeli ve heterojen bir platformun parçası olarak değil, bağımsız bir uygulama hızlandırıcısı olarak işlev görüyordu.
Bu da, sistemde mikroişlemci için ayrı, grafik işlemcisi için ayrı kod yazılmasını gerektirdi. İnsanlar bu ek işlem gücünü en iyi nasıl kullanacaklarını anlayıp doğru API’yı seçmeye çalışırken, yöntemin piyasada tutunması da yavaş oldu.
Tarih bize, piyasada standartlara dair kargaşanın satışlar üzerinde olağanüstü etkilere yol açabileceğini gösterir. Örnek olarak VHS ile Betamax veya Blu-ray ile HD DVD arasında çekişmeye bakılabilir.
Gerek bireysel gerek ticari kullanıcılar, yol haritası açıkça belli olana kadar bir teknolojiye yatırım yapmaktan çekinebilir. Üreticiler, bu standartsızlığın grafik işlemcisi teknolojisi ve ürünlerinin de yavaş benimsenmesine neden olduğunu fark ettiler ve buradan hareketle standartlar belirleyip birlikte çalışmaya başladılar.
Geçen yıl, aralarında AMD’nin de olduğu büyük mikroişlemci ve grafik işlemcisi üreticileri, bir araya gelerek Açık Programlama Dili’ni (Open Computing Language-OpenCL™) geliştirdi. Bu yeni standart esaslı programlama dili, geliştiriciler tarafından heterojen platformlar için program yapmakta kullanılarak üreticisi kim olursa olsun bir sistemdeki tüm işlemcilerden yararlanabiliyor.
1992’de CAD, tıbbi görüntüleme ve eğlence uygulamalarında daha iyi ikiboyutlu ve üçboyutlu grafikler üretmek için kullanıma açılan OpenGL API’nın yaratıcısı olan açık standartlar konsorsiyumu Khronos Grubu tarafından geliştirilen OpenCL, mikroişlemciler ve grafik işlemciler arasında paralel bilgiişlem için tasarlandı. OpenCL, mikroişlemcinin hesaplama ve veri işleme görevlerine grafik işlemcinin yardım etmesini mümkün kılarak, hız ve verimlilik sağlayan dengeli bir platform oluşturuyor.
CPU ve GPU’nun birlikte çalışmasını mümkün kılan OpenCL, geliştiricinin yapı itibariyle veri paralel olan görevleri GPU’ya aktarıp kalan görevleri CPU’nun üstünde bırakmasına fırsat veriyor. Sistemdeki tüm işlemciler yapılarına en uygun iş yükleri üzerinde çalıştığı için, aynı donanımla daha az zamanda daha çok iş yapılabiliyor. OpenCL’in x86 işlemcilerde çalışan bir beta sürümü AMD tarafından piyasaya çıkarıldı.
Geliştiriciler uygulamalarını bu beta OpenCL’i kullanacak şekilde ayarlayıp daha sonra çıkacak olan tam sürüm OpenCL ile grafik işlemcilerinden kolaylıkla yararlanabilecekler.
İşletme açısından, OpenCL sunucuların ve yüksek performanslı bilgisayarların kıvraklığını ve hızını arttırıyor. Veri çağırma işlevlerini sık kullanan finansal hizmetler şirketleri, bankalar ve diğer kurumlar, ihtiyaç duydukları veriyi bulmak, analiz etmek, ilişkilendirmek ve gereken bilgiyi çıkarmak için sıkıntılar yaşıyor.
Eskiden sistemde sadece CPU kullanıldığı için bu işlem uzun sürebilirdi. Ancak sistemdeki GPU’ların gücünün de kullanılmasıyla, sonuç için gereken süre önemli ölçüde kısaltılabiliyor. Sistemdeki tüm işlemcilerden yararlanan OpenCL, finansal hizmetler şirketlerinin satın aldıkları donanımdan daha fazla değer elde etmesini mümkün kılıyor.
Üstelik OpenCL’den yarar gören sadece mali sektör değil; araştırma laboratuarları, üniversiteler, sinema-televizyon sektörü gibi yoğun veriyle çalışan tüm sektörlere yararı olacak.
OpenCL’in üstünlüklerinden biri, uygulamanın sistemdeki çok çekirdekli mikroişlemciler ve uyumlu grafik işlemcilerden hangilerinin müsait olduğunu belirlemesini mümkün kılması.
Bu sayede uygulama geliştiriciler performanslarını müşterilerin donanımlarına göre dinamik olarak ölçeklendirebiliyorlar. Sözgelişi, müşterinin mevcut CPU ve GPU’lardan dinamik olarak yararlanabilecek, OpenCL ile hızlandırılmış bir uygulama alması durumunda, donanım yatırımını mevcut bilgiişlem kapasitesi ihtiyacına göre ayarlaması mümkün oluyor.
Bir yayın kuruluşu, CPU ve GPU sayısındaki artışla kendiliğinden ölçeklenen bir OpenCL uygulamasına sahipse, sistemin işlem kapasitesini arttırmak için daha fazla veya daha güçlü CPU veya GPU alınması yeterli oluyor.
OpenCL’in en önemli unsuru, açık olması. Bir grup şirket tarafından oluşturulan bir standart olduğu için, projeye katılan tüm sağlayıcılar, uygulamanın çalışmasında büyük yarar sağlayacak. Bu da, sadece katılan ve nihayet herkes için çalışacak bir dil üzerinde anlaşmaya varan sağlayıcılar değil, bilgisayarlarını daha hızlı ve verimli kullanabilecek olan son kullanıcılar için de çok iyi bir haber.
OpenCL’in çıkış noktası, son kullanıcıların ve programcıların gerçek sorunlarını çözmek. OpenCL gibi açık, platformlar arası, heterojen bir dilin mümkün olması, son kullanıcıların aradığı hızlı ve verimli bilgisayar ütopyasının gerçekleştirilmesinde önemli bir adım olabilir.