问题标签 [amd-processor]

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

c - 为什么调用 glBindBuffer 时在 atio6axx.dll 中出现访问冲突?

导致问题:

通过制作我自己设计的(可能很简单)基于图块的游戏来学习使用 C 的 OpenGL。最初我只绘制了大约 10 个左右的三角形进行测试,我设置了缓冲区数据和索引,如下所示:

因为我需要更多的三角形来制作更多的三角形,所以我决定自动化它(而且,这些值以像素为单位,而不是屏幕/视口坐标,因为我打算在我的着色器中使用一些矩阵):

请注意,我没有自动化索引,因为我想确保我可以从这些新数据中获得完全相同的三角形。

问题:

我在某些GL 调用中反复遇到访问冲突。如果我在断点之间手动步进,它总是在到达glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, positionBufferObject);.

如果我在这一行上有一个断点,在这一行之后GLuint fShader = glCreateShader(GL_FRAGMENT_SHADER);有一个断点,它会跳过(忽略?静默失败?)中间的行并在到达调用内部时中断myProgram = CreateProgram();(这令人惊讶,因为我的顶点着色器是在之前创建的,带有相同的呼叫并且工作正常)。

所有 glGetError() 的返回 0,规范说这意味着:没有问题或 glGetError 有自己的错误。

不管它在哪里中断,调用堆栈 pelles C 在它中断时向我显示的是 'atio6axx.dll; DrvPresentBuffers() +163B7B' 它总是在这里:

我的 raaaaaaaage 的来源

我最近为我的 Radeon HD 6850 安装了最新的 Catalyst 更新。我找不到关于 GPU/顶点缓冲区对象/等的内存限制的任何信息,而且我怀疑大约 25KB 的数据会破坏任何东西。我觉得这不是 OpenGL 问题,而是我实现代码的方式或我不熟悉的限制/内存问题。

此站点上的海报#20也有类似的问题,但它似乎与程序故障有关,而不是代码(我认为它发生在最新驱动程序出现之前,即使它是在 10 月 11 日发布的)。GetBitmap()使用 glBindTexture 和其他调用没有问题。

似乎是最明显的,但我从旧算法到新算法的唯一变化是数据创建的自动化。不涉及任何指针,我什至将其转换为 a const float *,编译器甚至没有警告我这是必要的。

我是否在错误的地方寻找一个简单问题的解决方案?如果需要,我会尝试解释我的代码/添加更多代码,请问。我真的不想手动写出 ~6400 或更多的值。

编辑#1:经过一些其他测试后,即使使用旧实现,似乎也会出现此错误。我一定有一段时间没有编译它(一直在处理着色器,它们是单独的文件)。我困惑。

编辑#2:更多代码。这是在 InitGL 之前发生的唯一函数,也是调用 InitGl 的函数。:

FnLdInit 是我连接所有扩展的地方:

这是 GetBitmap():

编辑#3:未安装的 Catalyst 12.10 和所有相关驱动程序。重新安装12.8。同样的问题,但现在它发生在 GenBuffers 上。奇怪的。

编辑#4:我尝试将我的项目制作为 32 位,并对其进行编译。我遇到了完全相同的问题,尽管出于某种原因,Pelles C 没有标记 LIB(它只是在提到一个时说“无标题”)所以我只能假设 AMD 提供的 32 位库也失败了(作为 atio6axx.dll/. lib 未加载)。我觉得这个问题不会有任何真正的解决方案,因为它似乎源于驱动程序,而不是我的代码。在搜索并看到类似这样的相关问题之后,似乎并没有真正的客户端解决方案。

编辑#5:另一个我之前没有注意到的问题,因为程序在这一点上从来没有给我访问冲突,是代码将到达glActiveTexture(GL_TEXTURE0);并突然跳过后面的所有行并退出函数。通过删除此行,将执行下一行。glActiveTexture(GL_TEXTURE0);is fromatio6axx.dll而所有其他命令都是 from OPENGL32.dll,所以它似乎已经缩小了范围。奇怪的是此时没有访问冲突,只是奇怪的跳过。

