问题标签 [hip]

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 回答
431 浏览

concurrency - 使用 HIP C++ 在 AMD GPU 上使用 `shfl` 操作有什么要求?

有与 CUDA C++ 非常相似的AMD HIP C ++。AMD 还创建了Hipify以将 CUDA C++ 转换为 HIP C++(便携式 C++ 代码),可以在 nVidia GPU 和 AMD GPU 上执行:https ://github.com/GPUOpen-ProfessionalCompute-Tools/HIP

对英伟达的要求

请确保您拥有3.0 或更高版本的计算能力设备,以便使用 warp shfl 操作并在使用此应用程序时在 Makefile 中添加 -gencode arch=compute=30, code=sm_30 nvcc 标志。

此外,HIP 定义了查询架构特性的可移植机制,并支持更大的64 位 wavesize,这将跨通道函数(如投票和随机播放)的返回类型从 32 位整数扩展到 64 位整数。

但是哪些 AMD GPU 确实支持功能shfl,或者任何 AMD GPU 都支持shfl,因为在 AMD GPU 上它是通过使用本地内存实现的,而没有硬件指令寄存器到寄存器?

nVidia GPU 需要 3.0 或更高的计算能力 (CUDA CC),但是shfl使用 HIP C++ 在 AMD GPU 上使用操作有什么要求?

0 投票
0 回答
100 浏览

tensorflow - 尝试运行 hipTensorFlow 时出现 HCC 运行时错误(Ubuntu 16.04,R9 290)

我按照此处的说明安装了 hipTensorFlow

正如他们在指南中所说,我正在运行 Ubuntu 16.04,并且我有一张 AMD R9 290 卡。

但是当尝试导入 Tensorflow 时,我得到以下输出:

尝试在 Google 中搜索它并没有带来太多帮助 - 只是我的卡不受支持还是我可以做些什么来帮助它工作?

0 投票
0 回答
55 浏览

image - Haskell HIP 提高切片图像时的性能

对于 X 射线切片,我想创建一个程序来重建切片并执行逆氡变换。第一步是创建图像的正弦图。但是创建一个正弦图需要很长时间。

我有 1500 张图片,每张都有 3.5MB 的 PNG 格式。解压后,它们需要大约 10 GB 的内存,这对我来说很好。

为了创建一个正弦图,必须对齐所有图像的同一行。我正在使用 HIP 和可存储向量来完成这项任务。处理所有图像大约需要 1 分钟,我想知道如何加快这个过程。

我的代码在这里:

我已经使用 +RTS -s 选项对其进行了概要分析,并且垃圾收集所花费的时间很好。我怎样才能加快速度?

为了安装 HIP 堆栈,需要以下部门

0 投票
1 回答
216 浏览

c++ - 理解 C++ 函数指针在 HIP 中的引用传递

HIP是与 NVIDIA 的 CUDA 对应的 AMD GPU 编程模型。我有一个我无法完全理解的 HIP 源代码的代码片段。提醒一下,对以下代码片段的理解不需要任何 HIP 的背景知识,但更多的是 C++ 模板/函数指针的问题。

我对以下内容感到困惑:

  • 如果 F 是一个函数指针,为什么它需要在参数中被双重引用?
  • 第一个模板参数typename... Args有什么用?
  • hipLaunchParm 只是整数的别名,但在参数中调用时 {} 是什么意思呢?
0 投票
1 回答
783 浏览

haskell - 如何使用 Haskell 图像处理生成图像

我刚开始学习 Haskell,所以我可能遗漏了一些非常琐碎的东西。我正在尝试使用 Haskell 图像处理生成图像。我正在从文档的示例片段中调整代码。我的代码如下。

当我尝试构建它时,我得到以下信息

似乎无法弄清楚我做错了什么。

0 投票
1 回答
117 浏览

haskell - Haskell HIP:将过滤器应用于图像

我正在尝试使用 Haskell 图像处理包HIP向图像添加过滤器,我能够使用ByteString包读取图像并使用 HIP 将图像转换为类型Image VS YCbCr Word8。现在,我如何转换Image VS YCbCr Word8Border (Pixel cs e)or Pixel cs e?我还在学习 Haskell,所以请保持简单。见下面的代码:

0 投票
1 回答
104 浏览

image - 如何使用 HIP 将图像类型的精度从 Double 转换为 Word8?

我有一个类型的图像Image VS Y Double(使用readImageYHIP 库中的函数后),我想将其转换为Image VS Y Word8. 我该怎么做呢?我需要在这个精度下应用它的下一个函数。

以下是相关代码的片段:

这是错误:

编辑: 双打是在图像类型中存储为 VS 向量类型的灰度像素值。我遇到的问题是可以访问双打以便能够转换它们。试图在这里解释/找到 HIP 库的方法,但我是 Haskell 的新手,无法弄清楚。

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 回答
110 浏览

haskell - Haskell中更快的SumSquareDifference

我正在 Haskell 中实现二进制图像的分形图像压缩算法。为此,我必须在所谓的域池中找到给定范围块(子图像)最接近的图像,即图像列表列表。我通过计算两个像素值的平方和差来比较图像。

我使用 Haskell 图像处理 (HIP) 库来读取和写入图像。

这段代码的性能真的很差。尽管使用-O2. 分析向我展示了大部分运行时都花在了函数distance中,尤其是在 sumSquareDifference,而且在toListstoBinList

有没有办法提高性能?

块大小为 2 表示将 16384 个范围块与域池的 131072 个图像进行比较,因此 sumSquareDifference 将被调用 (16384*131072=)2147483648 次,每次计算两个长度为 4 的列表的平方和差。我意识到这是一个很大的数字,但代码不应该更快(懒惰评估列表)吗?这是 Haskell 问题还是算法问题?

编辑:

通过使用,我至少能够将性能提高三分之一:

编辑2:

dPool通过使用函数创建,我能够极大地提高性能genDistanceList,一旦找到两个相同的图像就会停止计算:

0 投票
1 回答
29 浏览

gpu - 是否可以并行访问 HBM2?

我有一个代码可以顺序访问约 4GB 的内存,每个请求访问 1024 位,随机访问所有 4GB ......我有一个 16GB HBM2 和 4096 位 BUS 的 RADEON VII。

可能的优化 1:每个内存请求 4GB 和 4x 数据!(不起作用,因为第一个请求告诉我跨 4GB 的第二个请求,所以第二个请求所需的数据可能在内存中很远)

可能的优化 2:每个内存请求 4+4+4+4GB 和 1x 数据!(不会提高性能,因为对 4GB 组的每个请求都会将其他请求延迟到 0.25 倍性能,所以我得到 4 个线程,每个线程的性能为 0.25 倍)

问题:

对于优化 1 - 是否可以拆分 4096 位 BUS,所以我可以以非阻塞方式并行获取 1024 位内存的不同区域?

对于优化 2 - 是否可以并行处理 4GB 的“块”,每个块都是独立的,而其他块是非阻塞的?

PS - 我知道这取决于内存控制器,所以如果你知道可以做到这一点的不同硬件,也请告诉我。