Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 37 additions & 13 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,10 @@
the code only.
* Tutorial pages of complete, runnable Fortran programs for rocBLAS, hipBLAS,
rocRAND and hipRAND, and a *Fortran interface variants* how-to page covering
the `hipMalloc`/`hipMemcpy` array interfaces and the experimental Fortran 2018
assumed-rank mode.
the `hipMalloc`/`hipMemcpy` array interfaces, the experimental Fortran 2018
assumed-rank mode, and the two forms of a scalar passed by pointer: when to
pass the variable and when its address, the device pointer mode, and
hipSOLVER's `devInfo`.
* Test coverage for:
* the BLAS `nrm2`, `asum`, `iamax`/`iamin`, `ger`, `syrk`/`herk`,
`symm`/`hemm`, `trmm`, `geam` and `gemm_ex` routines in rocBLAS and hipBLAS;
Expand All @@ -34,7 +36,11 @@
* the version, pointer-mode, handle-state and descriptor getters of nine
libraries;
* the rocRAND and hipRAND `mrg32k3a`, `mtgp32` and `sobol32` generators and
the Poisson and log-normal distributions.
the Poisson and log-normal distributions;
* the `_typed` forms of scalar arguments, through rocBLAS, hipBLAS, rocSPARSE
and hipSPARSE tests that pass `alpha`, `beta` or a result as Fortran
variables, and hipSOLVER `getrf` tests that pass a device `devInfo` to the
array overloads.

### Changed

