{"id":23,"date":"2003-08-05T16:46:46","date_gmt":"2003-08-05T16:46:46","guid":{"rendered":"http:\/\/press3.mcs.anl.gov\/romio\/?p=23"},"modified":"2003-08-05T16:46:46","modified_gmt":"2003-08-05T16:46:46","slug":"deferred-open","status":"publish","type":"post","link":"https:\/\/wordpress.cels.anl.gov\/romio\/2003\/08\/05\/deferred-open\/","title":{"rendered":"Deferred Open"},"content":{"rendered":"<p>When I came to Argonne in 2002, my second project was to implement &#8220;deferred open&#8221;, where we would skip opening the file if certain hints were given.\u00a0 We never got around to writing a paper about this optimization, though.\u00a0 There&#8217;s a brief mention in the <a title=\"ROMIO User's Guide\" href=\"http:\/\/www.mcs.anl.gov\/research\/projects\/romio\/doc\/users-guide\/users-guide.html\">ROMIO users guide<\/a> , but it wouldn&#8217;t hurt to have a bit more documentation about this feature.<br \/>\nFirst, some background. ROMIO has an optimization for collective I\/O called &#8220;two-phase collective buffering&#8221;.\u00a0 When writing, ROMIO selects a subset of processes as &#8220;I\/O aggregators&#8221; . These aggregators are the MPI processes that actually write data to the file, after collecting data from all the other processors.\u00a0\u00a0 When reading, these I\/O aggregators read the data in some file-system friendly way, then scatter the data out to the other MPI processors.\u00a0 Observe that in two-phase, the non-aggregator processes never touch the file.\u00a0 We use this observation to implement a deferred open strategy for non-aggregators.<br \/>\nTo enable deferred open, two hint conditions must be true<\/p>\n<ul>\n<li>romio_cb_write and romio_cb_read must not be &#8220;disable&#8221;.\u00a0 That&#8217;s the default setting for every file system everywhere, though:\u00a0 it&#8217;s rare to find this condition not met<\/li>\n<li>romio_no_indep_rw must be &#8220;true&#8221;.\u00a0 With this hint, the user has told ROMIO &#8220;I will not do any independent I\/O&#8221;. \u00a0 ROMIO will then attempt to avoid opening the file on any non-aggregator processes.<\/li>\n<li>optional: The <tt>cb_config_list<\/tt> and <tt>cb_nodes<\/tt> hints can be given to further control which nodes are aggregators<\/li>\n<\/ul>\n<p>The &#8220;deferred&#8221; part comes from the fact that MPI Info tunables are hints, not contracts.\u00a0\u00a0 The user might lie to ROMIO, specifying &#8220;romio_no_indep_rw&#8221; to &#8220;true&#8221; and then go right ahead and carry out a bunch of independent I\/O operations.\u00a0 In that case, ROMIO will open the file just before the independent I\/O operation happens &#8212; we say the open has been deferred.<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When I came to Argonne in 2002, my second project was to implement &#8220;deferred open&#8221;, where we would skip opening the file if certain hints were given.\u00a0 We never got around to writing a paper about this optimization, though.\u00a0 There&#8217;s a brief mention in the ROMIO users guide , but it wouldn&#8217;t hurt to have &hellip;<\/p>\n","protected":false},"author":362,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[3,11],"tags":[],"class_list":["post-23","post","type-post","status-publish","format-standard","hentry","category-features","category-tuning"],"acf":[],"_links":{"self":[{"href":"https:\/\/wordpress.cels.anl.gov\/romio\/wp-json\/wp\/v2\/posts\/23","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.cels.anl.gov\/romio\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.cels.anl.gov\/romio\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.cels.anl.gov\/romio\/wp-json\/wp\/v2\/users\/362"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.cels.anl.gov\/romio\/wp-json\/wp\/v2\/comments?post=23"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.cels.anl.gov\/romio\/wp-json\/wp\/v2\/posts\/23\/revisions"}],"wp:attachment":[{"href":"https:\/\/wordpress.cels.anl.gov\/romio\/wp-json\/wp\/v2\/media?parent=23"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.cels.anl.gov\/romio\/wp-json\/wp\/v2\/categories?post=23"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.cels.anl.gov\/romio\/wp-json\/wp\/v2\/tags?post=23"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}