PHDF5 并行hdf5 按列读写 (Columns )

8 篇文章 1 订阅
8 篇文章 0 订阅

PHDF5并行写入数据是发起多个进程,被发起进程按照某一规则 写入数据到指定位置。

用C语言编写一个连续的hyperlab.

在本例中,有一个8(行)x 6(列)的数据集,每个进程向数据集写入相同数量的列。

在本例中,有两个进程写入同一个数据集,每个进程写入数据集中的每一列。对于每个进程,文件中的hyperlab设置如下: 

    89      count[0] = 1;
    90      count[1] = dimsm[1];
    91      offset[0] = 0;
    92      offset[1] = mpi_rank;
    93      stride[0] = 1;
    94      stride[1] = 2;
    95      block[0] = dimsf[0];
    96      block[1] = 1;

维度1的步幅为2,表示沿着这个维度的每一个其他位置都将写入。步幅为1表示将写入一个维度上的每个位置。

对于两个进程,mpi_rank将是0或1。因此:

进程0写偶数列(0,2,4…)
进程1写入奇数列(1,3,5…)

块大小允许每个进程将一列数据写入数据集中的每个其他位置。

 下面是这个例子创建的HDF5文件的h5dump的输出:

HDF5 "SDS_col.h5" {
GROUP "/" {
   DATASET "IntArray" {
      DATATYPE  H5T_STD_I32BE  
      DATASPACE  SIMPLE { ( 8, 6 ) / ( 8, 6 ) } 
      DATA {
         1, 2, 10, 20, 100, 200,
         1, 2, 10, 20, 100, 200,
         1, 2, 10, 20, 100, 200,
         1, 2, 10, 20, 100, 200,
         1, 2, 10, 20, 100, 200,
         1, 2, 10, 20, 100, 200,
         1, 2, 10, 20, 100, 200,
         1, 2, 10, 20, 100, 200
      } 
   } 
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值