C ++代码在Mac上运行多线程,文件无法在Ubuntu中打开

时间:2015-07-28 20:02:37

标签: c++ xcode ubuntu repast-hpc

在Ubuntu 14.04 VirtualBox VM上使用Repast HPC 2.1运行C ++代码。 此代码已经证明可以在Mac笔记本电脑上的XCode中运行。我目前正在尝试使现有代码在Ubuntu中运行。在Ubuntu中的代码上成功运行,但在尝试调用mpirun -n 4时,我收到以下错误,表明该文件无法正常打开:

file open fail /home/repasthpc/Desktop/hpcmodel/angiogenesis-osteogenesis-simulator/concFiles/c100forC.txt
file open fail /home/repasthpc/Desktop/hpcmodel/angiogenesis-osteogenesis-simulator/concFiles/c100forC.txt
file open fail /home/repasthpc/Desktop/hpcmodel/angiogenesis-osteogenesis-simulator/concFiles/c100forC.txt
file open fail /home/repasthpc/Desktop/hpcmodel/angiogenesis-osteogenesis-simulator/concFiles/c100forC.txt

这是使用多个线程(4),我听说在Ubuntu中打开文件时会出现问题,但如果这是问题,我不知道如何修复它。

错误是由此方法中的file.fail()调用生成的:

#include <fstream>
#include <string>
#include <vector>
#include <math.h>
#include "repast_hpc/Random.h"
#include "SolubleMap.h"
#include "BoneModel.h"

using namespace std;

void SolubleMap::releaseVEGF(std::string filename){
    ifstream file;
    file.open(filename.c_str());

    int row=time; //time
    int column=ydim; // location

    if(file.fail()){
        cerr << "file open fail" << endl;
    }

    else{
        this->VEGFConcentration = new double*[row]; // memory allocated for elements of rows
        for(int j = 0; j < row; j++){ 
            this->VEGFConcentration[j] = new double[column]; // memory allocated for elements of columns
            for(int i = 0; i < column; i++){
                if (!(file >> this->VEGFConcentration[j][i])){
                    std::cerr << "error while reading file";
                    break;
                }
            }
            if (!file) break;
        }
    }
    file.close();
}

当完整文件路径作为字符串传递给方法的第2行中的file.open()时,仍会产生相同的错误。

XCode是否提供了一些我遗漏的参考文献或库?

谢谢!

0 个答案:

没有答案