是否有可能构建一台具有 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/