Dıstrıbuted opencl - opencl platformunun ağ ölçeğinde dağıtılması
Distributed opencl - distributing opencl platform on network scale
Yazar: BARIŞ ESKİKAYA
Danışman: YRD. DOÇ. DR. D. TURGAY ALTILAR
İstanbul Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2012
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Bilgisayar grafikleri = Computer graphics ; Dağıtık bilgisayar sistemi = Distributed computer system ; Grafik programlama = Graphic programming

Özet:
Grafik kartları, yapısındaki çok çekirdeklilik ve işlem hattı mimarisi sayesinde yüksek miktardaki bağımlı olmayan verileri paralel olarak hızlı bir şekilde işleyebilme yeteneğine sahiptir. Ekran kartlarının bu özelliğinden bilimsel hesaplamalar, benzetim uygulamaları, işaret işleme uygulamaları gibi alanlarda da yararlanabilmek amacıyla grafik işlem birimi üzerinde genel amaçlı programlama (GPGPU) kavramı ortaya çıkmıştır.OpenCL, son zamanlarda yaygın olarak kullanılmaya başlayan bir GPGPU çatısıdır. OpenCL, çeşitli üreticilere ait çeşitli modellerdeki CPU ve GPU aygıtlarının bulunduğu heterojen ortamlarda çalışan ve aygıtlar arasında taşınabilir programlar yazmayı mümkün kılmaktadır. Üreticiler tarafından kabul edilen ortak OpenCL standartları sayesinde hem programcılar aygıtlara özel teknik detaylardan soyutlanmakta hem de platform ve aygıt özelliklerinden bağımsız programlar yazılabilmektedir. Bu nedenle OpenCL, önde gelen üreticiler tarafından desteklenen ve giderek daha yaygın olarak kullanılan bir GPGPU çatısı haline gelmektedir.Bu tez çalışmasında; tek bir bilgisayarın kaynaklarını kullanarak çalışan OpenCL çatısını, JSON-RPC iletişim tekniği kullanarak ağ ölçeğinde dağıtılmış olan birçok bilgisayardaki kaynakları paralel olarak kullanabilecek hale getiren Distributed OpenCL (Dağıtılmış OpenCL) çatısı geliştirilmiştir. Geliştirilen bu yeni yapı ile OpenCL çatısının birçok bilgisayardaki GPU veya CPU kaynaklarının aynı işlem üzerinde paralel olarak çalışıp aygıt başına düşen işlem yükünü azaltarak genel hesaplama performansını arttıracak ve aynı zamanda aygıt, üretici ve işletim sisteminden bağımsız olarak çalışacak şekilde genişletilmesi amaçlanmıştır.Geliştirilen yapı istemci ? sunucu mimarisinde çalışan bir sistemdir. İstemci, dağıtım katmanı ve sunucu bileşenlerinden oluşmaktadır. İstemcilerde çalışan ev sahibi programların yaptığı OpenCL API çağrıları yine istemcide çalışan dağıtım katmanı tarafından yakalanmakta, OpenCL çağrıları, çağrılara ait parametrelerle birlikte JSON mesajlarına çevrilmekte ve sistemdeki sunuculara JSON ? RPC protokolü kullanılarak iletilmektedir. Sunucu, kendisine gelen mesajları dinlemekte, bir mesaj geldiğinde JSON formatındaki mesaj içeriğini ayıklayarak ilgili OpenCL çağrısını verilen parametrelere birlikte işletmekte, dönen sonuç parametrelerini yine JSON mesajı haline getirerek istemciye cevap olarak iletmektedir. Mesaj cevabını alan istemcideki dağıtım katmanı, dönüş değerlerini OpenCL çağrısının işlevini göz önünde bulundurarak ev sahibi programa döndürmektedir.Geliştirilen bu yeni yapı üzerinde Doğal OpenCL (Native OpenCL) ile karşılaştırmalı olarak bazı testler yapılmıştır. Bu testler ek yük testleri, paralel yürütme testleri ve çekirdek döngüsü testleri olarak sınıflandırılmaktadır. Ek yük testlerinde Native OpenCL ile Distributed OpenCL'de sunucu ve istemcinin aynı bilgisayarda çalışması, sunucu ve işlemcinin farklı bilgisayarlarda çalışması durumlarındaki performans karşılaştırılmıştır. Paralel yük testlerinde Distributed OpenCL'in bir istemci ? bir sunucu, bir istemci ? iki sunucu, bir istemci ? dört sunucu şeklinde çalışması gözlemlenmiştir. Çekirdek döngüsü testlerinde hesap yoğun bir çekirdek fonksiyonu benzetimi yapılarak bu durumda sistemler arasındaki performans farkı ölçülmüştür.Testler sonucunda Distributed OpenCL çatısının özellikle düşük gecikmeli ? yüksek hızlı ağlar ve çoklu GPU barındırabilen aygıtlar ile birlikte kullanıldığında; üretici ? işletim sistemi bağımsız, dağıtık, paralel çalışan ve ölçeklenebilir yapıya sahip bir GPGPU hesaplama ortamı sağlayabileceği görülmüştür.

Abstract:
This paper presents a framework that extends OpenCL by distributing computing process to many computing resources connected via network and enables the computing resources to run in parallel. Using JSON RPC (Remote Procedure Call technique relying on JavaScript Object Notation) in communication layer, Distributed OpenCL framework provides platform and operating system independency. Using this framework, a host program executed on a computer that has no OpenCL support is able to use other computing resources distributed on network in parallel. Results show that OpenCL platform model can be extended to network scale to provide a vendor, architecture and operating system independent and a parallel computing environment with reasonable communication overhead.