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