Я написал программу в 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"
}
}
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, чтобы убедиться, что они сериализуются.
В зависимости от данных, которые вы пытаетесь написать, вы можете взглянуть на раздел ввода-вывода MPI. Там есть функциональность для параллельного ввода-вывода, но это может быть немного сложно.