MPI并行IO在ASCII格式(我怎么做?)
MPI parallel IO in ASCII format (How do I do it?)
我知道MPI IO以二进制格式写入文件,但这次我需要它以ASCII格式。我需要这个,因为我正在使用Netpbm图像,头必须是ASCII(因此程序可以读取P1, P2, P3, P4, P5或P6,并确定图像的内容是ASCII还是二进制等)。
我使用的代码是(简单示例)MPI并行io写入垃圾中提供的代码,我想知道代码中是否有一个小的修改,允许我以ASCII而不是二进制输出整数缓冲区的内容。
此外,有一种方法来输出ASCII也将允许更容易的调试。
您可以使用strlen
作为缓冲区大小
#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
int main(int argc,char *argv[])
{
int namelen, numprocs, rank = 7;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Get_processor_name(processor_name,&namelen);
MPI_Status status;
MPI_File fh;
string test;
const char* buf[100];
string g = "test" + to_string(rank) + ".txt";
MPI_File_open(MPI_COMM_SELF, g.c_str(), MPI_MODE_CREATE | MPI_MODE_WRONLY,MPI_INFO_NULL,&fh);
for (int i=0; i < 100; i++){
test = to_string(i) + "n";
buf[i] = test.c_str();
MPI_File_write(fh, buf[i], strlen(buf[i]), MPI_CHAR, &status);
}
MPI_File_close(&fh);
MPI_Finalize();
return 0;
}
注意MPI_File_write(fh, buf[i], strlen(buf[i]), MPI_CHAR, &status);
希望对你有帮助。
将数据sprint为char数组,并使用MPI-IO写入数据类型为MPI_CHAR
相关文章:
- Seg Fault Issue C++ (file IO / getline)
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 为什么在读取文件大小时文件IO速度会发生变化
- C++17中的并行执行策略
- 并行用于C++17中数组索引范围内的循环
- 如何在Elixir中调用递归函数并行
- OpenMP:并行更新数组总是需要减少数组吗
- 如何使用OpenMP并行这两个循环
- 如何使用OpenMP并行化此矩阵时间矢量运算
- 如何使用OpenMP使这个循环并行
- 遍历并行数组以确定C++中的最大数字
- 为什么 openmp 的并行不适用于矢量化色彩空间转换?
- 如何在 Mac 上使用 c++17 并行标准库算法?
- 并行标准::复制复杂性
- Agora.io 虚幻引擎插件构建错误
- 如何使用 MPI 的远程内存访问 (RMA) 功能并行化数据聚合?
- 在C++中使用并行化的预期速度是多少(不是 OpenMp,而是 <thread>)
- Boost::Mpi是否支持并行IO
- (简单的例子)MPI并行io写入垃圾
- MPI并行IO在ASCII格式(我怎么做?)