Cazibe ++ - Charm++

Cazibe ++
ParadigmaMesaj odaklı paralel programlama, taşınabilir nesneler, Nesne odaklı, eşzamansız çok görevli
Tarafından tasarlandıLaxmikant Kale
GeliştiriciParalel Programlama Laboratuvarı
İlk ortaya çıktı1980'lerin sonu (1980'lerin sonu)
Kararlı sürüm
6.10.2 / 4 Ağustos 2020; 3 ay önce (2020-08-04)
Uygulama diliC ++, Python
PlatformCray XC, XK, XE, IBM Blue Gene / Q, Infiniband, TCP, UDP, MPI, OFI
işletim sistemiLinux, pencereler, Mac os işletim sistemi
İnternet sitesihttp://charmplusplus.org

Cazibe ++ paralel nesne yönelimli programlama paradigma dayalı C ++ ve Paralel Programlama Laboratuvarı'nda geliştirilmiştir. Illinois Üniversitesi, Urbana – Champaign. Charm ++, programcı üretkenliğini artırmak amacıyla, bir paralel program Aynı zamanda çok çeşitli temel donanım platformlarında iyi performans sağlar. Charm ++ ile yazılan programlar, birlikte çalışan bir dizi mesajla çalışan nesneye ayrıştırılır. Chares. Bir programcı bir nesne üzerinde bir yöntem çağırdığında, Charm ++ çalışma zamanı sistemi, yerel işlemcide veya paralel bir hesaplamadaki uzak bir işlemcide bulunabilen çağrılan nesneye bir mesaj gönderir. Bu mesaj, mesajı eşzamansız olarak işlemek için chare içindeki kodun yürütülmesini tetikler.

Ücretler, adı verilen dizine eklenmiş koleksiyonlar halinde düzenlenebilir chare dizileri ve mesajlar bir chare dizisi içindeki tek tek karakterlere veya tüm chare dizisine aynı anda gönderilebilir.

Bir programdaki karakterler, uyarlanabilir bir çalışma zamanı sistemi tarafından fiziksel işlemcilerle eşleştirilir. Karakterlerin işlemcilerle eşlenmesi programcı için şeffaftır ve bu şeffaflık, ölçüm tabanlı yük dengeleme, hata toleransı, otomatik kontrol noktası belirleme gibi yetenekleri desteklemek için çalışma zamanı sisteminin program yürütme sırasında işlemcilere karakter atamasını dinamik olarak değiştirmesine izin verir. paralel bir program tarafından kullanılan işlemci kümesini küçültme ve genişletme yeteneği.

Charm ++ kullanılarak uygulanan uygulamalar şunları içerir: NAMD (moleküler dinamik) ve OpenAtom (kuantum kimyası), ChaNGa ve hayalet (astronomi), EpiSimdemics (epidemiyoloji), Cello / Enzo-P (uyarlanabilir ağ iyileştirme) ve ROSS (paralel ayrık olay simülasyonu). Tüm bu uygulamalar petascale sistemlerde yüz bin veya daha fazla çekirdeğe kadar ölçeklendi.

Uyarlanabilir MPI (AMPI)[1] bir uygulamasıdır Mesaj Geçiş Arayüzü Charm ++ çalışma zamanı sisteminin üstünde standarttır ve daha geleneksel bir MPI programlama modelinde Charm ++ yeteneklerini sağlar. AMPI, her MPI işlemini, Charm ++ nesnesi içinde bağlanan, kullanıcı düzeyinde taşınabilir bir iş parçacığı içinde kapsüller. AMPI programları, her bir iş parçacığını bir chare içine yerleştirerek, MPI programında çok az değişiklik yaparak veya hiç değişiklik yapmadan Charm ++ çalışma zamanı sisteminin özelliklerinden otomatik olarak yararlanabilir.

Charm4py Charm ++ uygulamalarının yazılmasına izin verir Python, taşınabilir Python nesnelerini ve zaman uyumsuz uzak yöntem çağrısını destekler.

Misal

İşte tanıtım amaçlı bazı Charm ++ kodları:[2]

