запись в файл в MPI

0

Я написал программу в MPI, и я хочу выполнить ее под 3 или более ядрами (или компьютерами), и я хочу написать что-то в файле в каждом процессоре, для двух ядер я создал два разных файла, но я не Я не знаю, что мне делать для большего количества ядер, необходимо ли создавать отдельный файл для каждого процессора? Если да, то как мне это сделать на основе моего кода, и он отличается для нескольких компьютеров?

    void main()////it is just for 2 cores,what should I do if I use 
more cores or more computers?
    {
    FILE*fp=fopen("C:\\a.txt","w");
    FILE*fp1=fopen("C:\\b.txt","w");

    if(Id==0)
    {
    here I write in "fp"
    }
    else
    {
    here  I write in "fp1"

    }
    }
Теги:
mpi

2 ответа

0
void main() {
    int me;
    char filename[1000];

    MPI_Comm_rank(MPI_COMM_WORLD, &me);
    sprintf(filename,"C:\\a%05d.txt",me);
    FILE *fp=fopen(filename,"w");
      here I write in "fp"
}

Это, вероятно, намек, который вам нужен, но обычно правильный подход является одним из:

  • собирать данные (см. MPI_Gather() для начала), пусть только процесс с рангом == 0 выполняет ввод/вывод
  • если I/O важен или все данные не могут соответствовать памяти одного узла (не так ли это на самом деле?), используйте MPI-IO.
0

Если вы используете эту модель, да, вам нужно будет создать файл для каждого процесса. Причина в том, что если у вас есть два процесса, пишите в один файл, они, скорее всего, переписывают друг друга, если вы не сделаете что-то с MPI, чтобы убедиться, что они сериализуются.

В зависимости от данных, которые вы пытаетесь написать, вы можете взглянуть на раздел ввода-вывода MPI. Там есть функциональность для параллельного ввода-вывода, но это может быть немного сложно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню