我想用MPI (Java实现)编写一个小程序,一个变量x(双变量)被声明。线程试图修改变量(假设是随机修改)。当我发现一个线程的新值X小于旧线程时,就会对其他线程进行广播,以便它们可以更新其变量X的值。
我看过MPI中的Bcast功能..。但在所有示例中,无论变量是否修改,所有线程都会调用该变量。
发布于 2014-09-23 18:10:58
这是在多线程环境(例如OpenMP或Java线程)中很容易实现的场景之一,并且很难在MPI中高效地实现。通常的方法是重构您的算法,使每个N步骤都可以传递最佳值( N可能等于1,但由于通信开销而效率很低),然后使用Intracomm.Allreduce并将精简操作设置为MPI.MIN。每个进程提供自己的最小值,约简返回全局最小值。如果您还想知道保存全局最小值的进程的级别,则应该使用MPI.MINLOC。
如果你试图实现并行遗传优化,有可能给你灵感的some C++ libraries。
https://stackoverflow.com/questions/26001276
复制相似问题