gpt4 book ai didi

performance - 更好的图形卡或更多的内核会使Mathematica更快吗?

转载 作者:行者123 更新时间:2023-12-04 01:38:38 35 4
gpt4 key购买 nike

通常,Mathematica是否可以自动(即,无需专门为此编写代码)利用GPU硬件和/或跨多个内核并行化内置操作?

例如,对于绘制单个非常占用CPU的图或求解一个非常占用CPU的方程式,升级图形硬件是否会加快速度?升级到具有更多内核的CPU会加快速度吗? (我意识到更多的核意味着我可以并行求解更多的方程式,但我对单方程式情况感到好奇)

只是试图了解Mathematica如何利用硬件。

最佳答案

我不会说Mathematica至少在一般情况下会自动执行GPU或Paralell-CPU计算。由于您需要对paralell内核进行某些操作,因此您应该初始化更多内核和/或上传CUDALink或OpenCLLink,并使用特定的Mathematica功能来利用CPU和/或GPU的潜力。

例如,我没有功能非常强大的图形卡(NVIDIA GeForce 9400 GT),但是我们可以测试CUDALink的工作方式。首先,我必须上传CUDALink:

Needs["CUDALink`"] 

我将测试大型矩阵的乘法。我选择一个在 5000 x 5000范围内的实数随机矩阵 (-1,1):
M = RandomReal[{-1,1}, {5000, 5000}];
现在我们可以在没有GPU支持的情况下检查计算时间
  In[4]:= AbsoluteTiming[ Dot[M,M]; ]

Out[4]= {26.3780000, Null}

并具有GPU支持
In[5]:= AbsoluteTiming[ CUDADot[M, M]; ]

Out[5]= {6.6090000, Null}

在这种情况下,通过使用CUDADot代替Dot,我们获得了大约4倍的性能提升。

编辑

为了添加并行CPU加速的示例(在双核计算机上),我选择 [2^300, 2^300 +10^6]范围内的所有素数。
首先不并行化:
In[139]:= AbsoluteTiming[ Select[ Range[ 2^300, 2^300 + 10^6], PrimeQ ]; ]

Out[139]= {121.0860000, Null}

在使用 Parallelize[expr]时,它使用自动并行化来评估expr
In[141]:= AbsoluteTiming[ Parallelize[ Select[ Range[ 2^300, 2^300 + 10^6], PrimeQ ] ]; ]

Out[141]= {63.8650000, Null}

可以预期,我们的评估速度快了将近两倍。

关于performance - 更好的图形卡或更多的内核会使Mathematica更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8638905/

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