[Science] [BAS home] [Met home] [Beowulf home] | Antarctic Meteorology |
Whats the difference? Very little, except for one obscure module, the compiler option (-Ccd4d8 under Fujitsu, which promotes reals and ints to 64-bit), and some modsets to remove 1E-300 "small" constants in the radiation code.
Plus there are some small problems in some of the utilities and in the coupled code where overflows occur at 64-bit.
perl -i -pe "s/RUN_TARGET_END= 10 , 0 , 3/RUN_TARGET_END= 100 , 0 , 3/" *from the umui_runs/RUNID-xxxx directory. You have to replace 10 , 0 , 3 (10 y and 3 mon) with whatever you set initially, of course.
libum1.a(timer3a.o): In function `timer_': timer3a.o(.text+0x1f): undefined reference to `s_wsle' timer3a.o(.text+0x38): undefined reference to `do_lio' timer3a.o(.text+0x72): undefined reference to `e_wsle' timer3a.o(.text+0x9a): undefined reference to `gc_gsync__' timer3a.o(.text+0x224): undefined reference to `s_copy' timer3a.o(.text+0x785): undefined reference to `s_cmp' libum1.a(timer3a.o): In function `timer_output__': timer3a.o(.text+0x2528): undefined reference to `gc_rsum__' timer3a.o(.text+0x2552): undefined reference to `gc_rmax__' timer3a.o(.text+0x2ad0): undefined reference to `s_wsfe' timer3a.o(.text+0x2ae4): undefined reference to `do_fio' timer3a.o(.text+0x2b00): undefined reference to `e_wsfe' timer3a.o(.text+0x3331): undefined reference to `gc_ibcast__' timer3a.o(.text+0x33a1): undefined reference to `gc_cbcast__' timer3a.o(.text+0x36ca): undefined reference to `gc_rsend__' timer3a.o(.text+0x3808): undefined reference to `gc_rrecv__'(or something similar) when linking then you (or makefile.compile) has compiled timer3a.f under f77 not f90. This will not work: the two compilers are incompatible!
You need to recompile it with f90; re-run makefile.compile and makefile.link
Musing:
makefile.compile is a poor makefile, because instead of a generic .f target, it has targets for each .f file, even though they are all the same. But! If one is omitted (for example, timer3a.f) then since there is no target in the makefile, make is "smart" enough to know what to do: run the default compiiler... so it quietly f77's your file.
To try to track this down, you can use my "undefs" trick, which is to say:
Another possible (but less likely) cause is a mixture of 32- and 64-bit code. In which case you've done something silly. Scrub all the .o's and recompile.
Another is writing to non-existent memory (see-also swapa2o2). Diagnosing this can be very tricky. If you run it single-processor and it still fails, then you've in luck: you can use gdb (well you can even on multi-proc (via mpirun -gdb ...) but its harder). If when it dies and you say "where" and gdb gives an obviously-wrong stack trace (typically, a very short one) then you probably have over-writing.
IF(N_INTERNAL_MODEL.EQ.1.OR.( ! if not coupled model, or GRB1F305.582 * LAST_IM_IN_SM(internal_model).AND. ! last model in submodel GRB1F305.583 * MOD(STEP,STEPS_PER_PERIOD).EQ.0)) ! and last step in group GRB1F305.584 * THEN GRB1F305.585to
IF(.true.) GRB1F305.582 * THEN GRB1F305.585then it may well work OK. Note that this is only safe if atmos timesteps divide the ocean timesteps.
ERROR : Reconfiguration CONTROL MAX_LEN2_LOOKUP_OUT is not big enough MAX_LEN2_LOOKUP_OUT= 500 LEN2_LOOKUP_OUT= 534 MAX_LEN2_LOOKUP_OUT should be at least as big as LEN2_LOOKUP_OUT. You will need to reset the PARAMETER statement in the C_ITEMS comdeck.from the reconfiguration, go to ~/um/vn4.5/exec_build/qxrecon_dump_dir, say
perl -i -pe "s/MAX_LEN2_LOOKUP_OUT = 500/MAX_LEN2_LOOKUP_OUT = 1000/" *.fand type make. Then mv the new qxrecon_dump to ~/um/vn4.5/exec.
Past last modified: 25/7/2005 / wmc@bas.ac.uk |
© Copyright Natural Environment Research Council - British Antarctic Survey 2002 |