问题标签 [amd-gpu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
380 浏览

llvm - LLVM AMDGPU 分配地址空间

我一直试图通过 LLVM 让 .NET CIL 在多个平台上运行(我对 GPU 特别感兴趣)。我使用Mono.Compiler将 CIL 转换为 LLVM。

我无法让 AMDGCN 正常工作。对于一个简单的添加功能,我得到以下翻译后的 IR:

我试过直接通过 libLLVM 的 TargetMachineEmitTo{File, MemoryBuffer} 以及间接通过 llc 发出它。

直接发射会产生一个 SIGSEGV:

这似乎是由于上述函数中的(负)缓冲区溢出(据我从 gdb 得知)。

llc 在 amdgcn 和 r600 上都失败了:

否则,llc 对于所有其他平台(wasm64 除外)都可以正常编译。

经过一番挖掘,我一直想知道这是否可能是因为没有在 alloca 中指定地址空间(尽管在AMDGPU 的 LLVM 指南中并没有真正解释这一点);所以我得到了翻译后的 IR 的副本并更改了地址空间。事实证明,如果分配在私有地址空间中,llc 会编译它——我猜它是作为堆栈空间工作的。但是我觉得很奇怪,尽管全局地址空间和区域地址空间都不起作用 - 我不应该能够在全局内存中分配空间吗?我在这里想念什么?

同样,我找不到创建采用地址空间的 alloca 指令的方法(BuildAlloca 不采用地址空间作为参数,我找不到任何提及替代方案的文档或示例)。

如果重要的话,我在 ArchLinux 上使用默认的 libLLVM(此时,llvm 8.0.1)。

0 投票
0 回答
119 浏览

opencl - 一系列子组的 OpenCL 障碍

在 OpenGL 2.1 中,工作组被细分为子组。work_group_barrier()同步工作组中的所有工作项,sub_group_barrier()仅同步一个子组中的工作项。

是否可以同步一系列子组中的工作项?

例如,一个工作组由 5 个子组组成,每个子组包含 64 个工作项。子组 0 和 1(= 工作项 0 - 128)应该同步,以便在屏障之后子组 0 的工作项可以访问子组 1)写入的数据。同时,子组 2、3 和 4 可以在不参与此同步的情况下继续进行,可能执行代码的不同部分。

在 CUDA 中,使用内联 PTX 程序集(相当于子组,32 个线程)可以实现扭曲:CUDA: how to use barrier.sync

有没有办法在 AMD 平台上使用 OpenCL 来做到这一点,也可能使用内联汇编代码?如果没有,AMD 平台是否有另一种 GPGPU API/语言允许这样做?

0 投票
1 回答
1317 浏览

amd-gpu - Hashcat 报告 CL_OUT_OF_HOST_MEMORY

我已经设置了一个新的 Linux 机器(基于 18.04 的 Xubuntu),它有 64G 的 RAM 和两个 AMD R9-280 GPU。我正在尝试在其上运行 hashcat(来自 hashcat.net 的最新版本),但在 GPU 上遇到内存不足错误。

clinfo 也给出了一些奇怪的结果:

我正在检查的测试影子文件只有两行长,所以它的大小不是问题。我是系统上唯一的用户,在测试期间没有其他任何东西在运行。我怀疑这个问题与 amdgpu-pro 驱动程序有关,但我没有一个好的起点。有谁知道什么可能导致这个问题?谢谢!

0 投票
2 回答
8883 浏览

keras - 无论如何在带有 AMD GPU 的 Mac 中使用 Keras?

我有一台配备 AMD 处理器的 MacBook Pro,我想在这个 GPU 中运行 Keras(Tensorflow 后端)。我开始知道 Keras 仅适用于 NVIDIA GPU。解决方法是什么(如果可能)?

0 投票
2 回答
470 浏览

python - 如何在 Windows 上使用 python 与 AMD GPU 交互

我想使用 python 与我的 AMD Radeon RX 580 交互。我想要完成的基本内容:

  1. 获取功率级别(拉多少瓦)
  2. 设置风扇速度
  3. 从 GPU 本身检索一些信息,例如:内存大小、子供应商(Saphhire、XFX 等)、GPU 和内存时钟、内存类型等

我正在寻找某种方法来通过“Windows”上的 python 获取此信息。

我搜索了很多,但所有解决方案似乎都可以在 linux 上使用。

0 投票
0 回答
217 浏览

