嗨,我在实现条带化算法时遇到了麻烦。我在一个向量中加载 30000 条记录时也遇到问题,我试过这个,但它不起作用。
程序应声明变量以一次存储一个记录。它应该读取一条记录并处理它,然后读取另一条记录,依此类推。每个进程都应该忽略“属于”另一个进程的记录。这可以通过跟踪记录计数并确定是否应处理或忽略当前记录来完成。例如,如果有 4 个进程 (numProcs = 4),进程 0 应该处理记录 0、4、8、12,...(假设我们从 0 开始计数)并忽略其间的所有其他记录。`
Residence res;
int numProcs = 4;
int linesNum = 0;
int recCount = 0;
int count = 0;
while(count <= numProcs)
{
while(!residenceFile.eof())
{
++recCount;
//distancess.push_back(populate_distancesVector(res,foodbankData));
if(recCount % processIS == linesNum)
{
residenceFile >> res.x >>res.y;
distancess.push_back(populate_distancesVector(res,foodbankData));
}
++linesNum;
}
++count;
}
更新代码
Residence res;
int numProcs = 1;
int recCount = 0;
while(!residenceFile.eof())
{
residenceFile >> res.x >>res.y;
//distancess.push_back(populate_distancesVector(res,foodbankData));
if ( recCount == processId)//process id
{
distancess.push_back(populate_distancesVector(res,foodbankData));
}
++recCount;
if(recCount == processId )
recCount = 0;
}
更新 sudo 代码
while(!residenceFile.eof())
{
residenceFile >> res.x >>res.y;
if ( recCount % numProcs == numLines)
{
distancess.push_back(populate_distancesVector(res,foodbankData));
}
else
++numLines
++recCount
}