# sionlib **Repository Path**: src-openeuler/sionlib ## Basic Information - **Project Name**: sionlib - **Description**: 本项目已经迁移至 AtomGit || This project has been migrated to AtomGit || Linked: https://atomgit.com/src-openeuler/sionlib - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-09-29 - **Last Updated**: 2025-12-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: sig-HPC ## README # Notice: This project has been migrated to [AtomGit](https://atomgit.com/src-openeuler/sionlib) # 通知: 本项目已经正式迁移至 [AtomGit](https://atomgit.com/openeuler/sionlib) 平台 # sionlib #### 介绍 A high-performance parallel I/O library for scientific computing, adapted and packaged for the openEuler operating system to support HPC applications. SIONlib (Scalable I/O library for parallel access to task-local files) 是一个专为科学计算设计的高性能并行 I/O 库。本项目将其适配并打包为 openEuler 操作系统兼容的 RPM 包,旨在为 openEuler 上的高性能计算 (HPC) 应用提供强大的并行 I/O 能力。 **主要特性:** * **openEuler 兼容:** 适配 openEuler 24.03 LTS SP1 及其兼容版本。 * **Fortran 兼容性:** 解决了新版本 gfortran 编译器带来的类型不匹配问题。 * **RPM 打包:** 提供标准的 RPM 包,简化在 openEuler 系统上的安装和部署。 * **静态链接:** 提供静态库,方便应用集成。 * **工具集:** 包含 sioncat、siondefrag、siondump、sionsplit、sionversion 等实用工具。 #### 软件架构 SIONlib 的核心架构设计用于支持数千个处理器对一个或少量物理文件进行高效的并行读写。其主要组件包括: * **核心 I/O 逻辑:** 实现文件分块、进程间通信协调等功能。 * **多语言接口:** 提供 C/C++ 和 Fortran 语言接口。 * **并行文件抽象:** 将多个任务本地文件抽象为一个或少数大型共享文件。 * **MPI 整合:** 深度整合 MPI 协议,实现并行访问。 本项目构建的 SIONlib 版本为 `1.7.6`,主要以静态库的形式提供。 #### 安装教程 1. **下载 RPM 包:** 您可以从本仓库或其他分发渠道获取以下 RPM 包: * `sionlib-1.7.6-1.x86_64.rpm` (主包,包含可执行工具和静态库) * `sionlib-devel-1.7.6-1.x86_64.rpm` (开发包,包含头文件和 pkg-config 文件) * `sionlib-1.7.6-1.src.rpm` (源码包) 2. **安装 RPM 包:** 使用 `dnf` 包管理器进行安装。请确保您拥有 `sudo` 权限。 ```bash sudo dnf install ./sionlib-1.7.6-1.x86_64.rpm ./sionlib-devel-1.7.6-1.x86_64.rpm -y ``` `dnf` 将自动处理软件包依赖关系。 **注意:** 如果您从 openEuler 官方仓库或其他信任的第三方仓库安装,命令会更简单: ```bash sudo dnf install sionlib sionlib-devel -y ``` 3. **验证安装:** 安装完成后,您可以验证 SIONlib 的组件是否正确安装: ```bash ls -l /usr/lib64/liblsion*.a # 检查静态库 ls -l /usr/include/sion*.h # 检查头文件 ls -l /usr/bin/sioncat # 检查可执行工具 (sioncat, siondump等) pkg-config --cflags sionlib # 验证 Cflags pkg-config --libs sionlib # 验证 Libs ``` 预期 `pkg-config` 命令会输出正确的头文件路径和链接选项。 #### 使用说明 SIONlib 的使用与传统的 MPI 并行 I/O 类似,主要通过其提供的 C/C++ 或 Fortran 接口进行文件操作。 1. **C/C++ 应用程序示例:** 创建一个 C 语言源文件(例如 `my_app.c`): ```c #include #include #include #include "sion.h" // SIONlib 头文件 int main(int argc, char **argv) { int rank, num_procs; long long sid; // SIONlib 文件句柄 FILE *fp; // 标准 C 文件指针 MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &num_procs); sid = sion_open("my_sion_file.sion", "wb", &num_procs, &rank, &fp, NULL); if (sid == -1) { fprintf(stderr, "Rank %d: sion_open failed!\n", rank); MPI_Abort(MPI_COMM_WORLD, 1); } char buffer[100]; snprintf(buffer, sizeof(buffer), "Hello from rank %d!\n", rank); fwrite(buffer, 1, strlen(buffer), fp); sion_close(sid); MPI_Finalize(); return 0; } ``` 编译和运行: ```bash mpicc -o my_app my_app.c $(pkg-config --cflags sionlib) $(pkg-config --libs sionlib) mpirun -np 4 ./my_app ``` 2. **Fortran 应用程序示例:** 创建一个 Fortran 源文件(例如 `my_fortran_app.f`): ```fortran program my_fortran_app implicit none include 'mpif.h' include 'sion_f77.h' ! 或者 sion_f90.h integer :: rank, num_procs, ierr integer*8 :: sid, fp ! SIONlib 句柄 character(len=100) :: buffer integer :: buffer_len, written_len call MPI_INIT(ierr) call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr) call MPI_COMM_SIZE(MPI_COMM_WORLD, num_procs, ierr) call LFSION_OPEN_MPI('my_fortran_file.sion', 'wb', num_procs, rank, sid, fp, ierr) if (ierr /= 0) then write(*,*) 'Rank ', rank, ': LFSION_OPEN_MPI failed!' call MPI_ABORT(MPI_COMM_WORLD, 1, ierr) end if write(buffer, '(A,I0,A)') 'Hello from rank ', rank, '!' buffer_len = len_trim(buffer) call LFSION_FWRITE_C(buffer, 1, buffer_len, sid, written_len) call LFSION_CLOSE(sid, ierr) call MPI_FINALIZE(ierr) end program my_fortran_app ``` 编译和运行: ```bash mpifort -o my_fortran_app my_fortran_app.f $(pkg-config --cflags sionlib) $(pkg-config --libs sionlib) mpirun -np 4 ./my_fortran_app ``` 更多详细信息和 API 参考,请参阅 SIONlib 官方文档。 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request **重要说明:** SIONlib 的版权和代码属于原作者,代码源地址 https://github.com/poodarchu/sionlib。本项目针对 SIONlib 代码进行的 openEuler 适配和修改,相关成果已提交 PR 至原作者仓库,但作者目前联系不上。如有任何侵权行为,请联系 `1261700278@qq.com`。 #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)