New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Ticket Diff – NEMO

Changes between Initial Version and Version 2 of Ticket #240


Ignore:
Timestamp:
2008-09-08T16:44:40+02:00 (16 years ago)
Author:
ctlod
Comment:

Replying to nemo_user:

Hello. I've just finished installing NVTK at NOCS on a new target machine. I hope you don't mind, but I have a number of problems and comments about the procedure to report, which may be of interest to others installing on a new target machine, even if they cannot be incorporated into the source copy. This uses NVTK code from revision 1164.

Thank you for these comments.

NVTK

The first mistake I made was not reading the documentation carefully enough. Because NVTK came with my checked out copy of the subversion trunk, I assumed it could be installed from its default location. This lead to all sorts of problems with paths in scripts.

I hope it is clearer now on the http://forge.ipsl.jussieu.fr/nemo/wiki/NVTKpage NVTK page.

NVTK/fait_AA_make

Our korn shell does not understand the \c in echo statements, so I have to alias echo to print. Parallel makes do not work for us so that I have to remove the -j option in the gmake step.

Shell scripts portability problem ..., difficult to solve in a proper way.

NVTK/INSTALL/ins_nvtk.ksh

The "tree" command isn't available on our machine and so I replaced it with "find -type d"

idem

NVTK/INSTALL/JOBS/lance_batch.ksh

Some of the user specified variables can involve full paths (e.g. LAUN, LLJOBS and LSUB), which are then substituted into other files with a sed substitute command using "/" as a delimiter. I replaced "/" where necessary, but wouldn't it be better to consistently use something other than "/"?

Yes, we could for instance replace "/" with "%", it has been already and partially done in few jobs

NVTK/INSTALL/JOBS/job_<configuration>.ksh

Our machine does not automatically create and use the TMPDIR facility for running jobs, so I added code to create a temporary directory, assign it to a variable called TMPDIR and remove it at the end.

We could maybe add one line which will depend on the platform as below:
#-T- platform cd ${TMPDIR} The drawback is that we have to add it in each jobs.

NVTK/use_cfg

There would seem to be an error in this since ins_nvtk.ksh calls use_cfg with the "-n" option, but the reference configuration (r_cfg) is selected on the basis of the "-r' option. The result is that all configurations use ORCA2-LIM files which causes problems later in the process.

Indeed, ORCA2_LIM files are used only if the configuration name directory to build doesn't exist under ../modipsl/config directory. For instance, if TOTO is a new configuration (i.e. it doesn't exist under ../modipsl/config directory) and you use use_cfg -n TOTO without option "-r" then ORCA2_LIM files will be duplicated under the TOTO directory otherwise no files will be copied.
When using ins_nvtk.ksh script, all configurations ORCA2_LIM, GYRE, GYRE_LOBSTER directories exist so no need to use the -n option

NVTK/Makefile

Again parallel makes are used.

Running NVTK

A run with no new code runs fine. When I introduce new code into the 2TEST directory I have a small problem. All my new routines are just modified versions of their originals. However this includes extra module dependencies (USE statements). fait_AA_make is run from ins_nvtk.ksh before the symbolic links to the 2TEST code are created. The fait_AA_make in the WORK Makefile only takes place if there are new files, so in my case the WORK AA_make is not recreated, and the make step fails because the order in which module files are created is wrong. The way I've got round this is to create a dummy empty module in the 2TEST directory: it's existence forces the fait_AA_make in the WORK makefile to run. But unfortunately this means that each configuration build fails in turn at the src_file_list target (with no explanatory messages, since they are swallowed up by log files) and the make of the master makefile has to be restarted. This isn't ideal since, unless I edit the LISTE_CONF variable in the master makefile each time, I'm forced to repeat the tests a number of times. Is there another way to do this, or am I doing something wrong?

