Skip to content

Commit

Permalink
[RFC|oneMKL]Enable programmatic versioning (#561)
Browse files Browse the repository at this point in the history
* Enable programmatic versioning

* fix version

* Add version macros

* fix typo

* Use codeblock

* multiline codeblock

* format RST

* Limit raw text to 80col length

* Remove top-level version macro

* Revert changes from versioning.rst

* [oneMKL]Add numerical versioning

* Fix formatting

* Update other_architecture.inc.rst

* Use domain-specific macros instead

* Clarify lack of revision number

* Use SPBLAS instead of SPARSE as the domain name

* Add STAT domain macro

* Add rules for incompliance

* Change STAT to STATS as the domain name

* Add link to versioning details
  • Loading branch information
vmalia authored Sep 30, 2024
1 parent 0d49ed8 commit 89d1dc7
Showing 1 changed file with 34 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,43 @@ This section covers all other features in the design of oneMKL architecture.

.. _onemkl_spec_current_version:

Current Version of this oneMKL Specification
Specification Version and Compliance
+++++++++++++++++++++++++++++++++++++++++++++

This is the oneMKL specification which is part of the oneAPI specification version 1.0.0.
Each oneMKL domain must define a preprocessor macro to represent the version of the specification that the implementation is compliant with.

The macros for each domain are listed as follows:

| ONEMKL_BLAS_SPEC_VERSION
| ONEMKL_LAPACK_SPEC_VERSION
| ONEMKL_SPBLAS_SPEC_VERSION
| ONEMKL_DFT_SPEC_VERSION
| ONEMKL_RNG_SPEC_VERSION
| ONEMKL_STATS_SPEC_VERSION
| ONEMKL_VM_SPEC_VERSION
The specification version can be created by appending all digits of the specification version in the format of <MAJOR><MINOR>. MINOR version always uses two digits. This version can be used to check the compatibility of the implementation with the specification version. Note that the revision is not included here because it reflects changes only for the specification document without affecting the implementation. If the implementation is not compliant with any release of the specification, then the macro must have a numerical value of `000`.

Version Example

| oneAPI 1.1 rev 1 will be represented as a numerical value of 101
| oneAPI 1.2 rev 1 will be represented as a numerical value of 102
| oneAPI 1.2 rev 2 will be represented as a numerical value of 102
Macro Example

.. code-block:: c
// For oneAPI 1.2 rev 1
#define ONEMKL_BLAS_SPEC_VERSION 102
// For oneAPI 1.2 rev 2
#define ONEMKL_DFT_SPEC_VERSION 102
// For oneAPI 1.3 rev 1
#define ONEMKL_VM_SPEC_VERSION 103
Versioning details are defined here: https://github.com/uxlfoundation/oneAPI-spec/blob/main/doc/versioning.rst#provisional-versions

.. _onemkl_pre_post_conditions:

Expand Down

0 comments on commit 89d1dc7

Please sign in to comment.