Я хочу создать файл и записать в него, используя msi4py. Мне дали этот код от моего инструктора на C ++.
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <mpi.h>
int main(int argc, char *argv[])
{
const int size = 10;
MPI_File fh;
int rank;
int buf[size];
MPI_Status status;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_File_open(MPI_COMM_WORLD, "test.txt", MPI_MODE_CREATE | MPI_MODE_WRONLY, MPI_INFO_NULL, &fh);
if (rank == 0)
{
for (int i = 0; i < size; i++)
buf[i] = i+65;
MPI_File_write(fh, buf, size, MPI_INT, &status);
printf("Status: %d\n", status);
system("PAUSE");
}
MPI_File_close(&fh);
MPI_Finalize();
return 0;
}
Я знаю, что этот код создает массив из 0-9 (размер 10) и добавляет 65 к каждому элементу в массиве. Я нашел код из документации msi4py, который пишет:
from mpi4py import MPI
import numpy as np
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
size = comm.Get_size()
amode = MPI.MODE_WRONLY|MPI.MODE_CREATE
fh = MPI.File.Open(comm, "./datafile.txt", amode)
item_count = 10
buffer = np.empty(item_count, dtype='i')
buffer[:] = rank
filetype = MPI.INT.Create_vector(item_count, 1, size)
filetype.Commit()
displacement = MPI.INT.Get_size()*rank
fh.Set_view(displacement, filetype=filetype)
fh.Write_all(buffer)
filetype.Free()
fh.Close()
В файле datafile.txt просто отображаются пустые квадратные скобки '[]'. Как я могу записать массив в файл, используя эту настройку?