0

我正在集群上运行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
4

0 回答 0