{"id":51261630,"url":"https://github.com/wkliao/gio","last_synced_at":"2026-06-29T12:32:12.773Z","repository":{"id":367835750,"uuid":"1204238601","full_name":"wkliao/gio","owner":"wkliao","description":"Parallel shared-file I/O library","archived":false,"fork":false,"pushed_at":"2026-06-27T23:14:21.000Z","size":283,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-27T23:18:37.743Z","etag":null,"topics":["c","mpi","parallel-io"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wkliao.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-07T20:28:51.000Z","updated_at":"2026-06-27T22:30:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/wkliao/gio","commit_stats":null,"previous_names":["wkliao/gio"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/wkliao/gio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkliao%2Fgio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkliao%2Fgio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkliao%2Fgio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkliao%2Fgio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wkliao","download_url":"https://codeload.github.com/wkliao/gio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkliao%2Fgio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34927675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-29T02:00:05.398Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","mpi","parallel-io"],"created_at":"2026-06-29T12:32:10.741Z","updated_at":"2026-06-29T12:32:12.768Z","avatar_url":"https://github.com/wkliao.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GIO - A Shared-file Parallel I/O Library\n\nGIO is an I/O library designed for supporting accessing a shared file by\nmultiple processes in parallel. GIO follows the I/O semantics of\n[MPI](https://www.mpi-forum.org) standard, but provides only a subset of its\nfeatures and a slightly different API syntax.\n\n* Similar to MPI-IO, GIO provides collective and independent read and write\n  APIs. It also supports I/O hints through setting the MPI info objects, and\n  follows the MPI-IO data consistency semantics.\n* Unlike MPI-IO, GIO does not support features such as, fileview, non-blocking\n  APIs, asynchronous APIs, split APIs, or shared-file pointers.\n\n## GIO Software Releases\n* The latest version\n  [1.0.0](https://github.com/wkliao/gio/wiki/releases/gio-1.0.0.tar.gz)\n  was released on June 27, 2026.\n* All previous release tarball files are available from the\n  [download page](https://github.com/wkliao/gio/wiki/GIO-software-release-tarball-files)\n\n## Software Dependency\n\nGIO is built on top of MPI and thus requires an MPI C compiler. Shared-file\naccess requires coordination of processes in order to achieve consistency\nresults and a good performance. In particular, GIO adopts the two-phase I/O\nstrategy to implement its collective read and write APIs.\n\n## GIO Application Programming Interfaces (APIs)\n\nThe names of all GIO public APIs contain the same prefix, \"GIO_\". For example,\nthe two APIs below are for opening and closing a shared file, respectively\n```\nint GIO_open(MPI_Comm    comm,      /* MPI communicator */\n             const char *filename,  /* name of the file to be opened/created */\n             int         amode,     /* file access mode */\n             MPI_Info    info,      /* I/O hints */\n             GIO_File   *fh);       /* file handler returend to the caller */\n\nint GIO_close(GIO_File *fh);\n```\n\nThere are 4 APIs for performing file reads and writes. Similar to MPI-IO, the\nones with suffix name '_all' are collective and without independent. The\ncollective APIs require all processes in the MPI communicator to participate\nthe call. All APIs for reading from and writing to the shared file contain\narguments describing the layouts for both file accesses and buffer in memory,\nin the form of a list of offset-length pairs. For example,\n```\nMPI_Offset GIO_write_all(GIO_File          fh,\n                         const void       *buf,\n                         MPI_Offset        file_npairs,\n                         const MPI_Offset *file_offs,\n                         const MPI_Offset *file_lens,\n                         MPI_Offset        buf_npairs,\n                         const MPI_Offset *buf_offs,\n                         const MPI_Offset *buf_lens);\n```\n* File access layout is described by arguments `file_npairs`, `file_offs`, and\n  `file_lens`.\n  + `file_npairs` is the number of offset-length pairs,\n  + `file_offs` is an array containing `file_npairs` number of non-contiguous\n    file offsets, and\n  + `file_lens` is an array containing `file_npairs` number of non-contiguous\n    request lengths, each corresponding to the element in `file_offs`.\n* Buffer layout is described by arguments `buf_npairs`, `buf_offs`, and\n  `buf_lens`.\n  + `buf_npairs` is the number of offset-length pairs,\n  + `buf_offs` is an array containing `buf_npairs` number of non-contiguous\n    offsets relative to the memory address pointed by argument `buf`, and\n  + `buf_lens` is an array containing `buf_npairs` number of non-contiguous\n    request lengths, each corresponding to the element in `buf_offs`.\n\n## User documents\n* [C API references](docs/APIs.md)\n* A complete list of [I/O hints](docs/hints.md) supported by GIO\n* GIO [utility programs](./utils/README.md)\n\n## Related Projects and Application Users\n* [PnetCDF](https://parallel-netcdf.github.io), a high-level parallel I/O\n  library for accessing Unidata's NetCDF, files in classic formats.\n\n\n---\nCopyright (C) 2026, Northwestern University.\n\nSee COPYRIGHT notice in top-level directory.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwkliao%2Fgio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwkliao%2Fgio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwkliao%2Fgio/lists"}