我正在集群上运行matlab
优化作业CVX
,我尝试使用更多的 CPU 来加速计算,
#SBATCH --cpus-per-task=16
但是我发现优化工作中每次迭代的时间没有变化,我应该怎么做才能让它更快?
PS我的matlab
代码(test.m
)是,
m = 1600; n = 800;
A = randn(m,n);
b = randn(m,1);
gamma = logspace( -2, 2, 20 );
l2norm = zeros(size(gamma));
l1norm = zeros(size(gamma));
fprintf( 1, ' gamma norm(x,1) norm(A*x-b)\n' );
fprintf( 1, '---------------------------------------\n' );
for k = 1:length(gamma),
fprintf( 1, '%8.4e', gamma(k) );
tic;
cvx_begin
variable x(n);
minimize( norm(A*x-b)+gamma(k)*norm(x,1) );
cvx_end
toc
l1norm(k) = norm(x,1);
l2norm(k) = norm(A*x-b);
fprintf( 1, ' %8.4e %8.4e\n', l1norm(k), l2norm(k) );
end
我的slurm
剧本是,
#SBATCH --partition=debug
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --mem=20000
#SBATCH --output=./out.log
#SBATCH --error=./err.log
#SBATCH --time=00:30:00
#SBATCH --job-name=MATLAB-CVX
cat /proc/cpuinfo | grep "model name"
module purge
module load MATLAB/2020a
matlab -nodesktop -nosplash -r test