PRINTSCRIPT; print $script_style; include "/var/www/html/core/partc"; $linkpage = <<< PRINTLINK gfdl homepage > people > v. balaji's homepage > this page PRINTLINK; print $linkpage; // GFDL header include "/var/www/html/core/partd"; $titlepage = <<< TITLEPAGE IO Domains: Proposal to extend FMS data structures to support asynchronous parallel IO TITLEPAGE; print $titlepage; // GFDL header include_once( '/var/lib/php/counter.inc' ); error_reporting(E_ERROR); require_once('../magpierss/rss_fetch.inc'); require_once('../magpierss/rss_utils.inc'); include "/var/www/html/core/parte"; $pagecontent = <<< ENDCONTENT

IO Domains: Proposal to extend FMS data structures to support asynchronous parallel IO

V. Balaji*
Princeton University

11 October 2007

Abstract

Current FMS practice is to use single-threaded I/O for restart files, and distributed I/O, followed by mppnccombine, for history files. As our processor counts climb from 𝒪(100) to 𝒪(1000), we observe that I/O is starting to become a significant drag on performance.

The current proposal extends the domain2D data structure to support an I/O subdomain. The subdomain is assigned to an independent list of PEs, on which the parent domain has null computational and data domains. Thus, these I/O PEs perform no computation. When an I/O request is made on the domain, the computational PEs transfer the data to the I/O PEs using mpp_redistribute (which is non-blocking on the computational PEs) and proceed with the calculation. The I/O PEs perform a blocking receive on the data, and proceed with I/O concurrently withe the computation.

Implications for code in the higher I/O layers (fms_io and diag_manager) is discussed, as well as assumptions about model code that may or may not be met.

Contents
1 Introduction
2 Design
3 Conclusion
References

* Corresponding author: V. Balaji, Princeton University and NOAA/GFDL, 201 Forrestal Road, Princeton NJ 08540-6646. Email: balaji@princeton.edu


TeX4HT created by v. balaji (balaji@princeton.edu) in emacs using Tex4HT.
ENDCONTENT; print $pagecontent; print "last modified: ". date( "d F Y", getlastmod() ); print "
this page visited: ".getCount(). " times "; include "/var/www/html/core/partf"; include "/var/www/html/core/partg";