{"id":5,"date":"2013-10-14T19:41:19","date_gmt":"2013-10-14T19:41:19","guid":{"rendered":"http:\/\/press3.mcs.anl.gov\/romio\/?page_id=2"},"modified":"2025-03-06T22:19:14","modified_gmt":"2025-03-06T22:19:14","slug":"romio-overview","status":"publish","type":"page","link":"https:\/\/wordpress.cels.anl.gov\/romio\/","title":{"rendered":"ROMIO: A High-Performance, Portable MPI-IO Implementation"},"content":{"rendered":"<h2>Overview<\/h2>\n<p><b> Note:\u00a0 we haven&#8217;t released newer versions of ROMIO as independent packages for a while; they are included as part of MPICH, and we work with downstream vendors to incorporate the latest changes.\u00a0 You can get the latest version of ROMIO when you download <a href=\"http:\/\/www.mcs.anl.gov\/mpi\/mpich2\">MPICH<\/a>.<br \/><\/b><br \/>ROMIO is a high-performance, portable implementation of MPI-IO, the I\/O chapter in <a href=\"http:\/\/www.mpi-forum.org\/docs\/docs.html\">MPI-2<\/a>.<br \/>ROMIO is optimized for noncontiguous access patterns, which are common in parallel applications. It has an optimized implementation of collective I\/O, an important optimization in parallel I\/O.<br \/>ROMIO is designed to be used with any MPI implementation. It is, in fact, included as part of several MPI implementations.\u00a0 Cray, IBM&#8217;s Blue Gene drivers, and OpenMPI\u00a0 all use some variant\u00a0 of ROMIO\u00a0 for their MPI-IO implementation..<\/p>\n<h2>Windows Version (NTFS)<\/h2>\n<p>A version of ROMIO for Windows 2000 is available as part of <a title=\"Microsoft HPC\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ff976568.aspx\">MS-MPI<\/a><\/p>\n<h2>Learning MPI-IO<\/h2>\n<p>The book <a href=\"http:\/\/www.mcs.anl.gov\/mpi\/usingmpi2\">Using MPI-2: Advanced Features of the Message-Passing Interface<\/a>,<br \/>published by <a href=\"http:\/\/www-mitpress.mit.edu\">MIT Press<\/a>, provides a tutorial introduction to all aspects of <a href=\"http:\/\/www.mpi-forum.org\">MPI-2<\/a>, including<br \/>parallel I\/O. It has lots of example programs.<br \/>The ROMIO Users Guide [<a href=\"http:\/\/ftp.mcs.anl.gov\/pub\/romio\/users-guide.ps\">PostScript<\/a>] [<a href=\"http:\/\/ftp.mcs.anl.gov\/pub\/romio\/users-guide.pdf\">PDF<\/a> ] [<a href=\"https:\/\/ftp.mcs.anl.gov\/pub\/romio\/users-guide\/\">HTML<\/a>] documents the ROMIO-specific features you might encounter.<br \/>We have collected some of the more noteworthy publications under the &#8216;<a title=\"Romio publications\" href=\"http:\/\/press3.mcs.anl.gov\/romio\/category\/publications\/\">publications<\/a>&#8216; tag.<br \/>Performance Tips<\/p>\n<ul>\n<li>Specify as much access information as possible in a single function call by using MPI derived datatypes. For example, if you need to read bytes 0&#8211;10, 20&#8211;30, and 40&#8211;50 from a file, do NOT use three separate read function calls. Instead, create an appropriate MPI derived datatype that specifies this layout, define a file view with <tt>MPI_File_set_view<\/tt>, and then use a single read function call. This will perform MUCH better than with three separate read calls.<\/li>\n<li>For maximum performance, use the <em>collective<\/em> I\/O functions, particularly in the case of noncontiguous accesses like the above. See <a href=\"http:\/\/www.mcs.anl.gov\/~thakur\/dtype\">this paper<\/a> for further details.<\/li>\n<\/ul>\n<h2>Performance Results<\/h2>\n<ul>\n<li><a href=\"http:\/\/www.mcs.anl.gov\/~thakur\/dtype\">Derived Datatypes paper<\/a><\/li>\n<li><a href=\"http:\/\/www.mcs.anl.gov\/~thakur\/papers\/romio-coll.ps\">Data Sieving and Collective I\/O paper<\/a><\/li>\n<li><a href=\"http:\/\/www.mcs.anl.gov\/~thakur\/sio-demo\">SC97 Demo<\/a><\/li>\n<\/ul>\n<h2>ROMIO Internals<\/h2>\n<p>A key component of ROMIO that enables such a portable MPI-IO implementation is an internal abstract I\/O device layer called <a href=\"http:\/\/www.mcs.anl.gov\/~thakur\/adio\">ADIO<\/a>. Most users of ROMIO will not need to deal with the ADIO layer at all. However, ADIO is useful to those who want to port ROMIO to some other file system. The ROMIO source code and the ADIO paper (<a href=\"http:\/\/www.mcs.anl.gov\/~thakur\/papers\/adio.ps\">ps<\/a>, <a href=\"http:\/\/www.mcs.anl.gov\/~thakur\/papers\/adio.pdf\">pdf<\/a>, <a href=\"http:\/\/www.mcs.anl.gov\/~thakur\/adio\/paper\/paper.html\">html<\/a>) will help you get started.<\/p>\n<h2>Citing ROMIO<\/h2>\n<p>To cite all of ROMIO, use this one:<\/p>\n<blockquote>\n<p>@InProceedings{thakur:mpi-io-implement, author = {Rajeev Thakur and William Gropp and Ewing Lusk},<br \/>title = {On Implementing {MPI-IO} Portably and with High Performance},<br \/>booktitle = {Proceedings of the Sixth Workshop on Input\/Output in Parallel<br \/>and Distributed Systems},<br \/>year = {1999},<br \/>month = {May},<br \/>pages = {23&#8211;32},<\/p>\n<p>}<\/p>\n<\/blockquote>\n<p>\u00a0<\/p>\n<h2><a href=\"http:\/\/www.mcs.anl.gov\/research\/projects\/romio\/pubs.html\">Publications <\/a><\/h2>\n<h2>ROMIO Project Members<\/h2>\n<ul>\n<li><a href=\"http:\/\/www.mcs.anl.gov\/~thakur\">Rajeev Thakur<\/a><\/li>\n<li><a href=\"http:\/\/www.mcs.anl.gov\/~rross\">Rob Ross<\/a><\/li>\n<li><a href=\"http:\/\/www.mcs.anl.gov\/~robl\">Rob Latham<\/a><\/li>\n<li><a href=\"http:\/\/www.mcs.anl.gov\/~lusk\">Rusty Lusk<\/a><\/li>\n<li><a href=\"http:\/\/www.mcs.anl.gov\/~gropp\">Bill Gropp<\/a><\/li>\n<li><a href=\"http:\/\/www.ece.northwestern.edu\/~choudhar\/\">Prof. Alok Choudhary&#8217;s group<\/a><\/li>\n<\/ul>\n<h2>Further Information<\/h2>\n<p>For further information, send email to <a href=\"mailto:mpich-discuss@mcs.anl.gov\">mpich-discuss@mcs.anl.gov<\/a>.<\/p>\n\n\n<pre class=\"wp-block-code\"><code><\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Overview Note:\u00a0 we haven&#8217;t released newer versions of ROMIO as independent packages for a while; they are included as part of MPICH, and we work with downstream vendors to incorporate the latest changes.\u00a0 You can get the latest version of ROMIO when you download MPICH.ROMIO is a high-performance, portable implementation of MPI-IO, the I\/O chapter &hellip;<\/p>\n","protected":false},"author":362,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":"","_members_access_role":[],"_members_access_error":""},"class_list":["post-5","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/wordpress.cels.anl.gov\/romio\/wp-json\/wp\/v2\/pages\/5","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.cels.anl.gov\/romio\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wordpress.cels.anl.gov\/romio\/wp-json\/wp\/v2\/types\/page"}],"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=5"}],"version-history":[{"count":3,"href":"https:\/\/wordpress.cels.anl.gov\/romio\/wp-json\/wp\/v2\/pages\/5\/revisions"}],"predecessor-version":[{"id":583,"href":"https:\/\/wordpress.cels.anl.gov\/romio\/wp-json\/wp\/v2\/pages\/5\/revisions\/583"}],"wp:attachment":[{"href":"https:\/\/wordpress.cels.anl.gov\/romio\/wp-json\/wp\/v2\/media?parent=5"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}