在不同架构的集群上应该指定哪个AVX和march?

2024-02-03

我目前正在尝试使用英特尔编译器编译用于 HPC 集群的软件。登录节点是我编译和准备计算的地方英特尔至强金牌 6148 https://ark.intel.com/content/www/us/en/ark/products/120489/intel-xeon-gold-6148-processor-27-5m-cache-2-40-ghz.html处理器,而计算节点使用 Haswell-(英特尔至强 E5-2660 v3 https://ark.intel.com/content/www/de/de/ark/products/81706/intel-xeon-processor-e5-2660-v3-25m-cache-2-60-ghz.html / 英特尔至强处理器 E5-2680 v3 https://ark.intel.com/content/www/us/en/ark/products/81908/intel-xeon-processor-e5-2680-v3-30m-cache-2-50-ghz.html)或 Skylake 处理器(英特尔至强金牌 6138 https://www.intel.com/content/www/us/en/products/processors/xeon/scalable/gold-processors/gold-6138.html).

据我从上面的链接了解,我的登录节点支持 Intel SSE4.2、Intel AVX、Intel AVX2 以及 Intel AVX-512,但我的计算节点仅支持 Intel AVX2 (Haswell) 或 Intel AVX-512 (天湖)

如果我使用选项编译-xHost在登录节点上,它应该自动使用可用的最高指令集。但哪一个是最高的呢?我如何确保我的程序在两个计算系统上以最佳性能运行?我必须编译两个版本吗? 额外问题:哪个-march在这种情况下我必须指定吗?


由于您使用的是英特尔编译器,因此您可以使用它的“自动处理器调度”能力,以便创造泛称“胖子”二进制文件,其中包含 SSE 兼容、AVX 兼容等版本。因此,当您在仅支持 SSE 的计算机上运行“胖”二进制文件时,只会执行二进制文件的 SSE 优化部分(代码路径)。当您在 AVX 机器上运行相同的“胖”二进制文件时,将执行二进制文件的 AVX 优化部分。这是一个非常强大但不太为人所知的功能。

您可以使用以下组合来启用它-ax and -x英特尔编译器编译标志。 这个想法基本上是通过 -ax 指定最高 ISA,并通过 -x 指定默认/“最低”ISA。

给定“-ax”脂肪二进制文件技术的简要描述位于https://www.chpc.utah.edu/documentation/software/single-executable.php#submit https://www.chpc.utah.edu/documentation/software/single-executable.php#submit

更多细节可以在给定的精美箔纸甲板的第 9 页找到:https://www.alcf.anl.gov/files/ken_intel_compiler_optimization.pdf https://www.alcf.anl.gov/files/ken_intel_compiler_optimization.pdf


最后,我应该提到,在您的描述中,您稍微混淆了 ISA 关系。采用 AVX512 的 Intel x86 处理器 - 将始终支持 AVX2。 AVX2 机器将始终支持 SSE。这超级简单化解释:AVX512 是 AVX/AVX2 的超集,而 AVX/AVX2 可以被视为 SSE 的超集(事实上并非如此,但 SSE 始终在 AVX 机器上可用,但反之则不然) 。

