2

我正在我的研究实验室分析 EMG 数据。其中一个步骤是计算数据集的连续小波变换(大小约为 80000)。因此,我使用带有小波工具箱的 Matlab 和“cwt”来绘制 3D 尺度图。

计算需要大量时间,并且几乎不可能进行任何交互,例如 3D 旋转(这对于查看数据的不同方面非常重要)。

资源监视器显示我的六核处理器中只有一个在工作。我将并行计算用于其他计算,但没有找到任何解决方案,甚至没有找到类似的问题。

我可以做些什么来激活对绘图的多核支持?

4

2 回答 2

1

我会冒险进行有根据的猜测并为您的问题的答案“否”而丰满有什么我可以做的来激活对情节的多核支持吗?

Matlab 当然可以使用多个内核进行计算。它的许多内在函数已经是多线程的,并且将使用任何可用的内核,而程序员(或用户)不必采取任何特殊措施。对于您自己的计算,您可以使用并行计算工具箱。

然而,除非你有一些非常特殊的图形硬件(如果你有,为什么不提?)你的显示器会告诉你为什么当你与你的 3D 绘图交互时只使用一个处理器——在屏幕和屏幕之间的某个地方。您的计算机的硬件存在一个瓶颈,所有这些内核的输出通过该瓶颈被压缩到一个位和字节流中以供呈现。

您的经验与 Matlab 可视化例程的瓶颈是一致的,我认为从您提供的证据中可以安全地得出结论,Mathworks 没有多线程计算绘图中每个元素的新屏幕位置的例程为您可以旋转它,或进行任何其他处理以将分析结果转换为一张或多张图片。如果他们确实并行化了这些例程,那将改变瓶颈但不会消除它。

要消除瓶颈,您必须有一种方法让不同的 Matlab 线程分别处理屏幕的不同部分;我没有看到任何证据表明 Matlab 具有这种能力。Google 会为您找到大量对并行渲染的引用,但我没有看到 Matlab 目前实现了这方面的任何方面的迹象。

我只是补充一下,作为对您写的评论的回应,不幸的是我无法重新采样我的数据,您应该注意,Matlab 的可视化例程正在重新采样您的数据以进行演示,除非您仅可视化样本数量少于可用的像素数。如果您在水平 2000 像素的显示器上可视化具有 80000 个样本的时间序列,则必须给出一些东西。

如果您自己负责重新采样,您可能会获得更好的图形性能和更好的理解。

于 2012-07-10T14:31:02.287 回答
1

Matlab 的绘图性能很差,它更注重可定制性而不是性能。使用 MEX 运行一些本机 C++ 代码以使用 OpenGL 绘制数据可能会快得多。

于 2012-07-10T14:38:29.350 回答