Expand All @@ -51,28 +57,35 @@
```

This covers:
* the scalars a library reads per its handle's pointer mode: `alpha` and
`beta` throughout rocBLAS, hipBLAS, rocSPARSE and hipSPARSE,
`nnzTotalDevHostPtr`, the rotation `c`/`s`, the coloring outputs. The
`type(c_ptr)` form makes `rocblas_pointer_mode_device` and its equivalents
usable from Fortran;
* the scalars a library reads or writes per its handle's pointer mode:
`alpha` and `beta` throughout rocBLAS, hipBLAS, rocSPARSE and hipSPARSE,
the `dot`, `nrm2`, `asum` and `iamax`/`iamin` results and the `rot`, `rotg`
and `rotmg` scalars of rocBLAS and hipBLAS, the sparse `doti`/`dotci`
results, `nnzTotalDevHostPtr`, the nnz counts of the `*_nnz` routines and
the pivot positions. The `type(c_ptr)` form makes
`rocblas_pointer_mode_device` and its equivalents usable from Fortran;
* the host outputs: the HIP runtime queries (`hipStreamGetId`,
`hipStreamGetCaptureInfo`, `hipFuncGetAttribute`,
`hipDeviceGetP2PAttribute`, the `hipOccupancy*` and `hipGraph*` counts,
...), the version, pointer-mode, math-mode and handle-state getters of the
BLAS, sparse and solver libraries, the hipSPARSE and rocSPARSE descriptor
getters, `hipblasGetProperty`, `hipfftGetProperty`, the hipSOLVER buffer
sizes, `*gels` `niters` and `*{sy,he}evdx`/`*{sy,he}gvdx` `nev`, and
`rocfft_cache_serialize`. An output the C API lets the caller skip is
`optional` in the `_typed` form; pass `c_null_ptr` to the `type(c_ptr)`
one.
getters, `hipblasGetProperty`, `hipfftGetProperty`, the hipBLAS
`getrs`/`geqrf`/`gels` `info`, the hipSOLVER buffer sizes, `*gels`
`niters` and `*{sy,he}evdx`/`*{sy,he}gvdx` `nev`, the `csrcolor` color
count, `hipChooseDevice`, and `rocfft_cache_serialize`. An output the C
API lets the caller skip is `optional` in the `_typed` form; pass
`c_null_ptr` to the `type(c_ptr)` one.

Scalars that only ever live on the device, such as rocSOLVER `info` and
hipSOLVER `devInfo`, keep the `type(c_ptr)` form only.

The 28 rocSPARSE and hipSPARSE routines with both kinds (`alpha`/`beta` beside
a buffer size) also get `<routine>_devptr`, for the device pointer mode: the
pointer-mode scalars as `type(c_ptr)`, the host outputs typed.

The array overloads take the BLAS results and the hipBLAS `info` as
variables too; their `<routine>_rank_N_devptr` variants keep the
`type(c_ptr)` these arguments have always taken there.
* hipSOLVER `devInfo` is device memory. The `bind(C)` specific takes it as
`type(c_ptr), value`, with no typed form: a host integer next to `type(c_ptr)`
buffers would be written by the GPU. The array overloads take it as an
Expand Down Expand Up @@ -175,6 +188,17 @@
SDDMM test is dropped, because rocSPARSE does not support batched SDDMM.
* Fixed factual errors across the tutorial pages, and added the missing
tutorials to the documentation landing page.
* The `source`/`dsource` forms of `hipMalloc`, `hipMallocManaged` and
`hipHostMalloc` copied even when the allocation had failed, and returned the
copy's status, so the allocation failure went unreported. They now copy only
after a successful allocation.
* The array overloads of `rocsparse_?csrcolor` and `hipsparse?csrcolor` took
`coloring` and `reordering` as scalars, although both are arrays of size `m`.
* rocSPARSE's nullable `error` arguments (`spgeam`, `spmv_set_input`,
`v2_spmv`, ...) are `optional`, so NULL can be passed by omitting them.
* Under `USE_CUDA_NAMES`, the compatibility-API `hipsolver?gesvd_bufferSize`
and `hipsolver??gels_bufferSize` were bound to the `cusolverDn` routines of
the same name, whose arguments differ. They are now ROCm-only.

## hipfort 0.9.0 for ROCm 10.0.0

Expand Down
10 changes: 5 additions & 5 deletions docs/doxygen/input/supported_api_hip.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
45 | [hipDeviceSetSharedMemConfig](interfacehipfort_1_1hipdevicesetsharedmemconfig.html "Interface documentation") | C binding
46 | [hipSetDeviceFlags](interfacehipfort_1_1hipsetdeviceflags.html "Interface documentation") | C binding
47 | [hipInitDevice](interfacehipfort_1_1hipinitdevice.html "Interface documentation") | C binding
48 | [hipChooseDeviceR0600](interfacehipfort_1_1hipchoosedevicer0600.html "Interface documentation") | C binding
48 | [hipChooseDeviceR0600](interfacehipfort_1_1hipchoosedevicer0600.html "Interface documentation") | C binding, typed
49 | [hipExtGetLinkTypeAndHopCount](interfacehipfort_1_1hipextgetlinktypeandhopcount.html "Interface documentation") | C binding, typed
50 | [hipIpcGetMemHandle](interfacehipfort_1_1hipipcgetmemhandle.html "Interface documentation") | C binding
51 | [hipIpcOpenMemHandle](interfacehipfort_1_1hipipcopenmemhandle.html "Interface documentation") | C binding
Expand Down Expand Up @@ -217,8 +217,8 @@
213 | [hipDrvMemcpy3D](interfacehipfort_1_1hipdrvmemcpy3d.html "Interface documentation") | C binding
214 | [hipDrvMemcpy3DAsync](interfacehipfort_1_1hipdrvmemcpy3dasync.html "Interface documentation") | C binding
215 | [hipMemGetAddressRange](interfacehipfort_1_1hipmemgetaddressrange.html "Interface documentation") | C binding, typed
216 | [hipMemcpyBatchAsync](interfacehipfort_1_1hipmemcpybatchasync.html "Interface documentation") | C binding
217 | [hipMemcpy3DBatchAsync](interfacehipfort_1_1hipmemcpy3dbatchasync.html "Interface documentation") | C binding
216 | [hipMemcpyBatchAsync](interfacehipfort_1_1hipmemcpybatchasync.html "Interface documentation") | C binding, typed
217 | [hipMemcpy3DBatchAsync](interfacehipfort_1_1hipmemcpy3dbatchasync.html "Interface documentation") | C binding, typed
218 | [hipMemcpy3DPeer](interfacehipfort_1_1hipmemcpy3dpeer.html "Interface documentation") | C binding
219 | [hipMemcpy3DPeerAsync](interfacehipfort_1_1hipmemcpy3dpeerasync.html "Interface documentation") | C binding
220 | [hipMipmappedArrayGetMemoryRequirements](interfacehipfort_1_1hipmipmappedarraygetmemoryrequirements.html "Interface documentation") | C binding
Expand All @@ -228,7 +228,7 @@
224 | [hipMemcpyPeer](interfacehipfort_1_1hipmemcpypeer.html "Interface documentation") | C binding
225 | [hipMemcpyPeerAsync](interfacehipfort_1_1hipmemcpypeerasync.html "Interface documentation") | C binding
226 | [hipDeviceGetDevResource](interfacehipfort_1_1hipdevicegetdevresource.html "Interface documentation") | C binding
227 | [hipDevSmResourceSplitByCount](interfacehipfort_1_1hipdevsmresourcesplitbycount.html "Interface documentation") | C binding
227 | [hipDevSmResourceSplitByCount](interfacehipfort_1_1hipdevsmresourcesplitbycount.html "Interface documentation") | C binding, typed
228 | [hipDevSmResourceSplit](interfacehipfort_1_1hipdevsmresourcesplit.html "Interface documentation") | C binding
229 | [hipDevResourceGenerateDesc](interfacehipfort_1_1hipdevresourcegeneratedesc.html "Interface documentation") | C binding
230 | [hipGreenCtxCreate](interfacehipfort_1_1hipgreenctxcreate.html "Interface documentation") | C binding
Expand Down Expand Up @@ -538,4 +538,4 @@
534 | [hipLaunchHostFunc_spt](interfacehipfort_1_1hiplaunchhostfunc__spt.html "Interface documentation") | C binding
535 | [hipGetDriverEntryPoint_spt](interfacehipfort_1_1hipgetdriverentrypoint__spt.html "Interface documentation") | C binding
536 | [hipGetProcAddress_spt](interfacehipfort_1_1hipgetprocaddress__spt.html "Interface documentation") | C binding
537 | [hipChooseDevice](interfacehipfort_1_1hipchoosedevice.html "Interface documentation") | C binding
537 | [hipChooseDevice](interfacehipfort_1_1hipchoosedevice.html "Interface documentation") | C binding, typed
Loading