source: issm/trunk/src/m/clusters/eric-mac.m@ 5980

Last change on this file since 5980 was 5980, checked in by Mathieu Morlighem, 14 years ago

more flexible call to cluster

File size: 3.4 KB
RevLine 
[5954]1%ERIC-MAC class definition
2%
3% Usage:
4% cluster=eric-mac();
5%
[5980]6classdef ericmac
[5954]7 properties (SetAccess=public)
[5980]8 % {{{1
9 name='eric-mac'
10 login='larour';
11 np=3;
12 port=0;
13 codepath=[issmdir() '/bin'];
14 executionpath=[issmdir() '/../execution'];
15 valgrind=[issmdir() '/externalpackages/valgrind/install/bin/valgrind'];
16 valgrindlib=[issmdir() '/externalpackages/valgrind/install/lib/libmpidebug.so'];
17 valgrindsup=[issmdir() '/externalpackages/valgrind/issm.supp'];
18 %}}}
[5954]19 end
20 methods
[5980]21 function cluster=ericmac(varargin) % {{{1
22 options=pairoptions(varargin{:});
23 for i=1:size(options.list,1),
24 fieldname=options.list{i,1};
25 fieldvalue=options.list{i,2};
26 if ismember(fieldname,properties(ericmac)),
27 cluster.(fieldname)=fieldvalue;
28 else
29 disp(['''' fieldname ''' is not a property of cluster ericmac']);
30 end
31 end
32 end
33 %}}}
34 function disp(cluster) % {{{1
35 % display the object
36 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
37 disp(sprintf(' name: %s',cluster.name));
38 disp(sprintf(' login: %s',cluster.login));
39 disp(sprintf(' np: %i',cluster.np));
40 disp(sprintf(' port: %i',cluster.port));
41 disp(sprintf(' codepath: %s',cluster.codepath));
42 disp(sprintf(' executionpath: %s',cluster.executionpath));
43 disp(sprintf(' valgrind: %s',cluster.valgrind));
44 disp(sprintf(' valgrindlib: %s',cluster.valgrindlib));
45 disp(sprintf(' valgrindsup: %s',cluster.valgrindsup));
46 end
47 %}}}
48 function IsConsistent(cluster) % {{{1
49 if cluster.np>4,
50 error('IsConsistent error message: number of processors should be lest than 16!');
51 end
52 if isnan(cluster.np),
53 error('IsConsistent error message: number of processors should not be NaN!');
54 end
55 end
56 %}}}
57 function BuildQueueScript(cluster,modelname,analysis_type,mem_debug) % {{{1
[5954]58
[5980]59 %open file for writing:
60 fid=fopen([modelname '.queue'],'w');
[5954]61
[5980]62 %write instructions for launching a job on the cluster
63 fprintf(fid,'#!/bin/sh\n');
64 if mem_debug==0,
65 fprintf(fid,'mpirun -np %i %s/issm.exe %s %s %s.bin %s.petsc %s.outbin %s.lock 2> %s.errlog >%s.outlog & ',cluster.np,cluster.codepath,EnumToString(analysis_type),cluster.executionpath,modelname,modelname,modelname,modelname,modelname,modelname);
66 else
67 %fprintf(fid,'LD_PRELOAD=%s mpirun -np %i %s --leak-check=full --gen-suppressions=all --suppressions=%s %s/issm.exe %s %s %s.bin %s.petsc %s.outbin %s.lock 2> %s.errlog >%s.outlog & ',cluster.valgrindlib,cluster.np,cluster.valgrind,cluster.valgrindsup,cluster.codepath,EnumToString(analysis_type),cluster.executionpath,modelname,modelname,modelname,modelname,modelname,modelname);
68 fprintf(fid,'LD_PRELOAD=%s mpirun -np %i %s --leak-check=full --suppressions=%s %s/issm.exe %s %s %s.bin %s.petsc %s.outbin %s.lock 2> %s.errlog >%s.outlog & ',cluster.valgrindlib,cluster.np,cluster.valgrind,cluster.valgrindsup, cluster.codepath,EnumToString(analysis_type),cluster.executionpath,modelname,modelname,modelname,modelname,modelname,modelname);
69 end
[5954]70
[5980]71 %close file
72 fclose(fid);
73
74 end
75 %}}}
76 function command=LaunchCommand(cluster,modelruntimename,modelname)% {{{1
77 command=['cd ' cluster.executionpath ' && rm -rf ./' modelruntimename ' && mkdir ' modelruntimename ' && cd ' modelruntimename ' && mv ../' modelruntimename '.tar.gz ./ && tar -zxf ' modelruntimename '.tar.gz && source ' modelname '.queue '];
78 end
79 %}}}
[5954]80 end
81end
Note: See TracBrowser for help on using the repository browser.