我正在使用 Windows HPC Pack 2008 R2 SP4 来运行 MPI 应用程序。我在让 Job Scheduler 在所有可用内核上运行应用程序时遇到问题。这是我的代码...
using (IScheduler scheduler = new Scheduler())
{
scheduler.Connect("MyCluster");
var newJob = scheduler.CreateJob();
newJob.Name = "My job";
//newJob.IsExclusive = true;
var singleTask = newJob.CreateTask();
singleTask.WorkDirectory = @"C:\MpiWorkspace";
singleTask.CommandLine = @"mpiexec MyMpiApp.exe";
newJob.AddTask(singleTask);
scheduler.SubmitJob(newJob, null, null);
}
像上面那样运行,我在集群中的两个计算节点上的 16 个可用核心中分配了 1 个(微不足道的)核心。我能得到的最好的方法是取消注释该行newJob.IsExclusive = true;
,然后将所有核心分配给我一个计算节点(8 个核心)。
如果我从命令行运行,我可以使用mpiexec
开关/np *
来使用所有可用的内核,但这似乎被 Job Scheduler 覆盖。
如何在代码中获得相同的效果,如何在不明确声明任务的最小和最大内核数的情况下在所有可用内核上运行?