如何使用msi4py文件输入/输出?

时间:2019-03-28 18:24:53

标签: python python-3.x pycharm mpi mpi4py

我想创建一个文件并使用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文件中,它仅显示空白方括号[[]”。如何使用此设置将数组写入文件?

0 个答案:

没有答案