跳到内容

脊髓前损伤/髋关节功能锻炼

存储库文件导航

HipFT公司

HipFT:高性能通量传输

预测科学公司。


概述

HipFT示例

HipFT是一个Fortran 2023代码,用作即将推出的开源通量传输(OFT)软件套件的计算核心。OFT是一个完整的系统,通过采集和处理观测数据、生成真实的对流流和运行通量传输模型来生成全太阳磁图。

HipFT在逻辑矩形非均匀球面网格上实现太阳表面的平流、扩散和数据同化。它使用Fortran的标准并行组合与多核CPU和GPU并行使用并发执行(DC)、OpenMP Target数据指令和MPI。它使用了高阶数值方法,如SSPRK(4,3)、Strang分裂、WENO3和超时间步进格式RKG2。该代码设计为模块化,包含各种差分旋转、经向流、超颗粒对流和数据同化模型。它还可以在一次跨越多个参数选择的运行中计算多个实现。

HipFT可以在CPU和GPU(NVIDIA或Intel)上与MacOS、Linux和Windows(通过WSL)一起使用。


如何建造HIPFT

HipFT已通过测试,可以使用GCC的格福特兰(>8),英特尔国际传真(>21),或NVIDIAnvfortran公司(>21.5)编译器。请注意,它与旧版Intel不兼容ifort公司编译器。
建议使用可用的最新编译器版本。

HipFT要求HDF5型库。
构建GPU时,库必须由HipFT使用的相同编译器编译(例如nvfortran)。
通常,这需要从源代码构建库。有关如何执行此操作的说明将在即将到来的更新中添加到此自述文件中。

  1. 构建示例文件夹,并将其复制到顶级目录中。
  2. 修改脚本以设置HDF5型与系统环境兼容的库路径/标志和编译器标志。
  3. 修改脚本以设置编译器选项以反映您的设置。
  4. 如果在CPU上运行HipFT,请将OMP_NUM_螺纹(和ACC_NUM_CORES(蓄能器_堆芯)如果使用nvfortran公司)环境变量设置为要使用的每个MPI列组的线程数。
  5. 运行构建脚本(例如,./my构建.sh).
  6. 建议添加箱子文件夹到系统路径。

运行HIPFT测试套件

为了测试安装是否有效,我们建议在安装后运行测试套件。
为此,输入测试套件/目录并运行:

./运行测试套件.sh

这将使用运行测试箱子/hipft使用1个MPI等级。

重要提示:如果您在多核CPU上构建/运行HipFT,则很可能需要
使用-mpicall(mpicall)选项运行测试套件脚本设置适当的线程关联。
例如:对于OpenMPI,可能需要使用-mpicall=“mpirun--绑定到套接字-np”.


如何运行HIPFT

设置输入选项

HIPFT公司在输入文本文件中使用名称列表。输入的默认名称为hipft.in(嘻哈音乐)

文件中提供了包含所有默认参数选项的完整工作输入文件:

doc/hipft.in.文档

该文件中还提供了每个参数的详细描述,(除了本自述之外)是代码的当前主要文档。

我们还为中的用例提供了示例输入文件示例/文件夹以及测试套件中的。

启动代码

要运行HIPFT公司,在文件中设置所需的运行参数(例如。hipft.in(嘻哈音乐)),然后复制或链接髋关节置换术可执行到与输入文件相同的目录中,并运行命令:

<MPI_LAUNCHER><MPI_OPTIONS>-np<N>/hipft<输入文件>

哪里<否>是要使用的MPI列组总数,<MPI_LAUNCHER>是MPI运行命令(例如。mpiexec公司,mpirun运行,伊布伦,srun公司等),以及<MPI_OPTIONS>是可能需要的其他MPI选项(例如--绑定到套接字--绑定到numa对于使用OpenMPI运行的CPU)。

例如:mpirun-np 1/hipft.in(嘻哈音乐)

MPI等级划分了要处理的实现数量。
因此,如果只运行1个实现,则必须仅使用1个MPI列。
列数不能大于实现数。

代码与Fortran并行并发执行和每个MPI列组中的OpenMP Target数据指令。

在CPU上运行HIPFT

在CPU上,每个MPI列组的代码都是多线程的。这可能需要正确设置OMP_NUM_螺纹ACC_NUM_CORES(蓄能器_堆芯)环境变量(对于GCC,在编译之前设置它们)。
它还需要在启动MPI时正确设置线程关联,如上所示。
例如,在4个具有双插槽64核EPYC CPU的计算节点上运行为GCC和OpenMPI编译的HipFT(在BIOS中设置为每个插槽4个NUMA域,并且没有超线程),可以使用OMP_NUM_THREADS=16并推出了:

mpirun--bind-to-numa--ntasks-per-node 8/hipft hipft.in 1>hipft.log 2<hipft.err

在单个桌面(1个套接字)上运行的一个简单示例OMP_NUM_螺纹已设置为线程总数(在GCC编译之前,在NV和IFX运行时):

mpirun--绑定到套接字-np 1/hipft hipft.in 1>hipft.log 2<hipft.err

根据系统设置,可能很难在CPU节点上实现可能的全部性能。因此,我们强烈建议在GPU上运行HipFT。

在GPU上运行HIPFT

对于标准情况,启动代码时,每个节点的MPI列数应等于每个节点的GPU数(假设您正在运行至少那么多实现)。例如
mpiexec--ntasks-per-node 4/hipft 1>hipft.log 2

mpiexec—npersocket 2/hipft 1>hipft.log 2

GPU上有更多数据通常会使其更高效。因此,对于给定数量的实现,建议尝试不同数量的GPU组合(例如,在2个GPU上实现4次(每个GPU 2次),而在1个GPU中实现4次)。

解决方案输出

HipFT的输出是以phi-theta坐标表示的HDF5地图文件。
当运行多个实现时,输出将成为一个沿实现编号具有一维的3D文件。垃圾桶/文件夹中,我们提供了用于读取数据和绘制数据的python脚本。

正在处理脚本

这个/垃圾桶该文件夹包含几个python和bash脚本,可用于发布HipFT运行的处理和绘图结果。关于其使用的完整文档尚未完成,但每个脚本都有一些级别的文档。请返回此处查看处理运行的常用命令列表。


对流样本数据和数据同化

要将HipFT用于数据同化和对流,需要这些输入数据可用。我们正在努力发布能够生成这些所需数据的软件,因此目前我们在zenodo数据集中提供了这些数据的样本集:

对流和数据同化的HipFT样本输入数据集

该数据包包含对流流动的卡林顿旋转(以15分钟的节奏)以及2022年HMI衍生的数据同化图。我们还提供了一个示例HipFT输入文件,用于使用此回购中的数据运行全年模拟示例/flux_transport_1yr_flowCAa_diff175_data_assim/文件夹。
请注意,当运行时间超过Carrington旋转时,流文件会在HipFT中自动重复,因此它们可以用于任意长度的HipFT运行。