我想使用以下方法在HPC服务器上提交串行matlab脚本:
代码:
#!/bin/bash
#$ -N matlabjob
#$ -q all.q
#$ -pe mpi 1
/opt/matlab/bin/matlab -nodesktop -nosplash -r "run /home/abhishekb/Matlab/new.m;quit" > out.txt
错误:
License checkout failed.
License Manager Error -15
MATLAB is unable to connect to the license server.
Check that the license manager has been started ,and that the MATLAB client machine can communicate
with the license server.
Troubleshoot this issue by visiting:
http://www.mathworks.com/support/lme/R2013b/15
Diagnostic Information:
Feature: MATLAB
License path: /home/abhishekb/.matlab/R2013b_licenses:/opt/matlab/licenses/license.dat:/opt/matlab/licenses/networ
k.lic
Licensing error: -15,570. System Error: 115
但这不起作用,因为IT人告诉我“ 因为我们没有分布式计算许可证所以matlab的并行作业无法运行“。
所以我尝试将它作为背景运行:
#!/bin/bash
nohup /opt/matlab/bin/matlab -nodesktop -nosplash -r "run /home/abhishekb/Matlab/New_edited3.m;quit" > output.log </dev/null &
echo $! > save_pid.txt
但似乎运行速度令人难以忍受。即使阅读.csv文件也需要时间。我只是根据输出间隔来比较我的电脑上的运行。
有人可以帮我提交一份不需要“matlab的分布式计算许可证”的串行作业。如果这是有道理的。
我使用qsub
提交工作。
编辑:
>> mcc -m automate.m
Undefined function 'mcc' for input arguments of type 'char'.
>> ver
------------------------------------------------------------------------------**strong text**----------------------
MATLAB Version: 8.2.0.701 (R2013b)
MATLAB License Number: _______
Operating System: Linux 2.6.32-431.11.2.el6.x86_64 #1 SMP Tue Mar 25 19:59:55 UTC 2014 x86_64
Java Version: Java 1.7.0_11-b21 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
----------------------------------------------------------------------------------------------------
MATLAB Version 8.2 (R2013b)
Simulink Version 8.2 (R2013b)
Bioinformatics Toolbox Version 4.3.1 (R2013b)
Communications System Toolbox Version 5.5 (R2013b)
Computer Vision System Toolbox Version 5.3 (R2013b)
Control System Toolbox Version 9.6 (R2013b)
Curve Fitting Toolbox Version 3.4 (R2013b)
DSP System Toolbox Version 8.5 (R2013b)
Fixed-Point Designer Version 4.1 (R2013b)
Global Optimization Toolbox Version 3.2.4 (R2013b)
Image Processing Toolbox Version 8.3 (R2013b)
Neural Network Toolbox Version 8.1 (R2013b)
Optimization Toolbox Version 6.4 (R2013b)
Parallel Computing Toolbox Version 6.3 (R2013b)
Partial Differential Equation Toolbox Version 1.3 (R2013b)
RF Toolbox Version 2.13 (R2013b)
Signal Processing Toolbox Version 6.20 (R2013b)
SimBiology Version 4.3.1 (R2013b)
Statistics Toolbox Version 8.3 (R2013b)
Symbolic Math Toolbox Version 5.11 (R2013b)
Wavelet Toolbox Version 4.12 (R2013b)
>>
答案 0 :(得分:3)
tl;博士:让你的&#34; IT人员#34;解决这个问题。我们不能。
我可能会因为我更好的判断而回答这个问题。
您正在提交作业&#34;连续&#34;因为#$ -pe mpi 1
选项指定您只需要1个节点。您的Matlab代码无法运行的原因是HPC上Matlab许可证服务器的配置存在问题。除了修复配置之外,没有解决方法。 Mathworks为您提供调试的起点。但是,您很可能无法满足并且需要您的#34; IT人员#34;或者那些管理你的HPC的人。
要在后台提交作业时添加到此处,您还可以连续提交#34;&#34;。它运行起来非常慢,因为它运行在1核心上,这可能也处理来自其他用户的请求,因为这就是所谓的头(或登录)节点。相比之下,当您在自己的计算机上执行此代码时,它很可能利用多个核心而不是头节点上可用的单核心。
感谢@ Andras Deak回答question in my comment,这使我能够在他的帮助下推理出答案。
答案 1 :(得分:1)
解决此问题的方法之一是使用mcc编译Matlab代码来创建可执行文件
示例:
我们需要将脚本转换为函数,让我们假设new.m执行一个简单的hello world
for iter = 1 : 10
fprintf('Hello, world %d \n', iter);
end
到函数
function hello
for iter = 1 : 10
fprintf('Hello, world %d \n', iter);
end
然后使用mcc生成可执行文件。
mcc -m new.m
这会生成文件:new, new_main.c, new_mcc_component_data.c, new.prj
并且可执行文件是new
。
您现在可以像在Linux中的任何其他可执行文件一样运行new。
如果您使用调度程序提交作业,则可以将可执行文件new作为要在提交脚本中调用的命令。