{"id":22411121,"url":"https://github.com/e3sm-project/scorpio","last_synced_at":"2025-07-31T21:31:10.861Z","repository":{"id":38068439,"uuid":"96376999","full_name":"E3SM-Project/scorpio","owner":"E3SM-Project","description":"A high-level Parallel I/O Library for structured grid applications","archived":false,"fork":false,"pushed_at":"2024-11-26T17:45:49.000Z","size":33072,"stargazers_count":21,"open_issues_count":101,"forks_count":16,"subscribers_count":124,"default_branch":"master","last_synced_at":"2024-11-26T18:36:18.261Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/E3SM-Project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-06T01:50:57.000Z","updated_at":"2024-11-08T16:40:15.000Z","dependencies_parsed_at":"2023-12-24T23:43:17.379Z","dependency_job_id":"595b80ea-b664-46c8-83fc-9b6be1634a43","html_url":"https://github.com/E3SM-Project/scorpio","commit_stats":{"total_commits":4133,"total_committers":30,"mean_commits":"137.76666666666668","dds":0.6629566900556496,"last_synced_commit":"2d62e23db5bbb135fea3cbb4c5a9667162d475f5"},"previous_names":[],"tags_count":199,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/E3SM-Project%2Fscorpio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/E3SM-Project%2Fscorpio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/E3SM-Project%2Fscorpio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/E3SM-Project%2Fscorpio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/E3SM-Project","download_url":"https://codeload.github.com/E3SM-Project/scorpio/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228304099,"owners_count":17898920,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-12-05T13:13:06.375Z","updated_at":"2024-12-05T13:13:07.059Z","avatar_url":"https://github.com/E3SM-Project.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Software for Caching Output and Reads for Parallel I/O (SCORPIO)\n\nA high-level Parallel I/O Library for structured grid applications. This library was derived from the [Parallel I/O library](https://github.com/NCAR/ParallelIO).\n\n## Website\n\nFor complete documentation, see the HTML documentation in the docs/html directory.\n\n## Nightly Tests\n\nThe results of our nightly tests on multiple platforms can be found on our\ncdash site at [http://my.cdash.org/index.php?project=E3SM_SCORPIO](http://my.cdash.org/index.php?project=E3SM_SCORPIO).\n\n## Dependencies\n\nSCORPIO can use NetCDF (version 4.3.3+), PnetCDF (version 1.6.0+) or\nADIOS (version 2.6.0+) for I/O.\n\nIdeally, the NetCDF version should be built with MPI, which requires that it\nbe linked with an MPI-enabled version of HDF5.  Optionally, NetCDF can be \nbuilt with DAP support, which introduces a dependency on CURL.  Additionally,\nHDF5, itself, introduces dependencies on LIBZ and (optionally) SZIP.\n\n## Configuring with CMake\n\nTo configure the build, SCORPIO requires CMake version 2.8.12+.  The typical\nconfiguration with CMake can be done as follows:\n\n```\nCC=mpicc CXX=mpicxx FC=mpif90 cmake [-DOPTION1=value1 -DOPTION2=value2 ...] /path/to/pio/source\n```\n\nwhere `mpicc`, `mpicxx` and `mpif90` are the appropriate MPI-enabled compiler wrappers for your system.\n\nThe `OPTIONS` section typically should consist of pointers to the install\nlocations for various dependencies, assuming these dependencies are not \nlocated in *canonical* search locations.  \n\nFor each dependency `XXX`, one can specify the location of its \ninstallation path with the CMake variable `XXX_PATH`.  If the `C` and\n`Fortran` libraries for the dependency are installed in different locations\n(such as can be done with NetCDF), then you can specify individually\n`XXX_C_PATH` and `XXX_Fortran_PATH`.  Hence, you can specify the locations\nof both NetCDF-C and NetCDF-Fortran, as well as PnetCDF, with the following\nCMake configuration line:\n\n```\nCC=mpicc CXX=mpicxx FC=mpif90 cmake -DNetCDF_C_PATH=/path/to/netcdf-c \\\n                         -DNetCDF_Fortran_PATH=/path/to/netcdf-fortran \\\n                         -DPnetCDF_PATH=/path/to/pnetcdf \\\n                         /path/to/pio/source\n```\n\nThis works for the dependencies: `NetCDF`, `PnetCDF`, `HDF5`, `LIBZ`, `SZIP`.\n\n### Additional CMake Options\n\nAdditional configuration options can be specified on the command line.\n\nThe `PIO_ENABLE_TIMING` option can be set to `ON` or `OFF` to enable or\ndisable the use of GPTL timing in the SCORPIO libraries.  This feature requires\nthe GPTL C library for the SCORPIO `C` library and the GPTL Fortran library with\nthe `perf_mod.mod` and `perf_utils.mod` interface modules.  If these GPTL\nlibraries are already installed on the system, the user can point SCORPIO to the\nlocation of these libraries with the `GPTL_PATH` variable (or, individually,\n`GPTL_C_PATH` and `GPTL_Fortran_Perf_PATH` variables).  However, if these\nGPTL libraries are not installed on the system, and GPTL cannot be found,\nthen SCORPIO will build its own internal version of GPTL.\n\nIf PnetCDF is not installed on the system, the user can disable its use by\nsetting `-DWITH_PNETCDF=OFF`.  This will disable the search for PnetCDF on the\nsystem and disable the use of PnetCDF from within SCORPIO.\n\nNetCDF is optional if PnetCDF is used, and the user can disable its use by\nsetting `-DWITH_NETCDF=OFF`.  This will disable the search for NetCDF on the\nsystem and disable the use of NetCDF from within SCORPIO.\n\nADIOS is another I/O library supported by SCORPIO, and the user can enable\nit by setting `-DWITH_ADIOS2=ON`. The path to the ADIOS install location\nneeds to be specified by setting the `ADIOS2_DIR` environment variable to\nthe install path.\n\nIf the user wishes to disable the SCORPIO tests, then the user can set the\nvariable `-DPIO_ENABLE_TESTS=OFF`.  This will entirely disable the CTest \ntesting suite, as well as remove all of the test build targets.\n\nIf you wish to install SCORPIO in a safe location for use later with other\nsoftware, you may set the `CMAKE_INSTALL_PREFIX` variable to point to the\ndesired install location.\n\n## Building\n\nOnce you have successfully configured SCORPIO with CMake in a build directory.\nFrom within the build directory, build SCORPIO with:\n\n```\nmake\n```\n\nThis will build the `pioc` and `piof` libraries.\n\n## Testing\n\nIf you desire to do testing, and `PIO_ENABLE_TESTS=ON` (which is the default\nsetting), you may build the test executables with:\n\n```\nmake tests\n```\n\nOnce the tests have been built, you may run tests with:\n\n```\nctest\n```\n\nIf you have not run `make tests` before you run `ctest`, then you will see\nall of the tests fail.\n\nAlternatively, you may build the test executables and then run tests \nimmediately with:\n\n```\nmake check\n```\n\n(similar to the typical `make check` Autotools target).\n\n**NOTE:** It is important to note that these tests are designed to run in parallel.\nIf you are on one of the supported supercomputing platforms (i.e., NERSC, NWSC, ALCF, \netc.), then the `ctest` command will assume that the tests will be run in an appropriately\nconfigured and scheduled parallel job.  This can be done by requesting an interactive\nsession from the login nodes and then running `ctest` from within the interactive\nterminal.  Alternatively, this can be done by running the `ctest` command from a\njob submission script.  It is important to understand, however, that `ctest` itself\nwill preface all of the test executable commands with the appropriate `mpirun`/`mpiexec`/`runjob`/etc.\nHence, you should not further preface the `ctest` command with these MPI launchers.\n\n## Installing\n\nOnce you have built the SCORPIO libraries, you may install them in the location\nspecified by the `CMAKE_INSTALL_PREFIX`.  To do this, simply type:\n\n```\nmake install\n```\n\nIf the internal GPTL libraries were built (because GPTL could not be found\nand the `PIO_ENABLE_TIMING` variable is set to `ON`), then these libraries\nwill be installed with SCORPIO.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fe3sm-project%2Fscorpio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fe3sm-project%2Fscorpio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fe3sm-project%2Fscorpio/lists"}