我想没有人能看到发生这种情况的原因吗?我什至安装了beta Catalyst 驱动程序,它的 atio6axx.dll 版本的日期为 15\11\2012(上个星期四)。因此,最新的驱动程序不是问题。我什至尝试了自 Catalyst 12.4 以来的每个驱动程序版本(当前是 12.10,这个程序运行 12.8)。不知所措,甚至一个新程序也遇到了同样的问题。

0 投票
1 回答
7117 浏览

compiler-construction - 有没有办法用编译器在 AMD OpenCL 内核中展开循环?

我正在尝试评估 AMD 和 Nvidia GPU 的 OpenCL 之间的性能差异。我有一个执行矩阵向量乘法的内核。我现在在两个不同的系统上运行内核,我的笔记本电脑有一个带有 Ubuntu 12.04 和 CUDA 4.0(包含 OpenCL 库和头文件)的 NVidia GT525m,另一个是带有 AMD Radeon HD7970 的台式机,再次带有 Ubuntu 12.04 和最新的 Catalyst 驱动程序。

在内核中,我有两条#pragma unroll语句为 Nvidia OpenCL 实现(~6x)产生了很大的加速。但是 AMD OpenCL 版本不会产生任何加速。使用 AMD APP 内核分析器查看内核会出现未使用展开的错误,因为行程计数未知。所以我的问题是,是否#pragma unroll可以与 AMD OpenCL 一起使用,或者是否有替代方案(也许是我不知道的编译器标志)。我在下面包含了内核

这个相同的内核在两种实现中都产生了正确的结果,但是 #pragma unroll 命令对 AMD 没有任何作用(通过将它们注释掉来检查)。

0 投票
1 回答
1034 浏览

opencl - 许多 OpenCL SDK。我应该选择哪一个?

在我的装有 Windows 7 操作系统的计算机中,我有来自该供应商的三个版本的 OpenCL SDKS:

  • 英特尔
  • 英伟达
  • AMD。

我用他们每个人构建我的应用程序。作为输出,我有三个不同的二进制文件。例如:my_app_intel_x86、my_app_amd_x86、my_app_nvidia_x86

此二进制文件对此有所不同:

  1. 他们在 likange 过程中使用不同的 SDK
  2. 他们试图在运行时找到不同的 OpenCL 平台名称

我可以只使用一个 SDK 并检查平台的运行时间吗?

0 投票
1 回答
1429 浏览

cuda - NVidia 的 ISA 语言

AMD 为其 ISA 定义了每个 GPU 系列。据我了解,ISA 是一种指令集架构:类似于汇编的“语言”。NVidia的GPU怎么叫“汇编语言”?- PTX?有没有像 AMD 或 Intel 离线编译器这样的工具可以为 NVidia 内核生成这样的程序集?谢谢

0 投票
1 回答
213 浏览

opencl - ATI/AMD OpenCL 的局部变量对齐

我一直遇到结构错位的问题。以下是涉及的结构:

顺便说一句,STACK_DEPTH 是 4 的倍数。我一直小心确保所有结构的大小都是 16 的倍数,并且其中的 float4 位于对齐的边界上。

问题是当我将它用作局部变量时,结构 RayStack 未对齐:

堆栈地址最终以 8 结尾,而不是 0,因为我想要一个 16 字节对齐的结构。这会导致 ATI 卡崩溃(尽管 Intel 和 nVidia 并没有为此烦恼)。我尝试将 __attribute__((aligned(16))) 放置在结构中(之前和之后)以及局部变量定义中,但这并没有改变任何东西。实际上,添加 printf 语句可以解决问题,尽管我不知道如何解决。

是否可以确保局部变量堆栈在 16 字节边界上对齐并停止 ATI 卡上的崩溃。

谢谢!

0 投票
1 回答
531 浏览

