---
title: 以显式指定的偏移量写入文件
description: "- 以阻塞非聚合模式显式指定的偏移量写入文件。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/userg_hyperio_0034.html
sourcePath: /source/zh/kunpenghpcs/hpckit/devg/userg_hyperio_0034.html
indexId: 085f9adc64806e8f80a967f477eb6312d36c7181aeec4ed6bb8f8ed4c01d50dc58
---
# 以显式指定的偏移量写入文件

#### 函数定义

- 以阻塞非聚合模式显式指定的偏移量写入文件。
  MPI_File_write_at(MPI_File fh, MPI_Offset offset, const void *buf, int count, MPI_Datatype datatype, MPI_Status *status)

  PMPI_File_write_at(MPI_File fh, MPI_Offset offset, const void *buf, int count, MPI_Datatype datatype, MPI_Status *status)

- 以阻塞聚合模式显式指定的偏移量写入文件。
  MPI_File_write_at_all(MPI_File fh, MPI_Offset offset, const void *buf, int count, MPI_Datatype datatype, MPI_Status *status)

  PMPI_File_write_at_all(MPI_File fh, MPI_Offset offset, const void *buf, int count, MPI_Datatype datatype, MPI_Status *status)

- 在一个分离的集合例程的开始部分，以显式指定的偏移量写入文件。
  MPI_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, const void *buf, int count, MPI_Datatype datatype)

  PMPI_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, const void *buf, int count, MPI_Datatype datatype)

- 在一个分离的集合例程的结束部分，以显式指定的偏移量写入文件。
  MPI_File_write_at_all_end(MPI_File fh, const void *buf, MPI_Status *status)

  PMPI_File_write_at_all_end(MPI_File fh, const void *buf, MPI_Status *status)


#### 参数

| 参数名 | 描述 | 取值范围 | 输入/输出 |
| --- | --- | --- | --- |
| fh | 文件（句柄） | 非空 | 输入 |
| offset | 偏移量 | 整数 | 输入 |
| \*buf | 缓冲区的初始地址 | 非空 | 输入 |
| count | 缓冲区中的元素数 | 非负整数 | 输入 |
| datatype | 每个缓冲元素的数据类型（句柄） | 非空 | 输入 |
| \*status | Status对象（句柄） | 非空 | 输出 |


#### 返回值

- 成功：返回MPI_SUCCESS。
- 失败：返回错误码。


#### 错误码

| 错误码 | 描述 |
| --- | --- |
| MPI\_ERR\_NO\_SUCH\_FILE | 文件不存在 |
| MPI\_ERR\_BAD\_FILE | 无效的文件名 |
| MPI\_ERR\_FILE | 无效文件句柄 |
| MPI\_ERR\_ARG | 其他类型的无效参数 |
| MPI\_ERR\_AMODE | 不支持的访问模式 |
| MPI\_ERR\_BUFFER | 无效buffer参数 |
| MPI\_ERR\_COUNT | 无效count参数 |
| MPI\_ERR\_TYPE | 无效类型参数 |
| MPI\_ERR\_DIMS | 维度不合理 |
| MPI\_ERR\_NO\_SPACE | 空间不足 |
| MPI\_ERR\_NO\_MEM | 内存错误 |
| MPI\_ERR\_IO | 其他I/O错误 |
| MPI\_ERR\_ACCESS | 权限被拒绝 |
| MPI\_ERR\_IN\_STATUS | 已存在分离式操作开始 |
| MPI\_ERR\_OTHER | 其他错误 |


#### 注意

- 中间件不存在collective与independent的严格划分。
- begin与end以file为核心进行对应，begin函数需要在调用end函数之后，才能再次调用。
- 若文件设置了视图，则读写时需要视图保持一致，且设置视图后，读写的基本单位为MPI_File_set_view / PMPI_File_set_view接口中的etype。
