# sionlib-mine **Repository Path**: Lss__sjk/sionlib-mine ## Basic Information - **Project Name**: sionlib-mine - **Description**: SIONlib - 面向任务本地文件并行访问的可扩展 I/O 库 个人维护仓库 - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-26 - **Last Updated**: 2025-09-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README /**************************************************************************** ** SIONLIB http://www.fz-juelich.de/jsc/sionlib ** ***************************************************************************** ** 版权所有 (c) 2008-2019 ** ** 尤利希研究中心,尤利希超级计算中心 ** ** ** ** 详情请参阅软件包基本目录中的 COPYRIGHT 文件 ** ****************************************************************************/ ---------------------------------------------------------------------- SIONlib - 面向任务本地文件并行访问的可扩展 I/O 库 版本:1.7.6 作者:W. Frings, 2019-11-20 SIONlib 是一个用于从数千个处理器向(或从)一个或少量物理文件写入和读取二进制数据的库。该库提供了全局打开和关闭函数,用于并行写入和读取一个文件。只有这些函数是集合性的(collective),对该文件的写入和读取可以异步进行。SIONlib 提供一个 sion 文件句柄以及一个文件指针 (FILE *),允许使用标准 C 文件 I/O 操作 (POSIX)。此文件指针指向文件中的一个唯一位置。 SIONlib 为并行程序提供了一种简化的文件处理方式,这些程序以前必须并行读取或写入二进制数据到单独的文件(任务本地文件)。使用 SIONlib 打开文件后,可以通过标准 C-I/O 功能(fwrite, fread)进行 I/O,而无需更改现有程序。这样,就不需要维护数千个单独的文件来存储数据,而只有一个包含所有数据的大文件。 SIONlib 需要底层文件系统的 BLOCKSIZE(块大小)信息,即 BLOCKSIZE 是文件可以被锁定的最小部分。例如,IBM GPFS 的块大小为一或两兆字节。 鉴于每个处理器将其数据写入同一个文件,SIONlib 会将文件的不同区域(例如,数据块)分配给一个处理器。因此,对于每个处理器,SIONlib 需要估计其将写入文件的数据大小(块大小,chunk size)。如果数据块的末尾被达到,SIONlib 还可以处理扩展(附加块)。 估计的块大小和文件系统的块大小都被用于计算每个处理器在文件中的独立起始位置。当文件的某个块仅由一个处理器锁定,高效的并行写入和读取是可行的。 SIONlib 提供两种不同的接口:一种用于使用 MPI 进行并行访问,另一种用于顺序访问,SIONlib 工具也在内部使用这种接口。 **安装:** ------------- 安装过程描述在: ./doc/inputs/installation.dox 或 https://apps.fz-juelich.de/jsc/sionlib/docu/installation_page.html **SION API:** --------- SIONlib 接口描述在: ./doc/inputs/api.dox 或 https://apps.fz-juelich.de/jsc/sionlib/docu/api_page.html **模板和示例:** ----------------------- 在串行和并行代码中使用 SIONlib 的 C-模板和示例可以在以下位置找到: ./examples/*.example ./examples/simple ./doc/inputs/examples.dox 或 https://apps.fz-juelich.de/jsc/sionlib/docu/examples.html **文件数据格式:** ----------------- SION 文件内部格式描述在: ./doc/inputs/fileformat.dox 或 https://apps.fz-juelich.de/jsc/sionlib/docu/fileformat_page.html **实用工具:** ---------- 用于管理 SION 文件和测试 SIONlib 的实用工具描述在: ./doc/inputs/utilities.dox 或 https://apps.fz-juelich.de/jsc/sionlib/docu/util_page.html **调试:** ---------- 如果源代码使用 -DEBUG 选项编译,可以通过环境变量开启调试,例如: export SION_DEBUG=SION.log export SION_DEBUG_MASK=1023 export SION_DEBUG_RANK1=0 export SION_DEBUG_RANK2=2 变量: SION_DEBUG 文件名前缀,将追加任务号 SION_DEBUG_MASK 详细级别: 1 -> sion 用户函数进入和退出 2 -> sion 内部函数进入和退出 8 -> 高频调用的 sion 用户函数进入和退出(sion_feof, sion_ensure_free_space, ...) 16 -> 高频调用的 sion 用户函数进入和退出(内部步骤) 32 -> 高频调用的 sion 内部函数(内部步骤) 128 -> 时间测量(顶层) 256 -> 时间测量(低层) 512 -> elg 库 1024 -> gz 库 2048 -> 更高频调用的 sion 内部函数(内部步骤) SION_DEBUG_MASK 的值可以是上述值的组合(逻辑或) SION_DEBUG_RANK1 第一个需要调试的 MPI 任务的秩(rank) SION_DEBUG_RANK2 第二个需要调试的 MPI 任务的秩(rank) **联系方式:** -------- sionlib_jsc@fz-juelich.de **许可证:** -------- 详情请参阅软件包基本目录中的 COPYRIGHT 文件 ---