C Windows网络上带MPI的SIMD程序

C Windows网络上带MPI的SIMD程序,c,windows,mpi,distributed-computing,simd,C,Windows,Mpi,Distributed Computing,Simd,我有一个计算机网络(大约20台),其中安装了MS Windows(7、10、Server 2008、Server 2012)。 所有计算机都有不同的硬件规格(不同数量的CPU核),并且被许多用户使用,但在相同的域中。 我有一个程序,它可以计算出上千/百万个数字的公式(比如说一个数字的平方根),并将它们保存在数据库中。 我需要将这数百万个数字中的部分分配到网络上可用的CPU核心。 大概是这样的: intp,秩; MPI通信大小(MPI通信世界和p); MPI通信等级(MPI通信世界和等级

我有一个计算机网络(大约20台),其中安装了MS Windows(7、10、Server 2008、Server 2012)。
所有计算机都有不同的硬件规格(不同数量的CPU核),并且被许多用户使用,但在相同的域中

我有一个程序,它可以计算出上千/百万个数字的公式(比如说一个数字的平方根),并将它们保存在数据库中。
我需要将这数百万个数字中的部分分配到网络上可用的CPU核心。
大概是这样的:

intp,秩;
MPI通信大小(MPI通信世界和p);
MPI通信等级(MPI通信世界和等级);
int dsize=1000000;
int part=dsize/p;
int bpart=零件+(dsize%p);
如果(秩==0)
{

例如(int i=1;i您已经尝试过什么?您自己做过哪些研究,得出了哪些部分结论?您到目前为止所做的研究有哪些具体内容导致您寻求外界对“正确”方法的意见?@Clint我在Linux上使用两台主机(虚拟机)MS-MPI(7.1)尝试了MPICH(3.2)在Windows 10上使用一台主机(使用第二台主机时,我在smpd管理器方面仍然存在一些问题)。我不能使用Linux,因为无法将最终用户从Windows切换到Linux,所以我必须坚持使用Windows。我在并行和分布式计算方面是新手,而且还在搜索,如果您从您的经验中有什么想法推荐我,这将为我节省几天的研究时间。
int p, rank;
MPI_Comm_size(MPI_COMM_WORLD, &p);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
int dsize = 1000000;
int part = dsize / p;
int bpart = part + (dsize%p);
if(rank==0)
{
    for(int i=1;i<p;i++)
    {
        int start = bpart+(i-1)*part;
        int stop = start+part;
        //SEND PORTION
        for (int s=start; s<stop;s++)
        {
            MPI_Send(...);
        }
    }
    CalcFormula(PORTION_OF_RANK0);
}//if rank0
else
{
    //RECEIVE PORTION
    MPI_Recv(...);
    CalcFormula(PORTION_OF_RANKi);
}//else rank!=0