Debian Patches

Status for rocsolver/5.5.1-5

Patch Description Author Forwarded Bugs Origin Last update
0001-use-local-mathjax.patch use local mathjax
The sphinx.ext.mathjax extension defaults to loading mathjax from a
CDN, which results in the lintian warning 'privacy-breach-generic'.
Use a local copy of mathjax to prevent that problem.
Cordell Bloor <cgmb@slerp.xyz> not-needed 2023-07-17
0002-remove-m2r2-dependency.patch remove m2r2 dependency
The m2r2 (Markdown to ReStructured Text) package is not available in
Debian, but it's also not really needed.
Cordell Bloor <cgmb@slerp.xyz> no 2023-07-17
0003-fmt-compatibility.patch [PATCH] Fix use of fmt 9.0 and later in logging test (#515)
The implicitly defined formatter that rocsolver was using for
std::filesystem::path has been removed from fmt 9.0 and later.

This change doesn't actually fix compatibility with the official
fmt 9.0 or 9.1 releases, because those releases are still
incompatible with HIP. However, the change is sufficient for using
rocsolver with fmt@9 from Spack (because the fix has been backported).
Cory Bloor <Cordell.Bloor@amd.com> no 2023-01-25
0004-hide-kernel-symbols.patch [PATCH] Hide symbols for GPU kernels (#512)
The -fvisibility=hidden flag does not affect kernels and thus all
__global__ GPU functions become externally-visible symbols by default.
If a user defines a kernel with the same name and parameters as a
kernel that is defined in rocsolver, there will be a conflict.

There will not be any sort of compilation or linker error, but the
rocSOLVER definition of the function will be used instead of the user
definition. That is a problem, because our kernel function names do not
use any sort of prefix or namespace to prevent name conflicts with
functions defined by library users.

We have always built rocSOLVER in such a way that each translation unit
gets its own GPU code object in the final library binary. Unlike normal
template function instantiations, GPU template function instantiations
are not deduplicated by the linker. From the point of view of code
duplication, __global__ functions are already effectively static!

At some point, we should investigate whether rocSOLVER would benefit
from compiler options that combined the code objects to reduce the
amount of duplicated code in the library binary. For now, the default
behaviour means that there's no additional duplication introduced by
marking the GPU kernels as static --- not because there's no
duplication, but because everything that _would_ get duplicated already
has been duplicated.

In summary, marking __global__ kernels as static appears to be a simple
and effective way to prevent symbol conflicts between library and user
code.
Cory Bloor <Cordell.Bloor@amd.com> no 2023-01-25
0005-doxygen-Add-parent-directory-to-inputs.patch doxygen: Add parent directory to inputs
Needed for ../README.md and other inputs. Otherwise, this generates a
warning with newer doxygen, and build fails because of WARN_AS_ERROR.

Not forwarding, as documentation build has changed with ROCm 5.6, and
the issue should be reproduced there, first.
Christian Kastner <ckk@debian.org> no 2023-09-14
0006-rm-immintrin-include.patch rm immintrin include
Fix the build on ppc64el.
Cordell Bloor <cgmb@slerp.xyz> yes 2024-03-02
0007-fix-reserved-identifiers.patch [PATCH] Fix reserved identifiers in include guards (#513)
The include guards have been changed to the filename in uppercase
letters with all non-alphanumeric symbols replaced by underscore.
This include guard pattern matches the guard that is used for the
generated file rocsolver-export.h.

There are two reasons for this:
1. The C and C++ standards reserve all identifiers that begin with
underscore followed by a capital letter [C99 §7.1.3]
[C++11 §17.6.4.3.2].
2. In user-visible code, the rocSOLVER library should prevent name
conflicts by only using identifiers that begin with `rocblas`,
`ROCBLAS`, `rocsolver` or `ROCSOLVER`.
Cory Bloor <Cordell.Bloor@amd.com> no 2023-01-25
0008-check-for-hip-errors.patch [PATCH] Check HIP API return values on all calls (#493)
* Check HIP API return values on all calls

* Check for HIP errors in SYEVJ/HEEVJ

* Drop padding checks from d_vector

* Fix error logging on success
Cory Bloor <Cordell.Bloor@amd.com> no 2023-01-26
0009-verbose-build-of-specialized-kernels.patch verbose build of specialized kernels
These files take so long to build on slower ppc64el and arm64 systems
that the build may time out due to inactivity. This is typically when
building for ten or more GPU architectures. Add the verbose flag so that
there is output printed as the compiler finishes building a translation
unit for each architecture.
Cordell Bloor <cgmb@slerp.xyz> not-needed 2024-03-19

All known versions for source package 'rocsolver'

Links