yes, this is a black point of NVTK. A simple way to correct this will be to add a variable (MAKE_DEP) of LOGICAL type in the ./config/NVTK/Makefile script, and the following lines:
( cd ../$@/WORK ; if [ -n "$$MYREP_LIST" ] ; then ln -sf ../MY_SRC/*.[Ffh]90 . ; cd .. ; ../NVTK/fait_AA_make ; fi ; ) So if "USE statements" or new cpp keys have been added they will be taken into account for the compilation process in just setting MAKE_DEP=yes


In the "NEMO VALIDATION" report, there doesn't seem to be anything to identify what new routines have been tested. Could this be added to the output? This would clearly distinguish between a reference run and a code-testing run.


Yes, I agree with you. We'll add this list in the assessment report; we could also add the revision number used

Finally, for new code to be accepted for inclusion in NEMO, what documentation is required?

At least comments (description of steps performed and a reference to an article if one) in the header of a new routine are clearly required. If it is a new numerical algortihm AND/OR a new physical parameterization a paper documentation following the "format" of the current NEMO documentation should be provided. The best will be to send it at the same time than the code .....

Are a set of patch files to a specified revision with the accompanying NEMO VALIDATION reports sufficient?

Yes

Which configurations and tests are mandatory?

Currently, ORCA2_LIM, GYRE and GYRE_LOBSTER are the current configurations which should be tested, in any case, when using NVTK, the standard configurations to be tested are already set in the NVTK/Makefile script through the LISTE_CONF variable. This list should increase.
Concerning the tests, 2 things:

# firstly: your routines still ensure the reproductibility and restartability of standard configurations # secondly: ensure that when using your modifications, results are reproductible and restartable

Who do I send them to?

To the NEMO team nemo_st@… or the person of the team you interacted with.

Steven Alderson
sga@…

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #240

    • Property Owner changed from NEMO team to ctlod
    • Property Status changed from new to assigned
  • Ticket #240 – Description

    initial v2  
    1 Hello.  I've just finished installing NVTK at NOCS on a new target machine. 
     1Hello. I've just finished installing NVTK at NOCS on a new target machine. 
    22I hope you don't mind, but I have a number of problems and comments about the procedure to report, 
    33which may be of interest to others installing on a new target machine, even if they cannot be 
     
    55This uses NVTK code from revision 1164. 
    66 
    7 NVTK 
    8  The first mistake I made was not reading the documentation carefully enough. 
    9  Because NVTK came with my checked out copy of the subversion trunk, I assumed it could be 
    10  installed from its default location.  This lead to all sorts of problems with paths in scripts. 
     7'''NVTK'''[[BR]] 
     8The first mistake I made was not reading the documentation carefully enough. 
     9 Because NVTK came with my checked out copy of the subversion trunk, I assumed it could be installed from its default location.  This lead to all sorts of problems with paths in scripts.[[BR]] 
    1110 
    12 NVTK/fait_AA_make 
    13  Our korn shell does not understand the \c in echo statements, so I have to alias echo to print. 
    14  Parallel makes do not work for us so that I have to remove the -j option in the gmake step. 
    1511 
    16 NVTK/INSTALL/ins_nvtk.ksh 
    17  The "tree" command isn't available on our machine and so I replaced it with "find -type d" 
     12'''NVTK/fait_AA_make'''[[BR]] 
    1813 
    19 NVTK/INSTALL/JOBS/lance_batch.ksh 
    20  Some of the user specified variables can involve full paths (e.g. LAUN, LLJOBS and LSUB), 
    21  which are then substituted into other files with a sed substitute command using "/" as a delimiter. 
    22  I replaced "/" where necessary, but wouldn't it be better to consistently use something other 
    23  than "/"? 
     14 Our korn shell does not understand the \c in echo statements, so I have to alias echo to print.  Parallel makes do not work for us so that I have to remove the -j option in the gmake step.[[BR]] 
    2415 
    25 NVTK/INSTALL/JOBS/job_<configuration>.ksh 
    26  Our machine does not automatically create and use the TMPDIR facility for running jobs, so 
    27  I added code to create a temporary directory, assign it to a variable called TMPDIR and remove it 
    28  at the end. 
    2916 
    30 NVTK/use_cfg 
    31  There would seem to be an error in this since ins_nvtk.ksh calls use_cfg with the "-n" option, 
    32  but the reference configuration (r_cfg) is selected on the basis of the "-r' option. 
    33  The result is that all configurations use ORCA2-LIM files which causes problems later in the process. 
     17'''NVTK/INSTALL/ins_nvtk.ksh'''[[BR]] 
     18 The "tree" command isn't available on our machine and so I replaced it with "find -type d"[[BR]] 
    3419 
    35 NVTK/Makefile 
     20 
     21'''NVTK/INSTALL/JOBS/lance_batch.ksh'''[[BR]] 
     22 Some of the user specified variables can involve full paths (e.g. LAUN, LLJOBS and LSUB), which are then substituted into other files with a sed substitute command using "/" as a delimiter.  I replaced "/" where necessary, but wouldn't it be better to consistently use something other than "/"?[[BR]] 
     23 
     24 
     25'''NVTK/INSTALL/JOBS/job_<configuration>.ksh'''[[BR]] 
     26 
     27 Our machine does not automatically create and use the TMPDIR facility for running jobs, so I added code to create a temporary directory, assign it to a variable called TMPDIR and remove it at the end.[[BR]] 
     28 
     29 
     30'''NVTK/use_cfg'''[[BR]] 
     31 There would seem to be an error in this since ins_nvtk.ksh calls use_cfg with the "-n" option, but the reference configuration (r_cfg) is selected on the basis of the "-r' option. 
     32 The result is that all configurations use ORCA2-LIM files which causes problems later in the process.[[BR]] 
     33 
     34 
     35'''NVTK/Makefile''' 
    3636 Again parallel makes are used. 
    3737 
    38 Running NVTK 
    39  A run with no new code runs fine. 
    40  When I introduce new code into the 2TEST directory I have a small problem. 
    41  All my new routines are just modified versions of their originals.  However this includes extra 
    42  module dependencies (USE statements).  fait_AA_make is run from ins_nvtk.ksh before the 
    43  symbolic links to the 2TEST code are created.  The fait_AA_make in the WORK Makefile only takes 
    44  place if there are new files, so in my case the WORK AA_make is not recreated, and the make step 
    45  fails because the order in which module files are created is wrong. 
    46  The way I've got round this is to create a dummy empty module in the 2TEST directory: it's existence 
    47  forces the fait_AA_make in the WORK makefile to run. But unfortunately this means that each 
    48  configuration build fails in turn at the src_file_list target (with no explanatory messages, since 
    49  they are swallowed up by log files) and the make of the master makefile has to be restarted. 
    50  This isn't ideal since, unless I edit the LISTE_CONF variable in the master makefile each time, I'm 
    51  forced to  repeat the tests a number of times.  Is there another way to do this, or am I doing 
    52  something wrong? 
     38'''Running NVTK''' 
     39 A run with no new code runs fine.  When I introduce new code into the 2TEST directory I have a small problem. All my new routines are just modified versions of their originals.  However this includes extra module dependencies (USE statements).  fait_AA_make is run from ins_nvtk.ksh before the symbolic links to the 2TEST code are created.  The fait_AA_make in the WORK Makefile only takes place if there are new files, so in my case the WORK AA_make is not recreated, and the make step fails because the order in which module files are created is wrong. The way I've got round this is to create a dummy empty module in the 2TEST directory: it's existence forces the fait_AA_make in the WORK makefile to run. But unfortunately this means that each configuration build fails in turn at the src_file_list target (with no explanatory messages, since they are wallowed up by log files) and the make of the master makefile has to be restarted. This isn't ideal since, unless I edit the LISTE_CONF variable in the master makefile each time, I'm forced to  repeat the tests a number of times.  Is there another way to do this, or am I doing something wrong?[[BR]] 
    5340 
    54  In the "NEMO VALIDATION" report, there doesn't seem to be anything to identify what new routines 
    55  have been tested.  Could this be added to the output?  This would clearly distinguish between a 
    56  reference run and a code-testing run. 
     41 In the "NEMO VALIDATION" report, there doesn't seem to be anything to identify what new routines have been tested.  Could this be added to the output?  This would clearly distinguish between a reference run and a code-testing run. [[BR]] 
    5742 
    58  Finally, for new code to be accepted for inclusion in NEMO, what documentation is required? 
    59  Are a set of patch files to a specified revision with the accompanying NEMO VALIDATION reports 
    60  sufficient?  Which configurations and tests are mandatory?  Who do I send them to? 
     43Finally, for new code to be accepted for inclusion in NEMO, what documentation is required?  Are a set of patch files to a specified revision with the accompanying NEMO VALIDATION reports sufficient?  Which configurations and tests are mandatory?  Who do I send them to?[[BR]] 
     44 
    6145 
    6246Steven Alderson [[BR]]