c++ - 映射 opencl 缓冲区时出现“内存泄漏”

给定以下使用 OpenCL 1.2 的程序

我发现在 while 循环中,每次迭代的内存使用量从 1% 逐渐增加,直到达到我 16 GB RAM 的大约 24%。终点因我的设定而异numCL_MEM_USE_HOST_PTR如果我使用并给出clCreateBuffer指针,则此行为将完全删除。我在一系列不同的设备上进行了测试,发现在使用 Intel 而不是 NVidia 或 AMD GPU 时它也消失了。这不是真正的内存泄漏,因为在调用clRelease*创建的 OpenCL 对象时会释放内存。

这是我对 API 的误解还是错误?

0 投票
1 回答
336 浏览

gpu - OpenCL 和 Radeon R4 集成显卡

我有一台带有 AMD A6-6310(Radeon R4 集成显卡)SoC 的戴尔 Inspiron 笔记本电脑。我正在运行 Debian Sid(更新到最新版本)。从 wikipedia 我看到 R4 Graphics 有 128 个着色器内核,跨越 2 个计算单元,主处理器是一个四核设备。

我相信(如果我错了,请纠正我),这意味着如果我运行clinfo它应该检测到两个平台,但它只检测到一个(我的四核 CPU)。你们能告诉我如何让opencl检测我的GPU吗?我安装了xserver-xorg-video-radeonxserver-xorg-video-amdgpu包以及libdrm-amdgpu1libdrm-radeon1。从lspci我可以看到正在使用 radeon 驱动程序。是否有需要安装的驱动程序?

lspci输出

clinfo输出

如果我应该提供任何进一步的信息,请告诉我。

期待尽快与 opencl 合作。提前致谢。

0 投票
1 回答
241 浏览

opengl - 我是否发现了 AMD GPU 整数除法错误?

我已将我的案例缩小到这个简单的 GLSL 代码:

当我将它放入着色器并使用 RenderDoc 检查着色器时,它说 c 是 1443361!但它应该是 1443360。到底发生了什么?在十六进制中,8660165 是 0x8424C5,因此在符号位可以改变计算之前有一个完整的字节空闲。我错过了什么还是这是一个 GPU 错误?

OpenGL 4.6 内核,在 AMD RX 5700 XT 上测试。我也尝试过使用 uint 而不是 int,它可以正常工作。

0 投票
2 回答
2535 浏览

amd-gpu - 了解 AMD GPU 中的 oneAPI 和 SYCL

我是一名 GPGPU 开发人员,我使用 CUDA 完成了所有工作。最近我为我的家庭设置购买了一个 AMD GPU,并且我一直在阅读有关 SYCL 和 oneAPI 的信息,但我不确定我是否了解它们中的每一个是什么,它们是如何补充的。如果我理解正确的话,SYCL 是由 Khronos 开发的标准,允许在 C++ 中创建并行软件。它需要一个自定义工具链,由 SYCL 实现提供,并且存在多个实现。

另一方面,oneAPI 是 SYCL 的实现,带有一些额外的扩展(将来可能会添加到 SYCL 标准中)和一些具有典型并行库的库,对吧?

由于我有一个 AMD GPU,我想用它来做一些 GPGPU,但是生态系统有点吓人。我们有台面驱动程序、AMD 驱动程序、不同的 openCL 实现、HIP……所有这些假设如何组合在一起?

0 投票
1 回答
184 浏览

opencl - OpenCL 报告一半的预期计算单元

我使用 OpenCL(在 Ubuntu 下)来查询可用平台,这会产生一个平台,

CL_PLATFORM_PROFILE:FULL_PROFILE

CL_PLATFORM_VERSION:OpenCL 2.1 AMD-APP (3143.9)

CL_PLATFORM_NAME:AMD 加速并行处理

CL_PLATFORM_VENDOR : Advanced Micro Devices, Inc.

它提供了一种设备,我用以下方式查询:

这给了我:

gfx1012 gfx1012 with [11 units] localmem=65536 globalmem=8573157376 dims=3(1024x1024x1024) max workgrp sz 256

11CL_DEVICE_MAX_COMPUTE_UNITS值让我担心。

我的系统配备了 Radeon RX 5500 XT,根据 AMD 网站和维基百科的说法,它应该有 22 个计算单元。

为什么 OpenCL 报告的是预期数量的一半,即 11 个计算单元,而不是 22 个?

lspci 报告:

并安装了 AMD GPU PRO 驱动程序。