我正在我的研究实验室分析肌电图数据。步骤之一是计算数据集(大小~80000)的连续小波变换。因此,我使用 Matlab 以及小波工具箱和“cwt”来绘制 3D 尺度图。
计算需要大量时间,并且像 3D 旋转(这对于查看数据的不同方面非常重要)之类的任何交互几乎是不可能的。
资源监视器显示我的六核处理器中只有一个正在工作。我使用并行计算进行其他计算,但没有找到任何解决方案,甚至没有找到类似的问题。
我可以做些什么来激活绘图的多核支持吗?
最佳答案
我会冒险进行一个有根据的猜测,并回答您的问题否我可以做些什么来激活绘图的多核支持吗?
Matlab 当然可以使用多个内核进行计算。它的许多内在函数已经是多线程的,并且将使用任何可用的内核,而程序员(或用户)无需采取任何特殊措施。对于您自己的计算,您可以使用并行计算工具箱。
但是,除非您有一些非常特殊的图形硬件(如果您有,为什么不提及它?),您的显示屏会向您显示为什么当您与 3D 绘图交互时只使用一个处理器 - 介于屏幕和计算机硬件存在一个瓶颈,所有这些内核的输出都被压缩成一个比特和字节流以进行演示。
您的经验与 Matlab 可视化例程的瓶颈是一致的,我认为从您提供的证据可以安全地得出结论,Mathworks 没有对计算每个元素的新屏幕位置的例程进行多线程处理旋转绘图时的绘图,或将分析结果转换为一张或多张图片的任何其他处理。如果他们确实并行化这些例程,这将改变瓶颈,但不会消除它。
要消除瓶颈,您必须有一种方法让不同的 Matlab 线程分别处理屏幕的不同部分;我没有看到任何证据表明 Matlab 具有这种能力。 Google 会发现大量关于并行渲染的引用文献,但我没有看到任何迹象表明 Matlab 目前实现了并行渲染的任何方面。
我只是补充一下,为了回应您所写的评论,不幸的是,我无法对我的数据进行重新采样,您应该注意 Matlab 的可视化例程正在对您的数据进行重新采样以进行演示,除非您仅可视化样本数量少于可用像素数量的数据集。如果您在水平 2000 像素的显示器上可视化包含 80000 个样本的时间序列,则必须做出一些调整。
如果您自己负责重新采样,您可能会获得更好的图形性能和更好的理解。
关于matlab - Matlab 可以使用多个处理器进行绘图和绘图中的交互吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11397687/