不管你提到的Haswell(AVX2机器,所以SSE都在船上,但这里自然没有AVX512)和Skylake(AVX512机器,所以AVX2和SSE都在船上)是什么情况。因此,您可能需要类似 -axCORE-AVX512 -xCORE-AVX2 (在您的列表中没有低于 AVX2 的机器 - 即没有 SSE 或 AVX(1) 机器)。您似乎只有 Skylake 服务器和 Haswell 服务器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在不同架构的集群上应该指定哪个AVX和march? 的相关文章

  • 有没有办法分析 WCF 应用程序的性能?

    我们正在尝试测量我们的系统的性能 该系统是一个使用 WCF 调用的 NET 3 5 应用程序 问题是到目前为止 我们无法分析这些调用中的方法 编写了一个 winforms 客户端应用程序来测试我们的系统 我们尝试使用ANTS 4 Profi
  • 如何在联系我们页面中使用用户电子邮件发送电子邮件?

    我正在创建一个联系我们页面 并且我想从该页面接收邮件 因为它的邮件来自用户邮件 我写了这段代码 var client new SmtpClient smtp gmail com 587 Credentials new NetworkCred
  • 线程安全的get(访问器方法)

    我目前正在使用以下代码对变量进行线程安全访问 int gnVariable void getVariableValue int pnValue acquireLock Acquires the protection mechanism pn
  • ApiController 操作无法从查询字符串解析数组

    使用 Visual Studio 2012 2 MVC4 Web 应用程序 我有请求发送到我的 ApiController 如下所示 http localhost api keys ids 1 ids 2 ids 3 我的印象是以下方法应该
  • 在 C++ 中,严格别名规则中的“访问”是什么意思?

    3 10 10 说 如果一个程序试图access通过除以下类型之一之外的泛左值存储对象的值 行为未定义 然而 术语 访问 并没有在任何地方定义 在这种情况下这意味着read or 读取或修改 在 C 标准中 它被明确定义为读取或修改 然而在
  • C# - 如何将 IntPtr 缓冲区数据保存到文件(最快的方法)?

    我使用此代码将非托管代码中的 IntPtr 缓冲区中的字节保存到文件中 这是一个简单的回调函数 private void callback IntPtr buffer int length byte bytes new byte lengt
  • 尝试将元素推入向量

    在头文件 我没有编写 中 已经定义了一个结构体 如下所示 struct MemoryMessage public boost counted base public FastAlloc explicit MemoryMessage Memo
  • c++11 中的 std::thread 问题

    我在尝试从标准模板库编译具有多线程的程序时遇到一些麻烦 当我尝试编译以下程序时 它返回一个晦涩的错误 include
  • popen2()在c中如何工作?

    我尝试使用管道 叉子和 dup 在我的程序中执行 md5sume 命令 我发现总和代码运行成功 但我无法理解某些代码行 这是我的代码 int infp outfp char buf 128 if popen2 md5sum infp out
  • C++ 克隆惯用语中协变返回类型的用处?

    通常的克隆习惯使用协变返回类型 struct Base virtual Base clone struct Derived public Base Derived clone 我读过一些内容 大意是协变返回类型是 C 后来添加的 较旧的编译
  • 使用经度和纬度查找给定距离内的所有附近客户

    我有一个包含客户经度和纬度的数据库 我有一个搜索表单 用户将在其中输入日志 纬度 距离下拉列表包含 50 英里 100 英里 当用户单击搜索时 我想编写一个 linq 查询从数据库中获取此距离半径内的所有客户 如何使用 C 和 linq 来
  • 发生错误。", ExceptionMessage: "提供的 'HttpContent' 实例无效

    尝试将文件添加到 http 休息调用时出现此错误 responseJson 消息 发生错误 ExceptionMessage 提供了无效的 HttpContent 实例 它确实 正在使用 多部分 参数名称 内容 异常类型 System Ar
  • 允许 .NET WebApi 忽略 DOCTYPE 声明

    我正在尝试通过 WebApi 方法将 XML 反序列化为对象 我有以下课程 XmlRoot IsNullable false public class MyObject XmlElement Name public string Name
  • 专家 C#/.Net/WPF 开发人员应该了解哪些知识? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 无论表单上的焦点控件如何,如何捕获 Keys.F1?

    我使用了 KeyDown 事件和一些简单的代码 例如if e KeyCode Keys F1 捕获在表单上按下 F1 但如果表单上有一些文本框 或者表单上有一些带有 Dock Fill 的电子表格 则上面的代码将毫无用处并且不执行任何操作
  • 修改公共属性的访问修饰符是否是重大更改?

    如果我将公共属性的 setter 的访问修饰符从私有更改为公共 是否会导致引用它的其他程序集发生任何重大更改 UPDATE 这个问题是我 2012 年 1 月博客的主题 https ericlippert com 2012 01 09 ev
  • 在 C# 中将 ulong 映射到 long ?

    我正在尝试将 ulong 映射到 long 反之亦然 将 uint 映射到 int 反之亦然 如下所示 为了将值保存在具有签名类型的 MS SQL 数据库中仅限整数和大整数 我这样做是因为我必须检查 在数据库中 一个数字 uint ulon
  • 什么是多重重继承?

    我将以下称为 多重重新继承 直接继承一个类一次 并通过继承其一个或多个后代来间接继承一次或多次 通过继承一个类的两个或多个后代来间接继承一个类两次或多次 我想知道它是否存在以及如何明确访问嵌入的子对象 1 Professional C 2n
  • 为了清楚起见,是否应该在返回类型上使用无用的类型限定符?

    当我们的头文件中有原型时 我们的静态分析工具会抱怨 返回类型上有无用的类型限定符 例如 const int foo 我们这样定义它是因为该函数返回一个永远不会改变的常量 认为 API 看起来更清晰const到位 为了清楚起见 我觉得这类似于
  • 在 WPF 树视图中获取 FullPath?

    如果我以编程方式创建 WPF TreeView 例如 TreeView treeView lt added in the designer TreeViewItem rootNode new TreeViewItem rootNode He

