IOR的脚本化、版本兼容性及常见问题解答

news/2024/11/7 13:34:51/文章来源:https://www.cnblogs.com/honghu0420/p/18531969

脚本化

IOR可以使用-f 选项在命令行中使用输入脚本。-f选项之前设置的命令行选项将被视为运行脚本的默认设置。例如:

mpirun ./ior -W -f script

将使用隐式-W运行脚本中的所有测试。脚本本身可以覆盖这些设置,并且可以设置为在一次执行下运行许多不同的IOR测试,重要的是要注意-f 之后指定的任何命令行选项都不会应用于脚本指定的运行。例如:

mpirun ./ior -f script -W

不会运行任何带有隐式-W的测试,因为该参数直到-f选项(及其组成运行)完成后才会应用。

输入脚本使用与每个命令行选项对应的长格式选项名来指定。除了长格式的选项,

  • IOR STARTIOR STOP(不区分大小写)标记脚本的开始和结束。
  • RUN(不区分大小写)使用前面指定的所有选项调度测试。
  • 所有先前设置的参数为下一次测试保持设置。它们不会重置为默认值!默认情况下,必须手动设置剩余部分。
  • 空白在脚本中被忽略,以“#”开头的注释也是如此。
  • 不是所有的测试参数都需要设置。

一个脚本示例:

IOR STARTapi=[POSIX|MPIIO|HDF5|HDFS|S3|S3_EMC|NCMPI|RADOS]testFile=testFilehintsFileName=hintsFilerepetitions=8multiFile=0interTestDelay=5readFile=1writeFile=1filePerProc=0checkWrite=0checkRead=0keepFile=1quitOnError=0segmentCount=1blockSize=32koutlierThreshold=0setAlignment=1transferSize=32singleXferAttempt=0individualDataSets=0verbose=0numTasks=32collective=1preallocate=0useFileView=0keepFileWithError=0setTimeStampSignature=0useSharedFilePointer=0useStridedDatatype=0uniqueDir=0fsync=0storeFileOffset=0maxTimeDuration=60deadlineForStonewalling=0useExistingTestFile=0useO_DIRECT=0showHints=0showHelp=0
RUN
# additional tests are optionaltransferSize=64blockSize=64ksegmentcount=2
RUNtransferSize=4KblockSize=1Msegmentcount=1024
RUN
IOR STOP

版本兼容性

IOR有很长的历史,目前只支持IOR版本3。但是,有许多基于早期版本的IOR分支,并且已知在主要版本之间存在以下不兼容性。

  1. IOR版本1(c.1996-2002)和IOR版本2(c.2003至今)不兼容。一个输入面板在另一个上不起作用。由于版本1未包含在此版本中,因此不应引起关注。所有后续的兼容性问题都适用于IOR版本2。
  2. 发布2.8之前的IOR版本提供了2次幂的数据大小和速率。例如,1MB/sec表示每秒1048576字节。在IOR 2.8及更高版本中,MB现在定义为1000000字节,MiB为1048576字节。
  3. 在IOR 2.5.3至2.8.7版本中,IOR可以在没有任何命令行选项的情况下运行。这假设如果省略了写和读选项(-w -r),则使用它们的运行都设置为默认值。后来,很明显,在某些情况下(例如数据检查),这会造成困难。在IOR 2.8.8及更高版本中,如果没有设置-w-r-W或-R选项,则隐式设置-w和-r。
  4. IOR版本3(2012年1月至今)在一定程度上改变了IOR的输出,并且“testNum”选项被重命名为“refNum”。

常见问题解答

如何对现有文件执行多个数据检查?

使用下面的命令行:

IOR -k -E -W -i 5 -o file

-k在访问后保留文件而不是删除它,-E使用现有文件而不是先截断它,-W执行写检查,-i检查迭代次数,-o文件名

在2.8.8之前的IOR版本上,还需要-r标志,否则将首先覆盖现有文件。(在早期的版本中,省略-w和-r意味着同时使用这两个词。这个语义后来被修改为省略-w、-r、-W和-R,意味着使用-w和-r。)

如果正在运行新的测试来创建文件,并希望多次重复此文件的数据检查,则有一个未记录的选项。它是-O multiReRead=1,需要使用USE_UNDOC_OPT=1编译IOR版本(在iordef.h中)。命令行看起来像这样:

IOR -k -E -w -W -i 5 -o file -O multiReRead=1

对于第一次迭代,将写入文件(无数据检查)。然后,对于任何额外的迭代(在本例中为4次),将为使用的任何数据检查选项重新读取文件。

IOR如何计算性能?

IOR执行获取时间戳START,然后让所有参与的任务打开共享的或独立的文件,传输数据,关闭文件,然后获取STOP时间。对文件执行stat()MPI_File_get_size(),并与传输的总数据量进行比较。如果此值不匹配,则发出警告,并使用write()计算的传输数据量,例如返回代码。计算出的带宽是传输的数据量除以经过的STOP减去START时间。

IOR还可以获得时间戳来报告打开、转移和关闭时间。这些时间中的每一个都基于任何任务的最早开始时间和任何任务的最近停止时间。如果不在这些操作之间使用屏障(-g),打开、转移和关闭时间的总和可能不等于从第一次打开到最后一次关闭所经过的时间。

如何在IOR中访问多个文件系统?

当使用filePerProc选项时,可以跨多个文件名进行任务循环。与其使用单个文件名-o file,还不如使用其他文件名-o file1@file2@file3。在这种情况下,每个进程的文件将有三个不同的文件名(可能是完整的路径名)来访问。@分隔符是任意的,可以在iordef.h中的FILENAME_DELIMITER定义中设置。

注意,这个多文件名选项只适用于filePerProc -F选项。这对共享文件不起作用。

如何在多个文件系统之间平衡负载?

对于每个文件系统的文件平衡,不同的文件系统提供不同的性能,相同目标路径的附加实例通常可以实现良好的平衡。

例如,如果FS1的性能比FS2好50%,则设置-o标志,以便有更多的FS1目录实例。在这种情况下,-o FS1/file@FS1/file@FS1/file@FS2/file@FS2/file应该根据性能差异进行相应的调整和平衡。

我如何使用屏障?

要使用屏障(-D),通常最好将写测试与读测试分开。首先使用-D 0(禁用屏障)写入文件,以确定写入文件需要多长时间。如果数据传输需要10秒,请以较短的持续时间再次运行,例如-D 7,以便在文件完成之前停止,而不会造成阻碍。对于读取,最好创建一个完整的文件(而不是从屏障运行中写入不完整的文件),然后在这个预先存在的文件上设置屏障运行。如果使用屏障在同一次运行中执行写和读测试,则读取很可能会在遇到EOF时遇到错误。分开运行可以纠正这一点。例如。,

IOR -w -k -o file -D 10 #记录并保存文件,10秒后停止
IOR -r -E -o file -D 7 # 读取现有文件,7秒后停止

此外,当运行只读屏障测试的多次迭代时,可能需要将-D值设置得足够高,以便每次迭代都不会从缓存中读取。否则,在某些情况下,第一次迭代可能会显示100 MB/s,下一次为200 MB/s,第三次为300 MB/s。这些测试中的每一个实际上都是在分配的时间内从硬盘读取相同的数据量,但它们每次都会从上一次测试中读取缓存数据,以获得更高的性能。将-D设置得足够高,以使缓存溢出,这将防止这种情况发生。

在读回刚写的文件时,如何绕过缓存?

测试文件系统的一个问题是处理缓存数据。当写入文件时,该数据可能会本地存储在写入文件的节点上。当同一节点试图从文件系统读取数据以进行性能或数据完整性检查时,它可能是从自己的缓存中读取数据,而不是从文件系统中读取数据。

reorderTasksConstant -C选项试图通过让不同的节点读回数据来解决这个问题。例如,节点N将数据写入文件,节点N+1读回数据以提高读取性能,节点N+2读回数据进行写入数据检查,节点N+3读取数据进行读取数据检查,并将其与节点N+4的重读数据进行比较。目标是确保在文件访问时,数据不会从缓存数据中读取。

Node 0: 写数据

Node 1: 读数据

Node 2: 读取已写入的数据进行写检查

Node 3: 读取已写入的数据进行读检查

Node 4:读取已写入的数据进行读检查,与Node 3进行比较

例如,从N跳到N+1的算法期望节点上的连续任务号(块分配),而不是循环分配的任务号(循环分配)。例如,在3个节点上运行6个任务的测试将期望节点0上的任务0,1;节点1上的任务2、3;以及节点2上的任务4、5。如果以循环方式将任务分配给节点,则节点0上将有任务0,3;节点1上的任务1,4;节点2上的任务2,5。在这种情况下,不会期望任务不会从节点上缓存的数据中读取。

如何使用提示?

可以按照以下形式将提示传递给I/O库或文件系统层:

'setenv IOR_HINT__<layer>__<hint> <value>'
  • 例如::

    setenv IOR_HINT__MPI__IBM_largeblock_io true

    setenv IOR_HINT__GPFS__important_hint true

  • 或者,在以下格式的文件中:

    IOR_HINT__<layer>__<hint>=<value>

  • 注意,HDF5或NCMPI层对MPI的提示是这样的:

    setenv IOR_HINT__MPI__<hint> <value>

如何显式设置文件数据签名?

