MPI-3.0'ı OpenMP gibi paylaşılan bellek modunda çalıştırma


14

5 Boyutlu nüfus dengesi modelini sayısal olarak çözmek için kodu paralelleştiriyorum. Şu anda FORTRAN'da çok iyi bir MPICH2 paralel kod var ama parametre değerlerini arttırdığımız gibi diziler dağıtılmış bellek modunda çalışmak için çok büyük hale geliyor.

Her düğümün iki adet 8 çekirdekli CPU ve 128 GB RAM'e sahip olduğu 15 düğümlü bir kümeye erişimim var. Her işlem her dizinin kendi kopyasını oluşturmaz böylece paylaşılan bellek modunda MPI-3.0 ile bir program çalıştırmak yazmak istiyorum.

Kümede herhangi bir şey çalıştırmadan önce Ubuntu çalıştıran bir masaüstünde sınamam gerekiyor. İki 8 çekirdekli CPU ve 128 GB RAM'e sahip olması nedeniyle kümenin bir blade'i. Kodumu üzerine yazıp test edeceğim, bu yüzden lütfen Ubuntu bilgisayarında çalışan programlara karşı yanıtlarınızı yönlendirin.

MPI-3.0'ı varsayılan dağıtılmış bellek modu yerine OpenMP gibi paylaşılan bellek modunda çalıştırmanın bir yolu olduğunu okudum.

Sorular:

  1. Kodumu nasıl değiştirmem gerekecek? Gibi diğer MPI işlevlerine çağrı eklemem gerekir MPI_WIN_ALLOCATEmi?

  2. MPI-3.0'ı paylaşılan bellek modunda çalıştırmak için kodumu nasıl derlerim? Birkaç düğümün üzerindeyse bu farklı olacak mı?

Mümkünse lütfen örnek derleme komut dosyaları verin. Ayrıca sadece GNU derleyicim var. Kullandığım küme Intel derleyicilerini desteklemiyor.


1
Evet, MPI'yı paylaşılan bir bellek sisteminde çalıştırabilmelisiniz. Ancak, gerçekte programlanma şekli aynı olacaktır. Kodunuz hem paylaşılan hem de dağıtılan bellek sistemleri için aynı olmalıdır. Nasıl olduğu çalıştırmak tek farktır.
NoseKnowsAll

Ayrıca, ben bu test mpiexec -n 8 /path/to/applicationetmedi rağmen, 8 farklı düğümleri olduğunu düşünmek için bilgisayarınızı sahte komutunu kullanarak kodunu çalıştırmak gerekir inanıyorum .
NoseKnowsAll

Zaten paylaşılan bir bellek sisteminde çalıştırdım ama bilgi işlem çekirdeklerinin OpenMP gibi RAM paylaşmasını istiyorum. Bazı dizilerim 6 GB olduğundan, paylaşılan bellek modunda çalışmak için her düğümdeki tüm çekirdeklere ihtiyacım var.
Franklin Betten

2
Bu bir araştırma projesi için. Bu yüzden problem boyutunu büyütmem gerekiyor. Zaten çalışma kodu var, bu yüzden ölçek önleyen tek şey gerekli bellek. MPI-3.0'ın tek taraflı iletişim kategorisine eklenen yeni çağrı işlevleriyle hafızayı paylaşabileceğini öneren MPI konferanslarından bazı belgeler ve powerpoint'lerle karşılaştım. MPI_WIN_ALLOCATE_SHARE
Franklin Betten

2
www.eurompi2014.org/tutorials/hoefler-advanced-mpi-eurompi14.pdf cs.utexas.edu/users/flame/BLISRetreat2014/slides/…
Franklin Betten

Yanıtlar:


0

Bu bağlantıyı Stack Overflow'da da buldum. Yemin ederim benim gibi soruları sonsuza kadar aradım ama yığın taşması ile ilgili bir soru aramanın en iyi yolu bir soru yapmaya başlamak ve benzer mesajlar önermek gibi görünüyor.

Her neyse, aslında MPI3.0 + 'ı openmp gibi paylaşılan bellek modunda çalıştırabileceğinizi söyleyen bağlantıdır. Bulduğum başka kaynaklar da var ve bazıları bunu nasıl anlayabileceğinizi veya anlayamayacağınızı ancak açıklayamayacağınızı belirtiyor.

/programming/24797298/mpi-fortran-code-how-to-share-data-on-node-via-openmp

Bu bağlantıda verilen tavsiyeleri izledikten sonra, kodumun üstüne USE 'mpi_f08' koymakla ilgili sorunlarla karşılaştım. Görünüşe göre şu anda mpi_f08 USE için yeterli FORTRAN2008 desteği olmayan gfortran-4.8 kullanıyorum. Bu bağlantıdaki kişi muhtemelen intel fortran 2008 derleyicisini kullanıyordu. Fortran2003'ü oldukça iyi kapsayan USE mpi kullanabilirsiniz. Ancak Fortran 2003'ün MPI_WIN_ALLOCATE_SHARED gibi Uzaktan Bellek Erişimi işlevlerini kullanmak için gerekli olan Type () işlevlerine sahip olduğunu düşünmüyorum, bu nedenle bunları FORTRAN2008 olmadan kullanamazsınız. Ama gerçekten bunu söyleyecek yeterli kaynağım yok ama bulduğum şey bunu gösteriyor.


1
MPI_Win_allocate_shared'i Fortran arabirimlerinin üçünde de kullanabilirsiniz. Ayrıca Fortran 2003 ISO_C_BINDING ve C arayüzü ile kendiniz yazabilirsiniz.
Jeff

Lütfen bana Fortran'dan RMA'yı kullanmak için neden Type () gerektiğini söyle? Böyle bir sınırlama olmadığını biliyorum. RMA yıllardır F77 ile birlikte kullanılmaktadır.
Jeff
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.