[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"detail-sidebar-cat-0-en-105":3,"doc-seo-154206-105":59,"doc-detail-154206-en":130},{"code":4,"msg":5,"data":6},0,"success",[7,13,18,23,28,33,38,43,48,51,55],{"id":8,"doc_module":4,"doc_module_name":9,"category_name":10,"show_sort_weight":11,"slug":12},1,"Document","Story & Novel",90,"story-novel",{"id":14,"doc_module":4,"doc_module_name":9,"category_name":15,"show_sort_weight":16,"slug":17},2,"Literature",80,"literature",{"id":19,"doc_module":4,"doc_module_name":9,"category_name":20,"show_sort_weight":21,"slug":22},4,"Exam",70,"exam",{"id":24,"doc_module":4,"doc_module_name":9,"category_name":25,"show_sort_weight":26,"slug":27},5,"Comic",60,"comic",{"id":29,"doc_module":4,"doc_module_name":9,"category_name":30,"show_sort_weight":31,"slug":32},6,"Technology",50,"technology",{"id":34,"doc_module":4,"doc_module_name":9,"category_name":35,"show_sort_weight":36,"slug":37},7,"Healthcare",40,"healthcare",{"id":39,"doc_module":4,"doc_module_name":9,"category_name":40,"show_sort_weight":41,"slug":42},8,"Research & Report",30,"research-report",{"id":44,"doc_module":4,"doc_module_name":9,"category_name":45,"show_sort_weight":46,"slug":47},9,"Religion & Spirituality",20,"religion-spirituality",{"id":46,"doc_module":4,"doc_module_name":9,"category_name":49,"show_sort_weight":46,"slug":50},"World Cup","world-cup",{"id":52,"doc_module":4,"doc_module_name":9,"category_name":53,"show_sort_weight":52,"slug":54},10,"Lifestyle","lifestyle",{"id":56,"doc_module":4,"doc_module_name":9,"category_name":57,"show_sort_weight":24,"slug":58},19,"General","general",{"code":4,"msg":60,"data":61},"ok",{"site_id":62,"language":63,"slug":64,"title":65,"keywords":66,"description":67,"schema_data":68,"social_meta":123,"head_meta":125,"extra_data":127,"updated_unix":129},105,"en","charon-message-passing-toolkit-for-scientific-computations","Charon message-passing toolkit for scientific computations","","Charon is a callable C and Fortran library for converting structured-grid legacy codes into parallel, high-performance message-passing programs. It provides user functions to define distributed arrays, map between distributed and non-distributed arrays, and specify communications on structured grids based on the MPI standard. The paper reviews Charon’s functionality and reports representative results for scientific computing domains.",{"@graph":69,"@context":122},[70,84,105],{"@type":71,"itemListElement":72},"BreadcrumbList",[73,77,79,82],{"item":74,"name":75,"@type":76,"position":8},"https://docshare.wps.com","Home","ListItem",{"item":78,"name":9,"@type":76,"position":14},"https://docshare.wps.com/document/",{"item":80,"name":30,"@type":76,"position":81},"https://docshare.wps.com/document/technology/",3,{"item":83,"name":65,"@type":76,"position":19},"https://docshare.wps.com/document/charon-message-passing-toolkit-for-scientific-computations/154206/",{"url":83,"name":65,"@type":85,"image":86,"author":91,"headline":65,"publisher":94,"fileFormat":97,"inLanguage":63,"description":67,"dateModified":98,"datePublished":99,"encodingFormat":97,"isAccessibleForFree":100,"interactionStatistic":101},"DigitalDocument",{"url":87,"@type":88,"width":89,"height":90},"https://docshare.wps.com/thumbnails/charon-message-passing-toolkit-for-scientific-computations/154206.png","ImageObject",300,407,{"name":92,"@type":93},"Noah","Person",{"url":74,"name":95,"@type":96},"DocShare","Organization","application/pdf","2026-10-11","2026-08-28",true,{"@type":102,"interactionType":103,"userInteractionCount":39},"InteractionCounter",{"@type":104},"ViewAction",{"@type":106,"mainEntity":107},"FAQPage",[108,114,118],{"name":109,"@type":110,"acceptedAnswer":111},"What problem does Charon address in parallel computing?","Question",{"text":112,"@type":113},"Charon provides an incremental way to convert structured-grid legacy codes into scalable message-passing programs without rewriting everything using explicit parallel constructs.","Answer",{"name":115,"@type":110,"acceptedAnswer":116},"How does Charon manage distributed arrays?",{"text":117,"@type":113},"It defines and manipulates distributed arrays through user-callable functions that establish the grid, create sections (domain tessellations), and support mapping between non-distributed and distributed arrays at runtime.",{"name":119,"@type":110,"acceptedAnswer":120},"Which communication standard underpins Charon?",{"text":121,"@type":113},"Charon is based on the MPI message passing standard and attaches an MPI communicator to the created grid to orchestrate subsequent communications.","https://schema.org",{"og:url":83,"og:type":124,"og:title":65,"og:site_name":95,"og:description":67},"article",{"robots":126,"canonical":83},"index,follow",{"doc_id":128,"site_id":62},154206,1787889543,{"code":4,"msg":5,"data":131},{"doc_id":128,"user_id":132,"nickname":92,"user_avatar":133,"doc_module":4,"category_id":29,"category_name":30,"doc_title":65,"doc_description":67,"doc_content":134,"file_id":135,"file_url":136,"file_type":137,"file_size":138,"view_count":39,"is_deleted":4,"is_public":8,"is_downloadable":8,"audit_status":8,"page_count":139,"language":140,"language_code":63,"site_id":62,"html_lang":63,"table_of_contents":141,"faqs":142,"seo_title":143,"seo_description":67,"update_tm":129,"read_time":26},8796095462418,"https://ap-avatar.wpscdn.com/avatar/80000253c1241d02b47?x-image-process=image/resize,m_fixed,w_180,h_180&k=1778826106357471780","67,3812  \n# Charon message-passing toolkit for scientific computations\n\nRob F.Van der Wijngaart,Computer Sciences CorporationNASA Ames Research Center,Moffett Field,CA 94035  \nAbstract:Charon is a library,callable from C and Fortran,that aids the conversion of structured-grid legacy codes—such as those used in the numerical computation of fluid flows—into parallel,high-performance codes.Key are functions that define distributed arrays,that map between dis-tributed and non-distributed arrays,and that allow easy specification of common communicationson structured grids.The library is based on the widely accepted MPI message passing standard.We present an overview of the functionality of Charon,and some representative results.  \n## 1 Introduction\n\nA sign of the maturing of the field of parallel computing is the emergence of facilities that shield theprogrammer from low-level constructs such as message passing(MPI,PVM)and shared memoryparallelization directives(P-Threads,OpenMP,etc.),and from parallel programming languages(High Performance Fortran,Split C,Linda,etc.).Such facilities include:1)(semi-)automatictools for parallelization of legacy codes(e.g.CAPTools [8],ADAPT [5],CAPO [9],SUIF com-piler [6],SMS preprocessor [7],etc.),and 2)application libraries for the construction of parallelprograms from scratch (KeLP [4],OVERTURE [3],PETSc[2],Global Arrays [10],etc.).  \nThe Charon library described here offers an alternative to the above two approaches,namely amechanism for incremental conversion of legacy codes into high-performance,scalable message-passing programs.It does so without the need to resort to explicit parallel programming con-structs.Charon is aimed at applications that involve structured discretization grids used for thesolution of scientific computing problems.Specifically,it is designed to help parallelize algorithmsthat are not naturally data parallel—i.e.,that contain complex data dependencies—which includealmost all advanced flow solver methods in use at NASA Ames Research Center.While Charonprovides strictly a set of user-callable functions(C and Fortran),it can nonetheless be used to  \nconvert serial legacy codes into highly-tuned parallel applications.The crux of the library is thatit enables the programmer to codify information about existing multi-dimensional arrays in legacycodes and map between these non-distributed arrays and newly defined truly distributed arraysat runtime.This allows the programmer to keep most of the serial code unchanged and onlyuse distributed arrays in that part of the code of prime interest.This code section,which isparallelized using more functions from the Charon library,is gradually expanded,until the entirecode is converted.The major benefit of incremental parallalization is that it is easy to ascertainconsistency with the serial code.In addition,the user keeps careful control over the amountof data transferred between processes,which is important on high-latency distributed-memorymachines¹.  \nThe usual steps that a programmer follows when parallelizing a code using Charon are asfollows.First,define a distribution of the arrays in the program,based on a division of the grid(s)among all processors.Second,select a section of the code to be parallelized,and construct aso-called parallel bypass:map from the non-distributed(legacy code)array to the distributedarray upon entry of the section,and back to the non-distributed array upon leaving it.Third,dothe action parallelization work for the section,using more Charon functions.  \nThe remainder of this paper is structured as follows.In Section 2 we explain the libraryfunctions used to define and manipulate distributed arrays(distributions),including those thatallow the mapping between non-distributed and distributed arrays.In Section 3 we describe thefunctions that can be used actually to parallelize an existing piece of code.Some examples ofthe use and performance of Charon are presented in Section 4.  \n## 2 Distributed arrays\n\nPar","cbCaijAIAs6AUMW8","https://ap.wps.com/l/cbCaijAIAs6AUMW8","pdf",832458,24,"English","# Introduction\n## Distributed arrays\n## Domain decomposition","[{\"question\":\"What problem does Charon address in parallel computing?\",\"answer\":\"Charon provides an incremental way to convert structured-grid legacy codes into scalable message-passing programs without rewriting everything using explicit parallel constructs.\"},{\"question\":\"How does Charon manage distributed arrays?\",\"answer\":\"It defines and manipulates distributed arrays through user-callable functions that establish the grid, create sections (domain tessellations), and support mapping between non-distributed and distributed arrays at runtime.\"},{\"question\":\"Which communication standard underpins Charon?\",\"answer\":\"Charon is based on the MPI message passing standard and attaches an MPI communicator to the created grid to orchestrate subsequent communications.\"}]","Charon message-passing toolkit for scientific computations | PDF"]