Skip to content

Commit 1a9e588

Browse files
committed
Update docs.
- Review unsupported comments and refresh. - Review experimental tag in API.
1 parent 4051b9f commit 1a9e588

File tree

3 files changed

+28
-36
lines changed

3 files changed

+28
-36
lines changed

docs/markdown/hip_faq.md

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -48,30 +48,24 @@ The HIP API documentation describes each API and its limitations, if any, compar
4848

4949
### What is not supported?
5050
#### Runtime/Driver API features
51-
At a high-level, the following features are not supported:
52-
- Textures
51+
)t a high-level, the following features are not supported:
52+
- Textures (partial support available)
5353
- Dynamic parallelism (CUDA 5.0)
5454
- Managed memory (CUDA 6.5)
5555
- Graphics interoperability with OpenGL or Direct3D
56-
- CUDA Driver API
5756
- CUDA IPC Functions (Under Development)
5857
- CUDA array, mipmappedArray and pitched memory
5958
- Queue priority controls
6059

6160
See the [API Support Table](CUDA_Runtime_API_functions_supported_by_HIP.md) for more detailed information.
6261

6362
#### Kernel language features
64-
- Device-side dynamic memory allocations (malloc, free, new, delete) (CUDA 4.0)
63+
- C++-style device-side dynamic memory allocations (free, new, delete) (CUDA 4.0)
6564
- Virtual functions, indirect functions and try/catch (CUDA 4.0)
6665
- `__prof_trigger`
6766
- PTX assembly (CUDA 4.0). HCC supports inline GCN assembly.
6867
- Several kernel features are under development. See the [HIP Kernel Language](hip_kernel_language.md) for more information. These include:
6968
- printf
70-
- assert
71-
- `__restrict__`
72-
- `__threadfence*_`, `__syncthreads*`
73-
- Unbounded loop unroll
74-
7569

7670

7771
### Is HIP a drop-in replacement for CUDA?
@@ -100,18 +94,20 @@ However, we can provide a rough summary of the features included in each CUDA SD
10094
- Per-thread-streams (under development)
10195
- C++11 (HCC supports all of C++11, all of C++14 and some C++17 features)
10296
- CUDA 7.5
103-
- float16
97+
- float16 (supported)
10498
- CUDA 8.0
105-
- TBD.
99+
- Page Migration including cudaMemAdvise, cudaMemPrefetch, other cudaMem* APIs(not supported)
106100

107-
### What libraries does HIP support?
108-
HIP includes growing support for the 4 key math libraries using hcBlas, hcFft, hcrng and hcsparse.
109-
These offer pointer-based memory interfaces (as opposed to opaque buffers) and can be easily interfaced with other HCC applications. Developers should use conditional compilation if portability to nvcc systems is desired - using calls to cu* routines on one path and hc* routines on the other.
110101

