在多 GPU 系统中,如何将 OpenCL 设备与给定 PCI 供应商、设备和总线 ID 的特定 GPU 相匹配?

2024-01-06

我希望能够在由 PCI ID 标识的多 GPU 系统上将 OpenCL 设备与系统中的 GPU 进行匹配。

例如,如果我的系统具有多个 GPU(可能来自不同的供应商),我可以通过枚举 PCI 总线来列出设备。这为我提供了 PCI 供应商、设备和总线 ID。如果我根据某些选择标准选择这些(GPU)PCI 设备之一用于 OpenCL 计算,我如何将其与 OpenCL 设备匹配?

我可以使用 OpenCL 枚举 GPU 设备clGetDeviceIDs()但没有明显的方法将 OpenCL 设备与 PCI 设备相匹配。 OpenCL 函数clGetDeviceInfo()提供对 PCI 供应商 ID 和设备名称的访问,但不提供对 PCI 设备或总线 ID 的访问。我可以尝试将 PCI 设备名称与 OpenCL 设备名称相匹配,但您可能拥有多个相同类型的设备,并且名称并不总是相同。

为什么这是必要的?假设我知道程序 X 正在 GPU A 上运行 CUDA 或其他东西。我想避免同时使用 GPU A 进行 OpenCL 操作,因此我选择 GPU B。然后我需要找出哪个 OpenCL 设备是 GPU A,哪个是 GPU B. PCI ID 似乎是识别 GPU 设备的唯一一致且跨平台的方式。

顺便说一句,CUDA API 确实为您提供了 PCI、总线和插槽 ID(CU_DEVICE_ATTRIBUTE_PCI_BUS_ID、CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID),但 CUDA 仅适用于 NVidia 设备。

理想情况下,我需要一个使用 C 或 C++ 的解决方案。


做到这一点的方法是使用两个特定于供应商的扩展。对于AMD,你必须使用CL_DEVICE_TOPOLOGY_AMD它适用于 Windows 和 Linux,并将返回 PCIe 总线 ID,该 ID 对于 GPU 来说是唯一的。在 NVIDIA 上,查询设备的 CL_DEVICE_PCI_BUS_ID_NV。也可以看看:https://anteru.net/2014/08/01/2483/ https://anteru.net/2014/08/01/2483/

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

在多 GPU 系统中,如何将 OpenCL 设备与给定 PCI 供应商、设备和总线 ID 的特定 GPU 相匹配? 的相关文章

