【问题标题】:Is there a way to read directly from the hard drive to the GPU有没有办法直接从硬盘读取到GPU
【发布时间】:2013-06-25 02:34:16
【问题描述】:

在我的 OpenGL 程序中,我从头文件中读取几何大小,然后 malloc 一个索引数组和一个顶点数组,然后我将它们传递给 VBO,甚至可以直接从硬盘驱动器读取还是GPU 内存仅链接到计算机的 RAM?

【问题讨论】:

    标签: opengl opengl-es gpu ram hard-drive


    【解决方案1】:

    GPU 没有直接连接到系统 RAM。中间有一条总线,在当前一代计算机中,有一条 PCI-Express 总线。 ATA 存储之间有一个控制器。记忆之间没有直接联系。

    但是有DMA,它允许某些外围设备通过DMA通道直接访问系统内存。 PCI-Express 上的 DMA 也可以在外围设备之间工作。从理论上讲,GPU 可以对 ATA 控制器进行 DMA。

    实际上这没什么用!为什么?因为文件系统。即使有某种驱动程序支持让 GPU 直接访问存储外围设备,它仍然必须完成所有文件系统业务,而这并没有达到 GPU 所设计的并行程度。


    唉,关于你的问题:

    在我的 OpenGL 程序中,我从头文件中读取几何大小,然后 malloc 一个索引数组和一个顶点数组,然后我将它们传递给 VBO,甚至可以直接从硬盘驱动器读取还是GPU 内存仅链接到计算机的 RAM?

    为什么不简单地对这些文件进行内存映射?这样你就可以避免分配你第一次读入的缓冲区,并将内存映射文件指针传递给 OpenGL 确实允许驱动程序在存储驱动程序缓冲区和 GPU 之间实际执行 DMA 传输,它尽可能接近你原来的要求。当然,存储设备上的数据必须准备好适合GPU的格式,否则就没多大用处。如果它需要一些预处理,最好使用 CPU。 GPU 不喜欢序列化数据。

    【讨论】:

    • 我已经编程了一段时间,但我仍然对我在某些领域知之甚少感到惊讶,谢谢!
    猜你喜欢
    • 2012-05-15
    • 2016-09-20
    • 2015-02-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    相关资源
    最近更新 更多