AMD CPU在MATLAB上的表现实测
程序员文章站
2022-03-27 21:40:55
硬件平台:AMD 3700x、16g 3200内存...
AMD Ryzen 7 3700X
MATLAB R2019a(9.6.0.1072779)
测试项目
矩阵计算
首先,来编写一段性能测试程序,主要的测试项目有矩阵乘法、稀疏矩阵、逆矩阵、FFT、LU、QR、奇异值分解、特征值与特征向量,每项测试进行三遍取均值。
%%%%%%%%%%%% MATLAB纯CPU性能测试 %%%%%%%%%%%
%%%%%%%%%%%% Haotian_W SEPT 2020 %%%%%%%%%%%
clear, clc
A = rand(3e3);
B = rand(3e3);
num = 3;
T = zeros(8,num);
for i = 1:num
% Test1 乘法
tic, X1 = A*B; T(1,i) = toc;
% Test2 稀疏矩阵
tic, X2 = sparse(A); T(2,i) = toc;
% Test3 逆矩阵
tic, X3 = inv(A); T(3,i) = toc;
% Test4 快速傅里叶
tic, X4 = fft(A); T(4,i) = toc;
% Test5 LU分解
tic, [L5,U5,P5] = lu(A); T(5,i) = toc;
% Test6 QR分解
tic, X6 = qr(A); T(6,i) = toc;
% Test7 奇异值分解
tic, [U7,S7,V7] = svd(A); T(7,i) = toc;
% Test8 特征值与特征向量
tic, [V8,D8] = eig(A); T(8,i) = toc;
end
% 各项测试平均时间
t = sum(T,2)./num;
disp(['Multiplication : ' sprintf('%6f',t(1))])
disp(['Sparse : ' sprintf('%6f',t(2))])
disp(['Inverse : ' sprintf('%6f',t(3))])
disp(['FFT : ' sprintf('%6f',t(4))])
disp(['LU : ' sprintf('%6f',t(5))])
disp(['QR : ' sprintf('%6f',t(6))])
disp(['SVD : ' sprintf('%6f',t(7))])
disp(['Eigen : ' sprintf('%6f',t(8))])
% Total
total = sum(t);
disp('----------------------------')
disp(['Total : ' sprintf('%6f',total)])
% https://blog.csdn.net/BAR_WORKSHOP/article/details/108224394
% i5-7400 R2017a
Multiplication : 0.412246
Sparse : 0.083916
Inverse : 0.779796
FFT : 0.080855
LU : 0.379976
QR : 0.416257
SVD : 13.316459
Eigen : 20.372446
----------------------------
Total : 35.841952
% AMD 3700X R2019a 优化前
Multiplication : 0.758483
Sparse : 0.047772
Inverse : 1.036525
FFT : 0.030290
LU : 0.336546
QR : 0.501219
SVD : 6.163582
Eigen : 12.077816
----------------------------
Total : 20.952232
% 在没有优化的R2019a中,3700X部分项目甚至还没有i5-7400快
% AMD 3700X R2019a 优化后
Multiplication : 0.185732
Sparse : 0.047977
Inverse : 0.257886
FFT : 0.022052
LU : 0.117283
QR : 0.172766
SVD : 3.998370
Eigen : 7.863378
----------------------------
Total : 12.665444
方法一 批处理启动
在cmd中输入以下命令运行matlab。
@echo off
set MKL_DEBUG_CPU_TYPE=5
call "%MKLROOT%\bin\mklvars.bat" MKL_DEBUG_CPU_TYPE=5
matlab.exe
方法二 修改环境变量
在控制面板里找到“编辑系统环境变量”,选择“高级-环境变量”,找到或者新建 MKL_DEBUG_CPU_TYPE,值为 5。和上面的不同是,修改完环境变量后会影响所有使用MKL的程序。
本文地址:https://blog.csdn.net/BAR_WORKSHOP/article/details/108224394