Выполнение кода 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?
Спасибо!
Задача ещё не решена.