使用MATLAB并行计算功能提高多核系统性能
2009-12-13 22:12:11| 分类:matlab相关| 标签:|字号大中小订阅
maxNumCompThreads 命令
由于处理器时钟频率的限制,增加核并不意味着是计算性能的提高。为了充分利用新的多核硬件在性能上的优势,软件的基层结构需要向并行计算转换。MATLAB并行计算工具箱就是这种需求的产物,它能很好地实现在多核系统上进行并行运算。文章以典型的数值计算问题为例描述如何使用基本的两种并行
运算方式:线程和并行for循环。
典型数值计算问题
为了举例说明这两种方法,我们使用MATLAB 测试一个有关Girko圆定律的假设。Girko圆定律的内容是:一个N×N的随机矩阵(它的元素服从正态分布)的特征值位于半径为的圆内。假设Girko圆定律能被修改应用到奇异值上。这个假设是合理的因为奇异值是一个变换了的矩阵的特征值。首先我们用
MATLAB代码实现Girko圆定律的一个实例:
N = 1000;
plot(eig(randn(N)) / sqrt(N), ‘.’);
这段代码运行后得到图1,图上每个点代表复平面上一个特征值。注意所有的特征值都位于半径为1 ,圆心在轴的原点的圆内,特别指出的是结果与Girko圆定律是一致的,特征值的幅值没有超过矩阵维
数的平方根。
图1 大小为1000的随机矩阵的特征值在半径为sqrt(1000)的圆内
为了将Girko定律应用到奇异值分解上,我们用MATLAB生成随机矩阵,然后估算它们的奇异值,看是否能基于数值计算阐明这个假设。我们用任意变量N计算max(svd(randn(N)))的值,然后在结果中寻找规律,而这个规律是可以用奇异值分解的理论解释的。
通过下面的循环产生正规随机矩阵,并计算它们的奇异值: