如果我仅用于 HPC,我是否真的需要 1 GB 的显卡内存?

如果我仅用于 HPC,我是否真的需要 1 GB 的显卡内存?

我有一台配备 2GB 内存的 Nvidia GT640,它要求我的电脑必须至少有 1 GB 的 RAM。我的电脑没有足够的 RAM(可能是 Raspberry Pi、CubieBoard、86 Duino One... 假设我最多有 512 MB RAM)。**此“环境”的目的是(例如)将数据发送到 gpu,计算(无论需要多长时间)并返回结果,仅此而已,没有图形显示。

那么,问题是,如果没有推荐的 1 GB RAM,显卡是否可以用于此目的?

此卡的系统要求:

  • 具有 PCI Express 或 PCI Express 2.0 标准的主板。
  • 双宽度 x16 显卡插槽。最低 200MB 可用硬盘。
  • 空间 需要至少 1GB 系统内存(建议 2GB)。
  • CD-ROM/DVD_ROM 用于安装驱动程序。

不适合玩游戏。

答案1

1 GB 是运行 Windows Vista(或更高版本)和 NVidia 驱动程序的绝对最低要求。
(即使有 1 GB,系统也会慢得令人难以忍受。2 GB 刚好可用。)

如果您不使用 Windows,它将使用 512 M。

我自己用 Geforce 660GT 做过这个。我使用了一个非常小的低内存占用 Linux 发行版 (Damn Small Linux) 对基于 GPU 的处理工具进行了一些实验。
我永远不会考虑将其用于任何严肃的工作。它的限制太多了。

由于系统 RAM 和视频卡之间传输数据的工作室仅限于非常小的缓冲区,因此卡的性能将受到限制。

为什么要将自己的系统 RAM 限制在如此低的水平是另一回事。
如今,4 GB 已经或多或少是低端、低内存计算机的标准。

答案2

全部在整个计算历史进程中,任何人、任何地方给出的“系统要求”数字都是估计

系统需求是估算值。这是事实,无可争议。

由于系统要求只是估计值,因此在许多情况下,可以设计系统(软件和硬件的组合),以便:

  • 不符合“最低”要求的系统仍然可以正常工作;或者
  • 尽管如此,还是优于或超出“推荐”要求的系统不要正常工作。

问题是,你的环境条件(异常的硬件或软件配置)是否会让你的使用案例超出系统要求的正常范围估计基于?

你原来的问题没有提供足够的细节来回答这个问题,但现在你已经多次编辑并提供了很多评论,看来你的用例可能足够特别以至于答案可能是“是”,而且你可能可以使用 512 MB 的 RAM。

虽然没有您在众多评论和编辑中提供的具体细节,但我通常会与大家分享一个适用于典型用户的普遍智慧,即安全起见,避免向人们提供错误的建议,然后让他们回来并说“您说它会起作用,但事实并非如此!!!!”111oneoneone:

由于 Nvidia 自己说你要求A最低限度1 GB 的系统 RAM 来使用他们的卡,我认为社区中的任何人给你除了以下建议之外的任何建议都是不负责任和不明智的:

如果硬件供应商说您需要 1 GB,那么您就需要 1 GB。就这样,故事结束。

当然,这种“普遍看法”是针对普通用户的,他们可能会安装 Windows 7、Ubuntu 13.10 或 Mac OS X Mavericks 等操作系统,这些操作系统本身就占用大量 RAM,更不用说 Nvidia 显卡驱动程序的要求了。但与所有估计一样,它是基于假设的,而这些假设不一定成立为你

原因Nvidia 指定 1 GB 可能是因为他们假设您将安装其专有图形驱动程序(我要补充的是,GPGPU 也需要该驱动程序),由于其极其复杂,占用空间很大。有控制面板应用程序、内核端驱动程序、用户空间驱动程序、与操作系统的集成,驱动程序甚至在每个请求 GPU 功能的用户进程中分配了相当大空间。这不仅适用于“图形”程序,也适用于使用 GPU 的任何其他程序(OpenCL、CUDA、DirectCompute 等),因为 GPU 命令是排队进而批处理缓冲区提交给 GPU。对命令(及相关数据)进行排队需要非零数量的 RAM 来存储排队期间的命令。

当然,如果你把这张卡当成一张没有任何 GPU 功能的标准 VGA“哑”卡,我相信你可以在没有 1 GB RAM 的情况下使用该卡的这一功能。但包装盒上真正说的是,要在典型的操作系统上利用 Nvidia 专有图形堆栈并加载典型的程序,你至少需要那么多 RAM。

