2016-04-13 16 views
1

Tüm işlemlerin iki gruba ayrıldığı bir MPI programı yazıyorum. Her grup farklı işler yapar. Örneğin, A grubu süreçler bir miktar hesaplama yapar ve birbirleriyle iletişim kurarken, B grubu süreçleri hiçbir şey yapmaz. Orada MPI_Comm_split kullanmalı mıyım?Farklı gruplara farklı işler atarken MPI_Comm_split kullanmak uygun mu?

+4

Bu gruplarda toplu işlem yapmanız gerekiyorsa: evet. – haraldkl

+1

Uygulamayı MPMD olarak çalıştırmayı düşünür müsünüz? Yani, iki farklı ikili oluşturun. Biri A ve diğer B'yi yürütmek ve sonra OpenMPI'yi çalıştırması durumunda https://www.open-mpi.org/faq/?category=running#mpmd-run'da belirtildiği gibi onları yumurtlar. – Harald

cevap

1

Eğer kolektifleri aramak istiyorsanız

önce bahsedildiği gibi, alt iletişimcileri esastır ... Bir yorum eklemek için tercih ediyorum ama çok yeterli bir üne yok taşma yığını yeniyim. Onsuz bile, gelişmeyi kolaylaştıracakları için tavsiye edilirler. Örneğin, A grubunun dışında bir ileti göndermeyi ve göndermeyi denerseniz, bu bir alt iletişimci ile başarısız olur, ancak herkes COMM_WORLD'de kalırsa kodunuzun askıda kalmasına neden olabilir. Bununla birlikte, MPMD rotasına inerken, sistemler arasında taşınabilir olmadığı ve programı daha karmaşık hale getirdiğinden dolayı çok dikkatli olacağım. Tek bir MPI çalıştırıcısına sahip olmak standart ve en basit modeldir.

İlgili konular