diff options
| author | redpony <redpony@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-08-10 20:03:53 +0000 | 
|---|---|---|
| committer | redpony <redpony@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-08-10 20:03:53 +0000 | 
| commit | 963b7b96576de000a743ef377c439ea5c6787e2e (patch) | |
| tree | c44b113de22473a74b831867dd2c8fed8d4d56f4 /environment/LocalConfig.pm | |
| parent | 86ae2fcf6207630c03ec222131346a6fd8fee10a (diff) | |
support for running in multiple environments which are automatically detected
git-svn-id: https://ws10smt.googlecode.com/svn/trunk@501 ec762483-ff6d-05da-a07a-a48fb63a330f
Diffstat (limited to 'environment/LocalConfig.pm')
| -rw-r--r-- | environment/LocalConfig.pm | 68 | 
1 files changed, 68 insertions, 0 deletions
diff --git a/environment/LocalConfig.pm b/environment/LocalConfig.pm new file mode 100644 index 00000000..e4269361 --- /dev/null +++ b/environment/LocalConfig.pm @@ -0,0 +1,68 @@ +package LocalConfig; + +use strict; +use warnings; + +use base 'Exporter'; +our @EXPORT = qw( qsub_args mert_memory environment_name ); + +use Net::Domain qw(hostname hostfqdn hostdomain domainname); + +my $host = domainname; + +# keys are: HOST_REGEXP, MERTMem, QSubQueue, QSubMemFlag, QSubExtraFlags +my $CCONFIG = { +  'LTICluster' => { +    'HOST_REGEXP' => qr/^cluster\d+\.lti\.cs\.cmu\.edu$/, +    'QSubMemFlag' => '-l pmem=', +    'QSubQueue' => '-q long', +  }, +  'UMIACS' => { +    'HOST_REGEXP' => qr/^d.*\.umiacs\.umd\.edu$/, +    'QSubMemFlag' => '-l pmem=', +    'QSubQueue' => '-q batch', +    'QSubExtraFlags' => '-l walltime=144:00:00', +  }, +  'CLSP' => { +    'HOST_REGEXP' => qr/\.clsp\.jhu\.edu$/, +    'QSubMemFlag' => '-l mem_free=', +    'MERTMem' => '9G', +  }, +  'Valhalla' => { +    'HOST_REGEXP' => qr/^(thor|tyr)\.inf\.ed\.ac\.uk$/, +  }, +}; + +our $senvironment_name; +for my $config_key (keys %$CCONFIG) { +  my $re = $CCONFIG->{$config_key}->{'HOST_REGEXP'}; +  die "Can't find HOST_REGEXP for $config_key" unless $re; +  if ($host =~ /$re/) { +    $senvironment_name = $config_key; +  } +} + +die "NO ENVIRONMENT INFO FOR HOST: $host\nPLEASE EDIT LocalConfig.pm\n" unless $senvironment_name; + +our %CONFIG = %{$CCONFIG->{$senvironment_name}}; +print STDERR "**Environment: $senvironment_name\n"; + +sub environment_name { +  return $senvironment_name; +} + +sub qsub_args { +  my $mem = shift @_; +  die "qsub_args requires a memory amount as a parameter, e.g. 4G" unless $mem; +  my $mf = $CONFIG{'QSubMemFlag'} or die "QSubMemFlag not set for $senvironment_name"; +  my $cmd = "qsub -S /bin/bash ${mf}${mem}"; +  if ($CONFIG{'QSubQueue'}) { $cmd .= ' ' . $CONFIG{'QSubQueue'}; } +  if ($CONFIG{'QSubExtraFlags'}) { $cmd .= ' ' . $CONFIG{'QSubExtraFlags'}; } +  return $cmd; +} + +sub mert_memory { +  return ($CONFIG{'MERTMem'} || '2G'); +}; + +1;  | 
