Bypass guillimin problems : Différence entre versions
m |
m (→Make odel kill itself when getting stuck) |
||
Ligne 11: | Ligne 11: | ||
Instead of being under /tmp $TMPDIR will be under /localscratch on nodes where this file system exists (compute nodes):<br>''' mkdir ~/tmp<br> cd ~/tmp<br> ln -s /localscratch guillimin<br> ln -s /localscratch localhost<br>'''<br> | Instead of being under /tmp $TMPDIR will be under /localscratch on nodes where this file system exists (compute nodes):<br>''' mkdir ~/tmp<br> cd ~/tmp<br> ln -s /localscratch guillimin<br> ln -s /localscratch localhost<br>'''<br> | ||
− | === Make | + | === Make model kill itself when it gets stuck === |
− | Go into the directory in which you create your executables.<br><br>Copy the following file:<br> '''cp /home/winger/gem/v_3.3.3/Abs/CORDEX/dead_process_timer.c .'''<br> | + | Go into the directory in which you create your executables.<br><br>Copy the following file:<br> '''cp /home/winger/gem/v_3.3.3/Abs/CORDEX/dead_process_timer.c .'''<br> |
− | Create the corresponding *.o: | + | Create the corresponding *.o: |
− | '''333''' | + | '''333''' |
− | ''' r.make_exp''' | + | ''' r.make_exp''' |
− | (Ignore the warnings:<br>WARNING: file clib_interface.cdk not found<br>WARNING: file pthread.h not found<br>WARNING: file stdio.h not found<br>WARNING: file stdlib.h not found<br>WARNING: file unistd.h not found)<br><br>''' r.compile -src dead_process_timer.c<br> mv dead_process_timer.o malibLinux_x86-64_pgi11xx''' | + | (Ignore the warnings:<br>WARNING: file clib_interface.cdk not found<br>WARNING: file pthread.h not found<br>WARNING: file stdio.h not found<br>WARNING: file stdlib.h not found<br>WARNING: file unistd.h not found)<br><br>''' r.compile -src dead_process_timer.c<br> mv dead_process_timer.o malibLinux_x86-64_pgi11xx''' |
− | |||
− | + | (You can also copy it: | |
− | |||
− | Edit the routine 'gem_run.ftn'.<br>If you do not have it yet in your directory get it from the environment:<br> 333<br> omd_exp gem_run.ftn<br><br>In 'gem_run.ftn', before the beginning of the time step loop:<br> do istep = step0, stepf<br>add the line:<br> call start_dead_process_timer(60)<br>At the beginning of each time step, just after the line:<br> do istep = step0, stepf<br>add the line:<br> call I_am_alive()<br><br>So you will end up haveing something like this:<br>:<br> call itf_cpl_fillatm<br>*<br> call start_dead_process_timer(60)<br>*<br> do istep = step0, stepf<br>*<br> call I_am_alive()<br>*<br> Lctl_step = istep<br>:<br><br>Create the object file:<br> make gem_run.o<br>and the model executable:<br> make gemclimdm<br><br>Once you did this the model will kill itself | + | cp /home/winger/gem/v_3.3.3/Abs/CORDEX/malibLinux_x86-64_pgi11xx/dead_process_timer.o malibLinux_x86-64_pgi11xx <br> |
+ | |||
+ | |||
+ | |||
+ | Edit the routine 'gem_run.ftn'.<br>If you do not have it yet in your directory get it from the environment:<br> '''333'''<br> '''omd_exp gem_run.ftn'''<br><br>In 'gem_run.ftn', before the beginning of the time step loop:<br> do istep = step0, stepf<br>add the line:<br> call start_dead_process_timer(60)<br>At the beginning of each time step, just after the line:<br> do istep = step0, stepf<br>add the line:<br> call I_am_alive()<br><br>So you will end up haveing something like this:<br>:<br> call itf_cpl_fillatm<br>*<br> call start_dead_process_timer(60)<br>*<br> do istep = step0, stepf<br>*<br> call I_am_alive()<br>*<br> Lctl_step = istep<br>:<br><br>Create the object file:<br> '''make gem_run.o'''<br>and the model executable:<br> '''make gemclimdm'''<br><br>Once you did this the model will kill itself when a new time step has not been calculated within the last 60 seconds.<br>If you think your model will usually take more than 60 sec to compute one time step increase the time in "call start_dead_process_timer(60)" from 60 to whatever you think is adequate.<br> |
Version depuis le 30 de janvier 2012 à 22:17
How to avoid trouble on guillimin
Unfortunately guillimin is not a very "stable" machine and jobs often crash.
Here are a few tricks to bypass some of the machine's problems.
Have $TMPDIR under /localscratch
Instead of being under /tmp $TMPDIR will be under /localscratch on nodes where this file system exists (compute nodes):
mkdir ~/tmp
cd ~/tmp
ln -s /localscratch guillimin
ln -s /localscratch localhost
Make model kill itself when it gets stuck
Go into the directory in which you create your executables.
Copy the following file:
cp /home/winger/gem/v_3.3.3/Abs/CORDEX/dead_process_timer.c .
Create the corresponding *.o:
333
r.make_exp
(Ignore the warnings:
WARNING: file clib_interface.cdk not found
WARNING: file pthread.h not found
WARNING: file stdio.h not found
WARNING: file stdlib.h not found
WARNING: file unistd.h not found)
r.compile -src dead_process_timer.c
mv dead_process_timer.o malibLinux_x86-64_pgi11xx
(You can also copy it:
cp /home/winger/gem/v_3.3.3/Abs/CORDEX/malibLinux_x86-64_pgi11xx/dead_process_timer.o malibLinux_x86-64_pgi11xx
Edit the routine 'gem_run.ftn'.
If you do not have it yet in your directory get it from the environment:
333
omd_exp gem_run.ftn
In 'gem_run.ftn', before the beginning of the time step loop:
do istep = step0, stepf
add the line:
call start_dead_process_timer(60)
At the beginning of each time step, just after the line:
do istep = step0, stepf
add the line:
call I_am_alive()
So you will end up haveing something like this:
:
call itf_cpl_fillatm
*
call start_dead_process_timer(60)
*
do istep = step0, stepf
*
call I_am_alive()
*
Lctl_step = istep
:
Create the object file:
make gem_run.o
and the model executable:
make gemclimdm
Once you did this the model will kill itself when a new time step has not been calculated within the last 60 seconds.
If you think your model will usually take more than 60 sec to compute one time step increase the time in "call start_dead_process_timer(60)" from 60 to whatever you think is adequate.