Opened 10 years ago
Closed 10 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 :
Change History (1)
comment:1 Changed 10 years ago by dsolyga
- Resolution set to fixed
- Status changed from new to closed
Note: See
TracTickets for help on using
tickets.
Correction applied. See revision[1060].