随机推荐

  • Android 谷歌加号登录按钮

    下列的谷歌签名按钮 https developers google com mobile android sign in 我在我的android设备上实现了它 单击该按钮时 它会显示一个弹出窗口 询问您的许可 了解您在 Google 上的身
  • 将图像上传到网络服务会导致图像损坏

    我正在尝试从 iPhone 将图像上传到网络服务 但即使文件已成功上传 也无法查看 jpg 它似乎已损坏 使用以下 c 代码可以成功上传文件并正常工作 var url http myurl co uk services service sv
  • 是否有类似于 XMLSpy 的带有网格视图的 XML 编辑器? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我已经测试了一些不同的 xml 编辑器 查看器 但似乎找不到任何具有与 XMLSpy 的网格视图相媲美的
  • 使用 Rails 3 输出格式化的 json

    我使用rails 3 0 3 javascript 自动完成需要这样的数据 query Li suggestions Liberia Libyan Arab Jamahiriya Liechtenstein Lithuania data L
  • Golang 嵌入结构类型

    我有这些类型 type Value interface type NamedValue struct Name string Value Value type ErrorValue struct NamedValue Error error
  • Kotlin 如何与 Java 和 JavaScript 互操作?

    Kotlin 网站指出 Kotlin 与 Java 100 具有互操作性 Kotlin 是 Java 的子集 超集吗 另外 文档指出 Kotlin 与 JavaScript 兼容 那么它是如何编译以支持两者的呢 Kotlin 是像 Xama
  • 内循环 Lambda

    我在 for 循环中有一个 lambda 其中循环变量参数在 lambda 中 当我运行它时 我期望输出数字 0 9 但由于它是 lambda 因此 x 不会立即求值 for int x 0 x lt n x vec push back t
  • 如何解决java.io.InvalidClassException:本地类不兼容:流classdesc serialVersionUID [重复]

    这个问题在这里已经有答案了 我在这么大的项目中有一个可序列化的类 编码时没有指定serialVersionUID 并将其作为blob保存在MySQL数据库中 我必须向此类添加一些字段 但是执行此操作后 我收到如下异常 IOException
  • 文本装饰:下划线与边框底部

    使用上有什么区别 text decoration underline and border bottom 哪个易于设计且跨浏览器兼容 当我们应该使用border bottom over text decoration underline 用
  • 使用 Lua 表 C API 创建一个简单的表

    我正在运行一个 MySQL 查询 它总是返回 4 行 row gt name row gt date row gt ip row gt custom 我想要实现的是根据上述结果创建一个简单的表 因此它看起来像 name result of
  • 如何将信号作为函数参数传递?

    因此 我希望创建我们自己的通用继承复选框类 该类将能够在其构造函数中接受一些值 并弹出一个以我们需要的方式完全连接到我们的模型的小部件 目前我们在我们的视野范围内做这样的事情 connect checkboxWidget QCheckbox
  • 如何在android中使用intent发送.text文件?

    我正在使用下面的代码发送邮件 并且我需要仅使用 gmail 发送 text 文件 我该怎么做 请问有人可以帮助我吗 Intent send new Intent Intent ACTION SENDTO String uriText mai
  • 需要为 Yesod 路径定义哪些类型类?

    在我的应用程序中 我的数据模型有几个使用整数或字符串作为某些标识符的不同实例 为了安全起见 我将这些标识符包装到新类型声明中 如下所示 newtype DocId DocId Integer newtype GroupName GroupN
  • 在 Pixel 2 和 Pixel 2 XL 上接收 UDP 广播数据包

    我正在开发一个从 Wi Fi 摄像头接收 UDP 广播数据包的应用程序 在我发现 Google Pixel 2 Pixel 2 XL 接收 UDP 广播包有问题之前一直都很好 为了找出原因 我做了2个测试应用程序 一个是UPD广播发送器 h
  • Python - 作业 - 将任意基数转换为任意基数

    我正在尝试编写一个程序 将任何基数中的数字转换为用户选择的另一个基数 到目前为止我的代码是这样的 innitvar float raw input Please enter a number basevar int raw input Pl
  • Facebook 登录后调用新活动 |安卓

    我的 Android 应用程序中有 2 个活动 在第一个中 我要求用户使用 facebook 登录 用户登录后 我收集用户数据 例如电子邮件 姓名 并调用一个新活动 将这些参数传递给它 下面是我的facebook授权方法 public vo
  • PlopJS 中的异步操作

    我想在 actions 属性中使用 async await 但是 它给了我 错误 处理程序没有任何操作 我尝试过 then 但仍然失败了 这是我到目前为止所尝试过的 我想做的是通过在操作中执行反应式提示 我不知道 然后使用await但失败了
  • 两种方式将数据绑定到单例服务 Blazor 服务器端

    我一直在使用 WebAssembly 在客户端上使用 Blazor 但我想我现在应该尝试服务器端版本 并且我有一个简单的想法想要尝试 所以我的理解是 Blazor 服务器端使用 SignalR 来 推送 更改 以便客户端重新渲染其页面的一部
  • 如何在javascript中从对象数组中获取唯一的对象

    我有一系列对象 如下图所示 有没有一种方法可以让我拥有一个包含唯一对象的数组id 我们可以在下面看到id索引 0 和索引 2 相同 Is there a way that I can get an array containing obje
  • 在不同架构的集群上应该指定哪个AVX和march?

    我目前正在尝试使用英特尔编译器编译用于 HPC 集群的软件 登录节点是我编译和准备计算的地方英特尔至强金牌 6148 https ark intel com content www us en ark products 120489 int