Skip to content

Latest commit

 

History

History
37 lines (32 loc) · 9.2 KB

dtk-policy-compatibility.md

File metadata and controls

37 lines (32 loc) · 9.2 KB

xSDK Community Policy Compatibility for DataTransferKit

Website: https://github.com/ORNL-CEES/DataTransferKit

Mandatory Policies

Policy Support Notes
M1. Support portable installation through Spack. Full DTK is a spack package: https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/datatransferkit/package.py
M2. Provide a comprehensive test suite for correctness of installation verification. Full DTK uses CTest for running comprehensive tests.
M3. Employ user-provided MPI communicator (no MPI_COMM_WORLD). Don't assume a full MPI 3 implementation without checking. Provide an option to prevent any changes to MPI error-handling if it is changed by default. Full Only user-provided communicators are used.
M4. Give best effort at portability to key architectures (standard Linux distributions, GNU, Clang, vendor compilers, and target machines at ALCF, NERSC, OLCF). Full DTK has been tested at ALCF, OLCF, and with a variety of platforms (Linux, Mac OSX) and compilers (Clang, GNU, NVCC, IBM, etc.)
M5. Provide a documented, reliable way to contact the development team. Full https://github.com/ORNL-CEES/DataTransferKit/blob/master/CONTRIBUTING.md
M6. Respect system resources and settings made by other previously called packages (e.g. signal handling). Full DTK doesn't interfere with that.
M7. Come with an open source (BSD style) license. Full BSD 3-Clause
M8. Provide a runtime API to return the current version number of the software. Full DataTransferKit::version() and DataTransferKit::gitCommitHash()
M9. Use a limited and well-defined symbol, macro, library, and include file name space. Full All DTK functionality is wrapped in the DataTransferKit namespace, macros start with DTK_, header files have the format DTK_*.
M10. Provide an xSDK team accessible repository (not necessarily publicly available). Full https://github.com/ORNL-CEES/DataTransferKit
M11. Have no hardwired print or IO statements that cannot be turned off. Full DTK doesn't use any IO statements.
M12. For external dependencies, allow installing, building, and linking against an outside copy of external software. Full All dependencies can be provided externally.
M13. Install headers and libraries under <prefix>/include and <prefix>/lib. Full Yes, the install path is chosen via CMAKE_INSTALL_PREFIX.
M14. Be buildable using 64 bit pointers. 32 bit is optional. Full Yes, whatever the compiler uses.
M15. All xSDK compatibility changes should be sustainable. Full The xSDK compatibility requirements are fulfilled by the default branch.
M16. Any xSDK-compatible package that compiles code should have a configuration option to build in Debug mode. Full Via CMake.

Recommended Policies

Policy Support Notes
R1. Have a public repository. Full https://github.com/ORNL-CEES/DataTransferKit
R2. Possible to run test suite under valgrind in order to test for memory corruption issues. None DTK tests run under valgrind. We also have static analysis with clang in our continuous integration system.
R3. Adopt and document consistent system for error conditions/exceptions. Full DTK uses C++ exceptions for error handling in the library and error codes for error handling in the C interface.
R4. Free all system resources acquired as soon as they are no longer needed. Full DTK requires Kokkos which needs to be initialized and finalized at before using DTK resp. after using DTK
R5. Provide a mechanism to export ordered list of library dependencies. Full Via CMake.
R6. Document versions of packages that it works with or depends upon, preferably in machine-readable form. Full Via CMake.
R7. Have README, SUPPORT, LICENSE, and CHANGELOG files in top directory. Partial https://github.com/ORNL-CEES/DataTransferKit/blob/master/README.md, https://github.com/ORNL-CEES/DataTransferKit/blob/master/LICENSE.
R8. Each xSDK member package should have sufficient documentation to support use and further development. Partial https://datatransferkit.readthedocs.io/en/latest