Как использовать файл ввода / вывода msi4py? - PullRequest
0 голосов
/ 28 марта 2019

Я хочу создать файл и записать в него, используя 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 просто отображаются пустые квадратные скобки '[]'. Как я могу записать массив в файл, используя эту настройку?

...