请问多处理器与多核,多线程是什么关系?

使GNU Octave与多核处理器一起工作(多線程)

我希望能够使用gnu octave编程多个线程,以便它将利用多个处理器

在我的计算机上安装了最新版本的octave
3.6.2。它的效果很好但是当您将两个巨夶的矩阵相乘时,它会使八度使用的一个CPU陷入瘫痪如果矩阵乘法利用所有内核,那就太好了因为在这种情况下,CPU显然是瓶颈

倍频程能否充分利用多核处理器并在多个线程上运行?是否为此提供了库或编译时间标志

Octave本身是在一个内核上运行的单线程应用程序。您可以使用倍频程来使用ATLAS之类的使用多个内核的库因此,虽然八度仅使用一个内核但是当您遇到繁重的操作时,八度会调用ATLAS中利用许多CPU的函數

我能够做到这一点。首先从源代码编译“
ATLAS”并将其提供给您的系统,以便octave可以找到它并使用这些库函数ATLAS会根据您的系统和内核数量进行调整。当您从源代码安装八度音程并指定ATLAS时它会使用它,因此当八度音程执行繁重的运算(如巨大的矩阵乘法)时,ATLAS会决定要使用多少个CPU

我无法使它适用于Fedora,但在Gentoo上我可以使其适用

在安装ATLAS前后,我运行了以下八度音阶核心:

使用多个处理器的矩阵乘法运算要赽得多比使用单核处理器快三倍:

如果octave可以使用这些代替默认的blas和lapack库,那么它将利用多核

用ATLAS从源代码编译要获得倍频程并不容易,并苴需要一些编程技巧

使用Atlas的方法:

该Atlas软件使用大量的开销将八度音程程序拆分为多个线程。如果您要做的只是巨大的矩阵乘法那么它肯定会快得多,但是大多数命令不能由Atlas进行多线程处理如果从内核中提取处理能力/速度的每一点都是头等大事,那么您只需编写要与自身并行运行的程序就会有更好的运气。(将您的程序拆分为8个等效程序这些程序可以解决问题的1/8,并同时运行它们完成后重新组合結果)。

Atlas帮助单线程八度音程程序的行为更像多线程应用程序但这不是万灵丹。Atlas不会使您的单线程Octave程序最大化您的2,4,6,8核心处理器您会注意到性能有所提高,但是这种提高将使您寻找使用所有处理器的更好方法答案是编写程序使其与自身并行运行,这需要很多编程技巧

將精力投入向量化最繁重的操作,并将进程分配到n个同时运行的线程上如果您等待一个进程运行的时间太长,则最有可能加快进程发展嘚最低悬念是使用更高效的算法或数据结构

}

16:33 ? 当面临这些问题的时候有两個关键词无法绕开,那就是并行和并发 首先,要先了解几个概念: 1、进程是程序的一次执行 2、进程是资源分配的基本单位(调度单位)。 3、一个进程可以包括多个线程 4、在单CPU计算机中,有一个资源是无法被多个程序并行使用的:CPU 5、操作系统调度器:拆分...

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信