当我使用 Matlab 并行工具箱执行我的代码时,它在第一次和第二次之间给了我两个不同的时间执行。
实际上第一次很慢(比CPU版本还慢)但是第二次更快更合乎逻辑,后续的运行和第二次一样。为什么会发生这种情况?
这是正确的,也是预期的。
当你第一次调用它时,它需要初始化 GPU(在某种意义上“打开它”),设置 CUDA 上下文等。第二次运行它时,GPU 准备好接受你抛出的任何东西在它。
最重要的是,取决于您如何编写代码,也许第一次需要将一些数据移动到 GPU,也许在第二次内存已经存在。
通常这样做gpuDevice(1)
会足够初始化上下文,否则只需向它抛出一个小的矩阵乘法来初始化。
所有这些对于 MATLAB 中的其他并行计算范式来说都是正确的,例如,如果您想使用parfor
,则需要初始化并行池,否则第一次将花费很长时间。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句