【发布时间】:2017-10-26 10:00:38
【问题描述】:
我一直在使用 MPI.NET,但遇到了一个我似乎无法解决的问题。
在为运行 MPI.NET 的代码创建测试时,我有两个由 MSTest 按顺序运行的单元测试,每个测试都创建一个通信器并处理它。
这样做时,您最终会遇到通信器在第二次测试中被初始化和处置的情况(这里的原因是静态变量)。
我不想从测试的角度来解决这个问题(以不同的方式运行测试不会解决问题)。 我只是向您展示该案例,以便轻松证明问题。
我希望有一种明智的方法来两次初始化 MPI.NET,或者以某种方式回收它?
我确实与该项目的作者取得了联系,他建议我在这里发帖,让更熟悉 MPI 本身的人可以提供帮助。
public static void RunMPIAction(Action<Intracommunicator> action)
{
string[] args = null;
using (var env = new Environment(ref args))
{
action(Communicator.world);
}
}
MPI.Environment.RunMPIAction(comm =>
{
this.Run(comm, logger, parameters);
}
MPI.Environment.RunMPIAction(comm => { int rank = comm.Rank; }, false);
【问题讨论】:
-
请出示您的代码。
-
添加到帖子正文中。 RunMPIAction 可以从不同的地方多次调用,在这种情况下,操作应该无关紧要。
-
@Stevey,当前状态的问题尚不清楚,因为它不完整。阅读How to Ask,然后提供minimal reproducible example,可以用来更好地理解您的问题。
标签: c# .net mpi message-passing