MPI kullanırsam, ana programı çalıştırdığımda belirtilen bir dizi işlem var. Ancak bir süreçle başlamak istiyorum ve daha fazla işleme ihtiyaç duyduğumda ve daha fazla işleme ihtiyaç duyduğumda, çalışma zamanına dinamik olarak karar vermek istiyorum. Bu veya benzer bir şey mümkün mü? Aksi takdirde, kaçınmak istediğim MPI'yi yeniden icat etmek zorunda kalırdım.MPI süreçlerini çatalla anında mı yaratıyorsunuz?
5
A
cevap
7
Çocuk işlemi MPI işlevlerini kullanamadığından fork()
kullanmak mümkün değildir. MPI'de dinamik olarak yeni süreçler oluşturmak için basit bir mekanizma var. Ben [Bu soruya] cevabım sevk http://www.open-mpi.org/doc/v1.4/man3/MPI_Comm_spawn.3.php
#include "mpi.h"
#include <stdio.h>
#include <stdlib.h>
#define NUM_SPAWNS 2
int main(int argc, char *argv[])
{
int np = NUM_SPAWNS;
int errcodes[NUM_SPAWNS];
MPI_Comm parentcomm, intercomm;
MPI_Init(&argc, &argv);
MPI_Comm_get_parent(&parentcomm);
if (parentcomm == MPI_COMM_NULL) {
MPI_Comm_spawn("spawn_example", MPI_ARGV_NULL, np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, errcodes);
printf("I'm the parent.\n");
} else {
printf("I'm the spawned.\n");
}
fflush(stdout);
MPI_Finalize();
return 0;
}
İlgili konular
- 1. MPI
- 2. MPI
- 3. MPI C
- 4. Modelinizi Angular'de nerede saklıyor/yaratıyorsunuz?
- 5. Ruby'de çocuk süreçlerini nasıl doğuruyorsunuz?
- 6. Microsoft MPI çalışmıyor
- 7. git: Çekme isteğini çatalla birleştirmek nasıl?
- 8. MPI İşlemci sayısı? Ardından
- 9. MPI Vektör çarpımı
- 10. MPI hata ayıklaması VS2012 ile
- 11. Tüm alt iş süreçlerini nasıl sonlandırırım?
- 12. Gulp'de boş bir akışı nasıl yaratıyorsunuz?
- 13. Ön serbest bırakma taşlarını nasıl yaratıyorsunuz?
- 14. MPI olmayan engelleme Gönder/Al
- 15. mpi birden çok init sonlandır
- 16. LAM/MPI kümesinde Rampi yükleme
- 17. C# 4.0, Anında Yöntemler?
- 18. EmberJS TextField'ı anında doğrulayın?
- 19. PHPExcel anında yazma?
- 20. javascript kapatma anında değerlendirme
- 21. İşlev bildirmek ve anında çalıştırmak için bir yolu var mı?
- 22. güçlendirmek mpi azaltmak için std :: karmaşık
- 23. VS Anında Pencere
- 24. anında dinamik sınıf
- 25. Kullanıcı metni "Düzenleme" anında?
- 26. Facebook'un aktivasyonu Anında makale
- 27. Bir JodaTime Anında
- 28. Git anında repo oluşturmak?
- 29. Eclipse: Anında otomatik tamamlama
- 30. Anında Uygulamalar Kamera Niyeti
[1]: Sen
MPI_Comm_spawn
fonksiyonunu veyaMPI_Comm_spawn_mutliple
OpenMPI doc kullanmalıdır. [1]: http://stackoverflow.com/questions/9683331/changing-number-of-processors-during-execution-of-the-code-in-mpis-based-paralle/9683758# 9683758 –
@HighPerformanceMark: Ama bu sadece yeni bir süreç başlatıyor. Bu, tam olarak geçerli işlemin kesin konumundan (ve yapılandırılmasından) 'fork' yazan bir kopya değildir. – bitmask
'Bu ya da benzer bir şey mi?' Sordu, ben mph_comm_spawn benzer olduğunu öneriyorum. Ancak gereksinimleriniz için uygun değilse, MPI'yi yeniden yazmak zorunda kalabilirsiniz. Ya da başka bir paralelleştirme kütüphanesi/araç seti/yaklaşımı kullanın. –