Süper Bilgisayarlar Neden Süperler
Süper Bilgisayarlar ve Paralel Programlama
Last updated
Süper Bilgisayarlar ve Paralel Programlama
Last updated
Koç Üniversitesinin değerli akademisyeni Didem Unat dan güzel bir konuşma ve söyleşiler
TıDa – Super bilgisayarlar da Big Data işlemleri Verıyı pasta dılımlerı bölmek gerekir. Veriyi parçalayıp işlemci ve hızlandırıcılara otomatik olarak dağıtıyor. Veri yerelliği (üretildiği yerde tüketilmesi) prensibine göre çalışır.
Mint "domain-specific programming model" ile 2011 yılında GPU ları accelarator olarak kullanan ilk kişilerdenmiş.
Asenkron haberleşme yapan bir yazılım geliştirmişler. Böylece superbilgisayarların trafik problemine çözüm önermişler. Supernova simülasyonunda kullanılmış. 278bin kusur işlemciyi sorunsuz kullanabiliyorlarmış.
Kalkınma bakanlığı seneye yapılması için çağrıda bulunmuş.
Her 20 sene sonrasında süper bilgisayarlar cebe giriyor. 2020 de Çin den bir süper bilgisayar. 2021 de ise Amerika veya Japonya dan yeni bir süper bilgisayar bekleniyormuş.
Senede iki defa denetleme yapan TOP500 sitesinden mevcut ilk 500 süper bilgisayar görülebilir. 2018 yılında çalıştırılan ve ilk sıraya yerleşen Summit adlı süper bilgisayar yerini korumaktadır.
IBM Power System AC922
Processor: IBM POWER9™ 22 core 3.07GHz (2/node)
GPUs: 27,648 NVIDIA Volta V100s (6/node)
Nodes: 4,608
Node Performance: 42TF
Memory/node: 512GB DDR4 + 96GB HBM2
NV Memory/node: 1600GB
Total System Memory: >10PB DDR4 + HBM + Non-volatile
Interconnect Topology: Mellanox EDR 100G InfiniBand, Non-blocking Fat Tree
Peak Power Consumption: 13MW
Toplam 2,414,592 core, 2,801,664 GB memory, teorik 200,795 TFlop/s işlem gücü ve 10,096.00 kW güç tüketimi sunuyor.
Türkiye de super bilgisayar kuranlar:
Tubitak Truba
ITU UHeM
Haziran 2019 da başlayan avrupa ile yapılan ortak çalışma 8 tane merkez kurulacak. Bu merkezlerden bir tanesi Türkiye, İspanya, Portekiz, Hırvatistan ve İrlanda ile ortak başvuruda bulundu. Maddi katılımda ülke olarak bulunduk. 3 senen sonra hazır olması öngörülüyor. Summit' e yakın güce sahip olacak bir süper bilgisayar olması ön görülüyor.
Peki son söz olarak ne demeliyiz. Videolarda teknik detaya çok değinilmedi ancak yazılım yazmayı biliyorsak ve paralel programlama konularına hakim isek istediğimiz kadar paralellemeyi arttırarak biz de büyük veri analizleri ve modellemeler yapıp süper bilgisayarlar üzerinde koşturabiliriz.
Didem Unat, Koç Üniversitesi' nde "COMP 429 Parallel Programming" dersini vermektedir. OpenMP kullanılmış bir ödevi alttaki github dan temin edebilirsiniz.
Peki paralel programlama nedir? diye soracak olursak aynı anda birbirinden bağımsız işlemleri yapabilmek şeklinde kısa bir tanımını verebiliriz. Örneğin; iki adet 1000 x 1000 matrisimiz olsun ve bunları çarpmak isteyelim. Burada birbirinden bağımsız bir çok çarpma işlemi olacaktır. Bu işlemi tek bir uygulamada ve tek bir task da yapmaya çalışırsak ardışıl olarak büssürü çarpma işlemiyle uğraşacağız. Peki multicore bir sistemde çalıştığımızı düşünsek her birinde birer thread ile birden fazla çarpma işlemini paralelize etmiş olsak en sonda da sonuçları bir araya getirip çıktı üretsek. İşte paralel programlama bu mantık üzerine çalışmaktadır. Ancak sadece thread şeklinde düşünmemek lazım. Task paralelliğinin yanı sıra veri paralelliği de var. Örneğin multicore CPU, Intel AVX512, ARM Neon, GPU, FPGA gibi mimarilerde de paralel işlemler yaptırılabilir. Bunların bir arada bulunduğu sistemde de mesela işleri işlemcilere bölüştürüp işlemcilerde işleri sistemin sahip olduğu diğer acceleratorlara dağıtarak veri işlemede daha çok paralellik sağlanmış olunur.
Bu konuda en çok kullanılan API ler OpenMP ve MPI olarak bilinmektedir. Intel in TBB (Threading Building Blocks) kütüphanesi de bir çözüm olarak kullanılabilir. Çok farklı platformlara da çıktı verebilen OpenCL de iyi bir alternatif olacaktır. GPU olarak Nvidia nın CUDA mimarisi için geliştirdiği GPU programlama CUDA Toolkit de kullanılabilir.
Thread temelli çözümlerde thread oluşturma maliyetleri, iş pas etme maliyetleri de düşünürek thread poll gibi yapılar kullanabilir. İş bekleyen thread lerinizi kenarda hazır tutan mimariler de oluşturabilirsiniz. Kullanabileceğiniz değişik kütüphaneler içerisinde önce performans analizi yapıp daha yüksek verim alabileceğiniz mimari kurmanız daha iyi olacaktır.
Basılı kitap olarak Türkçe kaynak Basher Alhaj Ahmad kitabını inceleyebilirsiniz. OpenMP üzerinden anlatım sunan bir kaynak. Bunun dışında bir çok kaynak internet üzerinden bulabilirsiniz.