diff --git a/.jenkins/precheckin.groovy b/.jenkins/precheckin.groovy index 1b66e2a5..c0d20261 100644 --- a/.jenkins/precheckin.groovy +++ b/.jenkins/precheckin.groovy @@ -17,7 +17,7 @@ def runCI = //customize for project prj.paths.build_command = buildCommand - prj.libraryDependencies = ['rocBLAS-internal', 'rocSPARSE-internal', 'rocSOLVER', 'hipSPARSE'] + prj.libraryDependencies = ['rocBLAS', 'rocSPARSE', 'rocSOLVER', 'hipSPARSE'] prj.defaults.ccache = true // Define test architectures, optional rocm version argument is available @@ -54,8 +54,6 @@ def runCI = def setupCI(urlJobName, jobNameList, buildCommand, runCI, label) { - jobNameList = auxiliary.appendJobNameList(jobNameList) - jobNameList.each { jobName, nodeDetails-> @@ -70,21 +68,18 @@ def setupCI(urlJobName, jobNameList, buildCommand, runCI, label) { properties(auxiliary.addCommonProperties([pipelineTriggers([cron('0 1 * * *')])])) stage(label + ' ' + urlJobName) { - runCI([ubuntu18:['gfx906']], urlJobName, buildCommand, label) + runCI([ubuntu22:['gfx90a']], urlJobName, buildCommand, label) } } - } ci: { String urlJobName = auxiliary.getTopJobName(env.BUILD_URL) - def propertyList = ["compute-rocm-dkms-no-npi-hipclang":[pipelineTriggers([cron('0 1 * * 0')])], - "rocm-docker":[]] + def propertyList = ["main":[pipelineTriggers([cron('0 1 * * 0')])]] propertyList = auxiliary.appendPropertyList(propertyList) - def jobNameList = ["compute-rocm-dkms-no-npi-hipclang":([ubuntu18:['gfx900'],centos7:['gfx906'],sles15sp1:['gfx908']]), - "rocm-docker":([ubuntu18:['gfx900'],centos7:['gfx906'],sles15sp1:['gfx906']])] + def jobNameList = [] jobNameList = auxiliary.appendJobNameList(jobNameList) propertyList.each diff --git a/README.md b/README.md index 4ffe98c0..9919ad31 100644 --- a/README.md +++ b/README.md @@ -31,11 +31,11 @@ hipSOLVER requires either cuSOLVER or rocSOLVER + SuiteSparse to be installed on Once installed, hipSOLVER can be used just like any other library with a C API. The header file will need to be included in the user code, and the hipSOLVER library will become a link-time and run-time dependency for the user application. -For more information on building and installing hipSOLVER, see the [hipSOLVER install guide](https://rocm.docs.amd.com/projects/hipSOLVER/en/latest/userguide/install.html) +For more information on building and installing hipSOLVER, see the [hipSOLVER install guide](https://rocm.docs.amd.com/projects/hipSOLVER/en/latest/installation/index.html) ## Using the hipSOLVER Interface -The hipSOLVER interface is compatible with the rocSOLVER and cuSOLVER-v11 APIs. Porting a CUDA application that originally calls the cuSOLVER API to an application calling the hipSOLVER API should be fairly straightforward (see [porting a cuSOLVER application to hipSOLVER](https://rocm.docs.amd.com/projects/hipSOLVER/en/latest/userguide/usage.html#porting-cusolver-applications-to-hipsolver)). For example, the hipSOLVER SGEQRF interface is +The hipSOLVER interface is compatible with the rocSOLVER and cuSOLVER-v11 APIs. Porting a CUDA application that originally calls the cuSOLVER API to an application calling the hipSOLVER API should be fairly straightforward (see [porting a cuSOLVER application to hipSOLVER](https://rocm.docs.amd.com/projects/hipSOLVER/en/latest/howto/usage.html#porting-cusolver-applications-to-hipsolver)). For example, the hipSOLVER SGEQRF interface is ```c hipsolverStatus_t @@ -62,4 +62,4 @@ hipsolverSgeqrf(hipsolverHandle_t handle, ## Supported Functionality -For a complete listing of all supported functions, see the [hipSOLVER user guide](https://rocm.docs.amd.com/projects/hipSOLVER/en/latest/userguide/index.html) and/or [API documentation](https://rocm.docs.amd.com/projects/hipSOLVER/en/latest/api/index.html). +For a complete listing of all supported functions, see the [hipSOLVER user guide](https://rocm.docs.amd.com/projects/hipSOLVER/en/latest/howto/usage.html) and/or [API documentation](https://rocm.docs.amd.com/projects/hipSOLVER/en/latest/reference/index.html). diff --git a/docs/howto/index.rst b/docs/howto/index.rst index f672bb7d..4e1e2e29 100644 --- a/docs/howto/index.rst +++ b/docs/howto/index.rst @@ -5,7 +5,7 @@ .. _ug_index: ******************************************************************** -How-To +How to ******************************************************************** This section provides guides on how to use the hipSOLVER library and its diff --git a/docs/howto/usage.rst b/docs/howto/usage.rst index 7d689d2f..2a7913b7 100644 --- a/docs/howto/usage.rst +++ b/docs/howto/usage.rst @@ -11,7 +11,7 @@ Using hipSOLVER hipSOLVER is an open-source marshalling library for `LAPACK routines `_ on the GPU. It sits between a backend library and the user application, marshalling inputs to and outputs from the backend library so that the user application remains unchanged when using different backends. Currently, two backend libraries are supported by hipSOLVER: NVIDIA's `cuSOLVER -library `_ and AMD's open-source `rocSOLVER library `_. +library `_ and AMD's open-source `rocSOLVER library `_. The :ref:`regular hipSOLVER API ` is a thin wrapper layer around the different backends. As such, it is not expected to introduce significant overhead. However, its main purpose is portability, so when performance is critical directly using the library backend is recommended. @@ -21,7 +21,7 @@ in the user code, and the shared library will become link-time and run-time depe user code can be ported, with no changes, to any system with hipSOLVER installed regardless of the backend library. For more details on how to use the API methods, see the code samples on -`hipSOLVER's Clients github page `_, or +`hipSOLVER's clients' GitHub page `_, or the documentation of the corresponding backend libraries. .. _porting: @@ -30,7 +30,7 @@ Porting cuSOLVER applications to hipSOLVER ============================================ Another purpose of hipSOLVER is to facilitate the translation of cuSOLVER applications to -`AMD's open source ROCm platform `_ ecosystem. +:doc:`AMD's open-source ROCm platform ` ecosystem. hipSOLVER is designed to make it easy for users of cuSOLVER to port their existing applications to hipSOLVER, and provides two separate but interchangeable API patterns in order to facilitate a two-stage transition process. Users are encouraged to start with hipSOLVER's compatibility APIs, which use the :ref:`hipsolverDn `, :ref:`hipsolverSp `, and @@ -234,7 +234,7 @@ Using rocSOLVER's memory model Most hipSOLVER functions take a workspace pointer and size as arguments, allowing the user to manage the device memory used internally by the backends. rocSOLVER, however, can maintain the device workspace automatically by default -(see `rocSOLVER's memory model `_ for more details). In order to take +(see :doc:`rocSOLVER's memory model ` for more details). In order to take advantage of this feature, users may pass a null pointer for the `work` argument or a zero size for the `lwork` argument of any function when using the rocSOLVER backend, and the workspace will be automatically managed behind-the-scenes. It is recommended, however, to use a consistent strategy for workspace management, as performance issues may arise if the internal workspace is made to flip-flop between @@ -246,9 +246,7 @@ user-provided and automatically allocated workspaces. Using rocSOLVER's in-place functions -------------------------------------- - -The solvers `gesv` and `gels` in cuSOLVER are out-of-place in the sense that the solution vectors `X` do not overwrite the -input matrix `B`. In rocSOLVER this is not the case; when `hipsolverXXgels` or `hipsolverXXgesv` call rocSOLVER, some data +The solvers `gesv` and `gels` in cuSOLVER are out-of-place in the sense that the solution vectors `X` do not overwrite the input matrix `B`. In rocSOLVER this is not the case; when `hipsolverXXgels` or `hipsolverXXgesv` call rocSOLVER, some data movements must be done internally to restore `B` and copy the results back to `X`. These copies could introduce noticeable overhead depending on the size of the matrices. To avoid this potential problem, users can pass `X = B` to `hipsolverXXgels` or `hipsolverXXgesv` when using the rocSOLVER backend; in this case, no data movements will be required, and the solution diff --git a/docs/index.rst b/docs/index.rst index 95a02206..66f37543 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -10,7 +10,7 @@ hipSOLVER documentation hipSOLVER is a LAPACK marshalling library, with multiple supported backends. It sits between the application and a 'worker' LAPACK library, marshalling inputs into the backend library and marshalling results back to the application. hipSOLVER supports rocSOLVER and cuSOLVER as backends. hipSOLVER exports an interface that does not require the client to change, regardless of the chosen backend. -The code is open and hosted at: https://github.com/ROCm/hipSOLVER +The code is open and hosted at: ``__ The hipSOLVER documentation is structured as follows: @@ -21,7 +21,7 @@ The hipSOLVER documentation is structured as follows: * :ref:`install-linux` - .. grid-item-card:: How-to + .. grid-item-card:: How to * :ref:`usage_label` @@ -35,7 +35,7 @@ The hipSOLVER documentation is structured as follows: :ref:`usage_label` is the starting point for new users of the library. For a list of currently implemented routines in the different APIs refer to :ref:`api-intro`. -To contribute to the documentation refer to `Contributing to ROCm `_. +To contribute to the documentation refer to :doc:`Contributing to ROCm `. -You can find licensing information on the `Licensing `_ page. +You can find licensing information on the :doc:`Licensing ` page. diff --git a/docs/installation/index.rst b/docs/installation/index.rst index cfe48362..0f261144 100644 --- a/docs/installation/index.rst +++ b/docs/installation/index.rst @@ -8,6 +8,6 @@ Installation ******************************************************************** -This section provides a guide to install hipSOLVER in different systems. +This section provides a guide to install hipSOLVER on different systems. * :ref:`install-linux` diff --git a/docs/installation/install.rst b/docs/installation/install.rst index ac37f4aa..0f1c4c36 100644 --- a/docs/installation/install.rst +++ b/docs/installation/install.rst @@ -11,9 +11,9 @@ Installation on Linux Install pre-built packages =========================== -Download pre-built packages from `ROCm's package servers `_. Updates to each release are listed in the ``CHANGELOG.md`` file under the releases tab of the `hipSOLVER github page `_. +Download pre-built packages from :doc:`ROCm's package servers `. Updates to each release are listed in the ``CHANGELOG.md`` file under the releases tab of the `hipSOLVER GitHub page `_. -* `sudo apt update && sudo apt install hipsolver` +* ``sudo apt update && sudo apt install hipsolver`` .. note:: The pre-built packages depend on the third-party library SuiteSparse, which must be installed on the system prior to installing hipSOLVER. SuiteSparse can be installed using the package manager of most distros. @@ -68,7 +68,7 @@ The rocSOLVER backend has the following dependencies: 4. `SuiteSparse `_ modules CHOLMOD and SuiteSparse_config (optional, required by default) rocSOLVER itself depends on rocBLAS and rocSPARSE, therefore all three libraries should be present with a standard rocSOLVER installation. For more information -about building and installing rocSOLVER, refer to the `rocSOLVER documentation `_. +about building and installing rocSOLVER, refer to the :doc:`rocSOLVER documentation `. SuiteSparse is a third-party library, and can be installed using the package managers of most distros. Together with rocSPARSE, it is used to provide functionality for the hipsolverSp API. If only hipsolverDn and/or hipsolverRf are needed, these dependencies can be ignored by setting the ``BUILD_WITH_SPARSE`` @@ -115,8 +115,8 @@ install the respective library via: * ``./install.sh -i`` -More details can be found in the `hipBLAS documentation `_ -and the `hipSPARSE documentation `_. +Find more details in the :doc:`hipBLAS documentation ` +and the :doc:`hipSPARSE documentation `. Library and clients -------------------- diff --git a/docs/reference/api/index.rst b/docs/reference/api/index.rst index 19d010be..374db9aa 100644 --- a/docs/reference/api/index.rst +++ b/docs/reference/api/index.rst @@ -10,7 +10,7 @@ hipSOLVER regular API This document provides the method signatures for wrapper functions that are currently implemented in hipSOLVER. For a complete description of the functions' behavior and arguments, see the corresponding backend documentation -at `cuSOLVER API `_ and/or `rocSOLVER API `_. +at `cuSOLVER API `_ and/or :doc:`rocSOLVER API `. The hipSOLVER API is designed to be similar to the cuSOLVER and rocSOLVER interfaces, but it requires some minor adjustments to ensure the best performance out of both backends. Generally, this involves the addition of workspace parameters and some additional API methods. diff --git a/docs/reference/dense-api/types.rst b/docs/reference/dense-api/types.rst index 08a5ce15..b7aad029 100644 --- a/docs/reference/dense-api/types.rst +++ b/docs/reference/dense-api/types.rst @@ -55,6 +55,6 @@ hipsolverAlgMode_t .. doxygenenum:: hipsolverAlgMode_t hipsolverDnFunction_t --------------------- +--------------------- .. doxygenenum:: hipsolverDnFunction_t diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index 10fefd37..dfd5975f 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -1,14 +1,16 @@ defaults: numbered: False root: index -entries: -- file: installation/index.rst +subtrees: +- caption: Install entries: - file: installation/install.rst -- file: howto/index.rst + +- caption: How to entries: - file: howto/usage.rst -- file: reference/index.rst + +- caption: Reference entries: - file: reference/intro.rst - file: reference/api/index.rst @@ -35,4 +37,7 @@ entries: - file: reference/refactor-api/types.rst - file: reference/refactor-api/helpers.rst - file: reference/refactor-api/refactor.rst -- file: license.rst + +- caption: About + entries: + - file: license.rst diff --git a/docs/sphinx/requirements.in b/docs/sphinx/requirements.in index 4fd9e4e4..c00b16b0 100644 --- a/docs/sphinx/requirements.in +++ b/docs/sphinx/requirements.in @@ -1 +1 @@ -rocm-docs-core==1.0.0 +rocm-docs-core==1.4.1 diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index fb8e3a8d..4ce86c30 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -92,7 +92,7 @@ requests==2.28.2 # via # pygithub # sphinx -rocm-docs-core==1.0.0 +rocm-docs-core==1.4.1 # via -r requirements.in smmap==5.0.0 # via gitdb