GPU MATLAB给出了第一次和第二次执行之间不同的运行时间



当我使用Matlab并行工具箱执行代码时,它会在第一次和第二次之间提供两个不同的时间执行。

事实上,第一次运行速度非常慢(比CPU版本更慢(,但第二次运行速度更快且符合逻辑,后续运行与第二次相同。为什么会发生这种情况?

这是正确的,也是意料之中的事。

当你第一次调用它时,它需要初始化GPU(在某种意义上"打开它"(,设置CUDA上下文等。第二次运行它时,GPU准备接受你扔给它的任何东西。

最重要的是,这取决于你是如何编写代码的,也许是第一次需要将一些数据移动到GPU,也许是第二次内存已经在那里了。

经常执行gpuDevice(1)将足够初始化上下文,但在其他情况下,只需向其抛出一个小矩阵乘法即可进行初始化。

所有这些在某种程度上适用于MATLAB中的其他并行计算范例,例如,如果你想使用parfor,你需要初始化并行池,否则第一次需要很长时间。

相关内容

  • 没有找到相关文章

最新更新