gpt4 book ai didi

c++ - 调用 opencl 需要多长时间?

转载 作者:太空狗 更新时间:2023-10-29 20:06:38 24 4
gpt4 key购买 nike

我目前正在实现一种算法,该算法在小矩阵和 vector 上分配线性代数。代码很快,但我想知道在 gpgpu 而不是 cpu 上实现它是否有意义。

作为预处理步骤,我能够将大部分矩阵和 vector 存储在 gpu 内存中,并分析乘法算法,当然,这些算法在 gpu 上的速度更快。

但现在我的真正问题是,如何确定从 cpu 调用 gpu 的开销?为了执行我的代码之类的事情,我丢失了多少个周期?

我希望有人能提供一些意见?

最佳答案

很难确定调用 OpenCL 的确切“开销”,因为 GPU 上的操作可以与 CPU 上运行的任何其他操作并行完成。例如,根据您的应用程序,您可以将一 block 数据从您的应用程序传输到 GPU,并并行地在 CPU 中对以下数据 block 进行一些预处理。同样,当代码在 GPU 上执行时,您可以在 CPU 上为将来需要的一些数据做一些准备工作。

到 GPU 的传输将通过 DMA 传输完成,通常速度非常快。根据我的经验,我能够在 4 毫秒的时间内将大约 4MB 的数据传输到 GPU(现代 GPU,现代主板),同时对之前发送的数据进行一些处理。由此看来,可以肯定地说您可以每秒将 1GB 的数据上传和下载到 GPU,并对这些数据进行一些处理。

在您的情况下,GPU 或 CPU 端将成为瓶颈。 CPU 端,如果它不能每秒向 GPU 提供 1GB 准备好的数据。这很可能受到磁盘 I/O 的限制。

要测试您的 GPU 路径,请设置一堆准备处理的数据缓冲区。您可能希望继续将该数据重新发送到 GPU,对其进行处理,然后下载结果(您将丢弃)。测量吞吐量并与应用程序的 CPU 版本的吞吐量进行比较。

不要只测量 GPU 处理部分,因为 GPU 上的传输和处理会竞争 GPU 内存 Controller 时间,并且会影响彼此的速度。

另外,如果您希望对小块数据有很好的响应时间,而不是好的吞吐量,您可能不会从通过 GPU 中获益,因为它会给您的处理带来一点延迟。

关于c++ - 调用 opencl 需要多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6954948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com