Opened 9 years ago

Closed 9 years ago

#40 closed enhancement (fixed)

Reading forcing files on Curie is time-consuming

Reported by: dsolyga Owned by: dsolyga
Priority: critical Milestone: ORCHIDEE 1.9.7
Component: Driver files Version: orchidee_1_9_6
Keywords: code performance, parallelism, optimization Cc:

Description

On Curie, ORCHIDEE takes too much time to read the time steps axis. The problem is proportional to the number of processors. On 96 processors, it takes almost 50% of the time calculation for one year.
You can find some figures :
here
I found the line in IOIPSL/flincom.f90 at the origin of the problem :

 iret = NF90_GET_VAR (fid,vid,vec_tmp,start=(/ 1 /),count=(/ ttm /))

There are two explanations :

  • the lustre system used by TGCC is configured for "big" files. When some data are read into a netcdf file, 2Mo of memory is used by the system.
  • Moreover, the array vec_tmp contains data which are not contiguous in the netcdf file (UNLIMITED/LIMITED attributes).

The solution consists to modify readdim2 in two places :

  • comment the call to flinclo as the file is reopened after
  • change memory allocation for itau as only the two first values are only read :
      ttm_part=2   ! Here only read the 2 first values of time axis
      ALLOCATE(itau(ttm_part))
    
      CALL flinopen &
    &  (filename, .FALSE., iim_full, jjm_full, llm_full, lon_full, lat_full, &
    &   lev_full, ttm_part, itau, date0, dt_force, force_id) 
    
    
    When we use this patch, the results are correct :

http://dods.ipsl.jussieu.fr/orchidee/WIKI/VAMPIR_RESULTS_PATCH/MODIF_FLINCOM_GET_VAR_16PROCS.png

Change History (1)

comment:1 Changed 9 years ago by dsolyga

  • Resolution set to fixed
  • Status changed from new to closed

Correction applied. See revision[1060].

Note: See TracTickets for help on using tickets.