wiki:Docs/PostProcessingAppArcherSetup

Version 4 (modified by ros, 2 years ago) (diff)

ARCHER specific setup instructions for data transfer to JASMIN

If you wish to transfer files from the RDF to JASMIN using the transfer app then you will need to make the following changes in addition to those detailed on the Post Processing App page.

Suite Modifications

rose-suite.conf

  1. Add PPTRANSFER=true
  1. The PPTRANSFER variable will, by default, appear under "suite conf → jinja2". To tell Rose to place it with all the other suite control switches under "suite conf → Build and Run" edit meta/rose-meta.conf to add in the metadata for the PPTRANSFER variable. (This step is optional.)
    [jinja2:suite.rc=PPTRANSFER]
    compulsory=true
    description=Transfer files archived with PostProc to a remote machine
    help=
    ns=Build and Run
    sort-key=runPostproc1
    title=PP Transfer
    type=boolean
    

suite.rc

  1. Add the build & run of pptransfer task into the cylc graph initial cycle.

[To Do: Add in/change to cater for suites with the "SITE" setup]

Add the line:

{{ 'fcm_make_pptransfer => fcm_make2_pptransfer' + (' => pptransfer' if RUN else '') if PPTRANSFER else '' }}

to the cylc graph for the initial cycle, indicated by [[[ R1 ]]]. For example: (insertion indicated by "⇐ Add line here")

    [[dependencies]]
        [[[ R1 ]]]
            graph = """
{{ 'fcm_make_pp => fcm_make2_pp' + (' => postproc' if RUN else '') if POSTPROC else '' }}
{{ 'fcm_make_pptransfer => fcm_make2_pptransfer' + (' => pptransfer' if RUN else '') if PPTRANSFER else '' }}    <== Add line here
{{ 'fcm_make_ocean => fcm_make2_ocean' + (' => recon' if RECON else ' => coupled' if RUN else '') if BUILD_OCEAN else '' }}
{{ 'fcm_make_um => fcm_make2_um' + (' => recon' if RECON else ' => coupled' if RUN else '') if BUILD_UM else '' }}
{{ 'install_ancil => recon ' if RECON else ('install_ancil => coupled' if RUN else '')}}
{{ 'recon' + (' => coupled' if RUN else '') if RECON else '' }}
{{ 'clearout' + (' => coupled' if RUN else '') if CLEAROUT else '' }}
"""
  1. Add the pptransfer task into the graph for all subsequent cycles such that it runs after the postproc task and also waits for the previous pptransfer task to complete. As an example for a coupled suite (All added lines indicated with "⇐"):
            [[[ {{FMT}} ]]]
                graph = """
    {% if RUN %}
    coupled[-{{FMT}}] => coupled {{ '=> \\' if POSTPROC or HOUSEKEEP else '' }}
      {% if POSTPROC %}
    postproc {{ '=> \\' if PPTRANSFER or HOUSEKEEP else '' }}     <= "PPTRANSFER or" added here
      {% endif %}
      {% if PPTRANSFER %}                                         <=
    pptransfer {{ '=> \\' if HOUSEKEEP else '' }}                 <=
      {% endif %}                                                 <=
      {% if HOUSEKEEP %}
    housekeeping
      {% endif %}
      {% if POSTPROC %}
    postproc[-{{FMT}}] => postproc
      {% endif %}
      {% if PPTRANSFER %}                                         <=
    pptransfer[-{{FMT}}] => pptransfer                            <=
      {% endif %}                                                 <=
    {% endif %}
    """
    
  1. In the [[postproc]] task check that pre-script is set as follows:
        [[postproc]]
            inherit = ...
            pre-script = "module load nco/4.6.8; module load anaconda; export PYTHONPATH=$PYTHONPATH:$UMDIR/lib/python2.7; module list; ulimit -s unlimited"
            ...
    
  1. At the end of the file add the pptransfer task definitions:
        [[PPTRANSFER]]
            [[[remote]]]
                host = dtn02.rdf.ac.uk
            [[[environment]]]
                UMDIR=~um
    
        [[PPTRANSFER_BUILD]]
            [[[environment]]]
                ROSE_TASK_APP=fcm_make_pp
    
        [[fcm_make_pptransfer]]
            inherit = None, LINUX_UM, PPTRANSFER_BUILD
    
        [[fcm_make2_pptransfer]]
            inherit = None, PPTRANSFER, PPTRANSFER_BUILD
       
        [[pptransfer]]
            inherit = PPTRANSFER
            pre-script = "module load anaconda"
            [[[environment]]]
                CYCLEPERIOD = $( rose date $CYLC_TASK_CYCLE_POINT $CYLC_TASK_CYCLE_POINT --calendar {{CALENDAR}} --offset2 {{FMT}} -f y,m,d,h,M,s )
                ROSE_TASK_APP=postproc
                PLATFORM = linux