最低限度意味着使用低于该值可能会导致系统不稳定,或者根本无法工作,这是基于 Nvidia 在估计系统要求(再次,典型的操作系统、典型的程序负载)时所做的假设。

您也许可以怂恿某人告诉您,用更少的内存也可以解决问题,但除非有人真的使用您打算使用的操作系统和用户空间程序负载测试过这个特定的显卡和恰好 512 MB 的 RAM,并且发现它运行良好,否则我不会相信他们。

考虑到现代操作系统通常甚至不会安装除非您有 1 GB 的 RAM,并且任何最初配置了 512 MB RAM 的系统很可能太旧了,甚至无法插入 PCI-E 2.0 卡,否则您使用这种极低的 RAM 和这种 GPU 构建工作配置的可能性非常小,除非:

  • 您安装了一个绝对基本的操作系统;
  • 您正在运行 GPGPU 工作负载,该工作负载非常特殊,不需要持续的高 CPU 到 GPU 吞吐量或非常大的数据集(理想情况下存储在(大量)RAM 中而不是磁盘或网络上);
  • 你使用的 GPU 非常低端,其基本性能非常差,以至于不是将全宽 PCI-E 2.0 x16 插槽连接到 CPU 的专用点对点系统总线可带来显著优势;
  • 您编写的(或下载和安装的)使用 GPU 的程序并不会以在与 GPU 交互时分配非常大的数据缓冲区的方式进行编码,也不会导致 Nvidia 图形驱动程序分配如此大的缓冲区;
  • 在 GPU 上完成的计算结果可以有效率的由 CPU 处理成更小的数据集,然后可以传输出去通过高速以太网上行链路实现嵌入式系统的通信。

如果你的工作量不满足这些条件,那么这真的是一个失败的提议。


(有点题外话)

好的,但看起来你对小型嵌入式设备上的 GPGPU 非常感兴趣。我认为你在这里发现了一些问题,但你肯定不会使用 Arduino 或 Raspberry Pi 的当前版本完成任何重要的工作。以下是我能看到的情况:

  • 发布了更多支持 64 位(ARM64)的现代四核(或更好) ARM 芯片。
  • Nvidia 驱动程序开始在 GNU/Linux 上支持 ARM64。
  • 嵌入式 ARM SoC 配备 4 GB 或更大的 LP-DDR3 RAM,并可访问快速闪存和全宽 PCI-E 插槽。

从这个硬件平台(与你在原帖中提出的相差甚远)来看,我可以看到 GPGPU 在这些系统上是可行的,尽管在这种配置下,由于系统内存和系统总线的性能是限制因素,你可能仍会“饿死”GPU(无法 100% 利用它),因此购买它会更具成本效益更少,基于x86-64的高端系统,具有更快的平台。

比较这些假设的规格:

GeForce GT640
ARM64 Cortex-A57 四核 @ ~2GHz 带??? FSB(ARM 互连 IP?)
4 GB LP-DDR3 RAM
128 GB mSATA SSD

对阵

GeForce GTX TITAN(或 Tesla)
Core i7-4770K(或 Xeon 同等级别),带 DMI 2.0(CPU 和 PCH 之间的链路为 20 Gb/s)
32 GB DDR3-1600
128 GB 2.5 英寸 SATA 6 Gb/s SSD

问题变成了您需要多少个 ARM 系统才能达到 x86-64 系统的性能。很有可能,实现同等性能所需的 ARM 系统数量将使每瓦性能水平偏向 x86-64 系统。这是因为您需要为每个 ARM 逻辑单元配备单独的 PSU、单独的主板、单独的以太网控制器、单独的 RAM 芯片等,而使用 x86-64 系统,您只需要一个集中式平台控制器集线器,该集线器具有非常高的吞吐量和非常高效的 TDP(CPU 通常在 65W 左右)。更宽的总线和点对点互连意味着,只有当您的代码效率低下时,GPU 才会耗尽,但编写完全利用 GPU 的代码应该相当容易。

答案3

你的问题是“这会起作用吗”

这取决于您正在从事的 HPC 工作的具体类型,但很有可能。

为了比较,我有 2 个 ATI 5850,它们类似的系统要求

我的卡是在具有 512 MB RAM 的核心双核处理器上进行比特币挖掘,没有任何问题。

与其他答案所说的它不起作用或您会看到交换相反,我会告诉您,您可以在少于 1GB 的 RAM 上运行该卡。

相关内容