Başlık dosyası (Merhaba H)
sınıf Merhaba : halka açık CBase_Hello { halka açık:  Merhaba(); // C ++ yapıcısı  geçersiz Merhaba de(int itibaren); // Uzaktan çağrılabilir "giriş yöntemi"};
Charm ++ Arayüz dosyası (merhaba.ci)
modül Merhaba {  dizi [1D] Merhaba {    giriş Merhaba();    giriş geçersiz Merhaba de(int);  };};
Kaynak dosyası (merhaba.cpp)
# "merhaba.decl.h" dahil# dahil "merhaba.h"dış CProxy_Main mainProxy;dış int NumElements;Merhaba::Merhaba() {  // Bu basit örnekte başlatılacak üye değişken yok}geçersiz Merhaba::Merhaba de(int itibaren) {  // Bu chare nesnesinin kullanıcıya merhaba demesini sağlayın.  CkPrintf("% D işlemci üzerinde% d fiyatından merhaba (% d tarafından söylendi)",           thisIndex, CkMyPe(), itibaren);  // Bu chare nesneleri dizisindeki bir sonraki chare nesnesine söyle  // ayrıca merhaba demek için. Bu, içindeki son chare nesnesiyse  // chare nesneleri dizisi, ardından ana chare'yi söyleyin  // programdan çıkmak için nesne.  Eğer (thisIndex < (Numaralar - 1)) {    thisProxy[thisIndex + 1].Merhaba de(thisIndex);  } Başka {    mainProxy.bitti();  }}# "hello.def.h" ekleyin

Uyarlanabilir MPI (AMPI)

Uyarlanabilir MPI, Charm ++ 'nın çalışma zamanı sisteminin üstünde bir MPI uygulamasıdır (MPICH, OpenMPI, MVAPICH vb. Kullanıcılar önceden var olan MPI uygulamalarını alabilir, bunları AMPI'nin derleyici sarmalayıcılarını kullanarak yeniden derleyebilir ve süreç sanallaştırma, dinamik yük dengeleme ve hata toleransı ile deneyler yapmaya başlayabilir. AMPI, MPI "sıralarını" kullanıcı düzeyinde iş parçacıkları olarak uygular (işletim sistemi işlemleri yerine). Bu iş parçacıkları arasında bağlam arasında geçiş hızlıdır ve bu nedenle, iletilerin kullanılabilirliğine bağlı olarak bunların birden fazlası aynı çekirdek üzerinde birlikte programlanabilir. AMPI dereceleri ve sahip oldukları tüm veriler, bir işin farklı çekirdeklerinde ve düğümlerinde çalışma zamanında da taşınabilir. Bu, yük dengeleme ve denetim noktası / yeniden başlatma tabanlı hata tolerans şemaları için kullanışlıdır. AMPI hakkında daha fazla bilgi için kılavuza bakın: http://charm.cs.illinois.edu/manuals/html/ampi/manual.html

Charm4py

Charm4py[3]paylaşılan bir kitaplık olarak kullandığı Charm ++ C ++ çalışma zamanının üzerine inşa edilmiş bir Python paralel hesaplama çerçevesidir. Charm4py, Charm ++ uygulamalarının geliştirilmesini basitleştirir ve programlama modelinin parçalarını kolaylaştırır. Örneğin, arayüz dosyalarını (.ci dosyaları) yazmaya veya SDAG kullanmaya gerek yoktur ve programları derlemeye gerek yoktur. Kullanıcılar, uygulama düzeyindeki kodlarını aşağıdaki gibi teknolojilerle hızlandırmakta hala özgürdür: Numba. Standart kullanıma hazır ikili sürümler, Linux, macOS ve Windows'a yüklenebilir. pip.

Hibrit Charm4py ve MPI programları yazmak da mümkündür.[4] Desteklenen bir senaryoya örnek, hesaplamanın belirli bölümleri için mpi4py kitaplıkları kullanan bir Charm4py programıdır.

Ayrıca bakınız

Referanslar

  1. ^ "Paralel Programlama Laboratuvarı". charm.cs.illinois.edu. Alındı 2018-12-12.
  2. ^ "Dizi" Merhaba Dünya ": Biraz Daha Gelişmiş" Merhaba Dünya "Programı:" Merhaba Dünya "Kodu" Dizisi. http://charmplusplus.org/: PPL - UIUC PARALEL PROGRAMLAMA LABORATUVARI. Alındı 2017-05-08.
  3. ^ "Charm4py - Charm4py 1.0.0 belgeleri". charm4py.readthedocs.io. Alındı 2019-09-11.
  4. ^ "Hibrit mpi4py ve Charm4py programlarını çalıştırma (mpi birlikte çalışma)". Charm ++ ve Charm4py Forumu. 2018-11-30. Alındı 2018-12-11.

Dış bağlantılar