111-
- [hcblas](https://bitbucket.org/multicoreware/hcblas)
112-
- [hcfft](https://bitbucket.org/multicoreware/hcfft)
113-
- [hcsparse](https://bitbucket.org/multicoreware/hcsparse)
114-
- [hcrng](https://bitbucket.org/multicoreware/hcrng)
102+
### What libraries does HIP support?
103+
HIP includes growing support for the 4 key math libraries using hcBlas, hcFft, hcrng and hcsparse, as well as MIOpen for machine intelligence applications.
104+
These offer pointer-based memory interfaces (as opposed to opaque buffers) and can be easily interfaced with other HIP applications.
105+
The hip interfaces support both ROCm and CUDA paths, with familiar library interfaces.
106+
107+
- [hipBlas](https://github.com/ROCmSoftwarePlatform/hipBLAS), which utilizes [rocBlas](https://github.com/ROCmSoftwarePlatform/rocBLAS).
108+
- [hipfft](https://github.com/ROCmSoftwarePlatform/hcFFT)
109+
- [hipsparse](https://github.com/ROCmSoftwarePlatform/hcSPARSE)
110+
- [hiprng](https://github.com/ROCmSoftwarePlatform/hcrng)
115111

116112
Additionally, some of the cublas routines are automatically converted to hipblas equivalents by the hipify-clang tool. These APIs use cublas or hcblas depending on the platform, and replace the need
117113
to use conditional compilation.
@@ -218,7 +214,7 @@ If platform portability is important, use #ifdef __HIP_PLATFORM_NVCC__ to guard
218214
### On HCC, can I use HC functionality with HIP?
219215
Yes.
220216
The code can include hc.hpp and use HC functions inside the kernel. A typical use-case is to use AMD-specific hardware features such as the permute, swizzle, or DPP operations.
221-
The "-stdlib=libc++" must be passed to hipcc in order to compile hc.hpp. See the 'bit_extract' sample for an example.
217+
See the 'bit_extract' sample for an example.
222218

223219
Also these functions can be used to extract HCC accelerator and accelerator_view structures from the HIP deviceId and hipStream_t:
224220
hipHccGetAccelerator(int deviceId, hc::accelerator *acc);

docs/markdown/hip_kernel_language.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ The `__shared__` keyword is supported.
167167
Managed memory, including the `__managed__` keyword, are not supported in HIP.
168168

169169
### `__restrict__`
170-
The `__restrict__` keyword tells the compiler that the associated memory pointer will not alias with any other pointer in the kernel or function. This feature can help the compiler generate better code. In most cases, all pointer arguments must use this keyword to realize the benefit. hcc support for the `__restrict__` qualifier on kernel arguments is under development.
170+
The `__restrict__` keyword tells the compiler that the associated memory pointer will not alias with any other pointer in the kernel or function. This feature can help the compiler generate better code. In most cases, all pointer arguments must use this keyword to realize the benefit.
171171

172172

173173
## Built-In Variables
@@ -603,6 +603,7 @@ The Cuda `__prof_trigger()` instruction is not supported.
603603
## Assert
604604

605605
The assert function is under development.
606+
HIP does support an "abort" call which will terminate the process execution from inside the kernel.
606607

607608
## Printf
608609

@@ -690,7 +691,6 @@ for (int i=0; i<16; i++) ...
690691
```
691692

692693

693-
Unbounded loop unroll is under development on HCC compiler.
694694
```
695695
#pragma unroll /* hint to compiler to completely unroll next loop. */
696696
for (int i=0; i<16; i++) ...

include/hip/hcc_detail/hip_runtime_api.h

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ typedef enum hipJitOption {
171171

172172

173173
/**
174-
* @warning On AMD devices and recent Nvidia devices, these hints and controls are ignored.
174+
* @warning On AMD devices and some Nvidia devices, these hints and controls are ignored.
175175
*/
176176
typedef enum hipFuncCache_t {
177177
hipFuncCachePreferNone, ///< no preference for shared memory or L1 (default)
@@ -182,7 +182,7 @@ typedef enum hipFuncCache_t {
182182

183183

184184
/**
185-
* @warning On AMD devices and recent Nvidia devices, these hints and controls are ignored.
185+
* @warning On AMD devices and some Nvidia devices, these hints and controls are ignored.
186186
*/
187187
typedef enum hipSharedMemConfig {
188188
hipSharedMemBankSizeDefault, ///< The compiler selects a device-specific value for the banking.
@@ -364,7 +364,7 @@ hipError_t hipGetDeviceProperties(hipDeviceProp_t* prop, int deviceId);
364364
* @param [in] cacheConfig
365365
*
366366
* @returns #hipSuccess, #hipErrorInitializationError
367-
* Note: AMD devices and recent Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures.
367+
* Note: AMD devices and some Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures.
368368
*
369369
*/
370370
hipError_t hipDeviceSetCacheConfig ( hipFuncCache_t cacheConfig );
@@ -376,7 +376,7 @@ hipError_t hipDeviceSetCacheConfig ( hipFuncCache_t cacheConfig );
376376
* @param [in] cacheConfig
377377
*
378378
* @returns #hipSuccess, #hipErrorInitializationError
379-
* Note: AMD devices and recent Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures.
379+
* Note: AMD devices and some Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures.
380380
*
381381
*/
382382
hipError_t hipDeviceGetCacheConfig ( hipFuncCache_t *cacheConfig );
@@ -400,7 +400,7 @@ hipError_t hipDeviceGetLimit(size_t *pValue, enum hipLimit_t limit);
400400
* @param [in] config;
401401
*
402402
* @returns #hipSuccess, #hipErrorInitializationError
403-
* Note: AMD devices and recent Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures.
403+
* Note: AMD devices and some Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures.
404404
*
405405
*/
406406
hipError_t hipFuncSetCacheConfig (const void* func, hipFuncCache_t config );
@@ -412,7 +412,7 @@ hipError_t hipFuncSetCacheConfig (const void* func, hipFuncCache_t config );
412412
*
413413
* @returns #hipSuccess, #hipErrorInvalidValue, #hipErrorInitializationError
414414
*
415-
* Note: AMD devices and recent Nvidia GPUS do not support shared cache banking, and the hint is ignored on those architectures.
415+
* Note: AMD devices and some Nvidia GPUS do not support shared cache banking, and the hint is ignored on those architectures.
416416
*
417417
*/
418418
hipError_t hipDeviceGetSharedMemConfig ( hipSharedMemConfig * pConfig );
@@ -425,7 +425,7 @@ hipError_t hipDeviceGetSharedMemConfig ( hipSharedMemConfig * pConfig );
425425
*
426426
* @returns #hipSuccess, #hipErrorInvalidValue, #hipErrorInitializationError
427427
*
428-
* Note: AMD devices and recent Nvidia GPUS do not support shared cache banking, and the hint is ignored on those architectures.
428+
* Note: AMD devices and some Nvidia GPUS do not support shared cache banking, and the hint is ignored on those architectures.
429429
*
430430
*/
431431
hipError_t hipDeviceSetSharedMemConfig ( hipSharedMemConfig config );
@@ -1449,7 +1449,6 @@ hipError_t hipMemcpy3D(const struct hipMemcpy3DParms *p);
14491449
*
14501450
* @returns #hipSuccess,
14511451
* @returns #hipErrorInvalidDevice if deviceId or peerDeviceId are not valid devices
1452-
* @warning PeerToPeer support is experimental.
14531452
*/
14541453
hipError_t hipDeviceCanAccessPeer (int* canAccessPeer, int deviceId, int peerDeviceId);
14551454

@@ -1467,7 +1466,6 @@ hipError_t hipDeviceCanAccessPeer (int* canAccessPeer, int deviceId, int peerDev
14671466
*
14681467
* Returns #hipSuccess, #hipErrorInvalidDevice, #hipErrorInvalidValue,
14691468
* @returns #hipErrorPeerAccessAlreadyEnabled if peer access is already enabled for this device.
1470-
* @warning PeerToPeer support is experimental.
14711469
*/
14721470
hipError_t hipDeviceEnablePeerAccess (int peerDeviceId, unsigned int flags);
14731471

@@ -1480,7 +1478,6 @@ hipError_t hipDeviceEnablePeerAccess (int peerDeviceId, unsigned int flags);
14801478
* @param [in] peerDeviceId
14811479
*
14821480
* @returns #hipSuccess, #hipErrorPeerAccessNotEnabled
1483-
* @warning PeerToPeer support is experimental.
14841481
*/
14851482
hipError_t hipDeviceDisablePeerAccess (int peerDeviceId);
14861483

@@ -1512,7 +1509,6 @@ hipError_t hipMemGetAddressRange ( hipDeviceptr_t* pbase, size_t* psize, hipDevi
15121509
* @param [in] sizeBytes - Size of memory copy in bytes
15131510
*
15141511
* @returns #hipSuccess, #hipErrorInvalidValue, #hipErrorInvalidDevice
1515-
* @warning PeerToPeer support is experimental.
15161512
*/
15171513
hipError_t hipMemcpyPeer (void* dst, int dstDeviceId, const void* src, int srcDeviceId, size_t sizeBytes);
15181514

@@ -1671,7 +1667,7 @@ hipError_t hipCtxGetApiVersion (hipCtx_t ctx,int *apiVersion);
16711667
*
16721668
* @return #hipSuccess
16731669
*
1674-
* @warning AMD devices and recent Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures.
1670+
* @warning AMD devices and some Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures.
16751671
*
16761672
* @see hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxSetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
16771673
*/
@@ -1684,7 +1680,7 @@ hipError_t hipCtxGetCacheConfig ( hipFuncCache_t *cacheConfig );
16841680
*
16851681
* @return #hipSuccess
16861682
*
1687-
* @warning AMD devices and recent Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures.
1683+
* @warning AMD devices and some Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures.
16881684
*
16891685
* @see hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxSetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
16901686
*/
@@ -1697,7 +1693,7 @@ hipError_t hipCtxSetCacheConfig ( hipFuncCache_t cacheConfig );
16971693
*
16981694
* @return #hipSuccess
16991695
*
1700-
* @warning AMD devices and recent Nvidia GPUS do not support shared cache banking, and the hint is ignored on those architectures.
1696+
* @warning AMD devices and some Nvidia GPUS do not support shared cache banking, and the hint is ignored on those architectures.
17011697
*
17021698
* @see hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxSetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
17031699
*/
@@ -1710,7 +1706,7 @@ hipError_t hipCtxSetSharedMemConfig ( hipSharedMemConfig config );
17101706
*
17111707
* @return #hipSuccess
17121708
*
1713-
* @warning AMD devices and recent Nvidia GPUS do not support shared cache banking, and the hint is ignored on those architectures.
1709+
* @warning AMD devices and some Nvidia GPUS do not support shared cache banking, and the hint is ignored on those architectures.
17141710
*
17151711
* @see hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxSetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
17161712
*/

0 commit comments

Comments
 (0)