opencl - OpenCL 从私有减少到本地然后是全局?

下面的内核计算声压场,每个线程计算它自己的pressure向量私有实例,然后需要将其汇总到全局内存中。我很确定计算pressure向量的代码是正确的,但我仍然无法让它产生预期的结果。

关于数据维度的一些注意事项: 线程总数将在 100 到 2000 之间变化,但有时可能超出此区间。
groupSize将取决于硬件,但我目前使用的值介于 1(cpu) 和 32(gpu) 之间。
HYD_DIM_TOTAL在编译时已知并且在 4 到 32 之间变化(通常但不一定是 2 的幂)。

这个缩减代码有什么明显的错误吗?

PS:我在带有 AMD APP SDK 2.8 的 i7 3930k 和 NVIDIA GTX580 上运行它。

0 投票
2 回答
996 浏览

python - 编译好的 opencl 程序可以存储为单独的二进制文件吗?

我在单独的文件上有 2 个两个 python 脚本。第一个具有 opencl 程序,该程序对传递给它的图像执行一些图像处理并返回结果。第二个脚本从文件中读取图像并调用第一个脚本,将读取的图像作为参数传递并获得它返回的结果,用于进一步处理。

现在,我的文件夹中有 100 张图像。因此,第二个脚本调用第一个脚本 100 次,每次调用第一个脚本时,都会编译 opencl 内核,这是绝对没有必要的,因为所有图像的格式和尺寸都相同。有没有办法先编译一次opencl内核,以二进制格式存储它并在需要时调用它?当然,我可以将所有代码放在一个大文件中,编译内核一次并循环调用 100 次,但为了方便起见,我想要单独的文件。

硬件:

CPU:AMD A8 APU,AMD Phenom 2 X4

GPU:AMD Radeon HD 7640G + 7670M 双显卡,ATI Radeon HD5770

0 投票
1 回答
137 浏览

c - 为什么 AMD 驱动程序渲染全屏四边形不正确?

在我的游戏引擎中,我在绘制到实际屏幕之前先绘制到帧缓冲区,然后使用后处理着色器绘制到实际帧缓冲区。但是,我在使用 AMD 驱动程序时遇到了一个问题,我的 quad 渲染不正确。

该代码可以在多个操作系统的 Nvidia 和 Intel GPU 上按预期工作。这是一个示例: http: //i.stack.imgur.com/5fiJk.png 它已在具有不同 AMD gpu 的 3 个系统上复制,并且在非 AMD 系统上未见。

创建四边形的代码在这里:

我尝试了其他选项,例如使用两个独立的三角形,但到目前为止没有任何效果。我完全不知道为什么这种行为会发生在 AMD 驱动程序中。

0 投票
0 回答
327 浏览

opengl-es - 不支持 AMD/ATI FirePro V5900 WebGl / OpenGl ES?

似乎使用 AMD 版本的当前(2013 年 2 月 28 日)催化剂驱动程序。9.3.3 不支持 WebGl。至少我无法将 Firefox 或 Chrome 与原生 GL 支持连接起来。它仅适用于启用 ANGLE。那么,是否有可用的驱动程序或有什么问题?

此外,似乎只有 Catalyst >10.8 版本支持 OpenGL ES,但根据发行说明,它们不支持 FirePro。

发行说明 10.8

发行说明 13.1

0 投票
1 回答
1747 浏览

c++ - OpenCL:在 dll 中找不到 clRetainDevice

使用 AMD C++ 绑定和 SDK(最新的)运行一个 OpenCL 程序,该程序获得一个平台、一个 GPU,然后编译 4 个内核,在启动时会出现上述错误。它在我的电脑上运行良好,它的 GPU 只支持最高 1.1,但其他电脑似乎有上述错误。这是编译中的问题(如,我必须定义一些宏),缺少驱动程序,C++ 绑定还是其他问题?我没有在我自己的代码中显式调用 clRetainDevice——它是某处绑定的一部分吗?