Код C++ работает на Mac с многопоточностью, файл не открывается в Ubuntu

Выполнение кода C++ с использованием Repast HPC 2.1 на виртуальной машине Ubuntu 14.04 VirtualBox. Этот код доказал свою работоспособность при запуске в XCode на ноутбуке Mac. В настоящее время я пытаюсь заставить существующий код работать в Ubuntu. Make успешно работает с кодом в 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();
}

Когда полный путь к файлу передается в виде строки file.open() в строке 2 метода все равно выдает ту же ошибку.

Есть ли какая-то ссылка или библиотека, которую мне не хватает, предоставляемая XCode?

Спасибо!

0 ответов

Другие вопросы по тегам