Niyazi ELVAN – YTÜ niyazi@yildiz.edu.tr BEOWULF KÜMELERİ Niyazi ELVAN – YTÜ niyazi@yildiz.edu.tr 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya İÇERİK Süperbilgisayar ve Beowulf Nedir ? Beowulf mimarisi ve sistem tasarımı Beehive projesi Görev yönetimi ( Torque,Maui ) Sistemin izlenmesi (Ganglia) Paralel Programlama LAM / MPI MPI fonksiyonları ve veri türleri Örnek uygulamalar Sorular 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya SÜPERBİLGİSAYAR Normal bilgisayarlardan daha yüksek işlem yapabilme kapasitesi olan bilgisayar Dünyanın en yüksek işlem gücüne sahip bilgisayar sistemi 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya SÜPERBİLGİSAYARLAR www.top500.org 1. BlueGene/L , IBM İşlem gücü : 360 teraflop Bellek : 32 tebibyte (2^40 byte) 65536 adet çift işlemcili uç birim 32x32x64 3D network (Torus) 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya SÜPERBİLGİSAYARLAR 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya SÜPERBİLGİSAYARLAR www.top500.org 2. RedStorm , Cray Inc. İşlem gücü : 40 teraflop Bellek : 30 terabytes 10368 AMD işlemcili uç birim 240 terabyte disk 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya SÜPERBİLGİSAYARLAR www.top500.org 3. BGW, IBM İşlem gücü : 10 teraflop Bellek : 30 terabytes 4096 tek işlemcili uç birim 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya SIRADA NE VAR ??? 1 Petaflop İşlem gücü ABD Ulusal Bilim Vakfı 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya BEOWULF NEDİR ? İngiliz edebiyatının bilinen en eski yazılı eseridir. Hikayede adı geçen kahraman yarı insan yarı kurt bir varlık. “Yüzüklerin Efendisi” nin yazarının esinlendiği efsane kahramanı 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya BEOWULF NEDİR ? Düşük maliyetli Yüksek işlem gücüne sahip Çoklu yapısı son kullanıcıdan soyutlanmış Birden fazla bilgisayardan oluşan Linux tabanlı işletim sistemi yüklü 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya BEOWULF KÜMELERİ Uç Düğüm 1 A N H T R Uç Düğüm 2 Uç Düğüm 2 Ana Düğüm Ana Düğüm Uç Düğüm 3 Uç Düğüm 3 . Uç Düğüm n Uç Düğüm n 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya BEEHIVE PROJESİ Donanım Yapısı Düğüm ( 5 adet ) IBM Netfinity 6000R 2 x PIII Xeon 700 Mhz CPU 1.5 GB bellek Min 72 GB SCSI disk 1 Gbps NIC Anahtarlama birimi Cisco 3500-12G 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya BEEHIVE PROJESİ Disk Mimarisi / /home /usr /lib /tmp bee00 NFS / /home /usr /lib /tmp bee01 . 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya BEEHIVE PROJESİ Ağ Yapısı beehive.yildiz.edu.tr bee00 A N H T R L M B İ bee01 INTERNET bee02 bee03 bee04 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya BEEHIVE PROJESİ Kurulum ( Ana düğüm) Debian base sistem Apache2 NFS sunucu Samba sunucu DHCP sunucu Winbind rsh sunucu Lam MPI Torque (pbs_server, pbs_mom) Maui Ganglia (gmetad, gmond) 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya BEEHIVE PROJESİ Kurulum ( Uç düğüm) Debian base sistem NFS istemci DHCP istemci rsh sunucu Lam MPI Torque (pbs_mom) Ganglia (gmond) 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya BEEHIVE PROJESİ Yapılandırma (ana düğüm) NFS sunucu (/etc/exports) DHCP sunucu Yapılandırma (uç düğüm) Servislerin açılış sırası Şifre sorgulaması olmadan rsh bağlantısı /etc/fstab 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya BEEHIVE PROJESİ Yeni uç birimlerin eklenmesi İlk uç birimin diski dd komutu ile diğer birimin diskine kopyalanır. # dd if=/dev/sda of=/dev/sdb Disk kendi sistemine takılır ve sistem başlatılır. 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya BEEHIVE PROJESİ Avantajlar Yönetim kolaylığı /home paylaşımı /usr ve /lib paylaşımı Ölçeklenebilirlik Disk kopyalama ile hızlı çoğullama 20.11.2018 Akademik Bilişim 2007 , Kütahya
Beowulf Cluster Yönetimi Yasin Bahtiyar – YTÜ yasin@yildiz.edu.tr 20.11.2018 Akademik Bilişim 2007 , Kütahya
Sistem yapısı nasıl olmalı Yüksek başarımlı hesaplama Paralel işlem mimarisi Çoklu kullanıcı sistemi Paralel işlem/Sıralı Görev Ucuz maliyet 20.11.2018 Akademik Bilişim 2007 , Kütahya
BeeHive Mimarisi / Cluster Yönetimi Torque 2.1.6 Lam-MPI 7.1.2 Maui 3.2.6p19 Ganglia 3.0.4 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Torque Nedir? Terascale Open-Source Resource and QUEue Manager Cluster Resources Inc. tarafından üretildi. Bir kaynak ve kuyruk yöneticisi. OpenPBS temel alınarak ortaya çıkarılmıştır. 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya OpenPBS nedir? PBS: Portable Batch System 1990 larda NASA için geliştirilmiştir. Altair Grid Tech. Tarafından ortaya çıkarılmıştır. Artık daha fazla desteklenmeyen bir proje Kurumsal türevi PBS Pro (Altair) 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Torque = OpenPBS+ OpenPBS v2.3.12 üzerine geliştirilmiş bir proje. 15 TF/2500 CPU yönetebilir. Geliştirilmiş hata kontrolü Geliştirilmiş server2mom iletişim protokolü OpenPBS üzerine 1200+ patch 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Torque Bileşenleri PBS Server:pbs_server Kaynak ve kuyruk yönetimini yapan temel bileşen Her clusterda sadece bir tane (sunucu uç) 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Torque Bileşenleri PBS MOM:pbs_mom Her bir uçta yer alır Uç hakkında bilgi verir. pbs_server dan gelen istekleri yerine getirir 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Torque Bileşenleri PBS Scheduler:pbs_sched Sunucuda çalışır Bir kuyruk yöneticisidir Kuyruğa iş ekleme, işi bekletme, iptal etme gibi fonksiyonları yerine getirir 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Torque Kurulumu tar -xzvf torqueXXX.tar.gz cd torqueXXX ./configure make make install make packages 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Torque Kurulumu Mpi tm boot module için: ln -s /usr/local/lib/libtorque.a /usr/local/lib/libpbs.a ln -s /usr/local/lib/libtorque.la /usr/local/lib/libpbs.la 20.11.2018 Akademik Bilişim 2007 , Kütahya
Torque Konfigürasyonu pbs_server # pbs_server –t create # qmgr (server konfigurasyonu) $TORQUE_HOME/server_priv/nodes 20.11.2018 Akademik Bilişim 2007 , Kütahya
Torque Konfigürasyonu pbs_mom $TORQUE_HOME/server_name $TORQUE_HOME/mom_priv/config # pbs_mom (her bir uç için) # qterm -t quick # pbs_server Kullanıcılar için şifresiz ssh 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Torque Komutları Komut Açıklama momctl MOM (node execution) yönetimi / durdurulması pbsnodes Uç bilgisayardan bilgi alma – uç bilgisayar yönetimi qalter Kuyruktaki işlerin özelliklerinin değiştirilmesi qdel Kuyruktaki işlerin silinmesi qhold Kuyruktaki işin bekletilmesi qmgr manage policies and other batch configuration qrls Kuyruktaki işin devam ettirilmesi qrun Kuruktaki bir işin başlatılması qsub Kuyruğa yeni iş eklenmesi qstat Kuyruktaki iş hakkında bilgi alınması qterm Pbs server in durdurulması tracejob TORQUE loglarına göre bir işin takip edilmesi 20.11.2018 Akademik Bilişim 2007 , Kütahya
Lam-Mpi rsh boot module 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Lam-Mpi tm boot module 20.11.2018 Akademik Bilişim 2007 , Kütahya
Lam-Mpi (tm boot) & Torque lamd pbs_mom tarafından yönetilir Daha hızlı lamboot Bu desteği sağlamak için: ./configure --with-boot=tm make && make install 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Ganglia Dağıtık sistemleri izleme yazılımı Cluster ve grid yapılarında kullanılır gmond gmetad Ganglia web arayüzü rrdtool kullanarak xml şemalarını grafiklere çevirir. 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya gmond Her bir uç için gerekli bilgileri alır ve xml şeması olarak yayın yapar /etc/init.d/ganglia-monitor /etc/gmond.conf name “BeeHive” owner “YTU” trusted_hosts 10.0.0.10 //(gmetad) 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya gmetad gmond lerden aldığı xml şemalarından bir rrd veritabanı oluşturur. Genellikle sadece sunucuda çalışır. /etc/init.d/gmetad 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya gmetad /etc/gmetad.conf data_source "bee00" bee00 data_source "bee01" bee01 data_source "bee02" bee02 data_source "bee03" bee03 data_source "bee04" bee04 gridname "YTU" 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Ganglia Web Frontend Rrd veritabanındaki bilgilere göre bir rapor oluşturan web arabirimidir. rrdtool kullanır. 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Maui Scheduler Bir scheduler, aslında kuyruk yöneticisi olarak çalışan bir kullanıcının yaptığı işleri yapar. Kaynak yöneticisine ne yapacağını söyler. İleri seviye scheduler.pbs_sched den daha iyi. Kaynak yönetimini optimize eder 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Maui kurulumu > gtar -xzvf maui-<VERSION>.tar.gz > cd maui-<VERSION> > ./configure > make > sudo make install 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Konfigürasyon vi /usr/local/maui/maui.cfg SERVERHOST bee00 ADMIN1 root RMCFG[BEE00] TYPE=PBS 20.11.2018 Akademik Bilişim 2007 , Kütahya
Maui komutlarından bazıları Açıklama canceljob İşi iptal eder checkjob İş durumu hakkında ayrıntılı bilgi verir checknode Uç durumu hakkında ayrıntılı bilgi verir diagnose Kaynaklar, iş yükü ve scheduling ile ilgili rapor verir. mjobctl İş kontrolu ve modifikasyon runjob Bir işi anında çalıştırmak için kullanılır showconfig Scheduler konfiguresyonunu gösterir showq Kuyruk hakkında bilgi verir showres Rezervsyonlar hakkında bilgi verir showstart Tahmini olarak bir işin ne zaman başlayacapı konusunda fikir verir showstate Kaynakların durumunu gösterir Showstats Kullanım istatistiklerini gösterir 20.11.2018 Akademik Bilişim 2007 , Kütahya
Eş Zamanlı (Concurrent) Programlama Z. Cihan TAYŞİ cihan@ce.yildiz.edu.tr 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Konu Başlıkları Eş zamanlı programlama nedir Eş zamanlılık modelleri Eş zamanlı program tasarımı LAM – MPI Örnek uygulamalar 20.11.2018 Akademik Bilişim 2007 , Kütahya
Eş Zamanlı Programlama 1960’larda ortaya atılmıştır. Channels, Device controller Bir işin birden fazla parçaya bölünmesi Parçaların farklı süreçler tarafından işlenmesi 20.11.2018 Akademik Bilişim 2007 , Kütahya
Eş Zamanlılık Modelleri Multi-Threaded programlama Posix Threads, pthreads OpenMP Parallel programlama Shared Memory Dağıtık (Distributed) programlama Message Passing Interface, MPI Parallel Virtual Machine, PVM 20.11.2018 Akademik Bilişim 2007 , Kütahya
Eş Zamanlı Program Tasarımı Problemin analiz edilmesi Problemin parçalara ayrılması (Partitioning) Problem parçaları arasındaki iletişim Senkronizasyon (Synchorization) Yük dağılımı Eş zamanlı programlamanın limitleri ve maliyeti 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Problem Analizi Eş zamanlı hesaplama Matris işlemleri N-Body problemi Seri hesaplama Fibonacchi sayıları F(k + 2) = F(k + 1) + F(k) 1, 1, 2, 3, 5, 8, 13, 21 20.11.2018 Akademik Bilişim 2007 , Kütahya
Problemin Parçalara Ayrılması Veriye göre parçalama (Domain Partitioning) 20.11.2018 Akademik Bilişim 2007 , Kütahya
Problemin Parçalara Ayrılması Fonksiyona göre parçalama (Functional Partitioning) 20.11.2018 Akademik Bilişim 2007 , Kütahya
Problem Parçaları Arası İletişim Parçalar arasında iletilecek veri miktarı Verinin iletim süresi parçanın gerçekleştirilme süresine göre çok az olmalı Parçalar arası iletişimin sıklığı Fiziksel iletişim hızı İletişim Tipi Senkron (blocking) Asenkron (non-blocking) 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Senkronizasyon Bariyer Bariyere ulaşan görev, diğer tüm görevler bariyere ulaşana kadar bekler. Tüm görevler bariyere ulaştığında sekronizasyon işlemi gerçekleştirilir. Lock / semaphore Ortak kaynakların düzgün kullanımı içindir Bir görev kaynağı kullanırken diğer görevlerin beklemesi sağlanır. 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Yük Dağılımı Yüklerin görevler arasında eşit dağıtılması Dizi ve Matris işlemleri Yüklerin dinamik olarak dağıtılması N-Body problemi 20.11.2018 Akademik Bilişim 2007 , Kütahya
Eş Zamanlı Programlama Maliyetleri Karmaşıklık Uygulama, Haberleşme, Senkronizasyon Taşınabilirlik Programlama arayüzleri Ölçeklenebilirlik ( Scalability) Geliştirilen algoritma Altyapı Kaynak İhtiyacı 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Neden MPI ??? MPI çeşitli kurum ve kişilerin katılımıyla oluşturulmuş olan bir standart. Değişik kurumlar tarafından geliştirilen farklı versiyonları mevcuttur. MPICH LAM-MPI Open MPI Taşınabilir (Portable) bir yapıya sahiptir. Tamamen asenkron iletişim özelliğine sahiptir. Homojen yapılarda çalışmak üzere tasarlanmış 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya LAM – MPI Ohio Supercomputing Center tarafından geliştirilmeye başlandı. Tasarımında görev alanların birçoğu Notre Dame Üniversitesi, Bilimsel Hesaplama Laboratuarına (The Laboratory of Scientific Computing) geçti. Notre Dame Üniversitesine geçildikten sonra 6.2b ve 6.3 versiyonları kullanıma sunuldu. 2001 yılında, LSC Indiana Universitesi’ne geçti. Grubun ismi Open Systems Laboratory (OSL) olarak değişti. 7.1.2 versiyonu kullanıma sunuldu. Bu grup şu anda Open MPI adında yeni bir MPI sürümü üzerinde çalışmaktadır. 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya MPI Fonksiyonları int MPI_Comm_size(MPI_Comm comm,int *size) int MPI_Comm_rank(MPI_Comm comm,int *rank) int MPI_Recv(void *buf, int count, MPI_Datatype dtype, int src, int tag, MPI_Comm comm, MPI_Status *stat) int MPI_Send(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm) int MPI_Bcast(void *buff, int count, MPI_Datatype datatype, int root, MPI_Comm comm) int MPI_Scatter(void *sbuf, int scount, MPI_Datatype sdtype, void *rbuf, int rcount, MPI_Datatype rdtype, int root, MPI_Comm comm) int MPI_Gather(void *sbuf, int scount, MPI_Datatype sdtype, void *rbuf, int rcount, MPI_Datatype rdtype, int root, MPI_Comm comm) 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya Örnek – I “Hello World” #include <stdio.h> #include <mpi.h> int main ( int argc, char *argv[] ) { int myrank, size; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myrank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (myrank == 0) { printf("I'm the master\n"); }else { printf("I'm slave (%d)\n",myrank); } MPI_Finalize(); return 0; 20.11.2018 Akademik Bilişim 2007 , Kütahya
Örnek – II “Matris Çarpımı” Matris boyutları A Matrisinin boyutları : 4000 x 100 B Matrisinin boyutları : 100 x 40 Problemin bölünmesi Birinci matrsinin satırları işlemler arasında paylaştırılabilir. İşlemler arası iletişim Bir işlem yönetici rolü üstlenmeli Her işleme kendi paylarına düşen satırlar gönderilmeli Her işleme B Matrisinin tamamı gönderilmeli Her işlemden sonuçlar alınmalı 20.11.2018 Akademik Bilişim 2007 , Kütahya
“Matris Çarpımı” – 1. Çözüm Yönetici İşlem Hesaplama Yapılacak Matrsilerin Oluşturulması if(rank==0) { // Yonetici process rowspp = M1_RSIZE / size; offset = rowspp; for (i=1; i<size; i++) { MPI_Send(&rowspp, 1, MPI_INT, i, TAG1, MPI_COMM_WORLD); datacount = rowspp*M1_CSIZE; MPI_Send(&m1[offset][0], datacount, MPI_DOUBLE, i, TAG1, MPI_COMM_WORLD); datacount = M2_RSIZE*M2_CSIZE; MPI_Send(&m2, datacount, MPI_DOUBLE, i, TAG1, MPI_COMM_WORLD); offset = offset + rowspp; } Kendi Payına Düşen Kısmın Hesaplanması datacount = rowspp * M2_CSIZE; for(i=1;i<size;i++) { MPI_Recv(&mr[offset][0], datacount, MPI_DOUBLE, i, TAG2, MPI_COMM_WORLD, &status); printf("Calculation finished \n"); 20.11.2018 Akademik Bilişim 2007 , Kütahya
“Matris Çarpımı” – 1. Çözüm Diğer İşlemler }else { // Diger islemler MPI_Recv(&rowspp, 1, MPI_INT, 0, TAG1, MPI_COMM_WORLD, &status); datacount = rowspp*M1_CSIZE; MPI_Recv(&m1, datacount, MPI_DOUBLE, 0, TAG1, MPI_COMM_WORLD, &status); datacount = M2_RSIZE*M2_CSIZE; MPI_Recv(&m2, datacount, MPI_DOUBLE, 0, TAG1, MPI_COMM_WORLD, &status); Kendi Payına Düşen kısmın Hesaplanması datacount = rowspp * M2_CSIZE; MPI_Send(&mr, datacount, MPI_DOUBLE, 0, TAG2, MPI_COMM_WORLD); } 20.11.2018 Akademik Bilişim 2007 , Kütahya
“Matris Çarpımı” – 2. Çözüm int main ( int argc, char *argv[] ) { int i,j,k; int rowspp, offset, datacount; int rank,size; double sum; double m1[M1_RSIZE][M1_CSIZE], m2[M2_RSIZE][M2_CSIZE], mr[M1_RSIZE][M2_CSIZE]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if(rank==0) {// Master process Matrisleri oluştur. rowspp = M1_RSIZE / size; printf("rowspp : %d\n",rowspp); offset = rowspp; } 20.11.2018 Akademik Bilişim 2007 , Kütahya
“Matris Çarpımı” – 2. Çözüm MPI_Bcast(&rowspp, 1, MPI_INT, 0, MPI_COMM_WORLD); datacount = M2_RSIZE*M2_CSIZE; MPI_Bcast(&m2, datacount, MPI_DOUBLE, 0, MPI_COMM_WORLD); datacount = rowspp*M1_CSIZE; MPI_Scatter(&m1, datacount, MPI_DOUBLE, &m1, datacount, MPI_DOUBLE, 0, MPI_COMM_WORLD); Kendi Payına Düşen kısmın Hesaplanması datacount = rowspp * M2_CSIZE; MPI_Gather(&mr, datacount, MPI_DOUBLE, &mr, datacount, MPI_DOUBLE, 0, MPI_COMM_WORLD); MPI_Finalize(); return 0; } 20.11.2018 Akademik Bilişim 2007 , Kütahya
Performans Karşılaştırmaları 20.11.2018 Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya SORULAR ??? 20.11.2018 Akademik Bilişim 2007 , Kütahya