c - APU 上的 OpenCL 是否能够使用整个内存?

标签 c opencl pyopencl

是否有可能构建一台具有 32GB RAM 的机器,并使用大约 28GB 的​​ OpenCL?

我当前的 APU 是 Athlon 5350,报告的“全局内存大小”为 2142658560。我使用 CL_MEM_USE_HOST_PTR 玩了一点 pyopencl,但我没有找到这样做的方法。

这可能吗? 可能与某些新一代 APU(例如 Ryzen Vega)一起使用?

注意:我是一名非专业人士和新手,我还没有花一个小时研究 OpenCL,因为在投入金钱和时间之前,我想知道这是否可能......如果这很抱歉是个愚蠢的问题。

最佳答案

是的,有可能拥有一台 32GB 的计算机并将其 ~28GB 的​​ RAM 用于任何程序。当您编写 OpenCL 程序时,所有内存空间(片上和片外)的管理都必须手动完成。我不认为你可以运行一个似乎直接访问 RAM 的 OpenCL 内核,但即使你可以,这也不是特别值得考虑的,因为 OpenCL 的力量在于对 RAM、L2 和 L1 的细粒度管理 -不允许程序员将他们的程序视为仅针对 RAM 运行。

花一些时间,深入研究内存管理,并非常牢固地掌握计算机的多个不同大小的内存空间、连接速度和连接带宽。

您似乎正在考虑购买大量 RAM 来解决您的问题。希望您能找到一种更好的方法来构建您的解决方案——一种不需要购买 128GB RAM 的方法。

也就是说,有些程序天生就很难并行化。对于这些程序,您可能只想购买大量 RAM(甚至可能完全跳过 OpenCL 而在 CPU 上运行)

关于c - APU 上的 OpenCL 是否能够使用整个内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50125282/

相关文章:

c - C 中是否有类似于 SQL 中的 LIKE 的函数来比较 2 个字符串?

c - 输出重定向或使用 fopen 创建的文件的大小限制?

python - 在 Windows 上安装 pyopencl

python - opencl 和 pyopencl 中的行和列主要

当总工作项很大时,opencl 原子操作不起作用

python - pyOpenCL 和 opencl4py 的区别

c - Accept() 调用不会初始化 sockaddr 结构

c - 无法返回数组在 C 中实际上意味着什么?

iphone - iPad或iPhone是否支持OpenCL?

macos - 如何使用 OSX 在 AMD GPU 上获取 OpenCL 内核的汇编代码