问题标签 [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.
c++ - AMD GPU 的 OpenCL 时间测量问题
我最近比较了两种做内核运行时测量,我看到了一些令人困惑的结果。
我使用带有集成 GPU 和 Ubuntu Linux ( CL_PLATFORM_VERSION
is ) 的 AMD Bobcat CPU (E-350 OpenCL 1.2 AMD-APP (923.1)
)。
基本的 gettimeofday 想法如下所示:
这表示内核需要大约 5466 毫秒。
我用clGetEventProfilingInfo
for QUEUED
/ SUBMIT
/ START
/进行的第二次测量END
。
使用 4 个时间值,我可以计算在不同状态下花费的时间:
- 排队时间:0.06 毫秒,
- 提交时间:2733 毫秒,
- 执行时间:2731 ms(实际执行时间)。
我看到它加起来是 5466 毫秒,但是为什么它会在一半的时间内保持提交状态?
有趣的是:
提交状态始终是实际执行时间的一半,即使对于不同的内核或不同的工作负载(因此它不能是恒定的设置时间),
对于 CPU,提交状态的时间为 0,执行时间等于 gettimeofday 结果,
我在 Intel Ivy Bridge 上使用 CPU 和 GPU 在 Windows 上测试了我的内核,但我没有看到那里的效果。
有人有线索吗?
我怀疑 GPU 运行内核两次(导致 gettimeofday 是实际执行时间的两倍)或者函数 clGetEventProfilingInfo 对于 AMD GPU 无法正常工作。
cuda - 来自多个进程的并发 GPU 内核执行
我有一个应用程序,我想在多个进程之间共享一个 GPU。也就是说,这些进程中的每一个都将创建自己的 CUDA 或 OpenCL 上下文,以相同的 GPU 为目标。根据 Fermi 白皮书 [1],应用程序级别的上下文切换不到 25 微秒,但启动在 GPU 上启动时会被有效地序列化——因此 Fermi 不能很好地解决这个问题。根据 Kepler 白皮书 [2],有一种称为 Hyper-Q 的东西,它允许来自多个 CUDA 流、MPI 进程或进程中的线程的多达 32 个同时连接。
我的问题:有没有人在 Kepler GPU 上尝试过这个并验证了它的内核在从不同的进程调度时是同时运行的?这只是 CUDA 功能,还是也可以在 Nvidia GPU 上与 OpenCL 一起使用?AMD 的 GPU 是否支持类似的东西?
[2] http://www.nvidia.com/content/PDF/kepler/NVIDIA-Kepler-GK110-Architecture-Whitepaper.pdf
opencl - OpenCL 数据传输和 DMA
在 AMD APP 编程指南中写道(第 4-15 页):
对于 <=32 kB 的传输:对于从主机到设备的传输,数据由 CPU 复制到运行时固定的主机内存缓冲区,然后 DMA 引擎将数据传输到设备内存。从设备到主机的传输则相反。
上面的DMA,是CPU DMA引擎还是GPU DMA引擎?
java - 如何使用 Java 收集 AMD CPU 缓存命中率?
我正在用 Java 编写程序
在这个程序中,我正在读取和更改一组数据。这是代码示例:
顺便说一句,INDEX 数组以随机顺序包含 DATA 数组的索引,以防止预取。我通过在 INDEX 数组中使用随机索引来强制错过所有缓存访问。
现在我想通过收集有关其命中率的信息来检查 CPU 缓存的行为。
有没有为此目的开发的工具?如果没有,有什么技术吗?
compilation - 未安装卡的 AMD 和 NVIDIA OpenCL 内核的离线编译
我试图找出一种在不安装显卡的情况下执行 OpenCL 内核离线编译的方法。我已经安装了 SDK。
有没有人在没有为 NVIDIA 或 AMD 中的任何一个安装显卡的情况下编译 OpenCL 内核的经验。
谢谢
windows-7 - Windows 7 上的 OpenCL、AMD Radeon、Visual Studio 2010 - 如何开始?
我是 OpenCL 的新手,我想开始学习如何编写将在我的视频卡 (AMD Radeon 6970) 上运行的程序。我已经安装了 AMD 的 app SDK,这是我需要开始的吗?
我尝试构建他们包含的示例解决方案,但我得到了:
错误 C1083:无法打开包含文件:'d3dx10.h':没有这样的文件或目录 c:\users\...\simpledx10\SimpleDX10.hpp
我认为这是因为我安装了 DX11。我想我会自己做一个简单的程序来开始,但在搜索 Stack Overflow 和谷歌之后,我无法弄清楚我需要什么才能让它工作。
是否有任何有用的指南可供初学者使用 AMD 显卡让 OpenCL 在 Windows 中工作?
gcc - 多核 AMD 上的并行代码较慢
并行代码(openmp),在英特尔(linux)上使用 gcc 编译,在英特尔计算机上的运行速度比在具有两倍内核的 AMD 上运行得快得多。我看到所有内核都在使用中,但在 AMD 上需要大约 10 倍的 CPU 时间。我在 intel 编译器中听说过“cripple AMD”,但我使用的是 gcc!提前致谢
python-2.7 - 在 Geany Windows 7 64 位中将 NumPy 导入 Python2.7
我正在使用在 AMD 处理器上运行的 64 位 Windows 7。
我已经安装了python-2.7.3.amd64。
我已经安装了NumPy的相关(联合国官方)二进制文件。
当我导入 numpy 并开始通过 python 命令行调用它的函数时,一切正常。
但是,当我在 Geany 编辑器中执行相同操作时,一条错误消息告诉 python 现在没有任何名为 numpy 的模块:
ImportError:没有名为 numpy 的模块
因为我重新安装了 python 和 numpy 两次,但没有任何改变。
我想知道这个问题可能是因为 Geany 与联合国官方版本的 numpy 或 Windows 的 64 位性质或两者都有一些不兼容的事实?
也许我必须对 Geany 做一些进一步的配置才能将 numpy 引入它?为了解决这个困境的任何建议将不胜感激。
c - AMD xop 检查支持
我有下一个问题:我使用一些说明
进行了一些与 xop 检查相关的测试。
而且我必须只在处理器上运行这个测试。
如何在编译时检查我的处理器是否支持指令? Bulldozer (xop)
Bulldozer
xop
语言: C
,操作系统: Linux
;
gcc - AMD Opteron 4280 的 GCC 优化选项:基准测试
我们正在从一台配备 2*Xeon X5650 的本地计算服务器转移到另一台配备 2*Opteron 4280 的本地计算服务器......今天我试图在新机器(AMD 机器)上启动我精彩的 C 程序,并发现性能 > 50%,保持所有可能的参数相同(甚至随机数生成器的种子)。我开始研究这个问题:谷歌搜索“amd opteron 4200 编译器选项”给了我一些建议,即“标志”(选项)可供我使用 GCC 4.6.3 编译器。我玩弄了这些旗帜,并在这里总结了我的发现……
我不允许上传图片,所以图表在这里https://plus.google.com/117744944962358260676/posts/EY6djhKK9ab
我想知道是否有人(编码人员)可以就这个主题给我任何评论,尤其是我对“... -march=bdver1 -fprefetch-loop-arrays”和“... -fprefetch -loop-arrays -march=bdver1" 在不同的运行时产生?我也不确定,假设“-funroll-all-loops”是否已经包含在“-O3”或“-Ofast”中,为什么再添加一次这个标志会有任何不同呢?为什么英特尔处理器的任何额外标志都会使性能变得更糟(除了“-ffast-math” - 这很明显,因为据我了解,它通过定义浮点运算实现了不太精确和更快,虽然...... )?
关于机器和我的程序的更多详细信息:2*Xeon X5650 机器是具有 gcc 4.4.3 的 Ubuntu 服务器,它是 2(主板上的 CPU)X6(每个真实内核)*2(超线程)=24 线程机器,并且在我的“实验”或基准测试期间,它上面运行着一些东西......
2*Opteron 4280 机器是具有 gcc 4.6.3 的 Ubuntu 服务器,它是 2(主板上的 CPU)X4(每个真实内核=Bulldozer 模块)*2(AMD Bulldozer 任何线程=内核类型)=18 线程机器,我只是将它用于我美妙的“基准”......
我的基准测试程序只是一个蒙特卡洛模拟的东西,它在开始时会做一些 IO,然后大约 10^5 次 Mote Carlo 循环给我结果。所以,我假设它是整数和浮点计算程序,不时循环并检查随机生成的“结果”是否对我来说足够“好”......该程序只是一个单线程,我正在为每个基准测试使用相同的参数启动它(很明显,但我还是应该提到它),包括随机生成器种子(因此,结果是 100% 相同的)......该程序不是内存密集型的。结果运行时间只是标准“/usr/bin/time”命令的“用户”时间。