随机推荐

  • 使用 node.js 运行 shell 脚本(childProcess)

    我想在我的 node js 服务器上运行 shell 脚本 但什么也没发生 childProcess exec play sh media external req params movie function not working 另一个
  • 查找给定查询的 firestore 文档的索引

    我正在使用 Firestore 构建游戏 我想显示高分列表 我目前通过以下查询获得了 10 个最高分 const q query doc db scores title orderBy score desc limit 10 除此之外 我想
  • 如何在Excel中使用单选按钮创建过滤搜索框[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想创建一个搜索文本框来过滤 Excel 中的数据 我有 3 列数据 汽车品牌 型号和颜色是列 我有单选按钮 选择该按钮后我希望搜
  • 将秘密(密码)存储在单独的文件中

    存储 Python 脚本的应用程序机密 密码 访问令牌 的最简单方法是什么 我以为这会是一个 yml文件就像在 Ruby 中一样 但令人惊讶的是我发现事实并非如此 那么到底是什么呢 最简单的解决方案是什么 我想把它们放在一个separate
  • 在 macOS 上通过 psql 创建 PostgreSQL 数据库备份

    我正在尝试创建一个 PostgreSQLlocal使用 macOS 上的终端进行数据库转储psql 我的下一步是将整个数据库上传 导入到我的 Amazon RDS PostgreSQL 数据库实例 https docs aws amazon
  • 将 Hudson 作业移至另一台服务器

    我已经设置了一个持续集成构建 Hudson 在 Tomcat 上运行 我现在需要将其移动到 Tomcat 的另一个实例 但不想从头开始配置所有内容 是否有一个配置文件定义了我可以复制到新服务器的每个作业 或者可以通过用户界面导入 导出作业
  • 使用变量的“原型”

    大多数时候 主要是教程 我看到 原型 用于方法 我很确定它也可以用于变量 也许对于设置 默认值 最有用 它不经常用于函数有什么原因吗 这是不好的做法 还是存在明显的性能差异 在我的脑海中 你失去了功能hasOwnProperty http
  • Networkx read_gml 错误“networkx.exception.NetworkXError:无法在 (3, 1) 处标记 u'graph'”

    我正在尝试使用 networkx 读取 gml 文件 非常简单 对吧 除非每当我尝试读取文件时 我都会收到错误 networkx exception NetworkXError 无法标记 u graph at 3 1 我对gml或netwo
  • 转换为位图时,CardView 阴影未渲染

    问题 我尝试保存一个视图组 其中有一个CardView作为其子级之一 作为 PNG 文件 为了达成这个 我膨胀视图组并使用所需信息填充视图 通过以下方式将图像加载到图像视图Glide https github com bumptech gl
  • 在 SpriteKit 中呈现一个场景而不丢弃之前的场景?

    我的情况是我有一个GameMenuScene在用户选择级别后 我想呈现LevelScene 但我不想再有以前的了GameMenuScene被丢弃是因为LevelScene实际上是一个 property of GameMenuScene用户是
  • 为什么从 spring-data-jpa 保存返回的实体中未设置 ID

    我有一个简单的实体 我正在使用 spring data jpa 版本 1 2 0 RELEASE 和 eclipselink 2 4 1 Entity Table name platform public class Platform Id
  • 如何在symfony2中覆盖奏鸣曲管理包的CSS

    我想覆盖一个css文件 即驻留在sonata管理包项目的sonata project admin bundle Sonata AdminBundle Resources public bootstrap css路径中 请帮帮我 一种可以覆盖
  • 如果记录存在否则插入如何更新sqlite表?

    这可能是重复的问题 但我很困惑 因为我是 sql 的新手 android 正在从服务器获取响应 如果表中的值已存在 则需要将其保存在 sqlite 数据库中更新 否则插入 il 检查任务 id 这是唯一的不知道如何为了做到这一点 我已经搜索
  • Dotnet 发布未将 DLL 发布到发布目录

    我想发布我的自包含 NET Core 2 2 应用程序 但是一个特定的 NuGet 包 Microsoft Management Infrastructure 从未发布到publish文件夹 因为 dll 文件不存在 我正在使用命令dotn
  • Android 从数据库获取数据

    我有一个可以从数据库检索用户数据的页面 但经过一整天的尝试 我只能获取表列名称 但无法获取其中的值 这是我创建数据库的代码 public static final String LASTLOGIN lastuser public stati
  • 为什么 CakePHP 身份验证组件不散列我的密码?

    我在用着CakePHP http en wikipedia org wiki CakePHP1 2 具有 Auth 和 ACL 组件 在我的用户注册操作中 密码未经过哈希处理 具体来说 这个表达式 if this gt data User
  • 按下按钮时加 1

    我的代码很长 所以我只会添加相关的片段 好的 我一直在尝试使用以下代码将标签增加 1 btnComplete setOnAction new EventHandler
  • 字符串到变量名称 MATLAB

    例如 如果我有一个变量 xa 2 然后我通过连接 x 和 a 构造一个字符串 如何使这个新字符串的值为 2 xa 2 var strcat x a 这样的结果是var xa 但我想要的是var 2 谢谢 Use eval var eval
  • 种子 Python RNG 显示集合的非确定性行为

    当尝试从集合中选择伪随机元素时 我看到了非确定性行为 即使 RNG 已播种 示例代码如下所示 为什么会发生这种情况 我是否应该期望其他 Python 数据类型也显示类似的行为 注意 我只在 Python 2 7 上对此进行了测试 但它可以在
  • 在多 GPU 系统中,如何将 OpenCL 设备与给定 PCI 供应商、设备和总线 ID 的特定 GPU 相匹配?

    我希望能够在由 PCI ID 标识的多 GPU 系统上将 OpenCL 设备与系统中的 GPU 进行匹配 例如 如果我的系统具有多个 GPU 可能来自不同的供应商 我可以通过枚举 PCI 总线来列出设备 这为我提供了 PCI 供应商 设备和