传输的数据签名包含MPI任务号、传输缓冲区偏移量以及迭代开始的时间戳。由于IOR使用8字节长的长整数,因此写入的偶数长整数包含32位MPI任务号和32位时间戳。奇数长整型包含一个64位的transferbuffer偏移量(如果使用-lstoreFileOffset选项,则为文件偏移量)。要设置时间戳值,请使用-G或setTimeStamp签名。

如何方便地检查或更改输出数据文件中的字节?

可以构建一个简单的实用程序IOR/src/C/cbif /cbiff.c。这是一个独立的串行应用程序,称为cbif (Change Byte In File)。该实用程序允许检查文件偏移量,并以IOR的数据检查格式返回该位置的数据。它还允许更改该位置的一个字节。

如何纠正集群中节点之间的时钟偏差?

为了纠正节点之间的时钟偏差,IOR比较节点之间的时间,然后广播根节点的时间戳,以便所有节点都可以根据差异进行调整。要查看异常异常值,请使用-j 选项。请确保将此值设置得足够高,以便仅显示距离平均值特定时间之外的节点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/828274.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务架构——不可或缺的注册中心

从今天开始,我们将以Java后端技术为切入点,深入探讨微服务架构。本章的重点将聚焦于微服务中最关键的环节之一:服务发现与注册。文章将循序渐进,由浅入深,逐步引领你进入微服务的广阔世界。不论你是技术新手还是经验丰富的专家,我都希望通过这篇文章,能够为你提供独特而…

家有蓝猫

小年糕已经来了三天,昨晚不知怎么特别黏我,刚回家就开始跟着我。一直想让我摸摸它。晚上睡觉也趴到我身边喵喵叫,让我摸摸它。搞得我一夜醒了好几次。小家伙还想偷吃零食,我把猫条放在上面了。不是说小猫就喜欢纸箱子吗,给它准备的它连看都不看。这是在打哈欠,伸懒腰本文…

系统中电源的设计和选择 BOSHIDA acdc电源模块 BAL2.5-5W

系统中电源的设计和选择 BOSHIDA acdc电源模块 BAL2.5-5W1.确定所用电源的规格: 电源功率电源输出电压,输出端数电源尺寸2.使用标准模块设计系统时,请尽可能使用市场上通用的标准电源模块。这样可缩短设计和开发的时间,提高可靠性。3.尽地减少电源的输出端数一-般很容易买到…

c语言中函数体中的变量声明不能使用和形参相同的变量名

001、[root@PC1 test]# ls test.c [root@PC1 test]# cat test.c #include <stdio.h>int max(int a, int b) // 创建一个名为max的函数 {int k = 100;if(a > b){return a;}else{return b;} }int main(void) {int x, y;puts("pl…

如何为管理者设计 360 评估调查题目?

宣布360 评估通常会使管理人员不稳定。同事、下属、管理层甚至客户和供应商通过预先制定的问卷来反馈。 360 评估可以采用多种形式:从 50 到 300 多个问题,例如使用开放式或封闭式问题。但抛开其形式不谈,当 360 评估与全球人力资源战略保持一致并受其驱动时,它的好处是多方…

[NOIP2022] 比赛 随机排列 部分分

看到最大值,考虑使用单调栈搞出 \([la_i, ra_i], [lb_i, rb_i]\) 表示这一段区间 \(i\) 是 \(a, b\) 的最大值。预处理是简单的。inline void init() {static auto f = [] (int a[], int l[], int r[]) -> void {static int stack[N], top;top = 0, a[n + 1] = 0x3f3f3f3f;…

鸿蒙接入Flutter3.22

配置环境变量配置HarmonyOS SDK和环境变量API12, deveco-studio-5.0 或 command-line-tools-5.0 配置 Java17 配置环境变量 (SDK, node, ohpm, hvigor)export TOOL_HOME=/Applications/DevEco-Studio.app/Contents # mac环境export DEVECO_SDK_HOME=$TOOL_HOME/sdk # command-l…

王慧文回归带队美团探索 AI 应用;对话音频开源模型 Hertz-dev:120 毫秒超低延迟丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

思通数科纸质档案扫描与识别与档案馆应用场景介绍

在传统档案馆中,纸质文件的处理和管理是一个重要且繁琐的环节,特别是面对庞大的历史资料库。思通数科的AI能力平台提供了一种高效的数字化解决方案,利用OCR技术将纸质档案中的信息自动提取并转化为数字文本,具体过程包括以下几个步骤: 1.扫描与图像预处理 首先,系统将纸质…

CDDFuse: Correlation-Driven Dual-Branch Feature Decomposition for Multi-Modality Image Fusion

文章信息 标题 CDDFuse: Correlation-Driven Dual-Branch Feature Decomposition for Multi-Modality Image Fusion 会议及时间 CVPR2023 主要内容 为了解决建模跨模态特征和分解期望模态特有和模态共有特征的挑战,本文提出了一种用于多模态图像融合的双分支Transformer-CNN架…