diff --git a/CMakeLists.txt b/CMakeLists.txt index eee1a14a8a..b3ea5a3ca3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -193,6 +193,9 @@ if(HIP_PLATFORM STREQUAL "hcc") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${HCC_LD_FLAGS} -Wl,-Bsymbolic") #find_package(LLVM HINTS ${HCC_HOME}/compiler/lib/cmake) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --amdgpu-target=gfx701 --amdgpu-target=gfx801 --amdgpu-target=gfx802 --amdgpu-target=gfx803 --amdgpu-target=gfx900") + if(COMPILE_HIP_ATP_MARKER) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L/opt/rocm/profiler/CXLActivityLogger/bin/x86_64 -lCXLActivityLogger") + endif() add_library(hip_hcc SHARED ${SOURCE_FILES_RUNTIME}) target_link_libraries(hip_hcc PRIVATE hc_am) #target_link_libraries(hip_hcc PUBLIC LLVMAMDGPUUtils) diff --git a/README.md b/README.md index f61c3b106a..565fd6a36d 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,8 @@ HIP releases are typically of two types. The tag naming convention is different - [HIP Runtime API (Doxygen)](http://gpuopen-professionalcompute-tools.github.io/HIP) - [HIP Porting Guide](docs/markdown/hip_porting_guide.md) - [HIP Porting Driver Guide](docs/markdown/hip_porting_driver_api.md) +- [HIP Profiling ](docs/markdown/hip_profiling.md) +- [HIP Debugging](docs/markdown/hip_debugging.md) - [HIP Terminology](docs/markdown/hip_terms.md) (including Rosetta Stone of GPU computing terms across CUDA/HIP/HC/AMP/OpenL) - [hipify-clang](hipify-clang/README.md) - [Developer/CONTRIBUTING Info](CONTRIBUTING.md) @@ -132,7 +134,7 @@ The README with the procedures and tips the team used during this porting effort * **bin**: Tools and scripts to help with hip porting * **hipify** : Tool to convert CUDA code to portable CPP. Converts CUDA APIs and kernel builtins. - * **hipcc** : Compiler driver that can be used to replace nvcc in existing CUDA code. hipcc ill call nvcc or hcc depending on platform, and include appropriate platform-specific headers and libraries. + * **hipcc** : Compiler driver that can be used to replace nvcc in existing CUDA code. hipcc will call nvcc or hcc depending on platform, and include appropriate platform-specific headers and libraries. * **hipconfig** : Print HIP configuration (HIP_PATH, HIP_PLATFORM, CXX config flags, etc) * **hipexamine.sh** : Script to scan directory, find all code, and report statistics on how much can be ported with HIP (and identify likely features not yet supported) diff --git a/RELEASE.md b/RELEASE.md index 21fd8da7bb..a1e580b7b0 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -2,17 +2,23 @@ We have attempted to document known bugs and limitations - in particular the [HIP Kernel Language](docs/markdown/hip_kernel_language.md) document uses the phrase "Under Development", and the [HIP Runtime API bug list](http://gpuopen-professionalcompute-tools.github.io/HIP/bug.html) lists known bugs. -Upcoming: -- Stability: Enforce periodic host synchronization to reclaim resources if the application has launched a large - number of commands (>1K) without synchronizing. -- Register keyword now silently ignored on HCC (previously would emit warning). -- Doc updates: Add some more frequently asked questions to FAQ, fix TOC in some files, review. -- Cookbook. =================================================================================================== ## Revision History: +=================================================================================================== +Release: 1.2 +Date: 2017.06.29 +- new APIs: hipMemcpy2DAsync, hipMallocPitch, hipHostMallocCoherent, hipHostMallocNonCoherent +- added support for building hipify-clang using clang 3.9 +- hipify-clang updates for CUDA 8.0 runtime+driver support +- renamed hipify to hipify-perl +- initial implementation of hipify-cmakefile +- several documentation updates & bug fixes +- support for abort() function in device code + + =================================================================================================== Release: 1.0.17102 Date: 2017.03.07 diff --git a/bin/findcode.sh b/bin/findcode.sh index a2334b3e2d..d092d6bf8d 100755 --- a/bin/findcode.sh +++ b/bin/findcode.sh @@ -2,4 +2,4 @@ SEARCH_DIRS=$@ -find $SEARCH_DIRS -name '*.cpp' -o -name '*.h' -o -name '*.cu' -o -name '*.cuh' -o -name '*.c' -o -name '*.hpp' +find $SEARCH_DIRS -name '*.cpp' -o -name '*.h' -o -name '*.cu' -o -name '*.cuh' -o -name '*.c' -o -name '*.hpp' -o -name '*.inl' diff --git a/bin/hipconfig b/bin/hipconfig index 663a1e14cd..39fdab5a99 100755 --- a/bin/hipconfig +++ b/bin/hipconfig @@ -1,7 +1,7 @@ #!/usr/bin/perl -w $HIP_BASE_VERSION_MAJOR = "1"; -$HIP_BASE_VERSION_MINOR = "0"; +$HIP_BASE_VERSION_MINOR = "2"; # Need perl > 5.10 to use logic-defined or use 5.006; use v5.10.1; diff --git a/bin/hipconvertinplace-perl.sh b/bin/hipconvertinplace-perl.sh index a8c8d6d9e8..d500cc14c6 100755 --- a/bin/hipconvertinplace-perl.sh +++ b/bin/hipconvertinplace-perl.sh @@ -1,18 +1,18 @@ #!/bin/bash -#usage : hipconvertinplace.sh [DIRNAME] [HIPIFY_OPTIONS] +#usage : hipconvertinplace-perl.sh DIRNAME [hipify-perl options] -#hipify "inplace" all code files in specified directory. +#hipify "inplace" all code files in specified directory. # This can be quite handy when dealing with an existing CUDA code base since the script # preserves the existing directory structure. # For each code file, this script will: -# - If ".prehip file does not exist, copy the original code to a new file with extension ".prehip". Then Hipify the code file. +# - If ".prehip file does not exist, copy the original code to a new file with extension ".prehip". Then hipify the code file. # - If ".prehip" file exists, this is used as input to hipify. -# (this is useful for testing improvements to the hipify toolset). +# (this is useful for testing improvements to the hipify-perl toolset). SCRIPT_DIR=`dirname $0` SEARCH_DIR=$1 shift -$SCRIPT_DIR/hipify -inplace -print-stats "$@" `$SCRIPT_DIR/findcode.sh $SEARCH_DIR` +$SCRIPT_DIR/hipify-perl -inplace -print-stats "$@" `$SCRIPT_DIR/findcode.sh $SEARCH_DIR` diff --git a/bin/hipexamine-perl.sh b/bin/hipexamine-perl.sh index 40c1bf466d..4e3a261aa4 100755 --- a/bin/hipexamine-perl.sh +++ b/bin/hipexamine-perl.sh @@ -1,12 +1,12 @@ #!/bin/bash -#usage : hipexamine.sh DIRNAME [hipify.pl options] +#usage : hipexamine-perl.sh DIRNAME [hipify-perl options] -# Generate HIP stats (LOC, CUDA->API conversions, missing functionality) for all the code files +# Generate HIP stats (LOC, CUDA->API conversions, missing functionality) for all the code files # in the specified directory. SCRIPT_DIR=`dirname $0` SEARCH_DIR=$1 shift -$SCRIPT_DIR/hipify -no-output -print-stats "$@" `$SCRIPT_DIR/findcode.sh $SEARCH_DIR` +$SCRIPT_DIR/hipify-perl -no-output -print-stats "$@" `$SCRIPT_DIR/findcode.sh $SEARCH_DIR` diff --git a/bin/hipexamine.sh b/bin/hipexamine.sh index 2a6fab7110..79e1b469f9 100755 --- a/bin/hipexamine.sh +++ b/bin/hipexamine.sh @@ -1,6 +1,6 @@ #!/bin/bash -#usage : hipexamine2.sh DIRNAME [hipify options] [--] [clang options] +#usage : hipexamine.sh DIRNAME [hipify options] [--] [clang options] # Generate CUDA->HIP conversion statistics for all the code files in the specified directory. diff --git a/bin/hipify-cmakefile b/bin/hipify-cmakefile new file mode 100755 index 0000000000..b11de4adc1 --- /dev/null +++ b/bin/hipify-cmakefile @@ -0,0 +1,279 @@ +#!/usr/bin/perl -w +## +# Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +## +#usage hipify-cmakefile [OPTIONS] INPUT_FILE +use Getopt::Long; + +GetOptions( + "print-stats" => \$print_stats # print the command-line, like a header. + , "quiet-warnings" => \$quiet_warnings # don't print warnings on unknown CUDA functions. + , "no-output" => \$no_output # don't write any translated output to stdout. + , "inplace" => \$inplace # modify input file inplace, save backup in ".prehip" file. + , "n" => \$n # combination of print_stats + no-output. +); + +$print_stats = 1 if $n; +$no_output = 1 if $n; + +@warn_whitelist = (); + +#--- +#Stats tracking code: +@statNames = ( "macro", "include", "option", "other" ); + +#--- +#Compute total of all individual counts: +sub totalStats { + my %count = %{ shift() }; + + my $total = 0; + foreach $key ( keys %count ) { + $total += $count{$key}; + } + + return $total; +} + +#--- +sub printStats { + my $label = shift(); + my @statNames = @{ shift() }; + my %counts = %{ shift() }; + my $warnings = shift(); + my $loc = shift(); + + my $total = totalStats( \%counts ); + + printf STDERR "%s %d CUDA->HIP refs( ", $label, $total; + + foreach $stat (@statNames) { + printf STDERR "%s:%d ", $stat, $counts{$stat}; + } + + printf STDERR ") warn:%d LOC:%d", $warnings, $loc; +} + +#--- +# Add adder stats to dest. Used to add stats for current file to a running total for all files: +sub addStats { + my $dest_ref = shift(); + my %adder = %{ shift() }; + + foreach $key ( keys %adder ) { + $dest_ref->{$key} += $adder{$key}; + } +} + +#--- +sub clearStats { + my $dest_ref = shift(); + my @statNames = @{ shift() }; + + foreach $stat (@statNames) { + $dest_ref->{$stat} = 0; + } +} + +# count of transforms in all files: +my %tt; +clearStats( \%tt, \@statNames ); + +my $fileCount = @ARGV; +my $fileName = ""; + +while (@ARGV) { + $fileName = shift(@ARGV); + if ($inplace) { + my $file_prehip = "$fileName" . ".prehip"; + my $infile; + my $outfile; + if ( -e $file_prehip ) { + $infile = $file_prehip; + $outfile = $fileName; + } + else { + system("cp $fileName $file_prehip"); + $infile = $file_prehip; + $outfile = $fileName; + } + open( INFILE, "<", $infile ) or die "error: could not open $infile"; + open( OUTFILE, ">", $outfile ) or die "error: could not open $outfile"; + $OUTFILE = OUTFILE; + } + else { + open( INFILE, "<", $fileName ) or die "error: could not open $fileName"; + $OUTFILE = STDOUT; + } + + # count of transforms in this file, init to 0 here: + my %ft; + clearStats( \%ft, \@statNames ); + + my $lineCount = 0; + + undef $/; # Read whole file at once, so we can match newlines. + while () { + + # Replace find_package(CUDA) with find_package(HIP) + $ft{'include'} += s/\bfind_package[ ]*\([ ]*CUDA[ ]*[0-9.]*/find_package(HIP/ig; + + # Replace macros + $ft{'macro'} += s/\bCUDA_ADD_EXECUTABLE/HIP_ADD_EXECUTABLE/ig; + $ft{'macro'} += s/\bCUDA_ADD_LIBRARY/HIP_ADD_LIBRARY/ig; + $ft{'macro'} += s/\bCUDA_INCLUDE_DIRECTORIES/HIP_INCLUDE_DIRECTORIES/ig; + + # Replace options + $ft{'option'} += s/\bCUDA_NVCC_FLAGS/HIP_NVCC_FLAGS/ig; + $ft{'option'} += s/\bCUDA_HOST_COMPILATION_CPP/HIP_HOST_COMPILATION_CPP/ig; + $ft{'option'} += s/\bCUDA_SOURCE_PROPERTY_FORMAT/HIP_SOURCE_PROPERTY_FORMAT/ig; + + # Replace variables + $ft{'other'} += s/\bCUDA_FOUND/HIP_FOUND/ig; + $ft{'other'} += s/\bCUDA_VERSION/HIP_VERSION/ig; + $ft{'other'} += s/\bCUDA_TOOLKIT_ROOT_DIR/HIP_ROOT_DIR/ig; + + unless ($quiet_warnings) { + + #print STDERR "Check WARNINGs\n"; + # copy into array of lines, process line-by-line to show warnings: + my @lines = split /\n/, $_; + my $tmp = $_; # copies the whole file, could be a little smarter here... + my $line_num = 0; + + foreach (@lines) { + $line_num++; + + # remove any whitelisted words: + foreach $w (@warn_whitelist) { + s/\b$w\b/ZAP/; + } + + $s = warnUnsupportedSpecialFunctions($line_num); + $warnings += $s; + } + + $_ = $tmp; + } + + #-------- + # Print it! + unless ($no_output) { + print $OUTFILE "$_"; + } + $lineCount = $_ =~ tr/\n//; + } + + my $totalConverted = totalStats( \%ft ); + + if ( ( $totalConverted + $warnings ) and $print_stats ) { + printStats( "info: converted", \@statNames, \%ft, $warnings, $lineCount ); + print STDERR " in '$fileName'\n"; + print STDERR "You may need to hand-edit '$fileName' to add steps to build correctly on HCC path\n"; + } + + # Update totals for all files: + addStats( \%tt, \%ft ); + $Twarnings += $warnings; + $TlineCount += $lineCount; +} + +#-- Print total stats for all files processed: +if ( $print_stats and ( $fileCount > 1 ) ) { + print STDERR "\n"; + printStats( "info: TOTAL-converted", \@statNames, \%tt, $Twarnings, $TlineCount ); + print STDERR "\n"; +} + +#--- +sub warnUnsupportedSpecialFunctions { + my $line_num = shift; + my $m = 0; + + foreach $func ( + # macros: + "CUDA_ADD_CUFFT_TO_TARGET", + "CUDA_ADD_CUBLAS_TO_TARGET", + #"CUDA_ADD_EXECUTABLE", + #"CUDA_ADD_LIBRARY", + "CUDA_BUILD_CLEAN_TARGET", + "CUDA_COMPILE", + "CUDA_COMPILE_PTX", + "CUDA_COMPILE_FATBIN", + "CUDA_COMPILE_CUBIN", + "CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME", + #"CUDA_INCLUDE_DIRECTORIES", + "CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS", + "CUDA_SELECT_NVCC_ARCH_FLAGS", + "CUDA_WRAP_SRCS", + + # options: + "CUDA_64_BIT_DEVICE_CODE", + "CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE", + "CUDA_BUILD_CUBIN", + "CUDA_BUILD_EMULATION", + "CUDA_LINK_LIBRARIES_KEYWORD", + "CUDA_GENERATED_OUTPUT_DIR", + #"CUDA_HOST_COMPILATION_CPP", + "CUDA_HOST_COMPILER", + #"CUDA_NVCC_FLAGS", + #"CUDA_NVCC_FLAGS_", + "CUDA_PROPAGATE_HOST_FLAGS", + "CUDA_SEPARABLE_COMPILATION", + #"CUDA_SOURCE_PROPERTY_FORMAT", + "CUDA_USE_STATIC_CUDA_RUNTIME", + "CUDA_VERBOSE_BUILD", + + # others: + #"CUDA_VERSION_MAJOR", + #"CUDA_VERSION_MINOR", + #"CUDA_VERSION", + #"CUDA_VERSION_STRING", + "CUDA_HAS_FP16", + #"CUDA_TOOLKIT_ROOT_DIR", + "CUDA_SDK_ROOT_DIR", + "CUDA_INCLUDE_DIRS", + "CUDA_LIBRARIES", + "CUDA_CUFFT_LIBRARIES", + "CUDA_CUBLAS_LIBRARIES", + "CUDA_cudart_static_LIBRARY", + "CUDA_cudadevrt_LIBRARY", + "CUDA_cupti_LIBRARY", + "CUDA_curand_LIBRARY", + "CUDA_cusolver_LIBRARY", + "CUDA_cusparse_LIBRARY", + "CUDA_npp_LIBRARY", + "CUDA_nppc_LIBRARY", + "CUDA_nppi_LIBRARY", + "CUDA_npps_LIBRARY", + "CUDA_nvcuvenc_LIBRARY", + "CUDA_nvcuvid_LIBRARY" + ) + { + my $mt = m/\b($func)/g; + if ($mt) { + $m += $mt; + print STDERR " warning: $fileName:#$line_num : unsupported macro/option : $_\n"; + } + } + + return $m; +} diff --git a/bin/hipify b/bin/hipify-perl similarity index 99% rename from bin/hipify rename to bin/hipify-perl index 4d77fad3ed..27acc5bccc 100755 --- a/bin/hipify +++ b/bin/hipify-perl @@ -20,7 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. ## -#usage hipify [OPTIONS] INPUT_FILE +#usage hipify-perl [OPTIONS] INPUT_FILE use Getopt::Long; my $warn_whitelist =""; @@ -201,7 +201,7 @@ while (@ARGV) { my %ft; clearStats(\%ft, \@statNames); my $countIncludes = 0; - my $countKeywords = 0; # keywords like __global__, __shared__ - not converted by hipify but counted here. + my $countKeywords = 0; # keywords like __global__, __shared__ - not converted by hipify-perl, but counted here. my $warnings = 0; my $warningsCublas = 0; my $warningsCurand = 0; diff --git a/docs/RuntimeAPI/html/Synchonization.html b/docs/RuntimeAPI/html/Synchonization.html deleted file mode 100644 index fa615f44d1..0000000000 --- a/docs/RuntimeAPI/html/Synchonization.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: $title - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - -
- -
- -
-
-

Host-synchronous behavior:

-

The following commands are "host-asynchronous" - meaning they do not wait for any preceding commands to complete, and may return control to the host thread before the requested operation completes:

-
    -
  • Kernel launches (hipLaunchKernel() )
  • -
  • Asynchronous memory copies - any memory copy API which contains "Async", such as hipMemcpyAsync())
  • -
  • Any memory set (for example, hipMemset());
  • -
  • TODO
  • -
-

"Host-synchronous" commands have the following properties:

-
    -
  • wait for all previous commands to complete.
  • -
  • will not return control back to host until the command completes.
  • -
-

The following commands are "host-synchronous".

-
    -
  • hipMemcpy waits for preceding work in the same stream to complete.
  • -
-

Stream synchronization

-

Blocking

-

The term "blocking" has two meanings in HIP.

-

The first refers to synchronization commands (ie hipStreamSynchronize, hipEventSynchronize) that cause the host CPU to wait for GPU activity to complete. These can either use an active where the host CPU spin-waits on the synchronization variable, or can use an interrupt-based scheme where the core is interrupted when the wait completes. The second technique is referred to as "blocking" (ie hipDeviceBlockingSync, hipEventBlockingSync) while the first is referred to as "active". Active can be appropriate for short tasks where latency is critical, but comes at the expense of a CPU core dedicated to monitoring the event.

-

HIP_LAUNCH_BLOCKING (also can use CUDA_LAUNCH_BLOCKING)

-
    -
  • The following commands become host-synchronous and will not return until the requested command has completed:
      -
    • Kernel launches (hipKernelLaunch).
    • -
    • Memory set commands (hipMemset, hipMemsetAsync).
    • -
    • Memory copy commands (hipMemcpy, hipMemsetAsync).
    • -
    -
  • -
-

Note CUDA_LAUNCH_BLOCKING does add any pre-serialization to the commands and does not affect the concurrent stream behavior. For example, even when CUDA_LAUNCH_BLOCKING is set, kernels or data copy commands launched to separate streams can execute concurrently. Use the NULL stream if additional stream synchronization is desired.

-
- - - - diff --git a/docs/RuntimeAPI/html/annotated.html b/docs/RuntimeAPI/html/annotated.html deleted file mode 100644 index eeeaa5f91f..0000000000 --- a/docs/RuntimeAPI/html/annotated.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Class List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - -
- - - - -
- -
- -
-
-
Class List
-
- - - - - diff --git a/docs/RuntimeAPI/html/bc_s.png b/docs/RuntimeAPI/html/bc_s.png deleted file mode 100644 index 224b29aa98..0000000000 Binary files a/docs/RuntimeAPI/html/bc_s.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/bdwn.png b/docs/RuntimeAPI/html/bdwn.png deleted file mode 100644 index 940a0b9504..0000000000 Binary files a/docs/RuntimeAPI/html/bdwn.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/bug.html b/docs/RuntimeAPI/html/bug.html deleted file mode 100644 index a79e8f7948..0000000000 --- a/docs/RuntimeAPI/html/bug.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Bug List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - -
- -
- -
-
-
-
Bug List
-
-
-
-
Member hipGetDeviceProperties (hipDeviceProp_t *prop, int deviceId)
-

HCC always returns 0 for maxThreadsPerMultiProcessor

-

HCC always returns 0 for regsPerBlock

-

HCC always returns 0 for l2CacheSize

-
-
-
- - - - diff --git a/docs/RuntimeAPI/html/classFakeMutex-members.html b/docs/RuntimeAPI/html/classFakeMutex-members.html deleted file mode 100644 index 37207bf255..0000000000 --- a/docs/RuntimeAPI/html/classFakeMutex-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
FakeMutex Member List
-
-
- -

This is the complete list of members for FakeMutex, including all inherited members.

- - - - -
lock() (defined in FakeMutex)FakeMutexinline
try_lock() (defined in FakeMutex)FakeMutexinline
unlock() (defined in FakeMutex)FakeMutexinline
- - - - diff --git a/docs/RuntimeAPI/html/classFakeMutex.html b/docs/RuntimeAPI/html/classFakeMutex.html deleted file mode 100644 index dd73a2063c..0000000000 --- a/docs/RuntimeAPI/html/classFakeMutex.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: FakeMutex Class Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
FakeMutex Class Reference
-
-
- - - - - - - - -

-Public Member Functions

-void lock ()
 
-bool try_lock ()
 
-void unlock ()
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/classLockedAccessor-members.html b/docs/RuntimeAPI/html/classLockedAccessor-members.html deleted file mode 100644 index 97ee053446..0000000000 --- a/docs/RuntimeAPI/html/classLockedAccessor-members.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
LockedAccessor< T > Member List
-
-
- -

This is the complete list of members for LockedAccessor< T >, including all inherited members.

- - - - - -
LockedAccessor(T &criticalData, bool autoUnlock=true) (defined in LockedAccessor< T >)LockedAccessor< T >inline
operator->() (defined in LockedAccessor< T >)LockedAccessor< T >inline
unlock() (defined in LockedAccessor< T >)LockedAccessor< T >inline
~LockedAccessor() (defined in LockedAccessor< T >)LockedAccessor< T >inline
- - - - diff --git a/docs/RuntimeAPI/html/classLockedAccessor.html b/docs/RuntimeAPI/html/classLockedAccessor.html deleted file mode 100644 index 1ca2f522a5..0000000000 --- a/docs/RuntimeAPI/html/classLockedAccessor.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: LockedAccessor< T > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
LockedAccessor< T > Class Template Reference
-
-
- - - - - - - - -

-Public Member Functions

LockedAccessor (T &criticalData, bool autoUnlock=true)
 
-void unlock ()
 
-T * operator-> ()
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/classShortTid-members.html b/docs/RuntimeAPI/html/classShortTid-members.html deleted file mode 100644 index 65b4c7a8ab..0000000000 --- a/docs/RuntimeAPI/html/classShortTid-members.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
ShortTid Member List
-
-
- -

This is the complete list of members for ShortTid, including all inherited members.

- - - - - -
apiSeqNum() const (defined in ShortTid)ShortTidinline
incApiSeqNum() (defined in ShortTid)ShortTidinline
ShortTid() (defined in ShortTid)ShortTid
tid() const (defined in ShortTid)ShortTidinline
- - - - diff --git a/docs/RuntimeAPI/html/classShortTid.html b/docs/RuntimeAPI/html/classShortTid.html deleted file mode 100644 index 8a98c9d95f..0000000000 --- a/docs/RuntimeAPI/html/classShortTid.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: ShortTid Class Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
ShortTid Class Reference
-
-
- - - - - - - - -

-Public Member Functions

-int tid () const
 
-uint64_t incApiSeqNum ()
 
-uint64_t apiSeqNum () const
 
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/RuntimeAPI/html/classes.html b/docs/RuntimeAPI/html/classes.html deleted file mode 100644 index fbbc40e7a7..0000000000 --- a/docs/RuntimeAPI/html/classes.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Class Index - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - -
- - - - -
- -
- -
-
-
Class Index
-
-
-
C | D | F | H | I | L | P | S | T | U | _
- - - - - - - - - - - - - - - -
  D  
-
  S  
-
double1   hipFloatComplex   ihipStreamCriticalBase_t   
double3   hipPointerAttribute_t   int3   
DbName   ShortTid   
  f  
-
  i  
-
  l  
-
  F  
-
  _  
-
float1   ihipCtx_t   long3   
FakeMutex   __half   float3   ihipCtxCriticalBase_t   longlong3   
  L  
-
  c  
-
  h  
-
ihipDevice_t   
  s  
-
ihipEvent_t   
LockedAccessor   char3   hipArray   ihipException   short3   
LockedBase   char4   hipChannelFormatDesc   ihipFunction_t   struct_float   
  P  
-
  d  
-
hipDeviceArch_t   ihipIpcMemHandle_t   
  t  
-
hipDeviceProp_t   ihipModule_t   
ProfTrigger   dim3   hipDoubleComplex   ihipStream_t   textureReference   
-
C | D | F | H | I | L | P | S | T | U | _
-
- - - - diff --git a/docs/RuntimeAPI/html/classihipCtxCriticalBase__t-members.html b/docs/RuntimeAPI/html/classihipCtxCriticalBase__t-members.html deleted file mode 100644 index 574362a0ec..0000000000 --- a/docs/RuntimeAPI/html/classihipCtxCriticalBase__t-members.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
ihipCtxCriticalBase_t< MUTEX_TYPE > Member List
-
-
- -

This is the complete list of members for ihipCtxCriticalBase_t< MUTEX_TYPE >, including all inherited members.

- - - - - - - - - - - - - - - - - - -
_mutex (defined in LockedBase< MUTEX_TYPE >)LockedBase< MUTEX_TYPE >private
_peers (defined in ihipCtxCriticalBase_t< MUTEX_TYPE >)ihipCtxCriticalBase_t< MUTEX_TYPE >
addPeerWatcher(const ihipCtx_t *thisCtx, ihipCtx_t *peer) (defined in ihipCtxCriticalBase_t< MUTEX_TYPE >)ihipCtxCriticalBase_t< MUTEX_TYPE >
addStream(ihipStream_t *stream) (defined in ihipCtxCriticalBase_t< MUTEX_TYPE >)ihipCtxCriticalBase_t< MUTEX_TYPE >
const_streams() const (defined in ihipCtxCriticalBase_t< MUTEX_TYPE >)ihipCtxCriticalBase_t< MUTEX_TYPE >inline
ihipCtxCriticalBase_t(unsigned deviceCnt) (defined in ihipCtxCriticalBase_t< MUTEX_TYPE >)ihipCtxCriticalBase_t< MUTEX_TYPE >inline
isPeerWatcher(const ihipCtx_t *peer) (defined in ihipCtxCriticalBase_t< MUTEX_TYPE >)ihipCtxCriticalBase_t< MUTEX_TYPE >
lock() (defined in LockedBase< MUTEX_TYPE >)LockedBase< MUTEX_TYPE >inlineprivate
LockedAccessor< ihipCtxCriticalBase_t > (defined in ihipCtxCriticalBase_t< MUTEX_TYPE >)ihipCtxCriticalBase_t< MUTEX_TYPE >friend
peerAgents() const (defined in ihipCtxCriticalBase_t< MUTEX_TYPE >)ihipCtxCriticalBase_t< MUTEX_TYPE >inline
peerCnt() const (defined in ihipCtxCriticalBase_t< MUTEX_TYPE >)ihipCtxCriticalBase_t< MUTEX_TYPE >inline
printPeerWatchers(FILE *f) const (defined in ihipCtxCriticalBase_t< MUTEX_TYPE >)ihipCtxCriticalBase_t< MUTEX_TYPE >
removePeerWatcher(const ihipCtx_t *thisCtx, ihipCtx_t *peer) (defined in ihipCtxCriticalBase_t< MUTEX_TYPE >)ihipCtxCriticalBase_t< MUTEX_TYPE >
resetPeerWatchers(ihipCtx_t *thisDevice) (defined in ihipCtxCriticalBase_t< MUTEX_TYPE >)ihipCtxCriticalBase_t< MUTEX_TYPE >
streams() (defined in ihipCtxCriticalBase_t< MUTEX_TYPE >)ihipCtxCriticalBase_t< MUTEX_TYPE >inline
unlock() (defined in LockedBase< MUTEX_TYPE >)LockedBase< MUTEX_TYPE >inlineprivate
~ihipCtxCriticalBase_t() (defined in ihipCtxCriticalBase_t< MUTEX_TYPE >)ihipCtxCriticalBase_t< MUTEX_TYPE >inline
- - - - diff --git a/docs/RuntimeAPI/html/classihipCtxCriticalBase__t.html b/docs/RuntimeAPI/html/classihipCtxCriticalBase__t.html deleted file mode 100644 index e18eee4e66..0000000000 --- a/docs/RuntimeAPI/html/classihipCtxCriticalBase__t.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: ihipCtxCriticalBase_t< MUTEX_TYPE > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
ihipCtxCriticalBase_t< MUTEX_TYPE > Class Template Reference
-
-
-
-Inheritance diagram for ihipCtxCriticalBase_t< MUTEX_TYPE >:
-
-
- - -LockedBase< MUTEX_TYPE > - -
- - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

ihipCtxCriticalBase_t (unsigned deviceCnt)
 
-void addStream (ihipStream_t *stream)
 
-std::list< ihipStream_t * > & streams ()
 
-const std::list< ihipStream_t * > & const_streams () const
 
-bool isPeerWatcher (const ihipCtx_t *peer)
 
-bool addPeerWatcher (const ihipCtx_t *thisCtx, ihipCtx_t *peer)
 
-bool removePeerWatcher (const ihipCtx_t *thisCtx, ihipCtx_t *peer)
 
-void resetPeerWatchers (ihipCtx_t *thisDevice)
 
-void printPeerWatchers (FILE *f) const
 
-uint32_t peerCnt () const
 
-hsa_agent_t * peerAgents () const
 
- - - -

-Public Attributes

-std::list< ihipCtx_t * > _peers
 
- - - -

-Friends

-class LockedAccessor< ihipCtxCriticalBase_t >
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/classihipCtxCriticalBase__t.png b/docs/RuntimeAPI/html/classihipCtxCriticalBase__t.png deleted file mode 100644 index 7fe1e9a2dd..0000000000 Binary files a/docs/RuntimeAPI/html/classihipCtxCriticalBase__t.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/classihipCtx__t-members.html b/docs/RuntimeAPI/html/classihipCtx__t-members.html deleted file mode 100644 index 200a5d4faa..0000000000 --- a/docs/RuntimeAPI/html/classihipCtx__t-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
ihipCtx_t Member List
-
-
- -

This is the complete list of members for ihipCtx_t, including all inherited members.

- - - - - - - - - - - - - - - -
_ctxFlags (defined in ihipCtx_t)ihipCtx_t
_defaultStream (defined in ihipCtx_t)ihipCtx_t
criticalData() (defined in ihipCtx_t)ihipCtx_tinline
getDevice() const (defined in ihipCtx_t)ihipCtx_tinline
getDeviceNum() const (defined in ihipCtx_t)ihipCtx_tinline
getWriteableDevice() const (defined in ihipCtx_t)ihipCtx_tinline
ihipCtx_t(ihipDevice_t *device, unsigned deviceCnt, unsigned flags) (defined in ihipCtx_t)ihipCtx_t
locked_addStream(ihipStream_t *s) (defined in ihipCtx_t)ihipCtx_t
locked_removeStream(ihipStream_t *s) (defined in ihipCtx_t)ihipCtx_t
locked_reset() (defined in ihipCtx_t)ihipCtx_t
locked_syncDefaultStream(bool waitOnSelf) (defined in ihipCtx_t)ihipCtx_t
locked_waitAllStreams() (defined in ihipCtx_t)ihipCtx_t
toString() const (defined in ihipCtx_t)ihipCtx_t
~ihipCtx_t() (defined in ihipCtx_t)ihipCtx_t
- - - - diff --git a/docs/RuntimeAPI/html/classihipCtx__t.html b/docs/RuntimeAPI/html/classihipCtx__t.html deleted file mode 100644 index 42115ba7d7..0000000000 --- a/docs/RuntimeAPI/html/classihipCtx__t.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: ihipCtx_t Class Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
ihipCtx_t Class Reference
-
-
- - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

ihipCtx_t (ihipDevice_t *device, unsigned deviceCnt, unsigned flags)
 
-void locked_addStream (ihipStream_t *s)
 
-void locked_removeStream (ihipStream_t *s)
 
-void locked_reset ()
 
-void locked_waitAllStreams ()
 
-void locked_syncDefaultStream (bool waitOnSelf)
 
-ihipCtxCritical_tcriticalData ()
 
-const ihipDevice_tgetDevice () const
 
-int getDeviceNum () const
 
-ihipDevice_tgetWriteableDevice () const
 
-std::string toString () const
 
- - - - - -

-Public Attributes

-ihipStream_t_defaultStream
 
-unsigned _ctxFlags
 
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/RuntimeAPI/html/classihipDevice__t-members.html b/docs/RuntimeAPI/html/classihipDevice__t-members.html deleted file mode 100644 index bcff2ac95d..0000000000 --- a/docs/RuntimeAPI/html/classihipDevice__t-members.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
ihipDevice_t Member List
-
-
- -

This is the complete list of members for ihipDevice_t, including all inherited members.

- - - - - - - - - - - -
_acc (defined in ihipDevice_t)ihipDevice_t
_computeUnitsihipDevice_t
_deviceId (defined in ihipDevice_t)ihipDevice_t
_hsaAgent (defined in ihipDevice_t)ihipDevice_t
_isLargeBar (defined in ihipDevice_t)ihipDevice_t
_primaryCtx (defined in ihipDevice_t)ihipDevice_t
_props (defined in ihipDevice_t)ihipDevice_t
getPrimaryCtx() const (defined in ihipDevice_t)ihipDevice_tinline
ihipDevice_t(unsigned deviceId, unsigned deviceCnt, hc::accelerator &acc) (defined in ihipDevice_t)ihipDevice_t
~ihipDevice_t() (defined in ihipDevice_t)ihipDevice_t
- - - - diff --git a/docs/RuntimeAPI/html/classihipDevice__t.html b/docs/RuntimeAPI/html/classihipDevice__t.html deleted file mode 100644 index 53dbfb48ce..0000000000 --- a/docs/RuntimeAPI/html/classihipDevice__t.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: ihipDevice_t Class Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
ihipDevice_t Class Reference
-
-
- - - - - - -

-Public Member Functions

ihipDevice_t (unsigned deviceId, unsigned deviceCnt, hc::accelerator &acc)
 
-ihipCtx_tgetPrimaryCtx () const
 
- - - - - - - - - - - - - - - - -

-Public Attributes

-unsigned _deviceId
 
-hc::accelerator _acc
 
-hsa_agent_t _hsaAgent
 
-unsigned _computeUnits
 Number of compute units supported by the device:
 
-hipDeviceProp_t _props
 
-int _isLargeBar
 
-ihipCtx_t_primaryCtx
 
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/RuntimeAPI/html/classihipException-members.html b/docs/RuntimeAPI/html/classihipException-members.html deleted file mode 100644 index a95b0cec3d..0000000000 --- a/docs/RuntimeAPI/html/classihipException-members.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
ihipException Member List
-
-
- -

This is the complete list of members for ihipException, including all inherited members.

- - - -
_code (defined in ihipException)ihipException
ihipException(hipError_t e) (defined in ihipException)ihipExceptioninline
- - - - diff --git a/docs/RuntimeAPI/html/classihipException.html b/docs/RuntimeAPI/html/classihipException.html deleted file mode 100644 index 09965dc766..0000000000 --- a/docs/RuntimeAPI/html/classihipException.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: ihipException Class Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
ihipException Class Reference
-
-
-
-Inheritance diagram for ihipException:
-
-
- - - -
- - - - -

-Public Member Functions

ihipException (hipError_t e)
 
- - - -

-Public Attributes

-hipError_t _code
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/classihipException.png b/docs/RuntimeAPI/html/classihipException.png deleted file mode 100644 index 36add951e6..0000000000 Binary files a/docs/RuntimeAPI/html/classihipException.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/classihipFunction__t-members.html b/docs/RuntimeAPI/html/classihipFunction__t-members.html deleted file mode 100644 index b2146dd003..0000000000 --- a/docs/RuntimeAPI/html/classihipFunction__t-members.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
ihipFunction_t Member List
-
-
- -

This is the complete list of members for ihipFunction_t, including all inherited members.

- - - - - - -
_kernel (defined in ihipFunction_t)ihipFunction_t
_kernelName (defined in ihipFunction_t)ihipFunction_t
_kernelSymbol (defined in ihipFunction_t)ihipFunction_t
ihipFunction_t(const char *name) (defined in ihipFunction_t)ihipFunction_tinline
~ihipFunction_t() (defined in ihipFunction_t)ihipFunction_tinline
- - - - diff --git a/docs/RuntimeAPI/html/classihipFunction__t.html b/docs/RuntimeAPI/html/classihipFunction__t.html deleted file mode 100644 index 2b852c1910..0000000000 --- a/docs/RuntimeAPI/html/classihipFunction__t.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: ihipFunction_t Class Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
ihipFunction_t Class Reference
-
-
- - - - -

-Public Member Functions

ihipFunction_t (const char *name)
 
- - - - - - - -

-Public Attributes

-const char * _kernelName
 
-hsa_executable_symbol_t _kernelSymbol
 
-uint64_t _kernel
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/classihipIpcMemHandle__t-members.html b/docs/RuntimeAPI/html/classihipIpcMemHandle__t-members.html deleted file mode 100644 index 87eee6dc9a..0000000000 --- a/docs/RuntimeAPI/html/classihipIpcMemHandle__t-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
ihipIpcMemHandle_t Member List
-
-
- -

This is the complete list of members for ihipIpcMemHandle_t, including all inherited members.

- - - - -
ipc_handleihipIpcMemHandle_t
psize (defined in ihipIpcMemHandle_t)ihipIpcMemHandle_t
reserved (defined in ihipIpcMemHandle_t)ihipIpcMemHandle_t
- - - - diff --git a/docs/RuntimeAPI/html/classihipIpcMemHandle__t.html b/docs/RuntimeAPI/html/classihipIpcMemHandle__t.html deleted file mode 100644 index b057cf392b..0000000000 --- a/docs/RuntimeAPI/html/classihipIpcMemHandle__t.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: ihipIpcMemHandle_t Class Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
ihipIpcMemHandle_t Class Reference
-
-
- - - - - - - - - -

-Public Attributes

-hsa_amd_ipc_memory_t ipc_handle
 ipc memory handle on ROCr
 
-char reserved [HIP_IPC_HANDLE_SIZE]
 
-size_t psize
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/classihipModule__t-members.html b/docs/RuntimeAPI/html/classihipModule__t-members.html deleted file mode 100644 index 0ee668b4a5..0000000000 --- a/docs/RuntimeAPI/html/classihipModule__t-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
ihipModule_t Member List
-
-
- -

This is the complete list of members for ihipModule_t, including all inherited members.

- - - - - - - - - -
executable (defined in ihipModule_t)ihipModule_t
fileName (defined in ihipModule_t)ihipModule_t
ihipModule_t() (defined in ihipModule_t)ihipModule_tinline
object (defined in ihipModule_t)ihipModule_t
ptr (defined in ihipModule_t)ihipModule_t
registerFunction(ihipFunction_t *func) (defined in ihipModule_t)ihipModule_tinline
size (defined in ihipModule_t)ihipModule_t
~ihipModule_t() (defined in ihipModule_t)ihipModule_tinline
- - - - diff --git a/docs/RuntimeAPI/html/classihipModule__t.html b/docs/RuntimeAPI/html/classihipModule__t.html deleted file mode 100644 index 0726617630..0000000000 --- a/docs/RuntimeAPI/html/classihipModule__t.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: ihipModule_t Class Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
ihipModule_t Class Reference
-
-
- - - - -

-Public Member Functions

-void registerFunction (ihipFunction_t *func)
 
- - - - - - - - - - - -

-Public Attributes

-hsa_executable_t executable
 
-hsa_code_object_t object
 
-std::string fileName
 
-void * ptr
 
-size_t size
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/classihipStreamCriticalBase__t-members.html b/docs/RuntimeAPI/html/classihipStreamCriticalBase__t-members.html deleted file mode 100644 index 6cd21dc31f..0000000000 --- a/docs/RuntimeAPI/html/classihipStreamCriticalBase__t-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
ihipStreamCriticalBase_t< MUTEX_TYPE > Member List
-
- - - - - diff --git a/docs/RuntimeAPI/html/classihipStreamCriticalBase__t.html b/docs/RuntimeAPI/html/classihipStreamCriticalBase__t.html deleted file mode 100644 index c06d346cc3..0000000000 --- a/docs/RuntimeAPI/html/classihipStreamCriticalBase__t.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: ihipStreamCriticalBase_t< MUTEX_TYPE > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
ihipStreamCriticalBase_t< MUTEX_TYPE > Class Template Reference
-
-
-
-Inheritance diagram for ihipStreamCriticalBase_t< MUTEX_TYPE >:
-
-
- - -LockedBase< MUTEX_TYPE > - -
- - - - - - - - - - - -

-Public Member Functions

ihipStreamCriticalBase_t (hc::accelerator_view av)
 
-ihipStreamCriticalBase_t
-< StreamMutex > * 
mlock ()
 
- Public Member Functions inherited from LockedBase< MUTEX_TYPE >
-void lock ()
 
-void unlock ()
 
- - - - - - - - -

-Public Attributes

-uint32_t _kernelCnt
 
-hc::accelerator_view _av
 
- Public Attributes inherited from LockedBase< MUTEX_TYPE >
-MUTEX_TYPE _mutex
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/classihipStreamCriticalBase__t.png b/docs/RuntimeAPI/html/classihipStreamCriticalBase__t.png deleted file mode 100644 index 4d8990f4ca..0000000000 Binary files a/docs/RuntimeAPI/html/classihipStreamCriticalBase__t.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/classihipStream__t-members.html b/docs/RuntimeAPI/html/classihipStream__t-members.html deleted file mode 100644 index 2b1739efbf..0000000000 --- a/docs/RuntimeAPI/html/classihipStream__t-members.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
ihipStream_t Member List
-
-
- -

This is the complete list of members for ihipStream_t, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - -
_flags (defined in ihipStream_t)ihipStream_t
_id (defined in ihipStream_t)ihipStream_t
Auto enum value (defined in ihipStream_t)ihipStream_t
getCtx() const (defined in ihipStream_t)ihipStream_t
getDevice() const (defined in ihipStream_t)ihipStream_t
hipStreamQuery(hipStream_t)ihipStream_tfriend
ihipStream_t(ihipCtx_t *ctx, hc::accelerator_view av, unsigned int flags) (defined in ihipStream_t)ihipStream_t
launchModuleKernel(hc::accelerator_view av, hsa_signal_t signal, uint32_t blockDimX, uint32_t blockDimY, uint32_t blockDimZ, uint32_t gridDimX, uint32_t gridDimY, uint32_t gridDimZ, uint32_t groupSegmentSize, uint32_t sharedMemBytes, void *kernarg, size_t kernSize, uint64_t kernel) (defined in ihipStream_t)ihipStream_t
lockclose_postKernelCommand(const char *kernelName, hc::accelerator_view *av) (defined in ihipStream_t)ihipStream_t
locked_copyAsync(void *dst, const void *src, size_t sizeBytes, unsigned kind) (defined in ihipStream_t)ihipStream_t
locked_copySync(void *dst, const void *src, size_t sizeBytes, unsigned kind, bool resolveOn=true) (defined in ihipStream_t)ihipStream_t
locked_getAv() (defined in ihipStream_t)ihipStream_tinline
locked_recordEvent(hipEvent_t event) (defined in ihipStream_t)ihipStream_t
locked_wait(bool assertQueueEmpty=false) (defined in ihipStream_t)ihipStream_t
locked_waitEvent(hipEvent_t event) (defined in ihipStream_t)ihipStream_t
lockopen_preKernelCommand() (defined in ihipStream_t)ihipStream_t
operator<< (defined in ihipStream_t)ihipStream_tfriend
ScheduleMode enum name (defined in ihipStream_t)ihipStream_t
SeqNum_t typedef (defined in ihipStream_t)ihipStream_t
Spin enum value (defined in ihipStream_t)ihipStream_t
wait(LockedAccessor_StreamCrit_t &crit, bool assertQueueEmpty=false) (defined in ihipStream_t)ihipStream_t
Yield enum value (defined in ihipStream_t)ihipStream_t
~ihipStream_t() (defined in ihipStream_t)ihipStream_t
- - - - diff --git a/docs/RuntimeAPI/html/classihipStream__t.html b/docs/RuntimeAPI/html/classihipStream__t.html deleted file mode 100644 index 9b06ac3bc4..0000000000 --- a/docs/RuntimeAPI/html/classihipStream__t.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: ihipStream_t Class Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
ihipStream_t Class Reference
-
-
- - - - - - -

-Public Types

enum  ScheduleMode { Auto, -Spin, -Yield - }
 
-typedef uint64_t SeqNum_t
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

ihipStream_t (ihipCtx_t *ctx, hc::accelerator_view av, unsigned int flags)
 
-void locked_copySync (void *dst, const void *src, size_t sizeBytes, unsigned kind, bool resolveOn=true)
 
-void locked_copyAsync (void *dst, const void *src, size_t sizeBytes, unsigned kind)
 
-LockedAccessor_StreamCrit_t lockopen_preKernelCommand ()
 
-void lockclose_postKernelCommand (const char *kernelName, hc::accelerator_view *av)
 
-void locked_wait (bool assertQueueEmpty=false)
 
-hc::accelerator_view * locked_getAv ()
 
-void locked_waitEvent (hipEvent_t event)
 
-void locked_recordEvent (hipEvent_t event)
 
-void wait (LockedAccessor_StreamCrit_t &crit, bool assertQueueEmpty=false)
 
-void launchModuleKernel (hc::accelerator_view av, hsa_signal_t signal, uint32_t blockDimX, uint32_t blockDimY, uint32_t blockDimZ, uint32_t gridDimX, uint32_t gridDimY, uint32_t gridDimZ, uint32_t groupSegmentSize, uint32_t sharedMemBytes, void *kernarg, size_t kernSize, uint64_t kernel)
 
-const ihipDevice_tgetDevice () const
 
-ihipCtx_tgetCtx () const
 
- - - - - -

-Public Attributes

-SeqNum_t _id
 
-unsigned _flags
 
- - - - - - -

-Friends

-std::ostream & operator<< (std::ostream &os, const ihipStream_t &s)
 
hipError_t hipStreamQuery (hipStream_t)
 Return hipSuccess if all of the operations in the specified stream have completed, or hipErrorNotReady if not. More...
 
-

Friends And Related Function Documentation

- -
-
- - - - - -
- - - - - - - - -
hipError_t hipStreamQuery (hipStream_t stream)
-
-friend
-
- -

Return hipSuccess if all of the operations in the specified stream have completed, or hipErrorNotReady if not.

-
Parameters
- - -
[in]streamstream to query
-
-
-
Returns
hipSuccess, hipErrorNotReady, hipErrorInvalidResourceHandle
-

This is thread-safe and returns a snapshot of the current state of the queue. However, if other host threads are sending work to the stream, the status may change immediately after the function is called. It is typically used for debug.

-
See Also
hipStreamCreate, hipStreamCreateWithFlags, hipStreamWaitEvent, hipStreamSynchronize, hipStreamDestroy
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/docs/RuntimeAPI/html/closed.png b/docs/RuntimeAPI/html/closed.png deleted file mode 100644 index 98cc2c909d..0000000000 Binary files a/docs/RuntimeAPI/html/closed.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/deprecated.html b/docs/RuntimeAPI/html/deprecated.html deleted file mode 100644 index 3511316256..0000000000 --- a/docs/RuntimeAPI/html/deprecated.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Deprecated List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - -
- -
- -
-
-
-
Deprecated List
-
-
-
-
Member hipFreeHost (void *ptr) __attribute__((deprecated("use hipHostFree instead")))
-
use hipHostFree() instead
-
Member hipHostAlloc (void **ptr, size_t size, unsigned int flags) __attribute__((deprecated("use hipHostMalloc instead")))
-
use hipHostMalloc() instead
-
Member hipMallocHost (void **ptr, size_t size) __attribute__((deprecated("use hipHostMalloc instead")))
-
use hipHostMalloc() instead
-
-
- - - - diff --git a/docs/RuntimeAPI/html/device__util_8h_source.html b/docs/RuntimeAPI/html/device__util_8h_source.html deleted file mode 100644 index 7b1dbfd91e..0000000000 --- a/docs/RuntimeAPI/html/device__util_8h_source.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/src/device_util.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
device_util.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 #ifndef DEVICE_UTIL_H
-
24 #define DEVICE_UTIL_H
-
25 
-
26 /*
-
27  Heap size computation for malloc and free device functions.
-
28 */
-
29 
-
30 #define NUM_PAGES_PER_THREAD 16
-
31 #define SIZE_OF_PAGE 64
-
32 #define NUM_THREADS_PER_CU 64
-
33 #define NUM_CUS_PER_GPU 64
-
34 #define NUM_PAGES NUM_PAGES_PER_THREAD * NUM_THREADS_PER_CU * NUM_CUS_PER_GPU
-
35 #define SIZE_MALLOC NUM_PAGES * SIZE_OF_PAGE
-
36 #define SIZE_OF_HEAP SIZE_MALLOC
-
37 
-
38 #endif
-
- - - - diff --git a/docs/RuntimeAPI/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/docs/RuntimeAPI/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html deleted file mode 100644 index 96d309a573..0000000000 --- a/docs/RuntimeAPI/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/src Directory Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - -
- -
- - -
-
-
-
src Directory Reference
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  device_util.cpp
 
file  device_util.h [code]
 
file  hip_context.cpp
 
file  hip_device.cpp
 
file  hip_error.cpp
 
file  hip_event.cpp
 
file  hip_fp16.cpp
 
file  hip_hcc.cpp
 
file  hip_hcc.h [code]
 
file  hip_ldg.cpp
 
file  hip_memory.cpp
 
file  hip_module.cpp
 
file  hip_peer.cpp
 
file  hip_stream.cpp
 
file  hip_util.h [code]
 
file  trace_helper.h [code]
 
-
- - - - diff --git a/docs/RuntimeAPI/html/dir_82c4e5e99cd964a390bd8b007f79d8a6.html b/docs/RuntimeAPI/html/dir_82c4e5e99cd964a390bd8b007f79d8a6.html deleted file mode 100644 index 15a657aa89..0000000000 --- a/docs/RuntimeAPI/html/dir_82c4e5e99cd964a390bd8b007f79d8a6.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip Directory Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - -
- -
- - -
-
-
-
hip Directory Reference
-
-
- - - - -

-Directories

directory  hcc_detail
 
- - - - - - - - - - - - - - - - - - - -

-Files

file  hcc.h [code]
 
file  hip_common.h [code]
 
file  hip_complex.h [code]
 
file  hip_fp16.h [code]
 
file  hip_profile.h [code]
 
file  hip_runtime.h [code]
 
file  hip_runtime_api.h [code]
 
file  hip_texture.h [code]
 
file  hip_vector_types.h [code]
 
-
- - - - diff --git a/docs/RuntimeAPI/html/dir_ce4f9d092cd8b82b7c46cef8ba457558.html b/docs/RuntimeAPI/html/dir_ce4f9d092cd8b82b7c46cef8ba457558.html deleted file mode 100644 index 64041d944b..0000000000 --- a/docs/RuntimeAPI/html/dir_ce4f9d092cd8b82b7c46cef8ba457558.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc_detail Directory Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - -
- -
- - -
-
-
-
hcc_detail Directory Reference
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  hcc_acc.h [code]
 
file  hip_complex.h [code]
 
file  hip_fp16.h [code]
 
file  hip_ldg.h [code]
 
file  hip_runtime.h [code]
 Contains definitions of APIs for HIP runtime.
 
file  hip_runtime_api.h [code]
 Contains C function APIs for HIP runtime. This file does not use any HCC builtin or special language extensions (-hc mode) ; those functions in hip_runtime.h.
 
file  hip_texture.h [code]
 HIP C++ Texture API for hcc compiler.
 
file  hip_vector_types.h [code]
 Defines the different newt vector types for HIP runtime.
 
file  host_defines.h [code]
 TODO-doc.
 
-
- - - - diff --git a/docs/RuntimeAPI/html/dir_d44c64559bbebec7f509842c48db8b23.html b/docs/RuntimeAPI/html/dir_d44c64559bbebec7f509842c48db8b23.html deleted file mode 100644 index 719a287cc7..0000000000 --- a/docs/RuntimeAPI/html/dir_d44c64559bbebec7f509842c48db8b23.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include Directory Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - -
- -
- - -
-
-
-
include Directory Reference
-
-
- - - - -

-Directories

directory  hip
 
-
- - - - diff --git a/docs/RuntimeAPI/html/doxygen.css b/docs/RuntimeAPI/html/doxygen.css deleted file mode 100644 index f0f36f89f5..0000000000 --- a/docs/RuntimeAPI/html/doxygen.css +++ /dev/null @@ -1,1366 +0,0 @@ -/* The standard CSS for doxygen 1.8.6 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -div.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #ffffff; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 4px 6px; - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -div.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: bold; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - border-top-left-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - -moz-border-radius-topleft: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -webkit-border-top-left-radius: 4px; - -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view when not used as main index */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -dl -{ - padding: 0 0 0 10px; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ -dl.section -{ - margin-left: 0px; - padding-left: 0px; -} - -dl.note -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00D000; -} - -dl.deprecated -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #505050; -} - -dl.todo -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00C0E0; -} - -dl.test -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #3030E0; -} - -dl.bug -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 20px 10px 10px; - width: 200px; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - diff --git a/docs/RuntimeAPI/html/doxygen.png b/docs/RuntimeAPI/html/doxygen.png deleted file mode 100644 index 3ff17d807f..0000000000 Binary files a/docs/RuntimeAPI/html/doxygen.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/dynsections.js b/docs/RuntimeAPI/html/dynsections.js deleted file mode 100644 index ed092c7f63..0000000000 --- a/docs/RuntimeAPI/html/dynsections.js +++ /dev/null @@ -1,97 +0,0 @@ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} -function toggleLevel(level) -{ - $('table.directory tr').each(function(){ - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - -HIP: Heterogenous-computing Interface for Portability: File List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - -
- - - - -
- -
- -
-
-
File List
-
-
-
Here is a list of all documented files with brief descriptions:
-
[detail level 1234]
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
o-include
|\-hip
| o-hcc_detail
| |o*hcc_acc.h
| |o*hip_complex.h
| |o*hip_fp16.h
| |o*hip_ldg.h
| |o*hip_runtime.hContains definitions of APIs for HIP runtime
| |o*hip_runtime_api.hContains C function APIs for HIP runtime. This file does not use any HCC builtin or special language extensions (-hc mode) ; those functions in hip_runtime.h
| |o*hip_texture.hHIP C++ Texture API for hcc compiler
| |o*hip_vector_types.hDefines the different newt vector types for HIP runtime
| |\*host_defines.hTODO-doc
| o*hcc.h
| o*hip_common.h
| o*hip_complex.h
| o*hip_fp16.h
| o*hip_profile.h
| o*hip_runtime.h
| o*hip_runtime_api.h
| o*hip_texture.h
| \*hip_vector_types.h
\-src
 o*device_util.h
 o*hip_hcc.cpp
 o*hip_hcc.h
 o*hip_util.h
 \*trace_helper.h
-
-
- - - - diff --git a/docs/RuntimeAPI/html/ftv2blank.png b/docs/RuntimeAPI/html/ftv2blank.png deleted file mode 100644 index 63c605bb4c..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2blank.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/ftv2cl.png b/docs/RuntimeAPI/html/ftv2cl.png deleted file mode 100644 index 132f6577bf..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2cl.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/ftv2doc.png b/docs/RuntimeAPI/html/ftv2doc.png deleted file mode 100644 index 17edabff95..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2doc.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/ftv2folderclosed.png b/docs/RuntimeAPI/html/ftv2folderclosed.png deleted file mode 100644 index bb8ab35edc..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2folderclosed.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/ftv2folderopen.png b/docs/RuntimeAPI/html/ftv2folderopen.png deleted file mode 100644 index d6c7f676a3..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2folderopen.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/ftv2lastnode.png b/docs/RuntimeAPI/html/ftv2lastnode.png deleted file mode 100644 index 63c605bb4c..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2lastnode.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/ftv2link.png b/docs/RuntimeAPI/html/ftv2link.png deleted file mode 100644 index 17edabff95..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2link.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/ftv2mlastnode.png b/docs/RuntimeAPI/html/ftv2mlastnode.png deleted file mode 100644 index 0b63f6d38c..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2mlastnode.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/ftv2mnode.png b/docs/RuntimeAPI/html/ftv2mnode.png deleted file mode 100644 index 0b63f6d38c..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2mnode.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/ftv2mo.png b/docs/RuntimeAPI/html/ftv2mo.png deleted file mode 100644 index 4bfb80f76e..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2mo.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/ftv2node.png b/docs/RuntimeAPI/html/ftv2node.png deleted file mode 100644 index 63c605bb4c..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2node.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/ftv2ns.png b/docs/RuntimeAPI/html/ftv2ns.png deleted file mode 100644 index 72e3d71c28..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2ns.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/ftv2plastnode.png b/docs/RuntimeAPI/html/ftv2plastnode.png deleted file mode 100644 index c6ee22f937..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2plastnode.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/ftv2pnode.png b/docs/RuntimeAPI/html/ftv2pnode.png deleted file mode 100644 index c6ee22f937..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2pnode.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/ftv2splitbar.png b/docs/RuntimeAPI/html/ftv2splitbar.png deleted file mode 100644 index fe895f2c58..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2splitbar.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/ftv2vertline.png b/docs/RuntimeAPI/html/ftv2vertline.png deleted file mode 100644 index 63c605bb4c..0000000000 Binary files a/docs/RuntimeAPI/html/ftv2vertline.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/functions.html b/docs/RuntimeAPI/html/functions.html deleted file mode 100644 index ca8882856d..0000000000 --- a/docs/RuntimeAPI/html/functions.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Class Members - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - -
- - - - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- _ -

- - -

- a -

- - -

- c -

- - -

- h -

- - -

- i -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- w -

- - -

- x -

- - -

- y -

- - -

- z -

-
- - - - diff --git a/docs/RuntimeAPI/html/functions_rela.html b/docs/RuntimeAPI/html/functions_rela.html deleted file mode 100644 index 9ddcfb49b4..0000000000 --- a/docs/RuntimeAPI/html/functions_rela.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Class Members - Related Functions - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - -
- - - - -
- -
- -
-
- - - - diff --git a/docs/RuntimeAPI/html/functions_vars.html b/docs/RuntimeAPI/html/functions_vars.html deleted file mode 100644 index 4569adf399..0000000000 --- a/docs/RuntimeAPI/html/functions_vars.html +++ /dev/null @@ -1,329 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Class Members - Variables - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - -
- - - - -
- -
- -
-  - -

- _ -

- - -

- a -

- - -

- c -

- - -

- h -

- - -

- i -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- w -

- - -

- x -

- - -

- y -

- - -

- z -

-
- - - - diff --git a/docs/RuntimeAPI/html/globals.html b/docs/RuntimeAPI/html/globals.html deleted file mode 100644 index 1bdcacb7ee..0000000000 --- a/docs/RuntimeAPI/html/globals.html +++ /dev/null @@ -1,567 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: File Members - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - -
- - - - -
- -
- -
-
Here is a list of all documented file members with links to the documentation:
- -

- _ -

- - -

- d -

- - -

- h -

-
- - - - diff --git a/docs/RuntimeAPI/html/globals_defs.html b/docs/RuntimeAPI/html/globals_defs.html deleted file mode 100644 index 6f7178061f..0000000000 --- a/docs/RuntimeAPI/html/globals_defs.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: File Members - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - -
- - - - -
- -
- -
-
- - - - diff --git a/docs/RuntimeAPI/html/globals_enum.html b/docs/RuntimeAPI/html/globals_enum.html deleted file mode 100644 index f11ce794d3..0000000000 --- a/docs/RuntimeAPI/html/globals_enum.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: File Members - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - -
- - - - -
- -
- -
-
- - - - diff --git a/docs/RuntimeAPI/html/globals_eval.html b/docs/RuntimeAPI/html/globals_eval.html deleted file mode 100644 index c2ff74f32f..0000000000 --- a/docs/RuntimeAPI/html/globals_eval.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: File Members - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - -
- - - - -
- -
- -
-
- - - - diff --git a/docs/RuntimeAPI/html/globals_func.html b/docs/RuntimeAPI/html/globals_func.html deleted file mode 100644 index f21de520bb..0000000000 --- a/docs/RuntimeAPI/html/globals_func.html +++ /dev/null @@ -1,451 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: File Members - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - -
- - - - -
- -
- -
-  - -

- _ -

- - -

- h -

-
- - - - diff --git a/docs/RuntimeAPI/html/globals_type.html b/docs/RuntimeAPI/html/globals_type.html deleted file mode 100644 index 99b173c22b..0000000000 --- a/docs/RuntimeAPI/html/globals_type.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: File Members - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - -
- - - - -
- -
- -
-
- - - - diff --git a/docs/RuntimeAPI/html/group__API.html b/docs/RuntimeAPI/html/group__API.html deleted file mode 100644 index 8a7c5d7c71..0000000000 --- a/docs/RuntimeAPI/html/group__API.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: HIP API - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
- -
-
HIP API
-
-
- - - - - - - - - - - - - - - - - - - - - - -

-Modules

 Device Management
 
 Error Handling
 
 Stream Management
 
 Event Management
 
 Memory Management
 
 Device Memory Access
 
 Initialization and Version
 
 Control
 
 HCC-Specific Accessors
 
 Texture Reference Management
 
- - - - - - - - - - -

-Functions

hipError_t hipIpcGetMemHandle (hipIpcMemHandle_t *handle, void *devPtr)
 Gets an interprocess memory handle for an existing device memory allocation. More...
 
hipError_t hipIpcOpenMemHandle (void **devPtr, hipIpcMemHandle_t handle, unsigned int flags)
 Opens an interprocess memory handle exported from another process and returns a device pointer usable in the local process. More...
 
hipError_t hipIpcCloseMemHandle (void *devPtr)
 Close memory mapped with hipIpcOpenMemHandle. More...
 
-

Detailed Description

-

Defines the HIP API. See the individual sections for more information.

-

Function Documentation

- -
-
- - - - - - - - -
hipError_t hipIpcCloseMemHandle (void * devPtr)
-
- -

Close memory mapped with hipIpcOpenMemHandle.

-

Unmaps memory returnd by hipIpcOpenMemHandle. The original allocation in the exporting process as well as imported mappings in other processes will be unaffected.

-

Any resources used to enable peer access will be freed if this is the last mapping using them.

-
Parameters
- - -
devPtr- Device pointer returned by hipIpcOpenMemHandle
-
-
-
Returns
hipSuccess, hipErrorMapBufferObjectFailed, hipErrorInvalidResourceHandle,
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipIpcGetMemHandle (hipIpcMemHandle_thandle,
void * devPtr 
)
-
- -

Gets an interprocess memory handle for an existing device memory allocation.

-

Takes a pointer to the base of an existing device memory allocation created with hipMalloc and exports it for use in another process. This is a lightweight operation and may be called multiple times on an allocation without adverse effects.

-

If a region of memory is freed with hipFree and a subsequent call to hipMalloc returns memory with the same device address, hipIpcGetMemHandle will return a unique handle for the new memory.

-
Parameters
- - - -
handle- Pointer to user allocated hipIpcMemHandle to return the handle in.
devPtr- Base pointer to previously allocated device memory
-
-
-
Returns
hipSuccess, hipErrorInvalidResourceHandle, hipErrorMemoryAllocation, hipErrorMapBufferObjectFailed,
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipIpcOpenMemHandle (void ** devPtr,
hipIpcMemHandle_t handle,
unsigned int flags 
)
-
- -

Opens an interprocess memory handle exported from another process and returns a device pointer usable in the local process.

-

Maps memory exported from another process with hipIpcGetMemHandle into the current device address space. For contexts on different devices hipIpcOpenMemHandle can attempt to enable peer access between the devices as if the user called hipDeviceEnablePeerAccess. This behavior is controlled by the hipIpcMemLazyEnablePeerAccess flag. hipDeviceCanAccessPeer can determine if a mapping is possible.

-

Contexts that may open hipIpcMemHandles are restricted in the following way. hipIpcMemHandles from each device in a given process may only be opened by one context per device per other process.

-

Memory returned from hipIpcOpenMemHandle must be freed with hipIpcCloseMemHandle.

-

Calling hipFree on an exported memory region before calling hipIpcCloseMemHandle in the importing context will result in undefined behavior.

-
Parameters
- - - - -
devPtr- Returned device pointer
handle- hipIpcMemHandle to open
flags- Flags for this operation. Must be specified as hipIpcMemLazyEnablePeerAccess
-
-
-
Returns
hipSuccess, hipErrorMapBufferObjectFailed, hipErrorInvalidResourceHandle, hipErrorTooManyPeers
-
Note
No guarantees are made about the address returned in *devPtr. In particular, multiple processes may not receive the same address for the same handle.
- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/group__Context.html b/docs/RuntimeAPI/html/group__Context.html deleted file mode 100644 index 7699238778..0000000000 --- a/docs/RuntimeAPI/html/group__Context.html +++ /dev/null @@ -1,607 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Management - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

hipError_t hipCtxCreate (hipCtx_t *ctx, unsigned int flags, hipDevice_t device)
 Create a context and set it as current/ default context. More...
 
hipError_t hipCtxDestroy (hipCtx_t ctx)
 Destroy a HIP context. More...
 
hipError_t hipCtxPopCurrent (hipCtx_t *ctx)
 Pop the current/default context and return the popped context. More...
 
hipError_t hipCtxPushCurrent (hipCtx_t ctx)
 Push the context to be set as current/ default context. More...
 
hipError_t hipCtxSetCurrent (hipCtx_t ctx)
 Set the passed context as current/default. More...
 
hipError_t hipCtxGetCurrent (hipCtx_t *ctx)
 Get the handle of the current/ default context. More...
 
hipError_t hipCtxGetDevice (hipDevice_t *device)
 Get the handle of the device associated with current/default context. More...
 
hipError_t hipCtxGetApiVersion (hipCtx_t ctx, int *apiVersion)
 Returns the approximate HIP api version. More...
 
hipError_t hipCtxGetCacheConfig (hipFuncCache_t *cacheConfig)
 Set Cache configuration for a specific function. More...
 
hipError_t hipCtxSetCacheConfig (hipFuncCache_t cacheConfig)
 Set L1/Shared cache partition. More...
 
hipError_t hipCtxSetSharedMemConfig (hipSharedMemConfig config)
 Set Shared memory bank configuration. More...
 
hipError_t hipCtxGetSharedMemConfig (hipSharedMemConfig *pConfig)
 Get Shared memory bank configuration. More...
 
hipError_t hipCtxSynchronize (void)
 Blocks until the default context has completed all preceding requested tasks. More...
 
hipError_t hipCtxGetFlags (unsigned int *flags)
 Return flags used for creating default context. More...
 
hipError_t hipCtxEnablePeerAccess (hipCtx_t peerCtx, unsigned int flags)
 Enables direct access to memory allocations in a peer context. More...
 
hipError_t hipCtxDisablePeerAccess (hipCtx_t peerCtx)
 Disable direct access from current context's virtual address space to memory allocations physically located on a peer context.Disables direct access to memory allocations in a peer context and unregisters any registered allocations. More...
 
-

Detailed Description

-

----------------------------------------------------------------------------------------------—

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipCtxCreate (hipCtx_tctx,
unsigned int flags,
hipDevice_t device 
)
-
- -

Create a context and set it as current/ default context.

-
Parameters
- - - - -
[out]ctx
[in]flags
[in]associateddevice handle
-
-
-
Returns
hipSuccess
-
See Also
hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
- -
-
- -
-
- - - - - - - - -
hipError_t hipCtxDestroy (hipCtx_t ctx)
-
-
- -
-
- - - - - - - - -
hipError_t hipCtxDisablePeerAccess (hipCtx_t peerCtx)
-
- -

Disable direct access from current context's virtual address space to memory allocations physically located on a peer context.Disables direct access to memory allocations in a peer context and unregisters any registered allocations.

-

Returns hipErrorPeerAccessNotEnabled if direct access to memory on peerDevice has not yet been enabled from the current device.

-
Parameters
- - -
[in]peerCtx
-
-
-
Returns
hipSuccess, hipErrorPeerAccessNotEnabled
-
See Also
hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxSetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
-
Warning
PeerToPeer support is experimental.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipCtxEnablePeerAccess (hipCtx_t peerCtx,
unsigned int flags 
)
-
- -

Enables direct access to memory allocations in a peer context.

-

Memory which already allocated on peer device will be mapped into the address space of the current device. In addition, all future memory allocations on peerDeviceId will be mapped into the address space of the current device when the memory is allocated. The peer memory remains accessible from the current device until a call to hipDeviceDisablePeerAccess or hipDeviceReset.

-
Parameters
- - - -
[in]peerCtx
[in]flags
-
-
-
Returns
hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue, hipErrorPeerAccessAlreadyEnabled
-
See Also
hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxSetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
-
Warning
PeerToPeer support is experimental.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipCtxGetApiVersion (hipCtx_t ctx,
int * apiVersion 
)
-
- -

Returns the approximate HIP api version.

-
Parameters
- - - -
[in]ctxContext to check
[out]apiVersion
-
-
-
Returns
hipSuccess
-
Warning
The HIP feature set does not correspond to an exact CUDA SDK api revision. This function always set *apiVersion to 4 as an approximation though HIP supports some features which were introduced in later CUDA SDK revisions. HIP apps code should not rely on the api revision number here and should use arch feature flags to test device capabilities or conditional compilation.
-
See Also
hipCtxCreate, hipCtxDestroy, hipCtxGetDevice, hipCtxGetFlags, hipCtxPopCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
- -
-
- -
-
- - - - - - - - -
hipError_t hipCtxGetCacheConfig (hipFuncCache_tcacheConfig)
-
- -

Set Cache configuration for a specific function.

-
Parameters
- - -
[out]cacheConfiguration
-
-
-
Returns
hipSuccess
-
Warning
AMD devices and recent Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures.
-
See Also
hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxSetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
- -
-
- -
-
- - - - - - - - -
hipError_t hipCtxGetCurrent (hipCtx_tctx)
-
- -

Get the handle of the current/ default context.

-
Parameters
- - -
[out]ctx
-
-
-
Returns
hipSuccess, hipErrorInvalidContext
-
See Also
hipCtxCreate, hipCtxDestroy, hipCtxGetDevice, hipCtxGetFlags, hipCtxPopCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
- -
-
- -
-
- - - - - - - - -
hipError_t hipCtxGetDevice (hipDevice_tdevice)
-
- -

Get the handle of the device associated with current/default context.

-
Parameters
- - -
[out]device
-
-
-
Returns
hipSuccess, hipErrorInvalidContext
-
See Also
hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize
- -
-
- -
-
- - - - - - - - -
hipError_t hipCtxGetFlags (unsigned int * flags)
-
- -

Return flags used for creating default context.

-
Parameters
- - -
[out]flags
-
-
-
Returns
hipSuccess
-
See Also
hipCtxCreate, hipCtxDestroy, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxGetCurrent, hipCtxSetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
- -
-
- -
-
- - - - - - - - -
hipError_t hipCtxGetSharedMemConfig (hipSharedMemConfigpConfig)
-
- -

Get Shared memory bank configuration.

-
Parameters
- - -
[out]sharedMemoryConfiguration
-
-
-
Returns
hipSuccess
-
Warning
AMD devices and recent Nvidia GPUS do not support shared cache banking, and the hint is ignored on those architectures.
-
See Also
hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxSetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
- -
-
- -
-
- - - - - - - - -
hipError_t hipCtxPopCurrent (hipCtx_tctx)
-
- -

Pop the current/default context and return the popped context.

-
Parameters
- - -
[out]ctx
-
-
-
Returns
hipSuccess, hipErrorInvalidContext
-
See Also
hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxSetCurrent, hipCtxGetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
- -
-
- -
-
- - - - - - - - -
hipError_t hipCtxPushCurrent (hipCtx_t ctx)
-
- -

Push the context to be set as current/ default context.

-
Parameters
- - -
[in]ctx
-
-
-
Returns
hipSuccess, hipErrorInvalidContext
-
See Also
hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize , hipCtxGetDevice
- -
-
- -
-
- - - - - - - - -
hipError_t hipCtxSetCacheConfig (hipFuncCache_t cacheConfig)
-
- -

Set L1/Shared cache partition.

-
Parameters
- - -
[in]cacheConfiguration
-
-
-
Returns
hipSuccess
-
Warning
AMD devices and recent Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures.
-
See Also
hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxSetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
- -
-
- -
-
- - - - - - - - -
hipError_t hipCtxSetCurrent (hipCtx_t ctx)
-
- -

Set the passed context as current/default.

-
Parameters
- - -
[in]ctx
-
-
-
Returns
hipSuccess, hipErrorInvalidContext
-
See Also
hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize , hipCtxGetDevice
- -
-
- -
-
- - - - - - - - -
hipError_t hipCtxSetSharedMemConfig (hipSharedMemConfig config)
-
- -

Set Shared memory bank configuration.

-
Parameters
- - -
[in]sharedMemoryConfiguration
-
-
-
Returns
hipSuccess
-
Warning
AMD devices and recent Nvidia GPUS do not support shared cache banking, and the hint is ignored on those architectures.
-
See Also
hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxSetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
- -
-
- -
-
- - - - - - - - -
hipError_t hipCtxSynchronize (void )
-
- -

Blocks until the default context has completed all preceding requested tasks.

-
Returns
hipSuccess
-
Warning
This function waits for all streams on the default context to complete execution, and then returns.
-
See Also
hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxSetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxGetDevice
- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/group__Device.html b/docs/RuntimeAPI/html/group__Device.html deleted file mode 100644 index e1dddbbed7..0000000000 --- a/docs/RuntimeAPI/html/group__Device.html +++ /dev/null @@ -1,584 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Device Management - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
- -
-
Device Management
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

hipError_t hipDeviceSynchronize (void)
 Waits on all active streams on current device. More...
 
hipError_t hipDeviceReset (void)
 The state of current device is discarded and updated to a fresh state. More...
 
hipError_t hipSetDevice (int deviceId)
 Set default device to be used for subsequent hip API calls from this thread. More...
 
hipError_t hipGetDevice (int *deviceId)
 Return the default device id for the calling host thread. More...
 
hipError_t hipGetDeviceCount (int *count)
 Return number of compute-capable devices. More...
 
hipError_t hipDeviceGetAttribute (int *pi, hipDeviceAttribute_t attr, int deviceId)
 Query for a specific device attribute. More...
 
hipError_t hipGetDeviceProperties (hipDeviceProp_t *prop, int deviceId)
 Returns device properties. More...
 
hipError_t hipDeviceSetCacheConfig (hipFuncCache_t cacheConfig)
 Set L1/Shared cache partition. More...
 
hipError_t hipDeviceGetCacheConfig (hipFuncCache_t *cacheConfig)
 Set Cache configuration for a specific function. More...
 
hipError_t hipDeviceGetLimit (size_t *pValue, hipLimit_t limit)
 Get Resource limits of current device. More...
 
hipError_t hipFuncSetCacheConfig (hipFuncCache_t config)
 Set Cache configuration for a specific function. More...
 
hipError_t hipDeviceGetSharedMemConfig (hipSharedMemConfig *pConfig)
 Returns bank width of shared memory for current device. More...
 
hipError_t hipDeviceSetSharedMemConfig (hipSharedMemConfig config)
 The bank width of shared memory on current device is set. More...
 
hipError_t hipSetDeviceFlags (unsigned flags)
 The current device behavior is changed according the flags passed. More...
 
hipError_t hipChooseDevice (int *device, const hipDeviceProp_t *prop)
 Device which matches hipDeviceProp_t is returned. More...
 
-

Detailed Description

-

----------------------------------------------------------------------------------------------—

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipChooseDevice (int * device,
const hipDeviceProp_tprop 
)
-
- -

Device which matches hipDeviceProp_t is returned.

-
Parameters
- - - -
[out]deviceID
[in]deviceproperties pointer
-
-
-
Returns
hipSuccess, hipErrorInvalidValue
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipDeviceGetAttribute (int * pi,
hipDeviceAttribute_t attr,
int deviceId 
)
-
- -

Query for a specific device attribute.

-
Parameters
- - - - -
[out]pipointer to value to return
[in]attrattribute to query
[in]deviceIdwhich device to query for information
-
-
-
Returns
hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue
- -
-
- -
-
- - - - - - - - -
hipError_t hipDeviceGetCacheConfig (hipFuncCache_tcacheConfig)
-
- -

Set Cache configuration for a specific function.

-
Parameters
- - -
[in]cacheConfig
-
-
-
Returns
hipSuccess, hipErrorInitializationError Note: AMD devices and recent Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipDeviceGetLimit (size_t * pValue,
hipLimit_t limit 
)
-
- -

Get Resource limits of current device.

-
Parameters
- - - -
[out]pValue
[in]limit
-
-
-
Returns
hipSuccess, #hipErrorUnsupportedLimit, hipErrorInvalidValue Note: Currently, only hipLimitMallocHeapSize is available
- -
-
- -
-
- - - - - - - - -
hipError_t hipDeviceGetSharedMemConfig (hipSharedMemConfigpConfig)
-
- -

Returns bank width of shared memory for current device.

-
Parameters
- - -
[out]pConfig
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, hipErrorInitializationError
-

Note: AMD devices and recent Nvidia GPUS do not support shared cache banking, and the hint is ignored on those architectures.

- -
-
- -
-
- - - - - - - - -
hipError_t hipDeviceReset (void )
-
- -

The state of current device is discarded and updated to a fresh state.

-

Calling this function deletes all streams created, memory allocated, kernels running, events created. Make sure that no other thread is using the device or streams, memory, kernels, events associated with the current device.

-
Returns
hipSuccess
-
See Also
hipDeviceSynchronize
- -
-
- -
-
- - - - - - - - -
hipError_t hipDeviceSetCacheConfig (hipFuncCache_t cacheConfig)
-
- -

Set L1/Shared cache partition.

-
Parameters
- - -
[in]cacheConfig
-
-
-
Returns
hipSuccess, hipErrorInitializationError Note: AMD devices and recent Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures.
- -
-
- -
-
- - - - - - - - -
hipError_t hipDeviceSetSharedMemConfig (hipSharedMemConfig config)
-
- -

The bank width of shared memory on current device is set.

-
Parameters
- - -
[in]config
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, hipErrorInitializationError
-

Note: AMD devices and recent Nvidia GPUS do not support shared cache banking, and the hint is ignored on those architectures.

- -
-
- -
-
- - - - - - - - -
hipError_t hipDeviceSynchronize (void )
-
- -

Waits on all active streams on current device.

-

When this command is invoked, the host thread gets blocked until all the commands associated with streams associated with the device. HIP does not support multiple blocking modes (yet!).

-
Returns
hipSuccess
-
See Also
hipSetDevice, hipDeviceReset
- -
-
- -
-
- - - - - - - - -
hipError_t hipFuncSetCacheConfig (hipFuncCache_t config)
-
- -

Set Cache configuration for a specific function.

-
Parameters
- - -
[in]config;
-
-
-
Returns
hipSuccess, hipErrorInitializationError Note: AMD devices and recent Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures.
- -
-
- -
-
- - - - - - - - -
hipError_t hipGetDevice (int * deviceId)
-
- -

Return the default device id for the calling host thread.

-
Parameters
- - -
[out]device*device is written with the default device
-
-
-

HIP maintains an default device for each thread using thread-local-storage. This device is used implicitly for HIP runtime APIs called by this thread. hipGetDevice returns in * device the default device for the calling host thread.

-
Returns
hipSuccess
-
See Also
hipSetDevice, hipGetDevicesizeBytes
- -
-
- -
-
- - - - - - - - -
hipError_t hipGetDeviceCount (int * count)
-
- -

Return number of compute-capable devices.

-
Parameters
- - -
[output]count Returns number of compute-capable devices.
-
-
-
Returns
hipSuccess, hipErrorNoDevice
-

Returns in *count the number of devices that have ability to run compute commands. If there are no such devices, then hipGetDeviceCount will return hipErrorNoDevice. If 1 or more devices can be found, then hipGetDeviceCount returns hipSuccess.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipGetDeviceProperties (hipDeviceProp_tprop,
int deviceId 
)
-
- -

Returns device properties.

-
Parameters
- - - -
[out]propwritten with device properties
[in]deviceIdwhich device to query for information
-
-
-
Returns
hipSuccess, hipErrorInvalidDevice
-
Bug:

HCC always returns 0 for maxThreadsPerMultiProcessor

-

HCC always returns 0 for regsPerBlock

-

HCC always returns 0 for l2CacheSize

-
-

Populates hipGetDeviceProperties with information for the specified device.

- -
-
- -
-
- - - - - - - - -
hipError_t hipSetDevice (int deviceId)
-
- -

Set default device to be used for subsequent hip API calls from this thread.

-
Parameters
- - -
[in]deviceIdValid device in range 0...hipGetDeviceCount().
-
-
-

Sets device as the default device for the calling host thread. Valid device id's are 0... (hipGetDeviceCount()-1).

-

Many HIP APIs implicitly use the "default device" :

-
    -
  • Any device memory subsequently allocated from this host thread (using hipMalloc) will be allocated on device.
  • -
  • Any streams or events created from this host thread will be associated with device.
  • -
  • Any kernels launched from this host thread (using hipLaunchKernel) will be executed on device (unless a specific stream is specified, in which case the device associated with that stream will be used).
  • -
-

This function may be called from any host thread. Multiple host threads may use the same device. This function does no synchronization with the previous or new device, and has very little runtime overhead. Applications can use hipSetDevice to quickly switch the default device before making a HIP runtime call which uses the default device.

-

The default device is stored in thread-local-storage for each thread. Thread-pool implementations may inherit the default device of the previous thread. A good practice is to always call hipSetDevice at the start of HIP coding sequency to establish a known standard device.

-
Returns
hipSuccess, hipErrorInvalidDevice, #hipErrorDeviceAlreadyInUse
-
See Also
hipGetDevice, hipGetDeviceCount
- -
-
- -
-
- - - - - - - - -
hipError_t hipSetDeviceFlags (unsigned flags)
-
- -

The current device behavior is changed according the flags passed.

-
Parameters
- - -
[in]flagsThe schedule flags impact how HIP waits for the completion of a command running on a device. hipDeviceScheduleSpin : HIP runtime will actively spin in the thread which submitted the work until the command completes. This offers the lowest latency, but will consume a CPU core and may increase power. hipDeviceScheduleYield : The HIP runtime will yield the CPU to system so that other tasks can use it. This may increase latency to detect the completion but will consume less power and is friendlier to other tasks in the system. hipDeviceScheduleBlockingSync : On ROCm platform, this is a synonym for hipDeviceScheduleYield. hipDeviceScheduleAuto : Use a hueristic to select between Spin and Yield modes. If the number of HIP contexts is greater than the number of logical processors in the system, use Spin scheduling. Else use Yield scheduling.
-
-
-

hipDeviceMapHost : Allow mapping host memory. On ROCM, this is always allowed and the flag is ignored. hipDeviceLmemResizeToMax :

-
Warning
ROCm silently ignores this flag.
-
Returns
hipSuccess, hipErrorInvalidDevice, #hipErrorSetOnActiveProcess
- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/group__Driver.html b/docs/RuntimeAPI/html/group__Driver.html deleted file mode 100644 index c045006c7e..0000000000 --- a/docs/RuntimeAPI/html/group__Driver.html +++ /dev/null @@ -1,750 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Initialization and Version - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
- -
-
Initialization and Version
-
-
- - - - -

-Modules

 Management
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

hipError_t hipInit (unsigned int flags)
 Explicitly initializes the HIP runtime. More...
 
hipError_t hipDeviceGet (hipDevice_t *device, int ordinal)
 Returns a handle to a compute device. More...
 
hipError_t hipDeviceComputeCapability (int *major, int *minor, hipDevice_t device)
 Returns the compute capability of the device. More...
 
hipError_t hipDeviceGetName (char *name, int len, hipDevice_t device)
 Returns an identifer string for the device. More...
 
hipError_t hipDeviceGetPCIBusId (char *pciBusId, int len, int device)
 Returns a PCI Bus Id string for the device, overloaded to take int device ID. More...
 
hipError_t hipDeviceGetByPCIBusId (int *device, const int *pciBusId)
 Returns a handle to a compute device. More...
 
hipError_t hipDeviceTotalMem (size_t *bytes, hipDevice_t device)
 Returns the total amount of memory on the device. More...
 
hipError_t hipDriverGetVersion (int *driverVersion)
 Returns the approximate HIP driver version. More...
 
hipError_t hipRuntimeGetVersion (int *runtimeVersion)
 Returns the approximate HIP Runtime version. More...
 
hipError_t hipModuleLoad (hipModule_t *module, const char *fname)
 Loads code object from file into a hipModule_t. More...
 
hipError_t hipModuleUnload (hipModule_t module)
 Frees the module. More...
 
hipError_t hipModuleGetFunction (hipFunction_t *function, hipModule_t module, const char *kname)
 Function with kname will be extracted if present in module. More...
 
hipError_t hipModuleGetGlobal (hipDeviceptr_t *dptr, size_t *bytes, hipModule_t hmod, const char *name)
 returns device memory pointer and size of the kernel present in the module with symbol name More...
 
hipError_t hipModuleLoadData (hipModule_t *module, const void *image)
 builds module from code object which resides in host memory. Image is pointer to that location. More...
 
hipError_t hipModuleLaunchKernel (hipFunction_t f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, hipStream_t stream, void **kernelParams, void **extra)
 launches kernel f with launch parameters and shared memory on stream with arguments passed to kernelparams or extra More...
 
-

Detailed Description

-

----------------------------------------------------------------------------------------------—

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipDeviceComputeCapability (int * major,
int * minor,
hipDevice_t device 
)
-
- -

Returns the compute capability of the device.

-
Parameters
- - - - -
[out]major
[out]minor
[in]device
-
-
-
Returns
hipSuccess, #hipErrorInavlidDevice
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipDeviceGet (hipDevice_tdevice,
int ordinal 
)
-
- -

Returns a handle to a compute device.

-
Parameters
- - - -
[out]device
[in]ordinal
-
-
-
Returns
hipSuccess, #hipErrorInavlidDevice
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipDeviceGetByPCIBusId (int * device,
const int * pciBusId 
)
-
- -

Returns a handle to a compute device.

-
Parameters
- - - -
[out]devicehandle
[in]PCIBus ID
-
-
-
Returns
hipSuccess, #hipErrorInavlidDevice, hipErrorInvalidValue
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipDeviceGetName (char * name,
int len,
hipDevice_t device 
)
-
- -

Returns an identifer string for the device.

-
Parameters
- - - - -
[out]name
[in]len
[in]device
-
-
-
Returns
hipSuccess, #hipErrorInavlidDevice
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipDeviceGetPCIBusId (char * pciBusId,
int len,
int device 
)
-
- -

Returns a PCI Bus Id string for the device, overloaded to take int device ID.

-
Parameters
- - - - -
[out]pciBusId
[in]len
[in]device
-
-
-
Returns
hipSuccess, #hipErrorInavlidDevice
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipDeviceTotalMem (size_t * bytes,
hipDevice_t device 
)
-
- -

Returns the total amount of memory on the device.

-
Parameters
- - - -
[out]bytes
[in]device
-
-
-
Returns
hipSuccess, #hipErrorInavlidDevice
- -
-
- -
-
- - - - - - - - -
hipError_t hipDriverGetVersion (int * driverVersion)
-
- -

Returns the approximate HIP driver version.

-
Parameters
- - -
[out]driverVersion
-
-
-
Returns
hipSuccess, #hipErrorInavlidValue
-
Warning
The HIP feature set does not correspond to an exact CUDA SDK driver revision. This function always set *driverVersion to 4 as an approximation though HIP supports some features which were introduced in later CUDA SDK revisions. HIP apps code should not rely on the driver revision number here and should use arch feature flags to test device capabilities or conditional compilation.
-
See Also
hipRuntimeGetVersion
- -
-
- -
-
- - - - - - - - -
hipError_t hipInit (unsigned int flags)
-
- -

Explicitly initializes the HIP runtime.

-

Most HIP APIs implicitly initialize the HIP runtime. This API provides control over the timing of the initialization.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipModuleGetFunction (hipFunction_tfunction,
hipModule_t module,
const char * kname 
)
-
- -

Function with kname will be extracted if present in module.

-
Parameters
- - - - -
[in]module
[in]kname
[out]function
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, hipErrorInvalidContext, hipErrorNotInitialized, hipErrorNotFound,
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipModuleGetGlobal (hipDeviceptr_t * dptr,
size_t * bytes,
hipModule_t hmod,
const char * name 
)
-
- -

returns device memory pointer and size of the kernel present in the module with symbol name

-
Parameters
- - - - - -
[out]dptr
[out[bytes
[in]hmod
[in]name
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, hipErrorNotInitialized
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipModuleLaunchKernel (hipFunction_t f,
unsigned int gridDimX,
unsigned int gridDimY,
unsigned int gridDimZ,
unsigned int blockDimX,
unsigned int blockDimY,
unsigned int blockDimZ,
unsigned int sharedMemBytes,
hipStream_t stream,
void ** kernelParams,
void ** extra 
)
-
- -

launches kernel f with launch parameters and shared memory on stream with arguments passed to kernelparams or extra

-
Parameters
- - - - - - - - - - - - -
[in[f
[in]gridDimX
[in]gridDimY
[in]gridDimZ
[in]blockDimX
[in]blockDimY
[in]blockDimZ
[in]sharedMemBytes
[in]stream
[in]kernelParams
[in]extraaThe function takes the above arguments and run the kernel in hipFunction_t f. with launch parameters specified in gridDimX, gridDimY, gridDimZ, blockDimX, blockDimY and blockDimmZ. The amount of shared memory is specificed and can be used with HIP_DYNAMIC_SHARED. The arguemt extra is used to pass in the arguments for the kernel.
-
-
-
Returns
hipSuccess, hipInvalidDevice, hipErrorNotInitialized, hipErrorInvalidValue
-
Warning
kernellParams argument is not yet implemented in HIP. Please use extra instead. Please refer to hip_porting_driver_api.md for sample usage.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipModuleLoad (hipModule_tmodule,
const char * fname 
)
-
- -

Loads code object from file into a hipModule_t.

-
Parameters
- - - -
[in]fname
[out]module
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, hipErrorInvalidContext, hipErrorFileNotFound, hipErrorOutOfMemory, hipErrorSharedObjectInitFailed, hipErrorNotInitialized
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipModuleLoadData (hipModule_tmodule,
const void * image 
)
-
- -

builds module from code object which resides in host memory. Image is pointer to that location.

-
Parameters
- - - -
[in]image
[out]module
-
-
-
Returns
hipSuccess, hipErrorNotInitialized, hipErrorOutOfMemory, hipErrorNotInitialized
- -
-
- -
-
- - - - - - - - -
hipError_t hipModuleUnload (hipModule_t module)
-
- -

Frees the module.

-
Parameters
- - -
[in]module
-
-
-
Returns
hipSuccess, hipInvalidValue module is freed and the code objects associated with it are destroyed
- -
-
- -
-
- - - - - - - - -
hipError_t hipRuntimeGetVersion (int * runtimeVersion)
-
- -

Returns the approximate HIP Runtime version.

-
Parameters
- - -
[out]runtimeVersion
-
-
-
Returns
hipSuccess, #hipErrorInavlidValue
-
Warning
On HIP/HCC path this function returns HIP runtime patch version however on HIP/NVCC path this function return CUDA runtime version.
-
See Also
hipDriverGetVersion
- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/group__Error.html b/docs/RuntimeAPI/html/group__Error.html deleted file mode 100644 index 03d5f89643..0000000000 --- a/docs/RuntimeAPI/html/group__Error.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Error Handling - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
- -
-
Error Handling
-
-
- - - - - - - - - - - - - - -

-Functions

hipError_t hipGetLastError (void)
 Return last error returned by any HIP runtime API call and resets the stored error code to hipSuccess. More...
 
hipError_t hipPeekAtLastError (void)
 Return last error returned by any HIP runtime API call. More...
 
const char * hipGetErrorName (hipError_t hip_error)
 Return name of the specified error code in text form. More...
 
const char * hipGetErrorString (hipError_t hipError)
 Return handy text string message to explain the error which occurred. More...
 
-

Detailed Description

-

----------------------------------------------------------------------------------------------—

-

Function Documentation

- -
-
- - - - - - - - -
const char* hipGetErrorName (hipError_t hip_error)
-
- -

Return name of the specified error code in text form.

-
Parameters
- - -
hip_errorError code to convert to name.
-
-
-
Returns
const char pointer to the NULL-terminated error name
-
See Also
hipGetErrorString, hipGetLastError, hipPeakAtLastError, hipError_t
- -
-
- -
-
- - - - - - - - -
const char* hipGetErrorString (hipError_t hipError)
-
- -

Return handy text string message to explain the error which occurred.

-
Parameters
- - -
hipErrorError code to convert to string.
-
-
-
Returns
const char pointer to the NULL-terminated error string
-
Warning
: on HCC, this function returns the name of the error (same as hipGetErrorName)
-
See Also
hipGetErrorName, hipGetLastError, hipPeakAtLastError, hipError_t
- -
-
- -
-
- - - - - - - - -
hipError_t hipGetLastError (void )
-
- -

Return last error returned by any HIP runtime API call and resets the stored error code to hipSuccess.

-
Returns
return code from last HIP called from the active host thread
-

Returns the last error that has been returned by any of the runtime calls in the same host thread, and then resets the saved error to hipSuccess.

-
See Also
hipGetErrorString, hipGetLastError, hipPeakAtLastError, hipError_t
- -
-
- -
-
- - - - - - - - -
hipError_t hipPeekAtLastError (void )
-
- -

Return last error returned by any HIP runtime API call.

-
Returns
hipSuccess
-

Returns the last error that has been returned by any of the runtime calls in the same host thread. Unlike hipGetLastError, this function does not reset the saved error code.

-
See Also
hipGetErrorString, hipGetLastError, hipPeakAtLastError, hipError_t
- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/group__Event.html b/docs/RuntimeAPI/html/group__Event.html deleted file mode 100644 index 73095e0234..0000000000 --- a/docs/RuntimeAPI/html/group__Event.html +++ /dev/null @@ -1,356 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Event Management - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
- -
-
Event Management
-
-
- - - - - - - - - - - - - - - - - - - - - - -

-Functions

hipError_t hipEventCreateWithFlags (hipEvent_t *event, unsigned flags)
 Create an event with the specified flags. More...
 
hipError_t hipEventCreate (hipEvent_t *event)
 
hipError_t hipEventRecord (hipEvent_t event, hipStream_t stream)
 Record an event in the specified stream. More...
 
hipError_t hipEventDestroy (hipEvent_t event)
 Destroy the specified event. More...
 
hipError_t hipEventSynchronize (hipEvent_t event)
 Wait for an event to complete. More...
 
hipError_t hipEventElapsedTime (float *ms, hipEvent_t start, hipEvent_t stop)
 Return the elapsed time between two events. More...
 
hipError_t hipEventQuery (hipEvent_t event)
 Query event status. More...
 
-

Detailed Description

-

----------------------------------------------------------------------------------------------—

-

Function Documentation

- -
-
- - - - - - - - -
hipError_t hipEventCreate (hipEvent_tevent)
-
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipEventCreateWithFlags (hipEvent_tevent,
unsigned flags 
)
-
- -

Create an event with the specified flags.

-
Parameters
- - - -
[in,out]eventReturns the newly created event.
[in]flagsFlags to control event behavior. Valid values are hipEventDefault, hipEventBlockingSync, hipEventDisableTiming, hipEventInterprocess
-
-
-

hipEventDefault : Default flag. The event will use active synchronization and will support timing. Blocking synchronization provides lowest possible latency at the expense of dedicating a CPU to poll on the eevent. hipEventBlockingSync : The event will use blocking synchronization : if hipEventSynchronize is called on this event, the thread will block until the event completes. This can increase latency for the synchroniation but can result in lower power and more resources for other CPU threads. hipEventDisableTiming : Disable recording of timing information. On ROCM platform, timing information is always recorded and this flag has no performance benefit.

-
Warning
On HCC platform, hipEventInterprocess support is under development. Use of this flag will return an error.
-
Returns
hipSuccess, hipErrorInitializationError, hipErrorInvalidValue, hipErrorLaunchFailure, hipErrorMemoryAllocation
-
See Also
hipEventCreate, hipEventSynchronize, hipEventDestroy, hipEventElapsedTime
- -
-
- -
-
- - - - - - - - -
hipError_t hipEventDestroy (hipEvent_t event)
-
- -

Destroy the specified event.

-
Parameters
- - -
[in]eventEvent to destroy.
-
-
-
Returns
hipSuccess, hipErrorInitializationError, hipErrorInvalidValue, hipErrorLaunchFailure
-

Releases memory associated with the event. If the event is recording but has not completed recording when hipEventDestroy() is called, the function will return immediately and the completion_future resources will be released later, when the hipDevice is synchronized.

-
See Also
hipEventCreate, hipEventCreateWithFlags, hipEventQuery, hipEventSynchronize, hipEventRecord, hipEventElapsedTime
-
Returns
hipSuccess
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipEventElapsedTime (float * ms,
hipEvent_t start,
hipEvent_t stop 
)
-
- -

Return the elapsed time between two events.

-
Parameters
- - - - -
[out]ms: Return time between start and stop in ms.
[in]start: Start event.
[in]stop: Stop event.
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, hipErrorNotReady, hipErrorInvalidResourceHandle, hipErrorInitializationError, hipErrorLaunchFailure
-

Computes the elapsed time between two events. Time is computed in ms, with a resolution of approximately 1 us.

-

Events which are recorded in a NULL stream will block until all commands on all other streams complete execution, and then record the timestamp.

-

Events which are recorded in a non-NULL stream will record their timestamp when they reach the head of the specified stream, after all previous commands in that stream have completed executing. Thus the time that the event recorded may be significantly after the host calls hipEventRecord().

-

If hipEventRecord() has not been called on either event, then hipErrorInvalidResourceHandle is returned. If hipEventRecord() has been called on both events, but the timestamp has not yet been recorded on one or both events (that is, hipEventQuery() would return hipErrorNotReady on at least one of the events), then hipErrorNotReady is returned.

-
See Also
hipEventCreate, hipEventCreateWithFlags, hipEventQuery, hipEventDestroy, hipEventRecord, hipEventSynchronize
- -
-
- -
-
- - - - - - - - -
hipError_t hipEventQuery (hipEvent_t event)
-
- -

Query event status.

-
Parameters
- - -
[in]eventEvent to query.
-
-
-
Returns
hipSuccess, hipErrorNotReady, hipErrorInvalidResourceHandle, hipErrorInvalidValue, hipErrorInitializationError, hipErrorLaunchFailure
-

Query the status of the specified event. This function will return hipErrorNotReady if all commands in the appropriate stream (specified to hipEventRecord()) have completed. If that work has not completed, or if hipEventRecord() was not called on the event, then hipSuccess is returned.

-
See Also
hipEventCreate, hipEventCreateWithFlags, hipEventRecord, hipEventDestroy, hipEventSynchronize, hipEventElapsedTime
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipEventRecord (hipEvent_t event,
hipStream_t stream 
)
-
- -

Record an event in the specified stream.

-
Parameters
- - - -
[in]eventevent to record.
[in]streamstream in which to record event.
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, hipErrorInitializationError, hipErrorInvalidResourceHandle, hipErrorLaunchFailure
-

hipEventQuery() or hipEventSynchronize() must be used to determine when the event transitions from "recording" (after hipEventRecord() is called) to "recorded" (when timestamps are set, if requested).

-

Events which are recorded in a non-NULL stream will transition to from recording to "recorded" state when they reach the head of the specified stream, after all previous commands in that stream have completed executing.

-

If hipEventRecord() has been previously called aon event, then this call will overwrite any existing state in event.

-

If this function is called on a an event that is currently being recorded, results are undefined - either outstanding recording may save state into the event, and the order is not guaranteed. This shoul be avoided.

-
See Also
hipEventCreate, hipEventCreateWithFlags, hipEventQuery, hipEventSynchronize, hipEventDestroy, hipEventElapsedTime
- -
-
- -
-
- - - - - - - - -
hipError_t hipEventSynchronize (hipEvent_t event)
-
- -

Wait for an event to complete.

-

This function will block until the event is ready, waiting for all previous work in the stream specified when event was recorded with hipEventRecord().

-

If hipEventRecord() has not been called on event, this function returns immediately.

-

TODO-hcc - This function needs to support hipEventBlockingSync parameter.

-
Parameters
- - -
[in]eventEvent on which to wait.
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, hipErrorInitializationError, hipErrorInvalidResourceHandle, hipErrorLaunchFailure
-
See Also
hipEventCreate, hipEventCreateWithFlags, hipEventQuery, hipEventDestroy, hipEventRecord, hipEventElapsedTime
- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/group__Fence.html b/docs/RuntimeAPI/html/group__Fence.html deleted file mode 100644 index bb73801cca..0000000000 --- a/docs/RuntimeAPI/html/group__Fence.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Fence Functions - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
- -
-
Fence Functions
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

__device__ void __threadfence_block (void)
 threadfence_block makes writes visible to threads running in same block. More...
 
__device__ void __threadfence (void)
 threadfence makes wirtes visible to other threads running on same GPU. More...
 
__device__ void __threadfence_system (void)
 threadfence_system makes writes to pinned system memory visible on host CPU. More...
 
-__device__ unsigned __hip_ds_bpermute (int index, unsigned src)
 
-__device__ float __hip_ds_bpermutef (int index, float src)
 
-__device__ unsigned __hip_ds_permute (int index, unsigned src)
 
-__device__ float __hip_ds_permutef (int index, float src)
 
-__device__ unsigned __hip_ds_swizzle (unsigned int src, int pattern)
 
-__device__ float __hip_ds_swizzlef (float src, int pattern)
 
-__device__ int __hip_move_dpp (int src, int dpp_ctrl, int row_mask, int bank_mask, bool bound_ctrl)
 
-

Detailed Description

-

CUDA 8 device function features

-

Kernel launching

-
-
Warning
The HIP memory fence functions are currently not supported yet. If any of those threadfence stubs are reached by the application, you should set "export HSA_DISABLE_CACHE=1" to disable L1 and L2 caches.
-

On AMD platforms, the threadfence* routines are currently empty stubs.

-

Function Documentation

- -
-
- - - - - - - - -
__device__ void __threadfence (void )
-
- -

threadfence makes wirtes visible to other threads running on same GPU.

-

void

-
Parameters
- - -
void
-
-
-
Warning
__threadfence is a stub and map to no-op, application should set "export HSA_DISABLE_CACHE=1" to disable both L1 and L2 caches.
- -
-
- -
-
- - - - - - - - -
__device__ void __threadfence_block (void )
-
- -

threadfence_block makes writes visible to threads running in same block.

-

void

-
Parameters
- - -
void
-
-
-
Warning
__threadfence_block is a stub and map to no-op.
- -
-
- -
-
- - - - - - - - -
__device__ void __threadfence_system (void )
-
- -

threadfence_system makes writes to pinned system memory visible on host CPU.

-

void

-
Parameters
- - -
void
-
-
-
Warning
__threadfence_system is a stub and map to no-op.
- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/group__GlobalDefs.html b/docs/RuntimeAPI/html/group__GlobalDefs.html deleted file mode 100644 index 4182019c94..0000000000 --- a/docs/RuntimeAPI/html/group__GlobalDefs.html +++ /dev/null @@ -1,700 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Global enum and defines - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
- -
-
Global enum and defines
-
-
- - - - -

-Classes

struct  dim3
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Macros

#define hipStreamDefault   0x00
 Flags that can be used with hipStreamCreateWithFlags. More...
 
-#define hipStreamNonBlocking   0x01
 Stream does not implicitly synchronize with null stream.
 
#define hipEventDefault   0x0
 Flags that can be used with hipEventCreateWithFlags: More...
 
-#define hipEventBlockingSync   0x1
 Waiting will yield CPU. Power-friendly and usage-friendly but may increase latency.
 
-#define hipEventDisableTiming   0x2
 Disable event's capability to record timing information. May improve performance.
 
#define hipEventInterprocess   0x4
 Event can support IPC. More...
 
-#define hipHostMallocDefault   0x0
 Flags that can be used with hipHostMalloc.
 
-#define hipHostMallocPortable   0x1
 
-#define hipHostMallocMapped   0x2
 
-#define hipHostMallocWriteCombined   0x4
 
#define hipHostRegisterDefault   0x0
 Flags that can be used with hipHostRegister. More...
 
-#define hipHostRegisterPortable   0x1
 Memory is considered registered by all contexts. HIP only supports one context so this is always assumed true.
 
-#define hipHostRegisterMapped   0x2
 Map the allocation into the address space for the current device. The device pointer can be obtained with hipHostGetDevicePointer.
 
-#define hipHostRegisterIoMemory   0x4
 Not supported.
 
-#define hipDeviceScheduleAuto   0x0
 Automatically select between Spin and Yield.
 
-#define hipDeviceScheduleSpin   0x1
 Dedicate a CPU core to spin-wait. Provides lowest latency, but burns a CPU core and may consume more power.
 
-#define hipDeviceScheduleYield   0x2
 Yield the CPU to the operating system when waiting. May increase latency, but lowers power and is friendlier to other threads in the system.
 
-#define hipDeviceScheduleBlockingSync   0x4
 
-#define hipDeviceScheduleMask   0x7
 
-#define hipDeviceMapHost   0x8
 
-#define hipDeviceLmemResizeToMax   0x16
 
- - - - - - - - - - - - - -

-Typedefs

-typedef enum hipError_t hipError_t
 
-typedef enum hipDeviceAttribute_t hipDeviceAttribute_t
 
typedef enum hipFuncCache_t hipFuncCache_t
 
typedef enum hipSharedMemConfig hipSharedMemConfig
 
typedef struct dim3 dim3
 
typedef enum hipMemcpyKind hipMemcpyKind
 
- - - - - - - - - - - -

-Enumerations

enum  hipError_t {
-  hipSuccess = 0, -hipErrorOutOfMemory = 2, -hipErrorNotInitialized = 3, -hipErrorDeinitialized = 4, -
-  hipErrorProfilerDisabled = 5, -hipErrorProfilerNotInitialized = 6, -hipErrorProfilerAlreadyStarted = 7, -hipErrorProfilerAlreadyStopped = 8, -
-  hipErrorInvalidImage = 200, -hipErrorInvalidContext = 201, -hipErrorContextAlreadyCurrent = 202, -hipErrorMapFailed = 205, -
-  hipErrorUnmapFailed = 206, -hipErrorArrayIsMapped = 207, -hipErrorAlreadyMapped = 208, -hipErrorNoBinaryForGpu = 209, -
-  hipErrorAlreadyAcquired = 210, -hipErrorNotMapped = 211, -hipErrorNotMappedAsArray = 212, -hipErrorNotMappedAsPointer = 213, -
-  hipErrorECCNotCorrectable = 214, -hipErrorUnsupportedLimit = 215, -hipErrorContextAlreadyInUse = 216, -hipErrorPeerAccessUnsupported = 217, -
-  hipErrorInvalidKernelFile = 218, -hipErrorInvalidGraphicsContext = 219, -hipErrorInvalidSource = 300, -hipErrorFileNotFound = 301, -
-  hipErrorSharedObjectSymbolNotFound = 302, -hipErrorSharedObjectInitFailed = 303, -hipErrorOperatingSystem = 304, -hipErrorInvalidHandle = 400, -
-  hipErrorNotFound = 500, -hipErrorIllegalAddress = 700, -hipErrorInvalidSymbol = 701, -hipErrorMissingConfiguration = 1001, -
-  hipErrorMemoryAllocation = 1002, -hipErrorInitializationError = 1003, -hipErrorLaunchFailure = 1004, -hipErrorPriorLaunchFailure = 1005, -
-  hipErrorLaunchTimeOut = 1006, -hipErrorLaunchOutOfResources = 1007, -hipErrorInvalidDeviceFunction = 1008, -hipErrorInvalidConfiguration = 1009, -
-  hipErrorInvalidDevice = 1010, -hipErrorInvalidValue = 1011, -hipErrorInvalidDevicePointer = 1017, -hipErrorInvalidMemcpyDirection = 1021, -
-  hipErrorUnknown = 1030, -hipErrorInvalidResourceHandle = 1033, -hipErrorNotReady = 1034, -hipErrorNoDevice = 1038, -
-  hipErrorPeerAccessAlreadyEnabled = 1050, -hipErrorPeerAccessNotEnabled = 1051, -hipErrorRuntimeMemory = 1052, -hipErrorRuntimeOther = 1053, -
-  hipErrorHostMemoryAlreadyRegistered = 1061, -hipErrorHostMemoryNotRegistered = 1062, -hipErrorMapBufferObjectFailed = 1071, -hipErrorTbd -
- }
 
enum  hipDeviceAttribute_t {
-  hipDeviceAttributeMaxThreadsPerBlock, -hipDeviceAttributeMaxBlockDimX, -hipDeviceAttributeMaxBlockDimY, -hipDeviceAttributeMaxBlockDimZ, -
-  hipDeviceAttributeMaxGridDimX, -hipDeviceAttributeMaxGridDimY, -hipDeviceAttributeMaxGridDimZ, -hipDeviceAttributeMaxSharedMemoryPerBlock, -
-  hipDeviceAttributeTotalConstantMemory, -hipDeviceAttributeWarpSize, -hipDeviceAttributeMaxRegistersPerBlock, -hipDeviceAttributeClockRate, -
-  hipDeviceAttributeMemoryClockRate, -hipDeviceAttributeMemoryBusWidth, -hipDeviceAttributeMultiprocessorCount, -hipDeviceAttributeComputeMode, -
-  hipDeviceAttributeL2CacheSize, -hipDeviceAttributeMaxThreadsPerMultiProcessor, -hipDeviceAttributeComputeCapabilityMajor, -hipDeviceAttributeComputeCapabilityMinor, -
-  hipDeviceAttributeConcurrentKernels, -hipDeviceAttributePciBusId, -hipDeviceAttributePciDeviceId, -hipDeviceAttributeMaxSharedMemoryPerMultiprocessor, -
-  hipDeviceAttributeIsMultiGpuBoard -
- }
 
enum  hipFuncCache_t { hipFuncCachePreferNone, -hipFuncCachePreferShared, -hipFuncCachePreferL1, -hipFuncCachePreferEqual - }
 
enum  hipSharedMemConfig { hipSharedMemBankSizeDefault, -hipSharedMemBankSizeFourByte, -hipSharedMemBankSizeEightByte - }
 
enum  hipMemcpyKind {
-  hipMemcpyHostToHost = 0, -hipMemcpyHostToDevice = 1, -hipMemcpyDeviceToHost = 2, -hipMemcpyDeviceToDevice =3, -
-  hipMemcpyDefault = 4 -
- }
 
-

Detailed Description

-

Macro Definition Documentation

- -
-
- - - - -
#define hipEventDefault   0x0
-
- -

Flags that can be used with hipEventCreateWithFlags:

-

Default flags

- -
-
- -
-
- - - - -
#define hipEventInterprocess   0x4
-
- -

Event can support IPC.

-
Warning
- not supported in HIP.
- -
-
- -
-
- - - - -
#define hipHostRegisterDefault   0x0
-
- -

Flags that can be used with hipHostRegister.

-

Memory is Mapped and Portable

- -
-
- -
-
- - - - -
#define hipStreamDefault   0x00
-
- -

Flags that can be used with hipStreamCreateWithFlags.

-

Default stream creation flags. These are used with hipStreamCreate().

- -
-
-

Typedef Documentation

- -
-
- - - - -
typedef struct dim3 dim3
-
-

Struct for data in 3D

- -
-
- -
-
- - - - -
typedef enum hipFuncCache_t hipFuncCache_t
-
-
Warning
On AMD devices and recent Nvidia devices, these hints and controls are ignored.
- -
-
- -
-
- - - - -
typedef enum hipMemcpyKind hipMemcpyKind
-
-

Memory copy types

- -
-
- -
-
- - - - -
typedef enum hipSharedMemConfig hipSharedMemConfig
-
-
Warning
On AMD devices and recent Nvidia devices, these hints and controls are ignored.
- -
-
-

Enumeration Type Documentation

- -
-
- - - - -
enum hipDeviceAttribute_t
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Enumerator
hipDeviceAttributeMaxThreadsPerBlock  -

Maximum number of threads per block.

-
hipDeviceAttributeMaxBlockDimX  -

Maximum x-dimension of a block.

-
hipDeviceAttributeMaxBlockDimY  -

Maximum y-dimension of a block.

-
hipDeviceAttributeMaxBlockDimZ  -

Maximum z-dimension of a block.

-
hipDeviceAttributeMaxGridDimX  -

Maximum x-dimension of a grid.

-
hipDeviceAttributeMaxGridDimY  -

Maximum y-dimension of a grid.

-
hipDeviceAttributeMaxGridDimZ  -

Maximum z-dimension of a grid.

-
hipDeviceAttributeMaxSharedMemoryPerBlock  -

Maximum shared memory available per block in bytes.

-
hipDeviceAttributeTotalConstantMemory  -

Constant memory size in bytes.

-
hipDeviceAttributeWarpSize  -

Warp size in threads.

-
hipDeviceAttributeMaxRegistersPerBlock  -

Maximum number of 32-bit registers available to a thread block. This number is shared by all thread blocks simultaneously resident on a multiprocessor.

-
hipDeviceAttributeClockRate  -

Peak clock frequency in kilohertz.

-
hipDeviceAttributeMemoryClockRate  -

Peak memory clock frequency in kilohertz.

-
hipDeviceAttributeMemoryBusWidth  -

Global memory bus width in bits.

-
hipDeviceAttributeMultiprocessorCount  -

Number of multiprocessors on the device.

-
hipDeviceAttributeComputeMode  -

Compute mode that device is currently in.

-
hipDeviceAttributeL2CacheSize  -

Size of L2 cache in bytes. 0 if the device doesn't have L2 cache.

-
hipDeviceAttributeMaxThreadsPerMultiProcessor  -

Maximum resident threads per multiprocessor.

-
hipDeviceAttributeComputeCapabilityMajor  -

Major compute capability version number.

-
hipDeviceAttributeComputeCapabilityMinor  -

Minor compute capability version number.

-
hipDeviceAttributeConcurrentKernels  -

Device can possibly execute multiple kernels concurrently.

-
hipDeviceAttributePciBusId  -

PCI Bus ID.

-
hipDeviceAttributePciDeviceId  -

PCI Device ID.

-
hipDeviceAttributeMaxSharedMemoryPerMultiprocessor  -

Maximum Shared Memory Per Multiprocessor.

-
hipDeviceAttributeIsMultiGpuBoard  -

Multiple GPU devices.

-
- -
-
- -
-
- - - - -
enum hipError_t
-
- - - - - - - - - - - - - - - - - - - - - - - - -
Enumerator
hipSuccess  -

Successful completion.

-
hipErrorInvalidContext  -

Produced when input context is invalid.

-
hipErrorInvalidKernelFile  -

In CUDA DRV, it is CUDA_ERROR_INVALID_PTX.

-
hipErrorMemoryAllocation  -

Memory allocation error.

-
hipErrorInitializationError  -

TODO comment from hipErrorInitializationError.

-
hipErrorLaunchFailure  -

An exception occurred on the device while executing a kernel.

-
hipErrorLaunchOutOfResources  -

Out of resources error.

-
hipErrorInvalidDevice  -

DeviceID must be in range 0...#compute-devices.

-
hipErrorInvalidValue  -

One or more of the parameters passed to the API call is NULL or not in an acceptable range.

-
hipErrorInvalidDevicePointer  -

Invalid Device Pointer.

-
hipErrorInvalidMemcpyDirection  -

Invalid memory copy direction.

-
hipErrorUnknown  -

Unknown error.

-
hipErrorInvalidResourceHandle  -

Resource handle (hipEvent_t or hipStream_t) invalid.

-
hipErrorNotReady  -

Indicates that asynchronous operations enqueued earlier are not ready. This is not actually an error, but is used to distinguish from hipSuccess (which indicates completion). APIs that return this error include hipEventQuery and hipStreamQuery.

-
hipErrorNoDevice  -

Call to hipGetDeviceCount returned 0 devices.

-
hipErrorPeerAccessAlreadyEnabled  -

Peer access was already enabled from the current device.

-
hipErrorPeerAccessNotEnabled  -

Peer access was never enabled from the current device.

-
hipErrorRuntimeMemory  -

HSA runtime memory call returned error. Typically not seen in production systems.

-
hipErrorRuntimeOther  -

HSA runtime call other than memory returned error. Typically not seen in production systems.

-
hipErrorHostMemoryAlreadyRegistered  -

Produced when trying to lock a page-locked memory.

-
hipErrorHostMemoryNotRegistered  -

Produced when trying to unlock a non-page-locked memory.

-
hipErrorMapBufferObjectFailed  -

Produced when the IPC memory attach failed from ROCr.

-
hipErrorTbd  -

Marker that more error codes are needed.

-
- -
-
- -
-
- - - - -
enum hipFuncCache_t
-
-
Warning
On AMD devices and recent Nvidia devices, these hints and controls are ignored.
- - - - - -
Enumerator
hipFuncCachePreferNone  -

no preference for shared memory or L1 (default)

-
hipFuncCachePreferShared  -

prefer larger shared memory and smaller L1 cache

-
hipFuncCachePreferL1  -

prefer larger L1 cache and smaller shared memory

-
hipFuncCachePreferEqual  -

prefer equal size L1 cache and shared memory

-
- -
-
- -
-
- - - - -
enum hipMemcpyKind
-
-

Memory copy types

- - - - - - -
Enumerator
hipMemcpyHostToHost  -

Host-to-Host Copy.

-
hipMemcpyHostToDevice  -

Host-to-Device Copy.

-
hipMemcpyDeviceToHost  -

Device-to-Host Copy.

-
hipMemcpyDeviceToDevice  -

Device-to-Device Copy.

-
hipMemcpyDefault  -

Runtime will automatically determine copy-kind based on virtual addresses.

-
- -
-
- -
-
- - - - -
enum hipSharedMemConfig
-
-
Warning
On AMD devices and recent Nvidia devices, these hints and controls are ignored.
- - - - -
Enumerator
hipSharedMemBankSizeDefault  -

The compiler selects a device-specific value for the banking.

-
hipSharedMemBankSizeFourByte  -

Shared mem is banked at 4-bytes intervals and performs best when adjacent threads access data 4 bytes apart.

-
hipSharedMemBankSizeEightByte  -

Shared mem is banked at 8-byte intervals and performs best when adjacent threads access data 4 bytes apart.

-
- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/group__HCC__Specific.html b/docs/RuntimeAPI/html/group__HCC__Specific.html deleted file mode 100644 index b9940e0a53..0000000000 --- a/docs/RuntimeAPI/html/group__HCC__Specific.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: HCC-Specific Accessors - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
-
-
HCC-Specific Accessors
-
-
-

----------------------------------------------------------------------------------------------—

-

The following calls are only supported when compiler HIP with HCC. To produce portable code, use of these calls must be guarded #ifdef checks:

-
#ifdef __HCC__
-
hc::accelerator acc;
-
hipError_t err = hipHccGetAccelerator(deviceId, &acc)
-
#endif
-
- - - - diff --git a/docs/RuntimeAPI/html/group__HIP-ENV.html b/docs/RuntimeAPI/html/group__HIP-ENV.html deleted file mode 100644 index f38a717247..0000000000 --- a/docs/RuntimeAPI/html/group__HIP-ENV.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: HIP Environment Variables - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
-
-
HIP Environment Variables
-
-
-
- - - - diff --git a/docs/RuntimeAPI/html/group__Memory.html b/docs/RuntimeAPI/html/group__Memory.html deleted file mode 100644 index 338ce818a2..0000000000 --- a/docs/RuntimeAPI/html/group__Memory.html +++ /dev/null @@ -1,1319 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Memory Management - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
- -
-
Memory Management
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

hipError_t hipPointerGetAttributes (hipPointerAttribute_t *attributes, void *ptr)
 Return attributes for the specified pointer. More...
 
hipError_t hipMalloc (void **ptr, size_t size)
 Allocate memory on the default accelerator. More...
 
hipError_t hipMallocHost (void **ptr, size_t size) __attribute__((deprecated("use hipHostMalloc instead")))
 Allocate pinned host memory [Deprecated]. More...
 
hipError_t hipHostMalloc (void **ptr, size_t size, unsigned int flags)
 Allocate device accessible page locked host memory. More...
 
hipError_t hipHostAlloc (void **ptr, size_t size, unsigned int flags) __attribute__((deprecated("use hipHostMalloc instead")))
 Allocate device accessible page locked host memory [Deprecated]. More...
 
hipError_t hipHostGetDevicePointer (void **devPtr, void *hstPtr, unsigned int flags)
 Get Device pointer from Host Pointer allocated through hipHostMalloc. More...
 
hipError_t hipHostGetFlags (unsigned int *flagsPtr, void *hostPtr)
 Return flags associated with host pointer. More...
 
hipError_t hipHostRegister (void *hostPtr, size_t sizeBytes, unsigned int flags)
 Register host memory so it can be accessed from the current device. More...
 
hipError_t hipHostUnregister (void *hostPtr)
 Un-register host pointer. More...
 
hipError_t hipMallocPitch (void **ptr, size_t *pitch, size_t width, size_t height)
 
hipError_t hipFree (void *ptr)
 Free memory allocated by the hcc hip memory allocation API. This API performs an implicit hipDeviceSynchronize() call. If pointer is NULL, the hip runtime is initialized and hipSuccess is returned. More...
 
hipError_t hipFreeHost (void *ptr) __attribute__((deprecated("use hipHostFree instead")))
 Free memory allocated by the hcc hip host memory allocation API. [Deprecated]. More...
 
hipError_t hipHostFree (void *ptr)
 Free memory allocated by the hcc hip host memory allocation API This API performs an implicit hipDeviceSynchronize() call. If pointer is NULL, the hip runtime is initialized and hipSuccess is returned. More...
 
hipError_t hipMemcpy (void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind)
 Copy data from src to dst. More...
 
hipError_t hipMemcpyHtoD (hipDeviceptr_t dst, void *src, size_t sizeBytes)
 Copy data from Host to Device. More...
 
hipError_t hipMemcpyDtoH (void *dst, hipDeviceptr_t src, size_t sizeBytes)
 Copy data from Device to Host. More...
 
hipError_t hipMemcpyDtoD (hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes)
 Copy data from Device to Device. More...
 
hipError_t hipMemcpyHtoDAsync (hipDeviceptr_t dst, void *src, size_t sizeBytes, hipStream_t stream)
 Copy data from Host to Device asynchronously. More...
 
hipError_t hipMemcpyDtoHAsync (void *dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream)
 Copy data from Device to Host asynchronously. More...
 
hipError_t hipMemcpyDtoDAsync (hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream)
 Copy data from Device to Device asynchronously. More...
 
hipError_t hipMemcpyToSymbol (const char *symbolName, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind)
 Copies sizeBytes bytes from the memory area pointed to by src to the memory area pointed to by offset bytes from the start of symbol symbol. More...
 
hipError_t hipMemcpyToSymbolAsync (const char *symbolName, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind, hipStream_t stream)
 Copies sizeBytes bytes from the memory area pointed to by src to the memory area pointed to by offset bytes from the start of symbol symbol. More...
 
hipError_t hipMemcpyAsync (void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind, hipStream_t stream)
 Copy data from src to dst asynchronously. More...
 
hipError_t hipMemset (void *dst, int value, size_t sizeBytes)
 Copy data from src to dst asynchronously. More...
 
hipError_t hipMemsetAsync (void *dst, int value, size_t sizeBytes, hipStream_t stream)
 Fills the first sizeBytes bytes of the memory area pointed to by dev with the constant byte value value. More...
 
hipError_t hipMemGetInfo (size_t *free, size_t *total)
 Query memory info. Return snapshot of free memory, and total allocatable memory on the device. More...
 
-

Detailed Description

-

----------------------------------------------------------------------------------------------—

-

The following CUDA APIs are not currently supported:

-
    -
  • cudaMalloc3D
  • -
  • cudaMalloc3DArray
  • -
  • TODO - more 2D, 3D, array APIs here.
  • -
-

Function Documentation

- -
-
- - - - - - - - -
hipError_t hipFree (void * ptr)
-
- -

Free memory allocated by the hcc hip memory allocation API. This API performs an implicit hipDeviceSynchronize() call. If pointer is NULL, the hip runtime is initialized and hipSuccess is returned.

-
Parameters
- - -
[in]ptrPointer to memory to be freed
-
-
-
Returns
hipSuccess
-
-hipErrorInvalidDevicePointer (if pointer is invalid, including host pointers allocated with hipHostMalloc)
-
See Also
hipMalloc, hipMallocPitch, hipMallocArray, hipFreeArray, hipHostFree, hipMalloc3D, hipMalloc3DArray, hipHostMalloc
- -
-
- -
-
- - - - - - - - -
hipError_t hipFreeHost (void * ptr)
-
- -

Free memory allocated by the hcc hip host memory allocation API. [Deprecated].

-
Parameters
- - -
[in]ptrPointer to memory to be freed
-
-
-
Returns
hipSuccess, hipErrorInvalidValue (if pointer is invalid, including device pointers allocated with hipMalloc)
-
Deprecated:
use hipHostFree() instead
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipHostAlloc (void ** ptr,
size_t size,
unsigned int flags 
)
-
- -

Allocate device accessible page locked host memory [Deprecated].

-
Parameters
- - - - -
[out]ptrPointer to the allocated host pinned memory
[in]sizeRequested memory size
[in]flagsType of host memory allocation
-
-
-
Returns
hipSuccess, hipErrorMemoryAllocation
-
Deprecated:
use hipHostMalloc() instead
- -
-
- -
-
- - - - - - - - -
hipError_t hipHostFree (void * ptr)
-
- -

Free memory allocated by the hcc hip host memory allocation API This API performs an implicit hipDeviceSynchronize() call. If pointer is NULL, the hip runtime is initialized and hipSuccess is returned.

-
Parameters
- - -
[in]ptrPointer to memory to be freed
-
-
-
Returns
hipSuccess, hipErrorInvalidValue (if pointer is invalid, including device pointers allocated with hipMalloc)
-
See Also
hipMalloc, hipMallocPitch, hipFree, hipMallocArray, hipFreeArray, hipMalloc3D, hipMalloc3DArray, hipHostMalloc
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipHostGetDevicePointer (void ** devPtr,
void * hstPtr,
unsigned int flags 
)
-
- -

Get Device pointer from Host Pointer allocated through hipHostMalloc.

-
Parameters
- - - - -
[out]dstPtrDevice Pointer mapped to passed host pointer
[in]hstPtrHost Pointer allocated through hipHostMalloc
[in]flagsFlags to be passed for extension
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, hipErrorMemoryAllocation
-
See Also
hipSetDeviceFlags, hipHostMalloc
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipHostGetFlags (unsigned int * flagsPtr,
void * hostPtr 
)
-
- -

Return flags associated with host pointer.

-
Parameters
- - - -
[out]flagsPtrMemory location to store flags
[in]hostPtrHost Pointer allocated through hipHostMalloc
-
-
-
Returns
hipSuccess, hipErrorInvalidValue
-
See Also
hipHostMalloc
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipHostMalloc (void ** ptr,
size_t size,
unsigned int flags 
)
-
- -

Allocate device accessible page locked host memory.

-
Parameters
- - - - -
[out]ptrPointer to the allocated host pinned memory
[in]sizeRequested memory size
[in]flagsType of host memory allocation
-
-
-
Returns
hipSuccess, hipErrorMemoryAllocation
-
See Also
hipSetDeviceFlags, hipHostFree
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipHostRegister (void * hostPtr,
size_t sizeBytes,
unsigned int flags 
)
-
- -

Register host memory so it can be accessed from the current device.

-
Parameters
- - - - -
[out]hostPtrPointer to host memory to be registered.
[in]sizeBytessize of the host memory
[in]flags.See below.
-
-
-

Flags:

- -

After registering the memory, use hipHostGetDevicePointer to obtain the mapped device pointer. On many systems, the mapped device pointer will have a different value than the mapped host pointer. Applications must use the device pointer in device code, and the host pointer in device code.

-

On some systems, registered memory is pinned. On some systems, registered memory may not be actually be pinned but uses OS or hardware facilities to all GPU access to the host memory.

-

Developers are strongly encouraged to register memory blocks which are aligned to the host cache-line size. (typically 64-bytes but can be obtains from the CPUID instruction).

-

If registering non-aligned pointers, the application must take care when register pointers from the same cache line on different devices. HIP's coarse-grained synchronization model does not guarantee correct results if different devices write to different parts of the same cache block - typically one of the writes will "win" and overwrite data from the other registered memory region.

-
Returns
hipSuccess, hipErrorMemoryAllocation
-
See Also
hipHostUnregister, hipHostGetFlags, hipHostGetDevicePointer
- -
-
- -
-
- - - - - - - - -
hipError_t hipHostUnregister (void * hostPtr)
-
- -

Un-register host pointer.

-
Parameters
- - -
[in]hostPtrHost pointer previously registered with hipHostRegister
-
-
-
Returns
Error code
-
See Also
hipHostRegister
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipMalloc (void ** ptr,
size_t size 
)
-
- -

Allocate memory on the default accelerator.

-
Parameters
- - - -
[out]ptrPointer to the allocated memory
[in]sizeRequested memory size
-
-
-
Returns
hipSuccess
-
See Also
hipMallocPitch, hipFree, hipMallocArray, hipFreeArray, hipMalloc3D, hipMalloc3DArray, hipHostFree, hipHostMalloc
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipMallocHost (void ** ptr,
size_t size 
)
-
- -

Allocate pinned host memory [Deprecated].

-
Parameters
- - - -
[out]ptrPointer to the allocated host pinned memory
[in]sizeRequested memory size
-
-
-
Returns
hipSuccess, hipErrorMemoryAllocation
-
Deprecated:
use hipHostMalloc() instead
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMallocPitch (void ** ptr,
size_t * pitch,
size_t width,
size_t height 
)
-
-

Allocates at least width (in bytes) * height bytes of linear memory Padding may occur to ensure alighnment requirements are met for the given row The change in width size due to padding will be returned in *pitch. Currently the alignment is set to 128 bytes

-
Parameters
- - - - - -
[out]ptrPointer to the allocated device memory
[out]pitchPitch for allocation (in bytes)
[in]widthRequested pitched allocation width (in bytes)
[in]heightRequested pitched allocation height
-
-
-
Returns
Error code
-
See Also
hipMalloc, hipFree, hipMallocArray, hipFreeArray, hipHostFree, hipMalloc3D, hipMalloc3DArray, hipHostMalloc
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemcpy (void * dst,
const void * src,
size_t sizeBytes,
hipMemcpyKind kind 
)
-
- -

Copy data from src to dst.

-

It supports memory from host to device, device to host, device to device and host to host The src and dst must not overlap.

-

For hipMemcpy, the copy is always performed by the current device (set by hipSetDevice). For multi-gpu or peer-to-peer configurations, it is recommended to set the current device to the device where the src data is physically located. For optimal peer-to-peer copies, the copy device must be able to access the src and dst pointers (by calling hipDeviceEnablePeerAccess with copy agent as the current device and src/dest as the peerDevice argument. if this is not done, the hipMemcpy will still work, but will perform the copy using a staging buffer on the host.

-
Parameters
- - - - - -
[out]dstData being copy to
[in]srcData being copy from
[in]sizeBytesData size in bytes
[in]copyTypeMemory copy type
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, #hipErrorMemoryFree, #hipErrorUnknowni
-
See Also
hipArrayCreate, hipArrayDestroy, hipArrayGetDescriptor, hipMemAlloc, hipMemAllocHost, hipMemAllocPitch, hipMemcpy2D, hipMemcpy2DAsync, hipMemcpy2DUnaligned, hipMemcpyAtoA, hipMemcpyAtoD, hipMemcpyAtoH, hipMemcpyAtoHAsync, hipMemcpyDtoA, hipMemcpyDtoD, hipMemcpyDtoDAsync, hipMemcpyDtoH, hipMemcpyDtoHAsync, hipMemcpyHtoA, hipMemcpyHtoAAsync, hipMemcpyHtoDAsync, hipMemFree, hipMemFreeHost, hipMemGetAddressRange, hipMemGetInfo, hipMemHostAlloc, hipMemHostGetDevicePointer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemcpyAsync (void * dst,
const void * src,
size_t sizeBytes,
hipMemcpyKind kind,
hipStream_t stream 
)
-
- -

Copy data from src to dst asynchronously.

-
Warning
If host or dest are not pinned, the memory copy will be performed synchronously. For best performance, use hipHostMalloc to allocate host memory that is transferred asynchronously.
-
-on HCC hipMemcpyAsync does not support overlapped H2D and D2H copies. For hipMemcpy, the copy is always performed by the device associated with the specified stream.
-

For multi-gpu or peer-to-peer configurations, it is recommended to use a stream which is a attached to the device where the src data is physically located. For optimal peer-to-peer copies, the copy device must be able to access the src and dst pointers (by calling hipDeviceEnablePeerAccess with copy agent as the current device and src/dest as the peerDevice argument. if this is not done, the hipMemcpy will still work, but will perform the copy using a staging buffer on the host.

-
Parameters
- - - - - -
[out]dstData being copy to
[in]srcData being copy from
[in]sizeBytesData size in bytes
[in]accelerator_viewAccelerator view which the copy is being enqueued
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, #hipErrorMemoryFree, hipErrorUnknown
-
See Also
hipMemcpy, hipMemcpy2D, hipMemcpyToArray, hipMemcpy2DToArray, hipMemcpyFromArray, hipMemcpy2DFromArray, hipMemcpyArrayToArray, hipMemcpy2DArrayToArray, hipMemcpyToSymbol, hipMemcpyFromSymbol, hipMemcpy2DAsync, hipMemcpyToArrayAsync, hipMemcpy2DToArrayAsync, hipMemcpyFromArrayAsync, hipMemcpy2DFromArrayAsync, hipMemcpyToSymbolAsync, hipMemcpyFromSymbolAsync
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemcpyDtoD (hipDeviceptr_t dst,
hipDeviceptr_t src,
size_t sizeBytes 
)
-
- -

Copy data from Device to Device.

-
Parameters
- - - - -
[out]dstData being copy to
[in]srcData being copy from
[in]sizeBytesData size in bytes
-
-
-
Returns
hipSuccess, #hipErrorDeInitialized, #hipErrorNotInitialized, hipErrorInvalidContext, hipErrorInvalidValue
-
See Also
hipArrayCreate, hipArrayDestroy, hipArrayGetDescriptor, hipMemAlloc, hipMemAllocHost, hipMemAllocPitch, hipMemcpy2D, hipMemcpy2DAsync, hipMemcpy2DUnaligned, hipMemcpyAtoA, hipMemcpyAtoD, hipMemcpyAtoH, hipMemcpyAtoHAsync, hipMemcpyDtoA, hipMemcpyDtoD, hipMemcpyDtoDAsync, hipMemcpyDtoH, hipMemcpyDtoHAsync, hipMemcpyHtoA, hipMemcpyHtoAAsync, hipMemcpyHtoDAsync, hipMemFree, hipMemFreeHost, hipMemGetAddressRange, hipMemGetInfo, hipMemHostAlloc, hipMemHostGetDevicePointer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemcpyDtoDAsync (hipDeviceptr_t dst,
hipDeviceptr_t src,
size_t sizeBytes,
hipStream_t stream 
)
-
- -

Copy data from Device to Device asynchronously.

-
Parameters
- - - - -
[out]dstData being copy to
[in]srcData being copy from
[in]sizeBytesData size in bytes
-
-
-
Returns
hipSuccess, #hipErrorDeInitialized, #hipErrorNotInitialized, hipErrorInvalidContext, hipErrorInvalidValue
-
See Also
hipArrayCreate, hipArrayDestroy, hipArrayGetDescriptor, hipMemAlloc, hipMemAllocHost, hipMemAllocPitch, hipMemcpy2D, hipMemcpy2DAsync, hipMemcpy2DUnaligned, hipMemcpyAtoA, hipMemcpyAtoD, hipMemcpyAtoH, hipMemcpyAtoHAsync, hipMemcpyDtoA, hipMemcpyDtoD, hipMemcpyDtoDAsync, hipMemcpyDtoH, hipMemcpyDtoHAsync, hipMemcpyHtoA, hipMemcpyHtoAAsync, hipMemcpyHtoDAsync, hipMemFree, hipMemFreeHost, hipMemGetAddressRange, hipMemGetInfo, hipMemHostAlloc, hipMemHostGetDevicePointer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemcpyDtoH (void * dst,
hipDeviceptr_t src,
size_t sizeBytes 
)
-
- -

Copy data from Device to Host.

-
Parameters
- - - - -
[out]dstData being copy to
[in]srcData being copy from
[in]sizeBytesData size in bytes
-
-
-
Returns
hipSuccess, #hipErrorDeInitialized, #hipErrorNotInitialized, hipErrorInvalidContext, hipErrorInvalidValue
-
See Also
hipArrayCreate, hipArrayDestroy, hipArrayGetDescriptor, hipMemAlloc, hipMemAllocHost, hipMemAllocPitch, hipMemcpy2D, hipMemcpy2DAsync, hipMemcpy2DUnaligned, hipMemcpyAtoA, hipMemcpyAtoD, hipMemcpyAtoH, hipMemcpyAtoHAsync, hipMemcpyDtoA, hipMemcpyDtoD, hipMemcpyDtoDAsync, hipMemcpyDtoH, hipMemcpyDtoHAsync, hipMemcpyHtoA, hipMemcpyHtoAAsync, hipMemcpyHtoDAsync, hipMemFree, hipMemFreeHost, hipMemGetAddressRange, hipMemGetInfo, hipMemHostAlloc, hipMemHostGetDevicePointer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemcpyDtoHAsync (void * dst,
hipDeviceptr_t src,
size_t sizeBytes,
hipStream_t stream 
)
-
- -

Copy data from Device to Host asynchronously.

-
Parameters
- - - - -
[out]dstData being copy to
[in]srcData being copy from
[in]sizeBytesData size in bytes
-
-
-
Returns
hipSuccess, #hipErrorDeInitialized, #hipErrorNotInitialized, hipErrorInvalidContext, hipErrorInvalidValue
-
See Also
hipArrayCreate, hipArrayDestroy, hipArrayGetDescriptor, hipMemAlloc, hipMemAllocHost, hipMemAllocPitch, hipMemcpy2D, hipMemcpy2DAsync, hipMemcpy2DUnaligned, hipMemcpyAtoA, hipMemcpyAtoD, hipMemcpyAtoH, hipMemcpyAtoHAsync, hipMemcpyDtoA, hipMemcpyDtoD, hipMemcpyDtoDAsync, hipMemcpyDtoH, hipMemcpyDtoHAsync, hipMemcpyHtoA, hipMemcpyHtoAAsync, hipMemcpyHtoDAsync, hipMemFree, hipMemFreeHost, hipMemGetAddressRange, hipMemGetInfo, hipMemHostAlloc, hipMemHostGetDevicePointer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemcpyHtoD (hipDeviceptr_t dst,
void * src,
size_t sizeBytes 
)
-
- -

Copy data from Host to Device.

-
Parameters
- - - - -
[out]dstData being copy to
[in]srcData being copy from
[in]sizeBytesData size in bytes
-
-
-
Returns
hipSuccess, #hipErrorDeInitialized, #hipErrorNotInitialized, hipErrorInvalidContext, hipErrorInvalidValue
-
See Also
hipArrayCreate, hipArrayDestroy, hipArrayGetDescriptor, hipMemAlloc, hipMemAllocHost, hipMemAllocPitch, hipMemcpy2D, hipMemcpy2DAsync, hipMemcpy2DUnaligned, hipMemcpyAtoA, hipMemcpyAtoD, hipMemcpyAtoH, hipMemcpyAtoHAsync, hipMemcpyDtoA, hipMemcpyDtoD, hipMemcpyDtoDAsync, hipMemcpyDtoH, hipMemcpyDtoHAsync, hipMemcpyHtoA, hipMemcpyHtoAAsync, hipMemcpyHtoDAsync, hipMemFree, hipMemFreeHost, hipMemGetAddressRange, hipMemGetInfo, hipMemHostAlloc, hipMemHostGetDevicePointer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemcpyHtoDAsync (hipDeviceptr_t dst,
void * src,
size_t sizeBytes,
hipStream_t stream 
)
-
- -

Copy data from Host to Device asynchronously.

-
Parameters
- - - - -
[out]dstData being copy to
[in]srcData being copy from
[in]sizeBytesData size in bytes
-
-
-
Returns
hipSuccess, #hipErrorDeInitialized, #hipErrorNotInitialized, hipErrorInvalidContext, hipErrorInvalidValue
-
See Also
hipArrayCreate, hipArrayDestroy, hipArrayGetDescriptor, hipMemAlloc, hipMemAllocHost, hipMemAllocPitch, hipMemcpy2D, hipMemcpy2DAsync, hipMemcpy2DUnaligned, hipMemcpyAtoA, hipMemcpyAtoD, hipMemcpyAtoH, hipMemcpyAtoHAsync, hipMemcpyDtoA, hipMemcpyDtoD, hipMemcpyDtoDAsync, hipMemcpyDtoH, hipMemcpyDtoHAsync, hipMemcpyHtoA, hipMemcpyHtoAAsync, hipMemcpyHtoDAsync, hipMemFree, hipMemFreeHost, hipMemGetAddressRange, hipMemGetInfo, hipMemHostAlloc, hipMemHostGetDevicePointer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemcpyToSymbol (const char * symbolName,
const void * src,
size_t sizeBytes,
size_t offset,
hipMemcpyKind kind 
)
-
- -

Copies sizeBytes bytes from the memory area pointed to by src to the memory area pointed to by offset bytes from the start of symbol symbol.

-

The memory areas may not overlap. Symbol can either be a variable that resides in global or constant memory space, or it can be a character string, naming a variable that resides in global or constant memory space. Kind can be either hipMemcpyHostToDevice or hipMemcpyDeviceToDevice TODO: cudaErrorInvalidSymbol and cudaErrorInvalidMemcpyDirection is not supported, use hipErrorUnknown for now.

-
Parameters
- - - - - - -
[in]symbolName- Symbol destination on device
[in]src- Data being copy from
[in]sizeBytes- Data size in bytes
[in]offset- Offset from start of symbol in bytes
[in]kind- Type of transfer
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, #hipErrorMemoryFree, hipErrorUnknown
-
See Also
hipMemcpy, hipMemcpy2D, hipMemcpyToArray, hipMemcpy2DToArray, hipMemcpyFromArray, hipMemcpy2DFromArray, hipMemcpyArrayToArray, hipMemcpy2DArrayToArray, hipMemcpyFromSymbol, hipMemcpyAsync, hipMemcpy2DAsync, hipMemcpyToArrayAsync, hipMemcpy2DToArrayAsync, hipMemcpyFromArrayAsync, hipMemcpy2DFromArrayAsync, hipMemcpyToSymbolAsync, hipMemcpyFromSymbolAsync
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemcpyToSymbolAsync (const char * symbolName,
const void * src,
size_t sizeBytes,
size_t offset,
hipMemcpyKind kind,
hipStream_t stream 
)
-
- -

Copies sizeBytes bytes from the memory area pointed to by src to the memory area pointed to by offset bytes from the start of symbol symbol.

-

The memory areas may not overlap. Symbol can either be a variable that resides in global or constant memory space, or it can be a character string, naming a variable that resides in global or constant memory space. Kind can be either hipMemcpyHostToDevice or hipMemcpyDeviceToDevice hipMemcpyToSymbolAsync() is asynchronous with respect to the host, so the call may return before copy is complete. TODO: cudaErrorInvalidSymbol and cudaErrorInvalidMemcpyDirection is not supported, use hipErrorUnknown for now.

-
Parameters
- - - - - - -
[in]symbolName- Symbol destination on device
[in]src- Data being copy from
[in]sizeBytes- Data size in bytes
[in]offset- Offset from start of symbol in bytes
[in]kind- Type of transfer
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, #hipErrorMemoryFree, hipErrorUnknown
-
See Also
hipMemcpy, hipMemcpy2D, hipMemcpyToArray, hipMemcpy2DToArray, hipMemcpyFromArray, hipMemcpy2DFromArray, hipMemcpyArrayToArray, hipMemcpy2DArrayToArray, hipMemcpyFromSymbol, hipMemcpyAsync, hipMemcpy2DAsync, hipMemcpyToArrayAsync, hipMemcpy2DToArrayAsync, hipMemcpyFromArrayAsync, hipMemcpy2DFromArrayAsync, hipMemcpyToSymbolAsync, hipMemcpyFromSymbolAsync
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipMemGetInfo (size_t * free,
size_t * total 
)
-
- -

Query memory info. Return snapshot of free memory, and total allocatable memory on the device.

-

Returns in *free a snapshot of the current free memory.

-
Returns
hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue
-
Warning
On HCC, the free memory only accounts for memory allocated by this process and may be optimistic.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemset (void * dst,
int value,
size_t sizeBytes 
)
-
- -

Copy data from src to dst asynchronously.

-

It supports memory from host to device, device to host, device to device and host to host.

-
Parameters
- - - - - -
[out]dstData being copy to
[in]srcData being copy from
[in]sizeBytesData size in bytes
[in]accelerator_viewAccelerator view which the copy is being enqueued
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, #hipErrorMemoryFree
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemsetAsync (void * dst,
int value,
size_t sizeBytes,
hipStream_t stream 
)
-
- -

Fills the first sizeBytes bytes of the memory area pointed to by dev with the constant byte value value.

-

hipMemsetAsync() is asynchronous with respect to the host, so the call may return before the memset is complete. The operation can optionally be associated to a stream by passing a non-zero stream argument. If stream is non-zero, the operation may overlap with operations in other streams.

-
Parameters
- - - - - -
[out]dstPointer to device memory
[in]value- Value to set for each byte of specified memory
[in]sizeBytes- Size in bytes to set
[in]stream- Stream identifier
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, #hipErrorMemoryFree
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipPointerGetAttributes (hipPointerAttribute_tattributes,
void * ptr 
)
-
- -

Return attributes for the specified pointer.

-
Parameters
- - - -
[out]attributesfor the specified pointer
[in]pointerto get attributes for
-
-
-
Returns
hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue
-
See Also
hipGetDeviceCount, hipGetDevice, hipSetDevice, hipChooseDevice
- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/group__PeerToPeer.html b/docs/RuntimeAPI/html/group__PeerToPeer.html deleted file mode 100644 index 6038b9a5e5..0000000000 --- a/docs/RuntimeAPI/html/group__PeerToPeer.html +++ /dev/null @@ -1,404 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Device Memory Access - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
- -
-
Device Memory Access
-
-
- - - - -

-Macros

-#define USE_PEER_NON_UNIFIED   1
 
- - - - - - - - - - - - - - - - - - - -

-Functions

hipError_t hipDeviceCanAccessPeer (int *canAccessPeer, int deviceId, int peerDeviceId)
 Determine if a device can access a peer's memory. More...
 
hipError_t hipDeviceEnablePeerAccess (int peerDeviceId, unsigned int flags)
 Enable direct access from current device's virtual address space to memory allocations physically located on a peer device. More...
 
hipError_t hipDeviceDisablePeerAccess (int peerDeviceId)
 Disable direct access from current device's virtual address space to memory allocations physically located on a peer device. More...
 
hipError_t hipMemGetAddressRange (hipDeviceptr_t *pbase, size_t *psize, hipDeviceptr_t dptr)
 Get information on memory allocations. More...
 
hipError_t hipMemcpyPeer (void *dst, int dstDeviceId, const void *src, int srcDeviceId, size_t sizeBytes)
 Copies memory from one device to memory on another device. More...
 
hipError_t hipMemcpyPeerAsync (void *dst, int dstDevice, const void *src, int srcDevice, size_t sizeBytes, hipStream_t stream)
 Copies memory from one device to memory on another device. More...
 
-

Detailed Description

-

----------------------------------------------------------------------------------------------—

-
Warning
PeerToPeer support is experimental.
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipDeviceCanAccessPeer (int * canAccessPeer,
int deviceId,
int peerDeviceId 
)
-
- -

Determine if a device can access a peer's memory.

-
Parameters
- - - - -
[out]canAccessPeerReturns the peer access capability (0 or 1)
[in]device- device from where memory may be accessed.
[in]peerDevice- device where memory is physically located
-
-
-

Returns "1" in canAccessPeer if the specified device is capable of directly accessing memory physically located on peerDevice , or "0" if not.

-

Returns "0" in canAccessPeer if deviceId == peerDeviceId, and both are valid devices : a device is not a peer of itself.

-
Returns
hipSuccess,
-
-hipErrorInvalidDevice if deviceId or peerDeviceId are not valid devices
-
Warning
PeerToPeer support is experimental.
- -
-
- -
-
- - - - - - - - -
hipError_t hipDeviceDisablePeerAccess (int peerDeviceId)
-
- -

Disable direct access from current device's virtual address space to memory allocations physically located on a peer device.

-

Returns hipErrorPeerAccessNotEnabled if direct access to memory on peerDevice has not yet been enabled from the current device.

-
Parameters
- - -
[in]peerDeviceId
-
-
-
Returns
hipSuccess, hipErrorPeerAccessNotEnabled
-
Warning
PeerToPeer support is experimental.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipDeviceEnablePeerAccess (int peerDeviceId,
unsigned int flags 
)
-
- -

Enable direct access from current device's virtual address space to memory allocations physically located on a peer device.

-

Memory which already allocated on peer device will be mapped into the address space of the current device. In addition, all future memory allocations on peerDeviceId will be mapped into the address space of the current device when the memory is allocated. The peer memory remains accessible from the current device until a call to hipDeviceDisablePeerAccess or hipDeviceReset.

-
Parameters
- - - -
[in]peerDeviceId
[in]flagsReturns hipSuccess, hipErrorInvalidDevice, hipErrorInvalidValue,
-
-
-
Returns
hipErrorPeerAccessAlreadyEnabled if peer access is already enabled for this device.
-
Warning
PeerToPeer support is experimental.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemcpyPeer (void * dst,
int dstDeviceId,
const void * src,
int srcDeviceId,
size_t sizeBytes 
)
-
- -

Copies memory from one device to memory on another device.

-
Parameters
- - - - - - -
[out]dst- Destination device pointer.
[in]dstDeviceId- Destination device
[in]src- Source device pointer
[in]srcDeviceId- Source device
[in]sizeBytes- Size of memory copy in bytes
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, hipErrorInvalidDevice
-
Warning
PeerToPeer support is experimental.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemcpyPeerAsync (void * dst,
int dstDevice,
const void * src,
int srcDevice,
size_t sizeBytes,
hipStream_t stream 
)
-
- -

Copies memory from one device to memory on another device.

-
Parameters
- - - - - - - -
[out]dst- Destination device pointer.
[in]dstDevice- Destination device
[in]src- Source device pointer
[in]srcDevice- Source device
[in]sizeBytes- Size of memory copy in bytes
[in]stream- Stream identifier
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, hipErrorInvalidDevice
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemGetAddressRange (hipDeviceptr_t * pbase,
size_t * psize,
hipDeviceptr_t dptr 
)
-
- -

Get information on memory allocations.

-
Parameters
- - - - -
[out]pbase- BAse pointer address
[out]psize- Size of allocation
[in]dptr-Device Pointer
-
-
-
Returns
hipSuccess, hipErrorInvalidDevicePointer
-
See Also
hipCtxCreate, hipCtxDestroy, hipCtxGetFlags, hipCtxPopCurrent, hipCtxGetCurrent, hipCtxSetCurrent, hipCtxPushCurrent, hipCtxSetCacheConfig, hipCtxSynchronize, hipCtxGetDevice
- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/group__Profiler.html b/docs/RuntimeAPI/html/group__Profiler.html deleted file mode 100644 index ab54cc9f59..0000000000 --- a/docs/RuntimeAPI/html/group__Profiler.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Control - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
- -
-
Control
-
-
- - - - - - - - -

-Functions

hipError_t hipProfilerStart ()
 Start recording of profiling information When using this API, start the profiler with profiling disabled. (–startdisabled) More...
 
hipError_t hipProfilerStop ()
 Stop recording of profiling information. When using this API, start the profiler with profiling disabled. (–startdisabled) More...
 
-

Detailed Description

-

----------------------------------------------------------------------------------------------—

-
Warning
The cudaProfilerInitialize API format for "configFile" is not supported.
-

Function Documentation

- -
-
- - - - - - - -
hipError_t hipProfilerStart ()
-
- -

Start recording of profiling information When using this API, start the profiler with profiling disabled. (–startdisabled)

-
Warning
: hipProfilerStart API is under development.
- -
-
- -
-
- - - - - - - -
hipError_t hipProfilerStop ()
-
- -

Stop recording of profiling information. When using this API, start the profiler with profiling disabled. (–startdisabled)

-
Warning
: hipProfilerStop API is under development.
- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/group__Stream.html b/docs/RuntimeAPI/html/group__Stream.html deleted file mode 100644 index 4230158ab1..0000000000 --- a/docs/RuntimeAPI/html/group__Stream.html +++ /dev/null @@ -1,437 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Stream Management - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
- -
-
Stream Management
-
-
- - - - -

-Typedefs

typedef void(* hipStreamCallback_t )(hipStream_t stream, hipError_t status, void *userData)
 
- - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

hipError_t hipStreamCreate (hipStream_t *stream)
 Create an asynchronous stream. More...
 
hipError_t hipStreamCreateWithFlags (hipStream_t *stream, unsigned int flags)
 Create an asynchronous stream. More...
 
hipError_t hipStreamDestroy (hipStream_t stream)
 Destroys the specified stream. More...
 
hipError_t hipStreamQuery (hipStream_t stream)
 Return hipSuccess if all of the operations in the specified stream have completed, or hipErrorNotReady if not. More...
 
hipError_t hipStreamSynchronize (hipStream_t stream)
 Wait for all commands in stream to complete. More...
 
hipError_t hipStreamWaitEvent (hipStream_t stream, hipEvent_t event, unsigned int flags)
 Make the specified compute stream wait for an event. More...
 
hipError_t hipStreamGetFlags (hipStream_t stream, unsigned int *flags)
 Return flags associated with this stream. More...
 
hipError_t hipStreamAddCallback (hipStream_t stream, hipStreamCallback_t callback, void *userData, unsigned int flags)
 Adds a callback to be called on the host after all currently enqueued items in the stream have completed. For each cudaStreamAddCallback call, a callback will be executed exactly once. The callback will block later work in the stream until it is finished. More...
 
-

Detailed Description

-

----------------------------------------------------------------------------------------------—

-

The following Stream APIs are not (yet) supported in HIP:

-
    -
  • cudaStreamAddCallback
  • -
  • cudaStreamAttachMemAsync
  • -
  • cudaStreamCreateWithPriority
  • -
  • cudaStreamGetPriority
  • -
  • cudaStreamWaitEvent
  • -
-

Typedef Documentation

- -
-
- - - - -
typedef void(* hipStreamCallback_t)(hipStream_t stream, hipError_t status, void *userData)
-
-

Stream CallBack struct

- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipStreamAddCallback (hipStream_t stream,
hipStreamCallback_t callback,
void * userData,
unsigned int flags 
)
-
- -

Adds a callback to be called on the host after all currently enqueued items in the stream have completed. For each cudaStreamAddCallback call, a callback will be executed exactly once. The callback will block later work in the stream until it is finished.

-
Parameters
- - - - - -
[in]stream- Stream to add callback to
[in]callback- The function to call once preceding stream operations are complete
[in]userData- User specified data to be passed to the callback function
[in]flags- Reserved for future use, must be 0
-
-
-
Returns
hipSuccess, hipErrorInvalidResourceHandle, #hipErrorNotSupported
-
See Also
hipStreamCreate, hipStreamCreateWithFlags, hipStreamQuery, hipStreamSynchronize, hipStreamWaitEvent, hipStreamDestroy
- -
-
- -
-
- - - - - - - - -
hipError_t hipStreamCreate (hipStream_tstream)
-
- -

Create an asynchronous stream.

-
Parameters
- - -
[in,out]streamValid pointer to hipStream_t. This function writes the memory with the newly created stream.
-
-
-
Returns
hipSuccess, hipErrorInvalidValue
-

Create a new asynchronous stream. stream returns an opaque handle that can be used to reference the newly created stream in subsequent hipStream* commands. The stream is allocated on the heap and will remain allocated even if the handle goes out-of-scope. To release the memory used by the stream, applicaiton must call hipStreamDestroy.

-
Returns
hipSuccess, hipErrorInvalidValue
-
See Also
hipStreamCreateWithFlags, hipStreamSynchronize, hipStreamWaitEvent, hipStreamDestroy
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipStreamCreateWithFlags (hipStream_tstream,
unsigned int flags 
)
-
- -

Create an asynchronous stream.

-
Parameters
- - - -
[in,out]streamPointer to new stream
[in]flagsto control stream creation.
-
-
-
Returns
hipSuccess, hipErrorInvalidValue
-

Create a new asynchronous stream. stream returns an opaque handle that can be used to reference the newly created stream in subsequent hipStream* commands. The stream is allocated on the heap and will remain allocated even if the handle goes out-of-scope. To release the memory used by the stream, applicaiton must call hipStreamDestroy. Flags controls behavior of the stream. See hipStreamDefault, hipStreamNonBlocking.

-
See Also
hipStreamCreate, hipStreamSynchronize, hipStreamWaitEvent, hipStreamDestroy
- -
-
- -
-
- - - - - - - - -
hipError_t hipStreamDestroy (hipStream_t stream)
-
- -

Destroys the specified stream.

-
Parameters
- - -
[in,out]streamValid pointer to hipStream_t. This function writes the memory with the newly created stream.
-
-
-
Returns
hipSuccess hipErrorInvalidResourceHandle
-

Destroys the specified stream.

-

If commands are still executing on the specified stream, some may complete execution before the queue is deleted.

-

The queue may be destroyed while some commands are still inflight, or may wait for all commands queued to the stream before destroying it.

-
See Also
hipStreamCreate, hipStreamCreateWithFlags, hipStreamQuery, hipStreamWaitEvent, hipStreamSynchronize
-
Returns
hipSuccess, hipErrorInvalidResourceHandle
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
hipError_t hipStreamGetFlags (hipStream_t stream,
unsigned int * flags 
)
-
- -

Return flags associated with this stream.

-
Parameters
- - - -
[in]streamstream to be queried
[in,out]flagsPointer to an unsigned integer in which the stream's flags are returned
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, hipErrorInvalidResourceHandle
-
-hipSuccess hipErrorInvalidValue hipErrorInvalidResourceHandle
-

Return flags associated with this stream in *flags.

-
See Also
hipStreamCreateWithFlags
- -
-
- -
-
- - - - - - - - -
hipError_t hipStreamQuery (hipStream_t stream)
-
- -

Return hipSuccess if all of the operations in the specified stream have completed, or hipErrorNotReady if not.

-
Parameters
- - -
[in]streamstream to query
-
-
-
Returns
hipSuccess, hipErrorNotReady, hipErrorInvalidResourceHandle
-

This is thread-safe and returns a snapshot of the current state of the queue. However, if other host threads are sending work to the stream, the status may change immediately after the function is called. It is typically used for debug.

-
See Also
hipStreamCreate, hipStreamCreateWithFlags, hipStreamWaitEvent, hipStreamSynchronize, hipStreamDestroy
- -
-
- -
-
- - - - - - - - -
hipError_t hipStreamSynchronize (hipStream_t stream)
-
- -

Wait for all commands in stream to complete.

-
Parameters
- - -
[in]streamstream identifier.
-
-
-
Returns
hipSuccess, hipErrorInvalidResourceHandle
-

If the null stream is specified, this command blocks until all This command honors the hipDeviceLaunchBlocking flag, which controls whether the wait is active or blocking. This command is host-synchronous : the host will block until the stream is empty.

-
See Also
hipStreamCreate, hipStreamCreateWithFlags, hipStreamWaitEvent, hipStreamDestroy
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipStreamWaitEvent (hipStream_t stream,
hipEvent_t event,
unsigned int flags 
)
-
- -

Make the specified compute stream wait for an event.

-
Parameters
- - - - -
[in]streamstream to make wait.
[in]eventevent to wait on
[in]flagscontrol operation [must be 0]
-
-
-
Returns
hipSuccess, hipErrorInvalidResourceHandle
-

This function inserts a wait operation into the specified stream. All future work submitted to stream will wait until event reports completion before beginning execution. This function is host-asynchronous and the function may return before the wait has completed.

-
See Also
hipStreamCreate, hipStreamCreateWithFlags, hipStreamSynchronize, hipStreamDestroy
- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/group__Texture.html b/docs/RuntimeAPI/html/group__Texture.html deleted file mode 100644 index 21560396c7..0000000000 --- a/docs/RuntimeAPI/html/group__Texture.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Texture Reference Management - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
- -
-
Texture Reference Management
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

hipChannelFormatDesc hipCreateChannelDesc (int x, int y, int z, int w, hipChannelFormatKind f)
 Returns a channel descriptor using the specified format. More...
 
-template<typename T >
hipChannelFormatDesc hipCreateChannelDesc ()
 
-template<>
hipChannelFormatDesc hipCreateChannelDesc< int > ()
 
-template<>
hipChannelFormatDesc hipCreateChannelDesc< unsigned int > ()
 
-template<>
hipChannelFormatDesc hipCreateChannelDesc< long > ()
 
-template<>
hipChannelFormatDesc hipCreateChannelDesc< unsigned long > ()
 
-template<>
hipChannelFormatDesc hipCreateChannelDesc< float > ()
 
-template<class T , int dim, enum hipTextureReadMode readMode>
hipError_t hipBindTexture (size_t *offset, struct texture< T, dim, readMode > &tex, const void *devPtr, const struct hipChannelFormatDesc *desc, size_t size=UINT_MAX)
 
-template<class T , int dim, enum hipTextureReadMode readMode>
hipError_t hipBindTexture (size_t *offset, struct texture< T, dim, readMode > &tex, const void *devPtr, size_t size=UINT_MAX)
 
-template<class T , int dim, enum hipTextureReadMode readMode>
hipError_t hipBindTextureToArray (struct texture< T, dim, readMode > &tex, hipArray *array)
 
-template<class T , int dim, enum hipTextureReadMode readMode>
hipError_t hipUnbindTexture (struct texture< T, dim, readMode > &tex)
 
-

Detailed Description

-

----------------------------------------------------------------------------------------------—

-
Warning
The HIP texture API implements a small subset of full texture API. Known limitations include:
    -
  • Only point sampling is supported.
  • -
  • Only C++ APIs are provided.
  • -
  • Many APIs and modes are not implemented.
  • -
-
-

The HIP texture support is intended to allow use of texture cache on hardware where this is beneficial.

-

The following CUDA APIs are not currently supported:

-
    -
  • cudaBindTexture2D
  • -
  • cudaBindTextureToArray
  • -
  • cudaBindTextureToMipmappedArray
  • -
  • cudaGetChannelDesc
  • -
  • cudaGetTextureReference
  • -
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipChannelFormatDesc hipCreateChannelDesc (int x,
int y,
int z,
int w,
hipChannelFormatKind f 
)
-
- -

Returns a channel descriptor using the specified format.

-
Parameters
- - - - - - -
[in]xX component
[in]yY component
[in]zZ component
[in]wW component
[in]fChannel format
-
-
-
Returns
Channel descriptor with format f
- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/hcc_8h_source.html b/docs/RuntimeAPI/html/hcc_8h_source.html deleted file mode 100644 index 720e8ffa6e..0000000000 --- a/docs/RuntimeAPI/html/hcc_8h_source.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hcc.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 #ifndef HIP_HCC_H
-
24 #define HIP_HCC_H
-
25 
-
26 #if defined(__HIP_PLATFORM_HCC__) && !defined (__HIP_PLATFORM_NVCC__)
-
27 #include "hip/hcc_detail/hcc_acc.h"
-
28 #endif
-
29 
-
30 #endif
-
- - - - diff --git a/docs/RuntimeAPI/html/hcc__acc_8h_source.html b/docs/RuntimeAPI/html/hcc__acc_8h_source.html deleted file mode 100644 index 06918d855c..0000000000 --- a/docs/RuntimeAPI/html/hcc__acc_8h_source.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc_detail/hcc_acc.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hcc_acc.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 #ifndef HCC_ACC_H
-
24 #define HCC_ACC_H
-
25 #include "hip/hip_runtime_api.h"
-
26 
-
27 #if __cplusplus
-
28 #ifdef __HCC__
-
29 #include <hc.hpp>
-
34 hipError_t hipHccGetAccelerator(int deviceId, hc::accelerator *acc);
-
35 
-
42 hipError_t hipHccGetAcceleratorView(hipStream_t stream, hc::accelerator_view **av);
-
43 #endif
-
44 #endif
-
45 
-
46 #endif
-
hipError_t
Definition: hip_runtime_api.h:152
-
Definition: hip_hcc.h:463
-
- - - - diff --git a/docs/RuntimeAPI/html/hcc__detail_2hip__complex_8h_source.html b/docs/RuntimeAPI/html/hcc__detail_2hip__complex_8h_source.html deleted file mode 100644 index ba44cc5c16..0000000000 --- a/docs/RuntimeAPI/html/hcc__detail_2hip__complex_8h_source.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc_detail/hip_complex.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_complex.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 #ifndef HIPCOMPLEX_H
-
24 #define HIPCOMPLEX_H
-
25 
-
26 typedef struct{
-
27  float x;
-
28  float y;
- -
30 
-
31 __device__ static inline float hipCrealf(hipFloatComplex z){
-
32  return z.x;
-
33 }
-
34 
-
35 __device__ static inline float hipCimagf(hipFloatComplex z){
-
36  return z.y;
-
37 }
-
38 
-
39 __device__ static inline hipFloatComplex make_hipFloatComplex(float a, float b){
- -
41  z.x = a;
-
42  z.y = b;
-
43  return z;
-
44 }
-
45 
-
46 __device__ static inline hipFloatComplex hipConjf(hipFloatComplex z){
-
47  hipFloatComplex ret;
-
48  ret.x = z.x;
-
49  ret.y = -z.y;
-
50  return ret;
-
51 }
-
52 
-
53 __device__ static inline float hipCsqabsf(hipFloatComplex z){
-
54  return z.x * z.x + z.y * z.y;
-
55 }
-
56 
-
57 __device__ static inline hipFloatComplex hipCaddf(hipFloatComplex p, hipFloatComplex q){
-
58  return make_hipFloatComplex(p.x + q.x, p.y + q.y);
-
59 }
-
60 
-
61 __device__ static inline hipFloatComplex hipCsubf(hipFloatComplex p, hipFloatComplex q){
-
62  return make_hipFloatComplex(p.x - q.x, p.y - q.y);
-
63 }
-
64 
-
65 __device__ static inline hipFloatComplex hipCmulf(hipFloatComplex p, hipFloatComplex q){
-
66  return make_hipFloatComplex(p.x * q.x - p.y * q.y, p.y * q.x + p.x * q.y);
-
67 }
-
68 
-
69 __device__ static inline hipFloatComplex hipCdivf(hipFloatComplex p, hipFloatComplex q){
-
70  float sqabs = hipCsqabsf(q);
-
71  hipFloatComplex ret;
-
72  ret.x = (p.x * q.x + p.y * q.y)/sqabs;
-
73  ret.y = (p.y * q.x - p.x * q.y)/sqabs;
-
74  return ret;
-
75 }
-
76 
-
77 __device__ static inline float hipCabsf(hipFloatComplex z){
-
78  return sqrtf(hipCsqabsf(z));
-
79 }
-
80 
-
81 
-
82 typedef struct{
-
83  double x;
-
84  double y;
- -
86 
-
87 __device__ static inline double hipCreal(hipDoubleComplex z){
-
88  return z.x;
-
89 }
-
90 
-
91 __device__ static inline double hipCimag(hipDoubleComplex z){
-
92  return z.y;
-
93 }
-
94 
-
95 __device__ static inline hipDoubleComplex make_hipDoubleComplex(double a, double b){
- -
97  z.x = a;
-
98  z.y = b;
-
99  return z;
-
100 }
-
101 
-
102 __device__ static inline hipDoubleComplex hipConj(hipDoubleComplex z){
-
103  hipDoubleComplex ret;
-
104  ret.x = z.x;
-
105  ret.y = z.y;
-
106  return ret;
-
107 }
-
108 
-
109 __device__ static inline double hipCsqabs(hipDoubleComplex z){
-
110  return z.x * z.x + z.y * z.y;
-
111 }
-
112 
-
113 __device__ static inline hipDoubleComplex hipCadd(hipDoubleComplex p, hipDoubleComplex q){
-
114  return make_hipDoubleComplex(p.x + q.x, p.y + q.y);
-
115 }
-
116 
-
117 __device__ static inline hipDoubleComplex hipCsub(hipDoubleComplex p, hipDoubleComplex q){
-
118  return make_hipDoubleComplex(p.x - q.x, p.y - q.y);
-
119 }
-
120 
-
121 __device__ static inline hipDoubleComplex hipCmul(hipDoubleComplex p, hipDoubleComplex q){
-
122  return make_hipDoubleComplex(p.x * q.x - p.y * q.y, p.y * q.x + p.x * q.y);
-
123 }
-
124 
-
125 __device__ static inline hipDoubleComplex hipCdiv(hipDoubleComplex p, hipDoubleComplex q){
-
126  double sqabs = hipCsqabs(q);
-
127  hipDoubleComplex ret;
-
128  ret.x = (p.x * q.x + p.y * q.y)/sqabs;
-
129  ret.y = (p.y * q.x - p.x * q.y)/sqabs;
-
130  return ret;
-
131 }
-
132 
-
133 __device__ static inline double hipCabs(hipDoubleComplex z){
-
134  return sqrtf(hipCsqabs(z));
-
135 }
-
136 
- -
138 
-
139 __device__ static inline hipComplex make_hipComplex(float x,
-
140  float y){
-
141  return make_hipFloatComplex(x, y);
-
142 }
-
143 
-
144 __device__ static inline hipFloatComplex hipComplexDoubleToFloat
-
145 (hipDoubleComplex z){
-
146  return make_hipFloatComplex((float)z.x, (float)z.y);
-
147 }
-
148 
-
149 __device__ static inline hipDoubleComplex hipComplexFloatToDouble
-
150 (hipFloatComplex z){
-
151  return make_hipDoubleComplex((double)z.x, (double)z.y);
-
152 }
-
153 
-
154 __device__ static inline hipComplex hipCfmaf(hipComplex p, hipComplex q, hipComplex r){
-
155  float real = (p.x * q.x) + r.x;
-
156  float imag = (q.x * p.y) + r.y;
-
157 
-
158  real = -(p.y * q.y) + real;
-
159  imag = (p.x * q.y) + imag;
-
160 
-
161  return make_hipComplex(real, imag);
-
162 }
-
163 
-
164 __device__ static inline hipDoubleComplex hipCfma(hipDoubleComplex p, hipDoubleComplex q, hipDoubleComplex r){
-
165  float real = (p.x * q.x) + r.x;
-
166  float imag = (q.x * p.y) + r.y;
-
167 
-
168  real = -(p.y * q.y) + real;
-
169  imag = (p.x * q.y) + imag;
-
170 
-
171  return make_hipDoubleComplex(real, imag);
-
172 }
-
173 
-
174 #endif
-
Definition: hip_complex.h:26
-
Definition: hip_complex.h:82
-
- - - - diff --git a/docs/RuntimeAPI/html/hcc__detail_2hip__fp16_8h_source.html b/docs/RuntimeAPI/html/hcc__detail_2hip__fp16_8h_source.html deleted file mode 100644 index 27e7ea4ddb..0000000000 --- a/docs/RuntimeAPI/html/hcc__detail_2hip__fp16_8h_source.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc_detail/hip_fp16.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_fp16.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 #ifndef HIP_FP16_H
-
24 #define HIP_FP16_H
-
25 
-
26 #include "hip/hip_runtime.h"
-
27 
-
28 typedef struct{
-
29  unsigned x: 16;
-
30 } __half;
-
31 
-
32 
-
33 typedef struct __attribute__((aligned(4))){
-
34  __half p,q;
-
35 } __half2;
-
36 
-
37 typedef __half half;
-
38 typedef __half2 half2;
-
39 
-
40 /*
-
41 Arithmetic functions
-
42 */
-
43 
-
44 __device__ __half __hadd(const __half a, const __half b);
-
45 
-
46 __device__ __half __hadd_sat(const __half a, const __half b);
-
47 
-
48 __device__ __half __hfma(const __half a, const __half b, const __half c);
-
49 
-
50 __device__ __half __hfma_sat(const __half a, const __half b, const __half c);
-
51 
-
52 __device__ __half __hmul(const __half a, const __half b);
-
53 
-
54 __device__ __half __hmul_sat(const __half a, const __half b);
-
55 
-
56 __device__ __half __hneq(const __half a);
-
57 
-
58 __device__ __half __hsub(const __half a, const __half b);
-
59 
-
60 __device__ __half __hsub_sat(const __half a, const __half b);
-
61 
-
62 
-
63 
-
64 /*
-
65 Half2 Arithmetic Instructions
-
66 */
-
67 
-
68 __device__ __half2 __hadd2(const __half2 a, const __half2 b);
-
69 
-
70 __device__ __half2 __hadd2_sat(const __half2 a, const __half2 b);
-
71 
-
72 __device__ __half2 __hfma2(const __half2 a, const __half2 b, const __half2 c);
-
73 
-
74 __device__ __half2 __hfma2_sat(const __half2 a, const __half2 b, const __half2 c);
-
75 
-
76 __device__ __half2 __hmul2(const __half2 a, const __half2 b);
-
77 
-
78 __device__ __half2 __hmul2_sat(const __half2 a, const __half2 b);
-
79 
-
80 __device__ __half2 __hneq2(const __half2 a);
-
81 
-
82 __device__ __half2 __hsub2(const __half2 a, const __half2 b);
-
83 
-
84 __device__ __half2 __hsub2_sat(const __half2 a, const __half2 b);
-
85 
-
86 /*
-
87 Half Cmps
-
88 */
-
89 
-
90 __device__ bool __heq(const __half a, const __half b);
-
91 
-
92 __device__ bool __hge(const __half a, const __half b);
-
93 
-
94 __device__ bool __hgt(const __half a, const __half b);
-
95 
-
96 __device__ bool __hisinf(const __half a);
-
97 
-
98 __device__ bool __hisnan(const __half a);
-
99 
-
100 __device__ bool __hle(const __half a, const __half b);
-
101 
-
102 __device__ bool __hlt(const __half a, const __half b);
-
103 
-
104 __device__ bool __hne(const __half a, const __half b);
-
105 
-
106 /*
-
107 Half2 Cmps
-
108 */
-
109 
-
110 __device__ bool __hbeq2(const __half2 a, const __half2 b);
-
111 
-
112 __device__ bool __hbge2(const __half2 a, const __half2 b);
-
113 
-
114 __device__ bool __hbgt2(const __half2 a, const __half2 b);
-
115 
-
116 __device__ bool __hble2(const __half2 a, const __half2 b);
-
117 
-
118 __device__ bool __hblt2(const __half2 a, const __half2 b);
-
119 
-
120 __device__ bool __hbne2(const __half2 a, const __half2 b);
-
121 
-
122 __device__ __half2 __heq2(const __half2 a, const __half2 b);
-
123 
-
124 __device__ __half2 __hge2(const __half2 a, const __half2 b);
-
125 
-
126 __device__ __half2 __hgt2(const __half2 a, const __half2 b);
-
127 
-
128 __device__ __half2 __hisnan2(const __half2 a);
-
129 
-
130 __device__ __half2 __hle2(const __half2 a, const __half2 b);
-
131 
-
132 __device__ __half2 __hlt2(const __half2 a, const __half2 b);
-
133 
-
134 __device__ __half2 __hne2(const __half2 a, const __half2 b);
-
135 
-
136 
-
137 /*
-
138 Half Cnvs and Data Mvmnt
-
139 */
-
140 
-
141 __device__ __half2 __float22half2_rn(const float2 a);
-
142 
-
143 __device__ __half __float2half(const float a);
-
144 
-
145 __device__ __half2 __float2half2_rn(const float a);
-
146 
-
147 __device__ __half2 __floats2half2_rn(const float a, const float b);
-
148 
-
149 __device__ float2 __half22float2(const __half2 a);
-
150 
-
151 __device__ float __half2float(const __half a);
-
152 
-
153 __device__ __half2 __half2half2(const __half a);
-
154 
-
155 __device__ __half2 __halves2half2(const __half a, const __half b);
-
156 
-
157 __device__ float __high2float(const __half2 a);
-
158 
-
159 __device__ __half __high2half(const __half2 a);
-
160 
-
161 __device__ __half2 __high2half2(const __half2 a);
-
162 
-
163 __device__ __half2 __highs2half2(const __half2 a, const __half2 b);
-
164 
-
165 __device__ float __low2float(const __half2 a);
-
166 
-
167 __device__ __half __low2half(const __half2 a);
-
168 
-
169 __device__ __half2 __low2half2(const __half2 a);
-
170 
-
171 __device__ __half2 __lows2half2(const __half2 a, const __half2 b);
-
172 
-
173 __device__ __half2 __lowhigh2highlow(const __half2 a);
-
174 
-
175 __device__ __half2 __low2half2(const __half2 a, const __half2 b);
-
176 
-
177 #endif
-
Definition: hip_fp16.h:28
-
- - - - diff --git a/docs/RuntimeAPI/html/hcc__detail_2hip__runtime_8h.html b/docs/RuntimeAPI/html/hcc__detail_2hip__runtime_8h.html deleted file mode 100644 index 9b7b4d8f90..0000000000 --- a/docs/RuntimeAPI/html/hcc__detail_2hip__runtime_8h.html +++ /dev/null @@ -1,1191 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc_detail/hip_runtime.h File Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
- -
-
hip_runtime.h File Reference
-
-
- -

Contains definitions of APIs for HIP runtime. -More...

-
#include <math.h>
-#include <string.h>
-#include <stddef.h>
-#include <hip/hip_runtime_api.h>
-#include <grid_launch.h>
-#include <hip/hcc_detail/host_defines.h>
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Macros

-#define NVCC_COMPAT
 
-#define CUDA_SUCCESS   hipSuccess
 
-#define hipLaunchParm   grid_launch_parm
 
-#define __launch_bounds__(requiredMaxThreadsPerBlock, minBlocksPerMultiprocessor)
 
-#define clock_t   long long int
 
-#define hipThreadIdx_x   (hc_get_workitem_id(0))
 
-#define hipThreadIdx_y   (hc_get_workitem_id(1))
 
-#define hipThreadIdx_z   (hc_get_workitem_id(2))
 
-#define hipBlockIdx_x   (hc_get_group_id(0))
 
-#define hipBlockIdx_y   (hc_get_group_id(1))
 
-#define hipBlockIdx_z   (hc_get_group_id(2))
 
-#define hipBlockDim_x   (hc_get_group_size(0))
 
-#define hipBlockDim_y   (hc_get_group_size(1))
 
-#define hipBlockDim_z   (hc_get_group_size(2))
 
-#define hipGridDim_x   (hc_get_num_groups(0))
 
-#define hipGridDim_y   (hc_get_num_groups(1))
 
-#define hipGridDim_z   (hc_get_num_groups(2))
 
-#define __syncthreads()   hc_barrier(CLK_LOCAL_MEM_FENCE)
 
-#define HIP_KERNEL_NAME(...)   __VA_ARGS__
 
-#define HIP_SYMBOL(X)   #X
 
#define HIP_DYNAMIC_SHARED(type, var)
 
-#define HIP_DYNAMIC_SHARED_ATTRIBUTE   __attribute__((address_space(3)))
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

-__device__ float acosf (float x)
 
-__device__ float acoshf (float x)
 
-__device__ float asinf (float x)
 
-__device__ float asinhf (float x)
 
-__device__ float atan2f (float y, float x)
 
-__device__ float atanf (float x)
 
-__device__ float atanhf (float x)
 
-__device__ float cbrtf (float x)
 
-__device__ float ceilf (float x)
 
-__device__ float copysignf (float x, float y)
 
-__device__ float coshf (float x)
 
-__device__ float cyl_bessel_i0f (float x)
 
-__device__ float cyl_bessel_i1f (float x)
 
-__device__ float erfcf (float x)
 
-__device__ float erfcinvf (float y)
 
-__device__ float erfcxf (float x)
 
-__device__ float erff (float x)
 
-__device__ float erfinvf (float y)
 
-__device__ float exp2f (float x)
 
-__device__ float expm1f (float x)
 
-__device__ float fabsf (float x)
 
-__device__ float fdimf (float x, float y)
 
-__device__ __host__ float fdividef (float x, float y)
 
-__device__ float floorf (float x)
 
-__device__ float fmaf (float x, float y, float z)
 
-__device__ float fmaxf (float x, float y)
 
-__device__ float fminf (float x, float y)
 
-__device__ float fmodf (float x, float y)
 
-__device__ float frexpf (float x, float y)
 
-__device__ float hypotf (float x, float y)
 
-__device__ float ilogbf (float x)
 
-__host__ __device__ unsigned isfinite (float a)
 
-__device__ unsigned isinf (float a)
 
-__device__ unsigned isnan (float a)
 
-__device__ float j0f (float x)
 
-__device__ float j1f (float x)
 
-__device__ float jnf (int n, float x)
 
-__device__ float ldexpf (float x, int exp)
 
-__device__ float lgammaf (float x)
 
-__device__ long long int llrintf (float x)
 
-__device__ long long int llroundf (float x)
 
-__device__ float log1pf (float x)
 
-__device__ float logbf (float x)
 
-__device__ long int lrintf (float x)
 
-__device__ long int lroundf (float x)
 
-__device__ float modff (float x, float *iptr)
 
-__device__ float nanf (const char *tagp)
 
-__device__ float nearbyintf (float x)
 
-__device__ float nextafterf (float x, float y)
 
-__device__ float norm3df (float a, float b, float c)
 
-__device__ float norm4df (float a, float b, float c, float d)
 
-__device__ float normcdff (float y)
 
-__device__ float normcdfinvf (float y)
 
-__device__ float normf (int dim, const float *a)
 
-__device__ float rcbrtf (float x)
 
-__device__ float remainderf (float x, float y)
 
-__device__ float remquof (float x, float y, int *quo)
 
-__device__ float rhypotf (float x, float y)
 
-__device__ float rintf (float x)
 
-__device__ float rnorm3df (float a, float b, float c)
 
-__device__ float rnorm4df (float a, float b, float c, float d)
 
-__device__ float rnormf (int dim, const float *a)
 
-__device__ float roundf (float x)
 
-__device__ float rsqrtf (float x)
 
-__device__ float scalblnf (float x, long int n)
 
-__device__ float scalbnf (float x, int n)
 
-__host__ __device__ unsigned signbit (float a)
 
-__device__ void sincospif (float x, float *sptr, float *cptr)
 
-__device__ float sinhf (float x)
 
-__device__ float sinpif (float x)
 
-__device__ float sqrtf (float x)
 
-__device__ float tanhf (float x)
 
-__device__ float tgammaf (float x)
 
-__device__ float truncf (float x)
 
-__device__ float y0f (float x)
 
-__device__ float y1f (float x)
 
-__device__ float ynf (int n, float x)
 
-__host__ __device__ float cospif (float x)
 
-__device__ double acos (double x)
 
-__device__ double acosh (double x)
 
-__device__ double asin (double x)
 
-__device__ double asinh (double x)
 
-__device__ double atan (double x)
 
-__device__ double atan2 (double y, double x)
 
-__device__ double atanh (double x)
 
-__device__ double cbrt (double x)
 
-__device__ double ceil (double x)
 
-__device__ double copysign (double x, double y)
 
-__device__ double cos (double x)
 
-__device__ double cosh (double x)
 
-__host__ __device__ double cospi (double x)
 
-__device__ double cyl_bessel_i0 (double x)
 
-__device__ double cyl_bessel_i1 (double x)
 
-__device__ double erf (double x)
 
-__device__ double erfc (double x)
 
-__device__ double erfcinv (double y)
 
-__device__ double erfcx (double x)
 
-__device__ double erfinv (double x)
 
-__device__ double exp (double x)
 
-__device__ double exp10 (double x)
 
-__device__ double exp2 (double x)
 
-__device__ double expm1 (double x)
 
-__device__ double fabs (double x)
 
-__device__ double fdim (double x, double y)
 
-__device__ double fdivide (double x, double y)
 
-__device__ double floor (double x)
 
-__device__ double fma (double x, double y, double z)
 
-__device__ double fmax (double x, double y)
 
-__device__ double fmin (double x, double y)
 
-__device__ double fmod (double x, double y)
 
-__device__ double frexp (double x, int *nptr)
 
-__device__ double hypot (double x, double y)
 
-__device__ double ilogb (double x)
 
-__host__ __device__ unsigned isfinite (double x)
 
-__device__ unsigned isinf (double x)
 
-__device__ unsigned isnan (double x)
 
-__device__ double j0 (double x)
 
-__device__ double j1 (double x)
 
-__device__ double jn (int n, double x)
 
-__device__ double ldexp (double x, int exp)
 
-__device__ double lgamma (double x)
 
-__device__ long long llrint (double x)
 
-__device__ long long llround (double x)
 
-__device__ double log (double x)
 
-__device__ double log10 (double x)
 
-__device__ double log1p (double x)
 
-__device__ double log2 (double x)
 
-__device__ double logb (double x)
 
-__device__ long int lrint (double x)
 
-__device__ long int lround (double x)
 
-__device__ double modf (double x, double *iptr)
 
-__device__ double nan (const char *tagp)
 
-__device__ double nearbyint (double x)
 
-__device__ double nextafter (double x, double y)
 
-__device__ double norm (int dim, const double *t)
 
-__device__ double norm3d (double a, double b, double c)
 
-__device__ double norm4d (double a, double b, double c, double d)
 
-__device__ double normcdf (double y)
 
-__device__ double normcdfinv (double y)
 
-__device__ double pow (double x, double y)
 
-__device__ double rcbrt (double x)
 
-__device__ double remainder (double x, double y)
 
-__device__ double remquo (double x, double y, int *quo)
 
-__device__ double rhypot (double x, double y)
 
-__device__ double rint (double x)
 
-__device__ double rnorm (int dim, const double *t)
 
-__device__ double rnorm3d (double a, double b, double c)
 
-__device__ double rnorm4d (double a, double b, double c, double d)
 
-__device__ double round (double x)
 
-__host__ __device__ double rsqrt (double x)
 
-__device__ double scalbln (double x, long int n)
 
-__device__ double scalbn (double x, int n)
 
-__host__ __device__ unsigned signbit (double a)
 
-__device__ double sin (double a)
 
-__device__ void sincos (double x, double *sptr, double *cptr)
 
-__device__ void sincospi (double x, double *sptr, double *cptr)
 
-__device__ double sinh (double x)
 
-__host__ __device__ double sinpi (double x)
 
-__device__ double sqrt (double x)
 
-__device__ double tan (double x)
 
-__device__ double tanh (double x)
 
-__device__ double tgamma (double x)
 
-__device__ double trunc (double x)
 
-__device__ double y0 (double x)
 
-__device__ double y1 (double y)
 
-__device__ double yn (int n, double x)
 
-__device__ long long int clock64 ()
 
-__device__ clock_t clock ()
 
-__device__ int atomicAdd (int *address, int val)
 
-__device__ unsigned int atomicAdd (unsigned int *address, unsigned int val)
 
-__device__ unsigned long long int atomicAdd (unsigned long long int *address, unsigned long long int val)
 
-__device__ float atomicAdd (float *address, float val)
 
-__device__ int atomicSub (int *address, int val)
 
-__device__ unsigned int atomicSub (unsigned int *address, unsigned int val)
 
-__device__ int atomicExch (int *address, int val)
 
-__device__ unsigned int atomicExch (unsigned int *address, unsigned int val)
 
-__device__ unsigned long long int atomicExch (unsigned long long int *address, unsigned long long int val)
 
-__device__ float atomicExch (float *address, float val)
 
-__device__ int atomicMin (int *address, int val)
 
-__device__ unsigned int atomicMin (unsigned int *address, unsigned int val)
 
-__device__ unsigned long long int atomicMin (unsigned long long int *address, unsigned long long int val)
 
-__device__ int atomicMax (int *address, int val)
 
-__device__ unsigned int atomicMax (unsigned int *address, unsigned int val)
 
-__device__ unsigned long long int atomicMax (unsigned long long int *address, unsigned long long int val)
 
-__device__ int atomicCAS (int *address, int compare, int val)
 
-__device__ unsigned int atomicCAS (unsigned int *address, unsigned int compare, unsigned int val)
 
-__device__ unsigned long long int atomicCAS (unsigned long long int *address, unsigned long long int compare, unsigned long long int val)
 
-__device__ int atomicAnd (int *address, int val)
 
-__device__ unsigned int atomicAnd (unsigned int *address, unsigned int val)
 
-__device__ unsigned long long int atomicAnd (unsigned long long int *address, unsigned long long int val)
 
-__device__ int atomicOr (int *address, int val)
 
-__device__ unsigned int atomicOr (unsigned int *address, unsigned int val)
 
-__device__ unsigned long long int atomicOr (unsigned long long int *address, unsigned long long int val)
 
-__device__ int atomicXor (int *address, int val)
 
-__device__ unsigned int atomicXor (unsigned int *address, unsigned int val)
 
-__device__ unsigned long long int atomicXor (unsigned long long int *address, unsigned long long int val)
 
-__device__ unsigned int atomicInc (unsigned int *address, unsigned int val)
 
-__device__ unsigned int atomicDec (unsigned int *address, unsigned int val)
 
-__device__ int __mul24 (int arg1, int arg2)
 
-__device__ unsigned int __umul24 (unsigned int arg1, unsigned int arg2)
 
-__device__ unsigned int __popc (unsigned int input)
 
-__device__ unsigned int __popcll (unsigned long long int input)
 
-__device__ unsigned int __clz (unsigned int input)
 
-__device__ unsigned int __clzll (unsigned long long int input)
 
-__device__ unsigned int __clz (int input)
 
-__device__ unsigned int __clzll (long long int input)
 
-__device__ unsigned int __ffs (unsigned int input)
 
-__device__ unsigned int __ffsll (unsigned long long int input)
 
-__device__ unsigned int __ffs (int input)
 
-__device__ unsigned int __ffsll (long long int input)
 
-__device__ unsigned int __brev (unsigned int input)
 
-__device__ unsigned long long int __brevll (unsigned long long int input)
 
-__device__ int __all (int input)
 
-__device__ int __any (int input)
 
-__device__ unsigned long long int __ballot (int input)
 
-__device__ int __shfl (int input, int lane, int width)
 
-__device__ int __shfl_up (int input, unsigned int lane_delta, int width)
 
-__device__ int __shfl_down (int input, unsigned int lane_delta, int width)
 
-__device__ int __shfl_xor (int input, int lane_mask, int width)
 
-__device__ float __shfl (float input, int lane, int width)
 
-__device__ float __shfl_up (float input, unsigned int lane_delta, int width)
 
-__device__ float __shfl_down (float input, unsigned int lane_delta, int width)
 
-__device__ float __shfl_xor (float input, int lane_mask, int width)
 
-__host__ __device__ int min (int arg1, int arg2)
 
-__host__ __device__ int max (int arg1, int arg2)
 
-__device__ __attribute__ ((address_space(3))) void *__get_dynamicgroupbaseptr()
 
-__device__ float __hip_precise_cosf (float)
 
-__device__ float __hip_precise_exp10f (float)
 
-__device__ float __hip_precise_expf (float)
 
-__device__ float __hip_precise_frsqrt_rn (float)
 
-__device__ float __hip_precise_fsqrt_rd (float)
 
-__device__ float __hip_precise_fsqrt_rn (float)
 
-__device__ float __hip_precise_fsqrt_ru (float)
 
-__device__ float __hip_precise_fsqrt_rz (float)
 
-__device__ float __hip_precise_log10f (float)
 
-__device__ float __hip_precise_log2f (float)
 
-__device__ float __hip_precise_logf (float)
 
-__device__ float __hip_precise_powf (float, float)
 
-__device__ void __hip_precise_sincosf (float, float *, float *)
 
-__device__ float __hip_precise_sinf (float)
 
-__device__ float __hip_precise_tanf (float)
 
-__device__ double __hip_precise_dsqrt_rd (double)
 
-__device__ double __hip_precise_dsqrt_rn (double)
 
-__device__ double __hip_precise_dsqrt_ru (double)
 
-__device__ double __hip_precise_dsqrt_rz (double)
 
__attribute__ ((const)) float __hip_fast_cosf(float) __asm("llvm.cos.f32")
 
-__device__ float __hip_fast_exp10f (float)
 
-__device__ float __hip_fast_expf (float)
 
-__device__ float __hip_fast_frsqrt_rn (float)
 
-__device__ float __hip_fast_fsqrt_rn (float)
 
-__device__ float __hip_fast_fsqrt_ru (float)
 
-__device__ float __hip_fast_fsqrt_rz (float)
 
-__device__ float __hip_fast_log10f (float)
 
-__device__ float __hip_fast_logf (float)
 
-__device__ float __hip_fast_powf (float, float)
 
-__device__ void __hip_fast_sincosf (float, float *, float *)
 
-__device__ float __hip_fast_tanf (float)
 
-float __asm ("llvm.fma.f32")
 
-double __asm ("llvm.fma.f64")
 
-__device__ float sinf (float)
 
-__device__ float cosf (float)
 
-__device__ float tanf (float)
 
-__device__ void sincosf (float, float *, float *)
 
-__device__ float logf (float)
 
-__device__ float log2f (float)
 
-__device__ float log10f (float)
 
-__device__ float expf (float)
 
-__device__ float exp10f (float)
 
-__device__ float powf (float, float)
 
-__device__ float __cosf (float x)
 
-__device__ float __exp10f (float x)
 
-__device__ float __expf (float x)
 
-__device__ float __frsqrt_rn (float x)
 
-__device__ float __fsqrt_rd (float x)
 
-__device__ float __fsqrt_rn (float x)
 
-__device__ float __fsqrt_ru (float x)
 
-__device__ float __fsqrt_rz (float x)
 
-__device__ float __log10f (float x)
 
-__device__ float __log2f (float x)
 
-__device__ float __logf (float x)
 
-__device__ float __powf (float base, float exponent)
 
-__device__ void __sincosf (float x, float *s, float *c)
 
-__device__ float __sinf (float x)
 
-__device__ float __tanf (float x)
 
-__device__ float __fmaf_rd (float x, float y, float z)
 
-__device__ float __fmaf_rn (float x, float y, float z)
 
-__device__ float __fmaf_ru (float x, float y, float z)
 
-__device__ float __fmaf_rz (float x, float y, float z)
 
-__device__ float __frcp_rd (float x)
 
-__device__ float __frcp_rn (float x)
 
-__device__ float __frcp_ru (float x)
 
-__device__ float __frcp_rz (float x)
 
-__device__ double __dsqrt_rd (double x)
 
-__device__ double __dsqrt_rn (double x)
 
-__device__ double __dsqrt_ru (double x)
 
-__device__ double __dsqrt_rz (double x)
 
-__device__ double __fma_rd (double x, double y, double z)
 
-__device__ double __fma_rn (double x, double y, double z)
 
-__device__ double __fma_ru (double x, double y, double z)
 
-__device__ double __fma_rz (double x, double y, double z)
 
-__device__ double __drcp_rd (double x)
 
-__device__ double __drcp_rn (double x)
 
-__device__ double __drcp_ru (double x)
 
-__device__ double __drcp_rz (double x)
 
__device__ void __threadfence_block (void)
 threadfence_block makes writes visible to threads running in same block. More...
 
__device__ void __threadfence (void)
 threadfence makes wirtes visible to other threads running on same GPU. More...
 
__device__ void __threadfence_system (void)
 threadfence_system makes writes to pinned system memory visible on host CPU. More...
 
-__device__ unsigned __hip_ds_bpermute (int index, unsigned src)
 
-__device__ float __hip_ds_bpermutef (int index, float src)
 
-__device__ unsigned __hip_ds_permute (int index, unsigned src)
 
-__device__ float __hip_ds_permutef (int index, float src)
 
-__device__ unsigned __hip_ds_swizzle (unsigned int src, int pattern)
 
-__device__ float __hip_ds_swizzlef (float src, int pattern)
 
-__device__ int __hip_move_dpp (int src, int dpp_ctrl, int row_mask, int bank_mask, bool bound_ctrl)
 
-__device__ void * __hip_hc_malloc (size_t)
 
-__device__ void * __hip_hc_free (void *ptr)
 
-__device__ char4 __hip_hc_add8pk (char4, char4)
 
-__device__ char4 __hip_hc_sub8pk (char4, char4)
 
-__device__ char4 __hip_hc_mul8pk (char4, char4)
 
- - - - - - - - - -

-Variables

-int HIP_TRACE_API
 
-const int warpSize
 
float
 
double
 
-

Detailed Description

-

Contains definitions of APIs for HIP runtime.

-

Macro Definition Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
#define HIP_DYNAMIC_SHARED( type,
 var 
)
-
-Value:
__attribute__((address_space(3))) type* var = \
-
(__attribute__((address_space(3))) type*)__get_dynamicgroupbaseptr(); \
-

extern shared

- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/hcc__detail_2hip__runtime_8h_source.html b/docs/RuntimeAPI/html/hcc__detail_2hip__runtime_8h_source.html deleted file mode 100644 index 7ad654c0d0..0000000000 --- a/docs/RuntimeAPI/html/hcc__detail_2hip__runtime_8h_source.html +++ /dev/null @@ -1,915 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc_detail/hip_runtime.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_runtime.h
-
-
-Go to the documentation of this file.
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
28 //#pragma once
-
29 #ifndef HIP_RUNTIME_H
-
30 #define HIP_RUNTIME_H
-
31 
-
32 //---
-
33 // Top part of file can be compiled with any compiler
-
34 
-
35 
-
36 //#include <cstring>
-
37 #if __cplusplus
-
38 #include <cmath>
-
39 #else
-
40 #include <math.h>
-
41 #include <string.h>
-
42 #include <stddef.h>
-
43 #endif
-
44 // Define NVCC_COMPAT for CUDA compatibility
-
45 #define NVCC_COMPAT
-
46 #define CUDA_SUCCESS hipSuccess
-
47 
-
48 #include <hip/hip_runtime_api.h>
-
49 //#include "hip/hcc_detail/hip_hcc.h"
-
50 //---
-
51 // Remainder of this file only compiles with HCC
-
52 #ifdef __HCC__
-
53 #include <grid_launch.h>
-
54 
-
55 #if defined (GRID_LAUNCH_VERSION) and (GRID_LAUNCH_VERSION >= 20)
-
56 // Use field names for grid_launch 2.0 structure, if HCC supports GL 2.0.
-
57 #else
-
58 #error (HCC must support GRID_LAUNCH_20)
-
59 #endif
-
60 
-
61 extern int HIP_TRACE_API;
-
62 
-
63 //TODO-HCC-GL - change this to typedef.
-
64 //typedef grid_launch_parm hipLaunchParm ;
-
65 #define hipLaunchParm grid_launch_parm
-
66 #ifdef __cplusplus
-
67 //#include <hip/hcc_detail/hip_texture.h>
-
68 #include <hip/hcc_detail/hip_ldg.h>
-
69 #endif
- -
71 // TODO-HCC remove old definitions ; ~1602 hcc supports __HCC_ACCELERATOR__ define.
-
72 #if defined (__KALMAR_ACCELERATOR__) && !defined (__HCC_ACCELERATOR__)
-
73 #define __HCC_ACCELERATOR__ __KALMAR_ACCELERATOR__
-
74 #endif
-
75 
-
76 // Feature tests:
-
77 #if defined(__HCC_ACCELERATOR__) && (__HCC_ACCELERATOR__ != 0)
-
78 // Device compile and not host compile:
-
79 
-
80 //TODO-HCC enable __HIP_ARCH_HAS_ATOMICS__ when HCC supports these.
-
81  // 32-bit Atomics:
-
82 #define __HIP_ARCH_HAS_GLOBAL_INT32_ATOMICS__ (1)
-
83 #define __HIP_ARCH_HAS_GLOBAL_FLOAT_ATOMIC_EXCH__ (1)
-
84 #define __HIP_ARCH_HAS_SHARED_INT32_ATOMICS__ (1)
-
85 #define __HIP_ARCH_HAS_SHARED_FLOAT_ATOMIC_EXCH__ (1)
-
86 #define __HIP_ARCH_HAS_FLOAT_ATOMIC_ADD__ (0)
-
87 
-
88 // 64-bit Atomics:
-
89 #define __HIP_ARCH_HAS_GLOBAL_INT64_ATOMICS__ (1)
-
90 #define __HIP_ARCH_HAS_SHARED_INT64_ATOMICS__ (0)
-
91 
-
92 // Doubles
-
93 #define __HIP_ARCH_HAS_DOUBLES__ (1)
-
94 
-
95 //warp cross-lane operations:
-
96 #define __HIP_ARCH_HAS_WARP_VOTE__ (1)
-
97 #define __HIP_ARCH_HAS_WARP_BALLOT__ (1)
-
98 #define __HIP_ARCH_HAS_WARP_SHUFFLE__ (1)
-
99 #define __HIP_ARCH_HAS_WARP_FUNNEL_SHIFT__ (0)
-
100 
-
101 //sync
-
102 #define __HIP_ARCH_HAS_THREAD_FENCE_SYSTEM__ (0)
-
103 #define __HIP_ARCH_HAS_SYNC_THREAD_EXT__ (0)
-
104 
-
105 // misc
-
106 #define __HIP_ARCH_HAS_SURFACE_FUNCS__ (0)
-
107 #define __HIP_ARCH_HAS_3DGRID__ (1)
-
108 #define __HIP_ARCH_HAS_DYNAMIC_PARALLEL__ (0)
-
109 
-
110 #endif /* Device feature flags */
-
111 
-
112 
-
113 //TODO-HCC this is currently ignored by HCC target of HIP
-
114 #define __launch_bounds__(requiredMaxThreadsPerBlock, minBlocksPerMultiprocessor)
-
115 
-
116 // Detect if we are compiling C++ mode or C mode
-
117 #if defined(__cplusplus)
-
118 #define __HCC_CPP__
-
119 #elif defined(__STDC_VERSION__)
-
120 #define __HCC_C__
-
121 #endif
-
122 
-
123 __device__ float acosf(float x);
-
124 __device__ float acoshf(float x);
-
125 __device__ float asinf(float x);
-
126 __device__ float asinhf(float x);
-
127 __device__ float atan2f(float y, float x);
-
128 __device__ float atanf(float x);
-
129 __device__ float atanhf(float x);
-
130 __device__ float cbrtf(float x);
-
131 __device__ float ceilf(float x);
-
132 __device__ float copysignf(float x, float y);
-
133 __device__ float coshf(float x);
-
134 __device__ float cyl_bessel_i0f(float x);
-
135 __device__ float cyl_bessel_i1f(float x);
-
136 __device__ float erfcf(float x);
-
137 __device__ float erfcinvf(float y);
-
138 __host__ float erfcinvf(float y);
-
139 __device__ float erfcxf(float x);
-
140 __host__ float erfcxf(float x);
-
141 __device__ float erff(float x);
-
142 __device__ float erfinvf(float y);
-
143 __host__ float erfinvf(float y);
-
144 __device__ float exp2f(float x);
-
145 __device__ float expm1f(float x);
-
146 __device__ float fabsf(float x);
-
147 __device__ float fdimf(float x, float y);
-
148 __device__ __host__ float fdividef(float x, float y);
-
149 __device__ float floorf(float x);
-
150 __device__ float fmaf(float x, float y, float z);
-
151 __device__ float fmaxf(float x, float y);
-
152 __device__ float fminf(float x, float y);
-
153 __device__ float fmodf(float x, float y);
-
154 __device__ float frexpf(float x, float y);
-
155 __device__ float hypotf(float x, float y);
-
156 __device__ float ilogbf(float x);
-
157 __host__ __device__ unsigned isfinite(float a);
-
158 __device__ unsigned isinf(float a);
-
159 __device__ unsigned isnan(float a);
-
160 __device__ float j0f(float x);
-
161 __device__ float j1f(float x);
-
162 __device__ float jnf(int n, float x);
-
163 __device__ float ldexpf(float x, int exp);
-
164 __device__ float lgammaf(float x);
-
165 __device__ long long int llrintf(float x);
-
166 __device__ long long int llroundf(float x);
-
167 __device__ float log1pf(float x);
-
168 __device__ float logbf(float x);
-
169 __device__ long int lrintf(float x);
-
170 __device__ long int lroundf(float x);
-
171 __device__ float modff(float x, float *iptr);
-
172 __device__ float nanf(const char* tagp);
-
173 __device__ float nearbyintf(float x);
-
174 __device__ float nextafterf(float x, float y);
-
175 __device__ float norm3df(float a, float b, float c);
-
176 __host__ float norm3df(float a, float b, float c);
-
177 __device__ float norm4df(float a, float b, float c, float d);
-
178 __host__ float norm4df(float a, float b, float c, float d);
-
179 __device__ float normcdff(float y);
-
180 __host__ float normcdff(float y);
-
181 __device__ float normcdfinvf(float y);
-
182 __host__ float normcdfinvf(float y);
-
183 __device__ float normf(int dim, const float *a);
-
184 __device__ float rcbrtf(float x);
-
185 __host__ float rcbrtf(float x);
-
186 __device__ float remainderf(float x, float y);
-
187 __device__ float remquof(float x, float y, int *quo);
-
188 __device__ float rhypotf(float x, float y);
-
189 __host__ float rhypotf(float x, float y);
-
190 __device__ float rintf(float x);
-
191 __device__ float rnorm3df(float a, float b, float c);
-
192 __host__ float rnorm3df(float a, float b, float c);
-
193 __device__ float rnorm4df(float a, float b, float c, float d);
-
194 __host__ float rnorm4df(float a, float b, float c, float d);
-
195 __device__ float rnormf(int dim, const float* a);
-
196 __host__ float rnormf(int dim, const float* a);
-
197 __device__ float roundf(float x);
-
198 __device__ float rsqrtf(float x);
-
199 __device__ float scalblnf(float x, long int n);
-
200 __device__ float scalbnf(float x, int n);
-
201 __host__ __device__ unsigned signbit(float a);
-
202 __device__ void sincospif(float x, float *sptr, float *cptr);
-
203 __host__ void sincospif(float x, float *sptr, float *cptr);
-
204 __device__ float sinhf(float x);
-
205 __device__ float sinpif(float x);
-
206 __device__ float sqrtf(float x);
-
207 __device__ float tanhf(float x);
-
208 __device__ float tgammaf(float x);
-
209 __device__ float truncf(float x);
-
210 __device__ float y0f(float x);
-
211 __device__ float y1f(float x);
-
212 __device__ float ynf(int n, float x);
-
213 
-
214 __host__ __device__ float cospif(float x);
-
215 __host__ __device__ float sinpif(float x);
-
216 __device__ float sqrtf(float x);
-
217 __host__ __device__ float rsqrtf(float x);
-
218 
-
219 __device__ double acos(double x);
-
220 __device__ double acosh(double x);
-
221 __device__ double asin(double x);
-
222 __device__ double asinh(double x);
-
223 __device__ double atan(double x);
-
224 __device__ double atan2(double y, double x);
-
225 __device__ double atanh(double x);
-
226 __device__ double cbrt(double x);
-
227 __device__ double ceil(double x);
-
228 __device__ double copysign(double x, double y);
-
229 __device__ double cos(double x);
-
230 __device__ double cosh(double x);
-
231 __host__ __device__ double cospi(double x);
-
232 __device__ double cyl_bessel_i0(double x);
-
233 __device__ double cyl_bessel_i1(double x);
-
234 __device__ double erf(double x);
-
235 __device__ double erfc(double x);
-
236 __device__ double erfcinv(double y);
-
237 __device__ double erfcx(double x);
-
238 __device__ double erfinv(double x);
-
239 __device__ double exp(double x);
-
240 __device__ double exp10(double x);
-
241 __device__ double exp2(double x);
-
242 __device__ double expm1(double x);
-
243 __device__ double fabs(double x);
-
244 __device__ double fdim(double x, double y);
-
245 __device__ double fdivide(double x, double y);
-
246 __device__ double floor(double x);
-
247 __device__ double fma(double x, double y, double z);
-
248 __device__ double fmax(double x, double y);
-
249 __device__ double fmin(double x, double y);
-
250 __device__ double fmod(double x, double y);
-
251 __device__ double frexp(double x, int *nptr);
-
252 __device__ double hypot(double x, double y);
-
253 __device__ double ilogb(double x);
-
254 __host__ __device__ unsigned isfinite(double x);
-
255 __device__ unsigned isinf(double x);
-
256 __device__ unsigned isnan(double x);
-
257 __device__ double j0(double x);
-
258 __device__ double j1(double x);
-
259 __device__ double jn(int n, double x);
-
260 __device__ double ldexp(double x, int exp);
-
261 __device__ double lgamma(double x);
-
262 __device__ long long llrint(double x);
-
263 __device__ long long llround(double x);
-
264 __device__ double log(double x);
-
265 __device__ double log10(double x);
-
266 __device__ double log1p(double x);
-
267 __device__ double log2(double x);
-
268 __device__ double logb(double x);
-
269 __device__ long int lrint(double x);
-
270 __device__ long int lround(double x);
-
271 __device__ double modf(double x, double *iptr);
-
272 __device__ double nan(const char* tagp);
-
273 __device__ double nearbyint(double x);
-
274 __device__ double nextafter(double x, double y);
-
275 __device__ double norm(int dim, const double* t);
-
276 __device__ double norm3d(double a, double b, double c);
-
277 __host__ double norm3d(double a, double b, double c);
-
278 __device__ double norm4d(double a, double b, double c, double d);
-
279 __host__ double norm4d(double a, double b, double c, double d);
-
280 __device__ double normcdf(double y);
-
281 __host__ double normcdf(double y);
-
282 __device__ double normcdfinv(double y);
-
283 __host__ double normcdfinv(double y);
-
284 __device__ double pow(double x, double y);
-
285 __device__ double rcbrt(double x);
-
286 __host__ double rcbrt(double x);
-
287 __device__ double remainder(double x, double y);
-
288 __device__ double remquo(double x, double y, int *quo);
-
289 __device__ double rhypot(double x, double y);
-
290 __host__ double rhypot(double x, double y);
-
291 __device__ double rint(double x);
-
292 __device__ double rnorm(int dim, const double* t);
-
293 __host__ double rnorm(int dim, const double* t);
-
294 __device__ double rnorm3d(double a, double b, double c);
-
295 __host__ double rnorm3d(double a, double b, double c);
-
296 __device__ double rnorm4d(double a, double b, double c, double d);
-
297 __host__ double rnorm4d(double a, double b, double c, double d);
-
298 __device__ double round(double x);
-
299 __host__ __device__ double rsqrt(double x);
-
300 __device__ double scalbln(double x, long int n);
-
301 __device__ double scalbn(double x, int n);
-
302 __host__ __device__ unsigned signbit(double a);
-
303 __device__ double sin(double a);
-
304 __device__ void sincos(double x, double *sptr, double *cptr);
-
305 __device__ void sincospi(double x, double *sptr, double *cptr);
-
306 __host__ void sincospi(double x, double *sptr, double *cptr);
-
307 __device__ double sinh(double x);
-
308 __host__ __device__ double sinpi(double x);
-
309 __device__ double sqrt(double x);
-
310 __device__ double tan(double x);
-
311 __device__ double tanh(double x);
-
312 __device__ double tgamma(double x);
-
313 __device__ double trunc(double x);
-
314 __device__ double y0(double x);
-
315 __device__ double y1(double y);
-
316 __device__ double yn(int n, double x);
-
317 
-
318 __host__ double erfcinv(double y);
-
319 __host__ double erfcx(double x);
-
320 __host__ double erfinv(double y);
-
321 __host__ double fdivide(double x, double y);
-
322 
-
323 // TODO - hipify-clang - change to use the function call.
-
324 //#define warpSize hc::__wavesize()
-
325 extern const int warpSize;
-
326 
-
327 
-
328 #define clock_t long long int
-
329 __device__ long long int clock64();
-
330 __device__ clock_t clock();
-
331 
-
332 //atomicAdd()
-
333 __device__ int atomicAdd(int* address, int val);
-
334 __device__ unsigned int atomicAdd(unsigned int* address,
-
335  unsigned int val);
-
336 
-
337 __device__ unsigned long long int atomicAdd(unsigned long long int* address,
-
338  unsigned long long int val);
-
339 
-
340 __device__ float atomicAdd(float* address, float val);
-
341 
-
342 
-
343 //atomicSub()
-
344 __device__ int atomicSub(int* address, int val);
-
345 
-
346 __device__ unsigned int atomicSub(unsigned int* address,
-
347  unsigned int val);
-
348 
-
349 
-
350 //atomicExch()
-
351 __device__ int atomicExch(int* address, int val);
-
352 
-
353 __device__ unsigned int atomicExch(unsigned int* address,
-
354  unsigned int val);
-
355 
-
356 __device__ unsigned long long int atomicExch(unsigned long long int* address,
-
357  unsigned long long int val);
-
358 
-
359 __device__ float atomicExch(float* address, float val);
-
360 
-
361 
-
362 //atomicMin()
-
363 __device__ int atomicMin(int* address, int val);
-
364 __device__ unsigned int atomicMin(unsigned int* address,
-
365  unsigned int val);
-
366 __device__ unsigned long long int atomicMin(unsigned long long int* address,
-
367  unsigned long long int val);
-
368 
-
369 
-
370 //atomicMax()
-
371 __device__ int atomicMax(int* address, int val);
-
372 __device__ unsigned int atomicMax(unsigned int* address,
-
373  unsigned int val);
-
374 __device__ unsigned long long int atomicMax(unsigned long long int* address,
-
375  unsigned long long int val);
-
376 
-
377 
-
378 //atomicCAS()
-
379 __device__ int atomicCAS(int* address, int compare, int val);
-
380 __device__ unsigned int atomicCAS(unsigned int* address,
-
381  unsigned int compare,
-
382  unsigned int val);
-
383 __device__ unsigned long long int atomicCAS(unsigned long long int* address,
-
384  unsigned long long int compare,
-
385  unsigned long long int val);
-
386 
-
387 
-
388 //atomicAnd()
-
389 __device__ int atomicAnd(int* address, int val);
-
390 __device__ unsigned int atomicAnd(unsigned int* address,
-
391  unsigned int val);
-
392 __device__ unsigned long long int atomicAnd(unsigned long long int* address,
-
393  unsigned long long int val);
-
394 
-
395 
-
396 //atomicOr()
-
397 __device__ int atomicOr(int* address, int val);
-
398 __device__ unsigned int atomicOr(unsigned int* address,
-
399  unsigned int val);
-
400 __device__ unsigned long long int atomicOr(unsigned long long int* address,
-
401  unsigned long long int val);
-
402 
-
403 
-
404 //atomicXor()
-
405 __device__ int atomicXor(int* address, int val);
-
406 __device__ unsigned int atomicXor(unsigned int* address,
-
407  unsigned int val);
-
408 __device__ unsigned long long int atomicXor(unsigned long long int* address,
-
409  unsigned long long int val);
-
410 
-
411 //atomicInc()
-
412 __device__ unsigned int atomicInc(unsigned int* address,
-
413  unsigned int val);
-
414 
-
415 
-
416 //atomicDec()
-
417 __device__ unsigned int atomicDec(unsigned int* address,
-
418  unsigned int val);
-
419 
-
420 //__mul24 __umul24
-
421 __device__ int __mul24(int arg1, int arg2);
-
422 __device__ unsigned int __umul24(unsigned int arg1, unsigned int arg2);
-
423 
-
424 // integer intrinsic function __poc __clz __ffs __brev
-
425 __device__ unsigned int __popc( unsigned int input);
-
426 __device__ unsigned int __popcll( unsigned long long int input);
-
427 __device__ unsigned int __clz(unsigned int input);
-
428 __device__ unsigned int __clzll(unsigned long long int input);
-
429 __device__ unsigned int __clz(int input);
-
430 __device__ unsigned int __clzll(long long int input);
-
431 __device__ unsigned int __ffs(unsigned int input);
-
432 __device__ unsigned int __ffsll(unsigned long long int input);
-
433 __device__ unsigned int __ffs(int input);
-
434 __device__ unsigned int __ffsll(long long int input);
-
435 __device__ unsigned int __brev( unsigned int input);
-
436 __device__ unsigned long long int __brevll( unsigned long long int input);
-
437 
-
438 
-
439 // warp vote function __all __any __ballot
-
440 __device__ int __all( int input);
-
441 __device__ int __any( int input);
-
442 __device__ unsigned long long int __ballot( int input);
-
443 
-
444 // warp shuffle functions
-
445 #ifdef __cplusplus
-
446 __device__ int __shfl(int input, int lane, int width=warpSize);
-
447 __device__ int __shfl_up(int input, unsigned int lane_delta, int width=warpSize);
-
448 __device__ int __shfl_down(int input, unsigned int lane_delta, int width=warpSize);
-
449 __device__ int __shfl_xor(int input, int lane_mask, int width=warpSize);
-
450 __device__ float __shfl(float input, int lane, int width=warpSize);
-
451 __device__ float __shfl_up(float input, unsigned int lane_delta, int width=warpSize);
-
452 __device__ float __shfl_down(float input, unsigned int lane_delta, int width=warpSize);
-
453 __device__ float __shfl_xor(float input, int lane_mask, int width=warpSize);
-
454 #else
-
455 __device__ int __shfl(int input, int lane, int width);
-
456 __device__ int __shfl_up(int input, unsigned int lane_delta, int width);
-
457 __device__ int __shfl_down(int input, unsigned int lane_delta, int width);
-
458 __device__ int __shfl_xor(int input, int lane_mask, int width);
-
459 __device__ float __shfl(float input, int lane, int width);
-
460 __device__ float __shfl_up(float input, unsigned int lane_delta, int width);
-
461 __device__ float __shfl_down(float input, unsigned int lane_delta, int width);
-
462 __device__ float __shfl_xor(float input, int lane_mask, int width);
-
463 #endif
-
464 
-
465 __host__ __device__ int min(int arg1, int arg2);
-
466 __host__ __device__ int max(int arg1, int arg2);
-
467 
-
468 __device__ __attribute__((address_space(3))) void* __get_dynamicgroupbaseptr();
-
469 
-
470 //TODO - add a couple fast math operations here, the set here will grow :
-
471 
-
472 // Single Precision Precise Math
-
473 __device__ float __hip_precise_cosf(float);
-
474 __device__ float __hip_precise_exp10f(float);
-
475 __device__ float __hip_precise_expf(float);
-
476 __device__ float __hip_precise_frsqrt_rn(float);
-
477 __device__ float __hip_precise_fsqrt_rd(float);
-
478 __device__ float __hip_precise_fsqrt_rn(float);
-
479 __device__ float __hip_precise_fsqrt_ru(float);
-
480 __device__ float __hip_precise_fsqrt_rz(float);
-
481 __device__ float __hip_precise_log10f(float);
-
482 __device__ float __hip_precise_log2f(float);
-
483 __device__ float __hip_precise_logf(float);
-
484 __device__ float __hip_precise_powf(float, float);
-
485 __device__ void __hip_precise_sincosf(float,float*,float*);
-
486 __device__ float __hip_precise_sinf(float);
-
487 __device__ float __hip_precise_tanf(float);
-
488 
-
489 // Double Precision Precise Math
-
490 __device__ double __hip_precise_dsqrt_rd(double);
-
491 __device__ double __hip_precise_dsqrt_rn(double);
-
492 __device__ double __hip_precise_dsqrt_ru(double);
-
493 __device__ double __hip_precise_dsqrt_rz(double);
-
494 
-
495 // Single Precision Fast Math
-
496 extern __attribute__((const)) float __hip_fast_cosf(float) __asm("llvm.cos.f32");
-
497 extern __attribute__((const)) float __hip_fast_exp2f(float) __asm("llvm.exp2.f32");
-
498 __device__ float __hip_fast_exp10f(float);
-
499 __device__ float __hip_fast_expf(float);
-
500 __device__ float __hip_fast_frsqrt_rn(float);
-
501 extern __attribute__((const)) float __hip_fast_fsqrt_rd(float) __asm("llvm.sqrt.f32");
-
502 __device__ float __hip_fast_fsqrt_rn(float);
-
503 __device__ float __hip_fast_fsqrt_ru(float);
-
504 __device__ float __hip_fast_fsqrt_rz(float);
-
505 __device__ float __hip_fast_log10f(float);
-
506 extern __attribute__((const)) float __hip_fast_log2f(float) __asm("llvm.log2.f32");
-
507 __device__ float __hip_fast_logf(float);
-
508 __device__ float __hip_fast_powf(float, float);
-
509 __device__ void __hip_fast_sincosf(float,float*,float*);
-
510 extern __attribute__((const)) float __hip_fast_sinf(float) __asm("llvm.sin.f32");
-
511 __device__ float __hip_fast_tanf(float);
-
512 extern __attribute__((const)) float __hip_fast_fmaf(float,float,float) __asm("llvm.fma.f32");
-
513 extern __attribute__((const)) float __hip_fast_frcp(float) __asm("llvm.amdgcn.rcp.f32");
-
514 
-
515 extern __attribute__((const)) double __hip_fast_dsqrt(double) __asm("llvm.sqrt.f64");
-
516 extern __attribute__((const)) double __hip_fast_fma(double,double,double) __asm("llvm.fma.f64");
-
517 extern __attribute__((const)) double __hip_fast_drcp(double) __asm("llvm.amdgcn.rcp.f64");
-
518 
-
519 #ifdef HIP_FAST_MATH
-
520 // Single Precision Precise Math when enabled
-
521 
-
522 __device__ inline float cosf(float x) {
-
523  return __hip_fast_cosf(x);
-
524 }
-
525 
-
526 __device__ inline float exp10f(float x) {
-
527  return __hip_fast_exp10f(x);
-
528 }
-
529 
-
530 __device__ inline float expf(float x) {
-
531  return __hip_fast_expf(x);
-
532 }
-
533 
-
534 __device__ inline float log10f(float x) {
-
535  return __hip_fast_log10f(x);
-
536 }
-
537 
-
538 __device__ inline float log2f(float x) {
-
539  return __hip_fast_log2f(x);
-
540 }
-
541 
-
542 __device__ inline float logf(float x) {
-
543  return __hip_fast_logf(x);
-
544 }
-
545 
-
546 __device__ inline float powf(float base, float exponent) {
-
547  return __hip_fast_powf(base, exponent);
-
548 }
-
549 
-
550 __device__ inline void sincosf(float x, float *s, float *c) {
-
551  return __hip_fast_sincosf(x, s, c);
-
552 }
-
553 
-
554 __device__ inline float sinf(float x) {
-
555  return __hip_fast_sinf(x);
-
556 }
-
557 
-
558 __device__ inline float tanf(float x) {
-
559  return __hip_fast_tanf(x);
-
560 }
-
561 
-
562 #else
-
563 
-
564 __device__ float sinf(float);
-
565 __device__ float cosf(float);
-
566 __device__ float tanf(float);
-
567 __device__ void sincosf(float, float*, float*);
-
568 __device__ float logf(float);
-
569 __device__ float log2f(float);
-
570 __device__ float log10f(float);
-
571 __device__ float expf(float);
-
572 __device__ float exp10f(float);
-
573 __device__ float powf(float, float);
-
574 
-
575 #endif
-
576 // Single Precision Fast Math
-
577 __device__ inline float __cosf(float x) {
-
578  return __hip_fast_cosf(x);
-
579 }
-
580 
-
581 __device__ inline float __exp10f(float x) {
-
582  return __hip_fast_exp10f(x);
-
583 }
-
584 
-
585 __device__ inline float __expf(float x) {
-
586  return __hip_fast_expf(x);
-
587 }
-
588 
-
589 __device__ inline float __frsqrt_rn(float x) {
-
590  return __hip_fast_frsqrt_rn(x);
-
591 }
-
592 
-
593 __device__ inline float __fsqrt_rd(float x) {
-
594  return __hip_fast_fsqrt_rd(x);
-
595 }
-
596 
-
597 __device__ inline float __fsqrt_rn(float x) {
-
598  return __hip_fast_fsqrt_rn(x);
-
599 }
-
600 
-
601 __device__ inline float __fsqrt_ru(float x) {
-
602  return __hip_fast_fsqrt_ru(x);
-
603 }
-
604 
-
605 __device__ inline float __fsqrt_rz(float x) {
-
606  return __hip_fast_fsqrt_rz(x);
-
607 }
-
608 
-
609 __device__ inline float __log10f(float x) {
-
610  return __hip_fast_log10f(x);
-
611 }
-
612 
-
613 __device__ inline float __log2f(float x) {
-
614  return __hip_fast_log2f(x);
-
615 }
-
616 
-
617 __device__ inline float __logf(float x) {
-
618  return __hip_fast_logf(x);
-
619 }
-
620 
-
621 __device__ inline float __powf(float base, float exponent) {
-
622  return __hip_fast_powf(base, exponent);
-
623 }
-
624 
-
625 __device__ inline void __sincosf(float x, float *s, float *c) {
-
626  return __hip_fast_sincosf(x, s, c);
-
627 }
-
628 
-
629 __device__ inline float __sinf(float x) {
-
630  return __hip_fast_sinf(x);
-
631 }
-
632 
-
633 __device__ inline float __tanf(float x) {
-
634  return __hip_fast_tanf(x);
-
635 }
-
636 
-
637 __device__ inline float __fmaf_rd(float x, float y, float z) {
-
638  return __hip_fast_fmaf(x, y, z);
-
639 }
-
640 
-
641 __device__ inline float __fmaf_rn(float x, float y, float z) {
-
642  return __hip_fast_fmaf(x, y, z);
-
643 }
-
644 
-
645 __device__ inline float __fmaf_ru(float x, float y, float z) {
-
646  return __hip_fast_fmaf(x, y, z);
-
647 }
-
648 
-
649 __device__ inline float __fmaf_rz(float x, float y, float z) {
-
650  return __hip_fast_fmaf(x, y, z);
-
651 }
-
652 
-
653 __device__ inline float __frcp_rd(float x) {
-
654  return __hip_fast_frcp(x);
-
655 }
-
656 
-
657 __device__ inline float __frcp_rn(float x) {
-
658  return __hip_fast_frcp(x);
-
659 }
-
660 
-
661 __device__ inline float __frcp_ru(float x) {
-
662  return __hip_fast_frcp(x);
-
663 }
-
664 
-
665 __device__ inline float __frcp_rz(float x) {
-
666  return __hip_fast_frcp(x);
-
667 }
-
668 
-
669 __device__ inline double __dsqrt_rd(double x) {
-
670  return __hip_fast_dsqrt(x);
-
671 }
-
672 
-
673 __device__ inline double __dsqrt_rn(double x) {
-
674  return __hip_fast_dsqrt(x);
-
675 }
-
676 
-
677 __device__ inline double __dsqrt_ru(double x) {
-
678  return __hip_fast_dsqrt(x);
-
679 }
-
680 
-
681 __device__ inline double __dsqrt_rz(double x) {
-
682  return __hip_fast_dsqrt(x);
-
683 }
-
684 
-
685 __device__ inline double __fma_rd(double x, double y, double z) {
-
686  return __hip_fast_fma(x, y, z);
-
687 }
-
688 
-
689 __device__ inline double __fma_rn(double x, double y, double z) {
-
690  return __hip_fast_fma(x, y, z);
-
691 }
-
692 
-
693 __device__ inline double __fma_ru(double x, double y, double z) {
-
694  return __hip_fast_fma(x, y, z);
-
695 }
-
696 
-
697 __device__ inline double __fma_rz(double x, double y, double z) {
-
698  return __hip_fast_fma(x, y, z);
-
699 }
-
700 
-
701 __device__ inline double __drcp_rd(double x) {
-
702  return __hip_fast_drcp(x);
-
703 }
-
704 
-
705 __device__ inline double __drcp_rn(double x) {
-
706  return __hip_fast_drcp(x);
-
707 }
-
708 
-
709 __device__ inline double __drcp_ru(double x) {
-
710  return __hip_fast_drcp(x);
-
711 }
-
712 
-
713 __device__ inline double __drcp_rz(double x) {
-
714  return __hip_fast_drcp(x);
-
715 }
-
716 
-
750 // __device__ void __threadfence_block(void);
-
751 extern "C" __device__ void __threadfence_block(void);
-
752 
-
762 // __device__ void __threadfence(void) __attribute__((deprecated("Provided for compile-time compatibility, not yet functional")));
-
763 extern "C" __device__ void __threadfence(void);
-
764 
-
774 //__device__ void __threadfence_system(void) __attribute__((deprecated("Provided with workaround configuration, see hip_kernel_language.md for details")));
-
775 __device__ void __threadfence_system(void) ;
-
776 
-
777 __device__ unsigned __hip_ds_bpermute(int index, unsigned src);
-
778 __device__ float __hip_ds_bpermutef(int index, float src);
-
779 __device__ unsigned __hip_ds_permute(int index, unsigned src);
-
780 __device__ float __hip_ds_permutef(int index, float src);
-
781 
-
782 __device__ unsigned __hip_ds_swizzle(unsigned int src, int pattern);
-
783 __device__ float __hip_ds_swizzlef(float src, int pattern);
-
784 
-
785 __device__ int __hip_move_dpp(int src, int dpp_ctrl, int row_mask, int bank_mask, bool bound_ctrl);
-
786 
-
787 // doxygen end Fence Fence
-
793 #define hipThreadIdx_x (hc_get_workitem_id(0))
-
794 #define hipThreadIdx_y (hc_get_workitem_id(1))
-
795 #define hipThreadIdx_z (hc_get_workitem_id(2))
-
796 
-
797 #define hipBlockIdx_x (hc_get_group_id(0))
-
798 #define hipBlockIdx_y (hc_get_group_id(1))
-
799 #define hipBlockIdx_z (hc_get_group_id(2))
-
800 
-
801 #define hipBlockDim_x (hc_get_group_size(0))
-
802 #define hipBlockDim_y (hc_get_group_size(1))
-
803 #define hipBlockDim_z (hc_get_group_size(2))
-
804 
-
805 #define hipGridDim_x (hc_get_num_groups(0))
-
806 #define hipGridDim_y (hc_get_num_groups(1))
-
807 #define hipGridDim_z (hc_get_num_groups(2))
-
808 
-
809 //extern "C" __device__ void* memcpy(void* dst, void* src, size_t size);
-
810 //extern "C" __device__ void* memset(void* ptr, uint8_t val, size_t size);
-
811 
-
812 extern "C" __device__ void* __hip_hc_malloc(size_t);
-
813 extern "C" __device__ void* __hip_hc_free(void *ptr);
-
814 
-
815 //extern "C" __device__ void* malloc(size_t size);
-
816 //extern "C" __device__ void* free(void *ptr);
-
817 
-
818 extern "C" __device__ char4 __hip_hc_add8pk(char4, char4);
-
819 extern "C" __device__ char4 __hip_hc_sub8pk(char4, char4);
-
820 extern "C" __device__ char4 __hip_hc_mul8pk(char4, char4);
-
821 
-
822 #define __syncthreads() hc_barrier(CLK_LOCAL_MEM_FENCE)
-
823 
-
824 #define HIP_KERNEL_NAME(...) __VA_ARGS__
-
825 #define HIP_SYMBOL(X) #X
-
826 
-
827 #ifdef __HCC_CPP__
-
828 extern hipStream_t ihipPreLaunchKernel(hipStream_t stream, dim3 grid, dim3 block, grid_launch_parm *lp, const char *kernelNameStr);
-
829 extern hipStream_t ihipPreLaunchKernel(hipStream_t stream, dim3 grid, size_t block, grid_launch_parm *lp, const char *kernelNameStr);
-
830 extern hipStream_t ihipPreLaunchKernel(hipStream_t stream, size_t grid, dim3 block, grid_launch_parm *lp, const char *kernelNameStr);
-
831 extern hipStream_t ihipPreLaunchKernel(hipStream_t stream, size_t grid, size_t block, grid_launch_parm *lp, const char *kernelNameStr);
-
832 extern void ihipPostLaunchKernel(const char *kernelName, hipStream_t stream, grid_launch_parm &lp);
-
833 
-
834 
-
835 // Due to multiple overloaded versions of ihipPreLaunchKernel, the numBlocks3D and blockDim3D can be either size_t or dim3 types
-
836 #define hipLaunchKernel(_kernelName, _numBlocks3D, _blockDim3D, _groupMemBytes, _stream, ...) \
-
837 do {\
-
838  grid_launch_parm lp;\
-
839  lp.dynamic_group_mem_bytes = _groupMemBytes; \
-
840  hipStream_t trueStream = (ihipPreLaunchKernel(_stream, _numBlocks3D, _blockDim3D, &lp, #_kernelName)); \
-
841  _kernelName (lp, ##__VA_ARGS__);\
-
842  ihipPostLaunchKernel(#_kernelName, trueStream, lp);\
-
843 } while(0)
-
844 
-
845 
-
846 #elif defined (__HCC_C__)
-
847 
-
848 //TODO - develop C interface.
-
849 
-
850 #endif
-
851 
-
856 // Macro to replace extern __shared__ declarations
-
857 // to local variable definitions
-
858 #define HIP_DYNAMIC_SHARED(type, var) \
-
859  __attribute__((address_space(3))) type* var = \
-
860  (__attribute__((address_space(3))) type*)__get_dynamicgroupbaseptr(); \
-
861 
-
862 #define HIP_DYNAMIC_SHARED_ATTRIBUTE __attribute__((address_space(3)))
-
863 
-
864 #endif // __HCC__
-
865 
-
866 
-
871 //extern int HIP_PRINT_ENV ; ///< Print all HIP-related environment variables.
-
872 //extern int HIP_TRACE_API; ///< Trace HIP APIs.
-
873 //extern int HIP_LAUNCH_BLOCKING ; ///< Make all HIP APIs host-synchronous
-
874 
-
880 // End doxygen API:
-
888 #endif
-
__device__ void __threadfence(void)
threadfence makes wirtes visible to other threads running on same GPU.
-
TODO-doc.
-
Definition: hip_runtime_api.h:151
-
#define __host__
Definition: host_defines.h:35
-
__device__ void __threadfence_system(void)
threadfence_system makes writes to pinned system memory visible on host CPU.
Definition: device_util.cpp:2600
-
Definition: hip_vector_types.h:140
-
__device__ void __threadfence_block(void)
threadfence_block makes writes visible to threads running in same block.
-
Definition: hip_hcc.h:463
-
- - - - diff --git a/docs/RuntimeAPI/html/hcc__detail_2hip__runtime__api_8h.html b/docs/RuntimeAPI/html/hcc__detail_2hip__runtime__api_8h.html deleted file mode 100644 index 5de643b669..0000000000 --- a/docs/RuntimeAPI/html/hcc__detail_2hip__runtime__api_8h.html +++ /dev/null @@ -1,589 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc_detail/hip_runtime_api.h File Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
- -
-
hip_runtime_api.h File Reference
-
-
- -

Contains C function APIs for HIP runtime. This file does not use any HCC builtin or special language extensions (-hc mode) ; those functions in hip_runtime.h. -More...

-
#include <stdint.h>
-#include <stddef.h>
-#include <hip/hcc_detail/host_defines.h>
-#include <hip/hip_runtime_api.h>
-
-

Go to the source code of this file.

- - - - -

-Classes

struct  dim3
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Macros

-#define HIP_LAUNCH_PARAM_BUFFER_POINTER   ((void*) 0x01)
 
-#define HIP_LAUNCH_PARAM_BUFFER_SIZE   ((void*) 0x02)
 
-#define HIP_LAUNCH_PARAM_END   ((void*) 0x03)
 
-#define hipIpcMemLazyEnablePeerAccess   0
 
#define hipStreamDefault   0x00
 Flags that can be used with hipStreamCreateWithFlags. More...
 
-#define hipStreamNonBlocking   0x01
 Stream does not implicitly synchronize with null stream.
 
#define hipEventDefault   0x0
 Flags that can be used with hipEventCreateWithFlags: More...
 
-#define hipEventBlockingSync   0x1
 Waiting will yield CPU. Power-friendly and usage-friendly but may increase latency.
 
-#define hipEventDisableTiming   0x2
 Disable event's capability to record timing information. May improve performance.
 
#define hipEventInterprocess   0x4
 Event can support IPC. More...
 
-#define hipHostMallocDefault   0x0
 Flags that can be used with hipHostMalloc.
 
-#define hipHostMallocPortable   0x1
 
-#define hipHostMallocMapped   0x2
 
-#define hipHostMallocWriteCombined   0x4
 
#define hipHostRegisterDefault   0x0
 Flags that can be used with hipHostRegister. More...
 
-#define hipHostRegisterPortable   0x1
 Memory is considered registered by all contexts. HIP only supports one context so this is always assumed true.
 
-#define hipHostRegisterMapped   0x2
 Map the allocation into the address space for the current device. The device pointer can be obtained with hipHostGetDevicePointer.
 
-#define hipHostRegisterIoMemory   0x4
 Not supported.
 
-#define hipDeviceScheduleAuto   0x0
 Automatically select between Spin and Yield.
 
-#define hipDeviceScheduleSpin   0x1
 Dedicate a CPU core to spin-wait. Provides lowest latency, but burns a CPU core and may consume more power.
 
-#define hipDeviceScheduleYield   0x2
 Yield the CPU to the operating system when waiting. May increase latency, but lowers power and is friendlier to other threads in the system.
 
-#define hipDeviceScheduleBlockingSync   0x4
 
-#define hipDeviceScheduleMask   0x7
 
-#define hipDeviceMapHost   0x8
 
-#define hipDeviceLmemResizeToMax   0x16
 
-#define USE_PEER_NON_UNIFIED   1
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

-typedef struct ihipCtx_thipCtx_t
 
-typedef struct ihipDevice_thipDevice_t
 
-typedef struct ihipStream_thipStream_t
 
-typedef struct ihipIpcMemHandle_thipIpcMemHandle_t
 
-typedef struct
-ihipIpcEventHandle_t * 
hipIpcEventHandle_t
 
-typedef struct ihipModule_thipModule_t
 
-typedef struct ihipFunction_thipFunction_t
 
-typedef void * hipDeviceptr_t
 
-typedef struct ihipEvent_thipEvent_t
 
typedef enum hipFuncCache_t hipFuncCache_t
 
typedef enum hipSharedMemConfig hipSharedMemConfig
 
typedef struct dim3 dim3
 
typedef enum hipMemcpyKind hipMemcpyKind
 
typedef void(* hipStreamCallback_t )(hipStream_t stream, hipError_t status, void *userData)
 
- - - - - - - - - -

-Enumerations

enum  hipLimit_t { hipLimitMallocHeapSize = 0x02 - }
 
enum  hipFuncCache_t { hipFuncCachePreferNone, -hipFuncCachePreferShared, -hipFuncCachePreferL1, -hipFuncCachePreferEqual - }
 
enum  hipSharedMemConfig { hipSharedMemBankSizeDefault, -hipSharedMemBankSizeFourByte, -hipSharedMemBankSizeEightByte - }
 
enum  hipMemcpyKind {
-  hipMemcpyHostToHost = 0, -hipMemcpyHostToDevice = 1, -hipMemcpyDeviceToHost = 2, -hipMemcpyDeviceToDevice =3, -
-  hipMemcpyDefault = 4 -
- }
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

hipError_t hipDeviceSynchronize (void)
 Waits on all active streams on current device. More...
 
hipError_t hipDeviceReset (void)
 The state of current device is discarded and updated to a fresh state. More...
 
hipError_t hipSetDevice (int deviceId)
 Set default device to be used for subsequent hip API calls from this thread. More...
 
hipError_t hipGetDevice (int *deviceId)
 Return the default device id for the calling host thread. More...
 
hipError_t hipGetDeviceCount (int *count)
 Return number of compute-capable devices. More...
 
hipError_t hipDeviceGetAttribute (int *pi, hipDeviceAttribute_t attr, int deviceId)
 Query for a specific device attribute. More...
 
hipError_t hipGetDeviceProperties (hipDeviceProp_t *prop, int deviceId)
 Returns device properties. More...
 
hipError_t hipDeviceSetCacheConfig (hipFuncCache_t cacheConfig)
 Set L1/Shared cache partition. More...
 
hipError_t hipDeviceGetCacheConfig (hipFuncCache_t *cacheConfig)
 Set Cache configuration for a specific function. More...
 
hipError_t hipDeviceGetLimit (size_t *pValue, hipLimit_t limit)
 Get Resource limits of current device. More...
 
hipError_t hipFuncSetCacheConfig (hipFuncCache_t config)
 Set Cache configuration for a specific function. More...
 
hipError_t hipDeviceGetSharedMemConfig (hipSharedMemConfig *pConfig)
 Returns bank width of shared memory for current device. More...
 
hipError_t hipDeviceSetSharedMemConfig (hipSharedMemConfig config)
 The bank width of shared memory on current device is set. More...
 
hipError_t hipSetDeviceFlags (unsigned flags)
 The current device behavior is changed according the flags passed. More...
 
hipError_t hipChooseDevice (int *device, const hipDeviceProp_t *prop)
 Device which matches hipDeviceProp_t is returned. More...
 
hipError_t hipGetLastError (void)
 Return last error returned by any HIP runtime API call and resets the stored error code to hipSuccess. More...
 
hipError_t hipPeekAtLastError (void)
 Return last error returned by any HIP runtime API call. More...
 
const char * hipGetErrorName (hipError_t hip_error)
 Return name of the specified error code in text form. More...
 
const char * hipGetErrorString (hipError_t hipError)
 Return handy text string message to explain the error which occurred. More...
 
hipError_t hipStreamCreate (hipStream_t *stream)
 Create an asynchronous stream. More...
 
hipError_t hipStreamCreateWithFlags (hipStream_t *stream, unsigned int flags)
 Create an asynchronous stream. More...
 
hipError_t hipStreamDestroy (hipStream_t stream)
 Destroys the specified stream. More...
 
hipError_t hipStreamQuery (hipStream_t stream)
 Return hipSuccess if all of the operations in the specified stream have completed, or hipErrorNotReady if not. More...
 
hipError_t hipStreamSynchronize (hipStream_t stream)
 Wait for all commands in stream to complete. More...
 
hipError_t hipStreamWaitEvent (hipStream_t stream, hipEvent_t event, unsigned int flags)
 Make the specified compute stream wait for an event. More...
 
hipError_t hipStreamGetFlags (hipStream_t stream, unsigned int *flags)
 Return flags associated with this stream. More...
 
hipError_t hipStreamAddCallback (hipStream_t stream, hipStreamCallback_t callback, void *userData, unsigned int flags)
 Adds a callback to be called on the host after all currently enqueued items in the stream have completed. For each cudaStreamAddCallback call, a callback will be executed exactly once. The callback will block later work in the stream until it is finished. More...
 
hipError_t hipEventCreateWithFlags (hipEvent_t *event, unsigned flags)
 Create an event with the specified flags. More...
 
hipError_t hipEventCreate (hipEvent_t *event)
 
hipError_t hipEventRecord (hipEvent_t event, hipStream_t stream)
 Record an event in the specified stream. More...
 
hipError_t hipEventDestroy (hipEvent_t event)
 Destroy the specified event. More...
 
hipError_t hipEventSynchronize (hipEvent_t event)
 Wait for an event to complete. More...
 
hipError_t hipEventElapsedTime (float *ms, hipEvent_t start, hipEvent_t stop)
 Return the elapsed time between two events. More...
 
hipError_t hipEventQuery (hipEvent_t event)
 Query event status. More...
 
hipError_t hipPointerGetAttributes (hipPointerAttribute_t *attributes, void *ptr)
 Return attributes for the specified pointer. More...
 
hipError_t hipMalloc (void **ptr, size_t size)
 Allocate memory on the default accelerator. More...
 
hipError_t hipMallocHost (void **ptr, size_t size) __attribute__((deprecated("use hipHostMalloc instead")))
 Allocate pinned host memory [Deprecated]. More...
 
hipError_t hipHostMalloc (void **ptr, size_t size, unsigned int flags)
 Allocate device accessible page locked host memory. More...
 
hipError_t hipHostAlloc (void **ptr, size_t size, unsigned int flags) __attribute__((deprecated("use hipHostMalloc instead")))
 Allocate device accessible page locked host memory [Deprecated]. More...
 
hipError_t hipHostGetDevicePointer (void **devPtr, void *hstPtr, unsigned int flags)
 Get Device pointer from Host Pointer allocated through hipHostMalloc. More...
 
hipError_t hipHostGetFlags (unsigned int *flagsPtr, void *hostPtr)
 Return flags associated with host pointer. More...
 
hipError_t hipHostRegister (void *hostPtr, size_t sizeBytes, unsigned int flags)
 Register host memory so it can be accessed from the current device. More...
 
hipError_t hipHostUnregister (void *hostPtr)
 Un-register host pointer. More...
 
hipError_t hipMallocPitch (void **ptr, size_t *pitch, size_t width, size_t height)
 
hipError_t hipFree (void *ptr)
 Free memory allocated by the hcc hip memory allocation API. This API performs an implicit hipDeviceSynchronize() call. If pointer is NULL, the hip runtime is initialized and hipSuccess is returned. More...
 
hipError_t hipFreeHost (void *ptr) __attribute__((deprecated("use hipHostFree instead")))
 Free memory allocated by the hcc hip host memory allocation API. [Deprecated]. More...
 
hipError_t hipHostFree (void *ptr)
 Free memory allocated by the hcc hip host memory allocation API This API performs an implicit hipDeviceSynchronize() call. If pointer is NULL, the hip runtime is initialized and hipSuccess is returned. More...
 
hipError_t hipMemcpy (void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind)
 Copy data from src to dst. More...
 
hipError_t hipMemcpyHtoD (hipDeviceptr_t dst, void *src, size_t sizeBytes)
 Copy data from Host to Device. More...
 
hipError_t hipMemcpyDtoH (void *dst, hipDeviceptr_t src, size_t sizeBytes)
 Copy data from Device to Host. More...
 
hipError_t hipMemcpyDtoD (hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes)
 Copy data from Device to Device. More...
 
hipError_t hipMemcpyHtoDAsync (hipDeviceptr_t dst, void *src, size_t sizeBytes, hipStream_t stream)
 Copy data from Host to Device asynchronously. More...
 
hipError_t hipMemcpyDtoHAsync (void *dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream)
 Copy data from Device to Host asynchronously. More...
 
hipError_t hipMemcpyDtoDAsync (hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream)
 Copy data from Device to Device asynchronously. More...
 
hipError_t hipMemcpyToSymbol (const char *symbolName, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind)
 Copies sizeBytes bytes from the memory area pointed to by src to the memory area pointed to by offset bytes from the start of symbol symbol. More...
 
hipError_t hipMemcpyToSymbolAsync (const char *symbolName, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind, hipStream_t stream)
 Copies sizeBytes bytes from the memory area pointed to by src to the memory area pointed to by offset bytes from the start of symbol symbol. More...
 
hipError_t hipMemcpyAsync (void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind, hipStream_t stream)
 Copy data from src to dst asynchronously. More...
 
hipError_t hipMemset (void *dst, int value, size_t sizeBytes)
 Copy data from src to dst asynchronously. More...
 
hipError_t hipMemsetAsync (void *dst, int value, size_t sizeBytes, hipStream_t stream)
 Fills the first sizeBytes bytes of the memory area pointed to by dev with the constant byte value value. More...
 
hipError_t hipMemGetInfo (size_t *free, size_t *total)
 Query memory info. Return snapshot of free memory, and total allocatable memory on the device. More...
 
hipError_t hipDeviceCanAccessPeer (int *canAccessPeer, int deviceId, int peerDeviceId)
 Determine if a device can access a peer's memory. More...
 
hipError_t hipDeviceEnablePeerAccess (int peerDeviceId, unsigned int flags)
 Enable direct access from current device's virtual address space to memory allocations physically located on a peer device. More...
 
hipError_t hipDeviceDisablePeerAccess (int peerDeviceId)
 Disable direct access from current device's virtual address space to memory allocations physically located on a peer device. More...
 
hipError_t hipMemGetAddressRange (hipDeviceptr_t *pbase, size_t *psize, hipDeviceptr_t dptr)
 Get information on memory allocations. More...
 
hipError_t hipMemcpyPeer (void *dst, int dstDeviceId, const void *src, int srcDeviceId, size_t sizeBytes)
 Copies memory from one device to memory on another device. More...
 
hipError_t hipMemcpyPeerAsync (void *dst, int dstDevice, const void *src, int srcDevice, size_t sizeBytes, hipStream_t stream)
 Copies memory from one device to memory on another device. More...
 
hipError_t hipInit (unsigned int flags)
 Explicitly initializes the HIP runtime. More...
 
hipError_t hipCtxCreate (hipCtx_t *ctx, unsigned int flags, hipDevice_t device)
 Create a context and set it as current/ default context. More...
 
hipError_t hipCtxDestroy (hipCtx_t ctx)
 Destroy a HIP context. More...
 
hipError_t hipCtxPopCurrent (hipCtx_t *ctx)
 Pop the current/default context and return the popped context. More...
 
hipError_t hipCtxPushCurrent (hipCtx_t ctx)
 Push the context to be set as current/ default context. More...
 
hipError_t hipCtxSetCurrent (hipCtx_t ctx)
 Set the passed context as current/default. More...
 
hipError_t hipCtxGetCurrent (hipCtx_t *ctx)
 Get the handle of the current/ default context. More...
 
hipError_t hipCtxGetDevice (hipDevice_t *device)
 Get the handle of the device associated with current/default context. More...
 
hipError_t hipCtxGetApiVersion (hipCtx_t ctx, int *apiVersion)
 Returns the approximate HIP api version. More...
 
hipError_t hipCtxGetCacheConfig (hipFuncCache_t *cacheConfig)
 Set Cache configuration for a specific function. More...
 
hipError_t hipCtxSetCacheConfig (hipFuncCache_t cacheConfig)
 Set L1/Shared cache partition. More...
 
hipError_t hipCtxSetSharedMemConfig (hipSharedMemConfig config)
 Set Shared memory bank configuration. More...
 
hipError_t hipCtxGetSharedMemConfig (hipSharedMemConfig *pConfig)
 Get Shared memory bank configuration. More...
 
hipError_t hipCtxSynchronize (void)
 Blocks until the default context has completed all preceding requested tasks. More...
 
hipError_t hipCtxGetFlags (unsigned int *flags)
 Return flags used for creating default context. More...
 
hipError_t hipCtxEnablePeerAccess (hipCtx_t peerCtx, unsigned int flags)
 Enables direct access to memory allocations in a peer context. More...
 
hipError_t hipCtxDisablePeerAccess (hipCtx_t peerCtx)
 Disable direct access from current context's virtual address space to memory allocations physically located on a peer context.Disables direct access to memory allocations in a peer context and unregisters any registered allocations. More...
 
hipError_t hipDeviceGet (hipDevice_t *device, int ordinal)
 Returns a handle to a compute device. More...
 
hipError_t hipDeviceComputeCapability (int *major, int *minor, hipDevice_t device)
 Returns the compute capability of the device. More...
 
hipError_t hipDeviceGetName (char *name, int len, hipDevice_t device)
 Returns an identifer string for the device. More...
 
hipError_t hipDeviceGetPCIBusId (char *pciBusId, int len, int device)
 Returns a PCI Bus Id string for the device, overloaded to take int device ID. More...
 
hipError_t hipDeviceGetByPCIBusId (int *device, const int *pciBusId)
 Returns a handle to a compute device. More...
 
hipError_t hipDeviceTotalMem (size_t *bytes, hipDevice_t device)
 Returns the total amount of memory on the device. More...
 
hipError_t hipDriverGetVersion (int *driverVersion)
 Returns the approximate HIP driver version. More...
 
hipError_t hipRuntimeGetVersion (int *runtimeVersion)
 Returns the approximate HIP Runtime version. More...
 
hipError_t hipModuleLoad (hipModule_t *module, const char *fname)
 Loads code object from file into a hipModule_t. More...
 
hipError_t hipModuleUnload (hipModule_t module)
 Frees the module. More...
 
hipError_t hipModuleGetFunction (hipFunction_t *function, hipModule_t module, const char *kname)
 Function with kname will be extracted if present in module. More...
 
hipError_t hipModuleGetGlobal (hipDeviceptr_t *dptr, size_t *bytes, hipModule_t hmod, const char *name)
 returns device memory pointer and size of the kernel present in the module with symbol name More...
 
hipError_t hipModuleLoadData (hipModule_t *module, const void *image)
 builds module from code object which resides in host memory. Image is pointer to that location. More...
 
hipError_t hipModuleLaunchKernel (hipFunction_t f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, hipStream_t stream, void **kernelParams, void **extra)
 launches kernel f with launch parameters and shared memory on stream with arguments passed to kernelparams or extra More...
 
hipError_t hipProfilerStart ()
 Start recording of profiling information When using this API, start the profiler with profiling disabled. (–startdisabled) More...
 
hipError_t hipProfilerStop ()
 Stop recording of profiling information. When using this API, start the profiler with profiling disabled. (–startdisabled) More...
 
hipError_t hipIpcGetMemHandle (hipIpcMemHandle_t *handle, void *devPtr)
 Gets an interprocess memory handle for an existing device memory allocation. More...
 
hipError_t hipIpcOpenMemHandle (void **devPtr, hipIpcMemHandle_t handle, unsigned int flags)
 Opens an interprocess memory handle exported from another process and returns a device pointer usable in the local process. More...
 
hipError_t hipIpcCloseMemHandle (void *devPtr)
 Close memory mapped with hipIpcOpenMemHandle. More...
 
-

Detailed Description

-

Contains C function APIs for HIP runtime. This file does not use any HCC builtin or special language extensions (-hc mode) ; those functions in hip_runtime.h.

-
- - - - diff --git a/docs/RuntimeAPI/html/hcc__detail_2hip__runtime__api_8h_source.html b/docs/RuntimeAPI/html/hcc__detail_2hip__runtime__api_8h_source.html deleted file mode 100644 index 16efd64a38..0000000000 --- a/docs/RuntimeAPI/html/hcc__detail_2hip__runtime__api_8h_source.html +++ /dev/null @@ -1,718 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc_detail/hip_runtime_api.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_runtime_api.h
-
-
-Go to the documentation of this file.
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 //#pragma once
-
24 #ifndef HIP_RUNTIME_API_H
-
25 #define HIP_RUNTIME_API_H
-
26 
-
31 #include <stdint.h>
-
32 #include <stddef.h>
-
33 
- -
35 #include <hip/hip_runtime_api.h>
-
36 //#include "hip/hip_hcc.h"
-
37 
-
38 #if defined (__HCC__) && (__hcc_workweek__ < 16155)
-
39 #error("This version of HIP requires a newer version of HCC.");
-
40 #endif
-
41 
-
42 #define HIP_LAUNCH_PARAM_BUFFER_POINTER ((void*) 0x01)
-
43 #define HIP_LAUNCH_PARAM_BUFFER_SIZE ((void*) 0x02)
-
44 #define HIP_LAUNCH_PARAM_END ((void*) 0x03)
-
45 
-
46 // Structure definitions:
-
47 #ifdef __cplusplus
-
48 extern "C" {
-
49 #endif
-
50 
-
51 //---
-
52 //API-visible structures
-
53 typedef struct ihipCtx_t *hipCtx_t;
-
54 
-
55 // Note many APIs also use integer deviceIds as an alternative to the device pointer:
-
56 typedef struct ihipDevice_t *hipDevice_t;
-
57 
-
58 typedef struct ihipStream_t *hipStream_t;
-
59 
-
60 //TODO: IPC implementation
-
61 
-
62 #define hipIpcMemLazyEnablePeerAccess 0
-
63 
- -
65 
-
66 //TODO: IPC event handle currently unsupported
-
67 struct ihipIpcEventHandle_t;
-
68 typedef struct ihipIpcEventHandle_t *hipIpcEventHandle_t;
-
69 
-
70 
-
71 //END TODO
-
72 
-
73 typedef struct ihipModule_t *hipModule_t;
-
74 
-
75 typedef struct ihipFunction_t *hipFunction_t;
-
76 
-
77 typedef void* hipDeviceptr_t;
-
78 
-
79 typedef struct ihipEvent_t *hipEvent_t;
-
80 
-
81 enum hipLimit_t
-
82 {
-
83  hipLimitMallocHeapSize = 0x02,
-
84 };
-
85 
-
90 #define hipStreamDefault 0x00
-
92 #define hipStreamNonBlocking 0x01
-
93 
-
94 
-
96 #define hipEventDefault 0x0
-
97 #define hipEventBlockingSync 0x1
-
98 #define hipEventDisableTiming 0x2
-
99 #define hipEventInterprocess 0x4
-
100 
-
101 
-
103 #define hipHostMallocDefault 0x0
-
104 #define hipHostMallocPortable 0x1
-
105 #define hipHostMallocMapped 0x2
-
106 #define hipHostMallocWriteCombined 0x4
-
107 
-
109 #define hipHostRegisterDefault 0x0
-
110 #define hipHostRegisterPortable 0x1
-
111 #define hipHostRegisterMapped 0x2
-
112 #define hipHostRegisterIoMemory 0x4
-
113 
-
114 
-
115 #define hipDeviceScheduleAuto 0x0
-
116 #define hipDeviceScheduleSpin 0x1
-
117 #define hipDeviceScheduleYield 0x2
-
118 #define hipDeviceScheduleBlockingSync 0x4
-
119 #define hipDeviceScheduleMask 0x7
-
120 
-
121 #define hipDeviceMapHost 0x8
-
122 #define hipDeviceLmemResizeToMax 0x16
-
123 
-
124 
-
128 typedef enum hipFuncCache_t {
- - - - - -
134 
-
135 
-
139 typedef enum hipSharedMemConfig {
- - - - -
144 
-
145 
-
146 
-
151 typedef struct dim3 {
-
152  uint32_t x;
-
153  uint32_t y;
-
154  uint32_t z;
-
155 #ifdef __cplusplus
-
156  dim3(uint32_t _x=1, uint32_t _y=1, uint32_t _z=1) : x(_x), y(_y), z(_z) {};
-
157 #endif
-
158 } dim3;
-
159 
-
160 
-
165 typedef enum hipMemcpyKind {
- - - - - -
171 } hipMemcpyKind;
-
172 
-
173 
-
174 
-
175 
-
176 // Doxygen end group GlobalDefs
-
180 //-------------------------------------------------------------------------------------------------
-
181 
-
182 
-
183 // The handle allows the async commands to use the stream even if the parent hipStream_t goes out-of-scope.
-
184 //typedef class ihipStream_t * hipStream_t;
-
185 
-
186 
-
187 /*
-
188  * Opaque structure allows the true event (pointed at by the handle) to remain "live" even if the surrounding hipEvent_t goes out-of-scope.
-
189  * This is handy for cases where the hipEvent_t goes out-of-scope but the true event is being written by some async queue or device */
-
190 //typedef struct hipEvent_t {
-
191 // struct ihipEvent_t *_handle;
-
192 //} hipEvent_t;
-
193 
-
194 
-
195 
-
196 
-
197 
-
198 
-
199 
- -
227 
-
228 
-
229 
- -
241 
-
242 
-
269 hipError_t hipSetDevice(int deviceId);
-
270 
-
271 
-
285 hipError_t hipGetDevice(int *deviceId);
-
286 
-
287 
-
299 hipError_t hipGetDeviceCount(int *count);
-
300 
-
310 hipError_t hipDeviceGetAttribute(int* pi, hipDeviceAttribute_t attr, int deviceId);
-
311 
- -
326 
-
327 
- -
338 
-
339 
- -
350 
-
361 hipError_t hipDeviceGetLimit(size_t *pValue, hipLimit_t limit);
-
362 
-
363 
- -
374 
- -
386 
-
387 
- -
399 
-
419 hipError_t hipSetDeviceFlags ( unsigned flags);
-
420 
-
429 hipError_t hipChooseDevice(int *device, const hipDeviceProp_t* prop);
-
430 
-
431 // end doxygen Device
- -
454 
-
455 
- -
467 
-
468 
-
469 
-
478 const char *hipGetErrorName(hipError_t hip_error);
-
479 
-
480 
-
491 const char *hipGetErrorString(hipError_t hipError);
-
492 
-
493 // end doxygen Error
-
529 hipError_t hipStreamCreate(hipStream_t *stream);
-
530 
-
531 
-
548 hipError_t hipStreamCreateWithFlags(hipStream_t *stream, unsigned int flags);
-
549 
-
550 
-
566 hipError_t hipStreamDestroy(hipStream_t stream);
-
567 
-
568 
-
581 hipError_t hipStreamQuery(hipStream_t stream);
-
582 
-
583 
-
598 hipError_t hipStreamSynchronize(hipStream_t stream);
-
599 
-
600 
-
617 hipError_t hipStreamWaitEvent(hipStream_t stream, hipEvent_t event, unsigned int flags);
-
618 
-
619 
-
620 
-
634 hipError_t hipStreamGetFlags(hipStream_t stream, unsigned int *flags);
-
635 
-
639 typedef void(* hipStreamCallback_t)(hipStream_t stream, hipError_t status, void* userData);
-
640 
-
655 hipError_t hipStreamAddCallback(hipStream_t stream, hipStreamCallback_t callback, void *userData, unsigned int flags);
-
656 
-
657 
-
658 // end doxygen Stream
-
689 hipError_t hipEventCreateWithFlags(hipEvent_t* event, unsigned flags);
-
690 
-
691 
-
701 hipError_t hipEventCreate(hipEvent_t* event);
-
702 
-
703 
-
728 #ifdef __cplusplus
-
729 hipError_t hipEventRecord(hipEvent_t event, hipStream_t stream = NULL);
-
730 #else
-
731 hipError_t hipEventRecord(hipEvent_t event, hipStream_t stream);
-
732 #endif
-
733 
-
747 hipError_t hipEventDestroy(hipEvent_t event);
-
748 
-
749 
-
764 hipError_t hipEventSynchronize(hipEvent_t event);
-
765 
-
766 
-
793 hipError_t hipEventElapsedTime(float *ms, hipEvent_t start, hipEvent_t stop);
-
794 
-
795 
-
808 hipError_t hipEventQuery(hipEvent_t event) ;
-
809 
-
810 
-
811 // end doxygen Events
- -
844 
-
855 hipError_t hipMalloc(void** ptr, size_t size) ;
-
856 
-
867 hipError_t hipMallocHost(void** ptr, size_t size) __attribute__((deprecated("use hipHostMalloc instead"))) ;
-
868 
-
880 hipError_t hipHostMalloc(void** ptr, size_t size, unsigned int flags) ;
-
881 
-
893 hipError_t hipHostAlloc(void** ptr, size_t size, unsigned int flags) __attribute__((deprecated("use hipHostMalloc instead"))) ;
-
894 
-
906 hipError_t hipHostGetDevicePointer(void** devPtr, void* hstPtr, unsigned int flags) ;
-
907 
-
917 hipError_t hipHostGetFlags(unsigned int* flagsPtr, void* hostPtr) ;
-
918 
-
951 hipError_t hipHostRegister(void* hostPtr, size_t sizeBytes, unsigned int flags) ;
-
952 
-
961 hipError_t hipHostUnregister(void* hostPtr) ;
-
962 
-
978 hipError_t hipMallocPitch(void** ptr, size_t* pitch, size_t width, size_t height);
-
979 
-
991 hipError_t hipFree(void* ptr);
-
992 
-
1002 hipError_t hipFreeHost(void* ptr) __attribute__((deprecated("use hipHostFree instead")));
-
1003 
-
1015 hipError_t hipHostFree(void* ptr);
-
1016 
-
1038 hipError_t hipMemcpy(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind);
-
1039 
-
1051 hipError_t hipMemcpyHtoD(hipDeviceptr_t dst, void* src, size_t sizeBytes);
-
1052 
-
1064 hipError_t hipMemcpyDtoH(void* dst, hipDeviceptr_t src, size_t sizeBytes);
-
1065 
-
1077 hipError_t hipMemcpyDtoD(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes);
-
1078 
-
1090 hipError_t hipMemcpyHtoDAsync(hipDeviceptr_t dst, void* src, size_t sizeBytes, hipStream_t stream);
-
1091 
-
1103 hipError_t hipMemcpyDtoHAsync(void* dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream);
-
1104 
-
1116 hipError_t hipMemcpyDtoDAsync(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream);
-
1117 
-
1118 
-
1135 hipError_t hipMemcpyToSymbol(const char* symbolName, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind);
-
1136 
-
1137 
-
1155 hipError_t hipMemcpyToSymbolAsync(const char* symbolName, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind, hipStream_t stream);
-
1156 
-
1157 
-
1158 
-
1181 #if __cplusplus
-
1182 hipError_t hipMemcpyAsync(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind, hipStream_t stream=0);
-
1183 #else
-
1184 hipError_t hipMemcpyAsync(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind, hipStream_t stream);
-
1185 #endif
-
1186 
-
1199 hipError_t hipMemset(void* dst, int value, size_t sizeBytes );
-
1200 
-
1201 
-
1215 #if __cplusplus
-
1216 hipError_t hipMemsetAsync(void* dst, int value, size_t sizeBytes, hipStream_t stream = 0 );
-
1217 #else
-
1218 hipError_t hipMemsetAsync(void* dst, int value, size_t sizeBytes, hipStream_t stream);
-
1219 #endif
-
1220 
-
1229 hipError_t hipMemGetInfo (size_t * free, size_t * total) ;
-
1230 
-
1231 // doxygen end Memory
-
1264 hipError_t hipDeviceCanAccessPeer (int* canAccessPeer, int deviceId, int peerDeviceId);
-
1265 
-
1266 
-
1282 hipError_t hipDeviceEnablePeerAccess (int peerDeviceId, unsigned int flags);
-
1283 
-
1284 
-
1295 hipError_t hipDeviceDisablePeerAccess (int peerDeviceId);
-
1296 
-
1308 hipError_t hipMemGetAddressRange ( hipDeviceptr_t* pbase, size_t* psize, hipDeviceptr_t dptr );
-
1309 
-
1310 #ifndef USE_PEER_NON_UNIFIED
-
1311 #define USE_PEER_NON_UNIFIED 1
-
1312 #endif
-
1313 
-
1314 #if USE_PEER_NON_UNIFIED==1
-
1315 
-
1327 hipError_t hipMemcpyPeer (void* dst, int dstDeviceId, const void* src, int srcDeviceId, size_t sizeBytes);
-
1328 
-
1341 #if __cplusplus
-
1342 hipError_t hipMemcpyPeerAsync ( void* dst, int dstDeviceId, const void* src, int srcDevice, size_t sizeBytes, hipStream_t stream=0 );
-
1343 #else
-
1344 hipError_t hipMemcpyPeerAsync(void* dst, int dstDevice, const void* src, int srcDevice, size_t sizeBytes, hipStream_t stream);
-
1345 #endif
-
1346 #endif
-
1347 
-
1348 
-
1349 // doxygen end PeerToPeer
-
1368 // TODO-ctx - more description on error codes.
-
1369 hipError_t hipInit(unsigned int flags) ;
-
1370 
-
1371 
-
1390 hipError_t hipCtxCreate(hipCtx_t *ctx, unsigned int flags, hipDevice_t device);
-
1391 
-
1401 hipError_t hipCtxDestroy(hipCtx_t ctx);
-
1402 
-
1412 hipError_t hipCtxPopCurrent(hipCtx_t* ctx);
-
1413 
-
1423 hipError_t hipCtxPushCurrent(hipCtx_t ctx);
-
1424 
-
1434 hipError_t hipCtxSetCurrent(hipCtx_t ctx);
-
1435 
-
1445 hipError_t hipCtxGetCurrent(hipCtx_t* ctx);
-
1446 
-
1457 hipError_t hipCtxGetDevice(hipDevice_t *device);
-
1458 
-
1475 hipError_t hipCtxGetApiVersion (hipCtx_t ctx,int *apiVersion);
-
1476 
- -
1489 
- -
1502 
- -
1515 
- -
1528 
-
1538 hipError_t hipCtxSynchronize ( void );
-
1539 
-
1549 hipError_t hipCtxGetFlags ( unsigned int* flags );
-
1550 
-
1567 hipError_t hipCtxEnablePeerAccess (hipCtx_t peerCtx, unsigned int flags);
-
1568 
-
1581 hipError_t hipCtxDisablePeerAccess (hipCtx_t peerCtx);
-
1582 
-
1583 // doxygen end Context Management
-
1595 hipError_t hipDeviceGet(hipDevice_t *device, int ordinal);
-
1596 
-
1605 hipError_t hipDeviceComputeCapability(int *major,int *minor,hipDevice_t device);
-
1606 
-
1615 hipError_t hipDeviceGetName(char *name,int len,hipDevice_t device);
-
1616 
-
1625 hipError_t hipDeviceGetPCIBusId (char *pciBusId,int len,int device);
-
1626 
-
1627 
-
1635 hipError_t hipDeviceGetByPCIBusId ( int* device,const int* pciBusId );
-
1636 
-
1637 
-
1645 hipError_t hipDeviceTotalMem (size_t *bytes,hipDevice_t device);
-
1646 
-
1662 hipError_t hipDriverGetVersion(int *driverVersion) ;
-
1663 
-
1676 hipError_t hipRuntimeGetVersion(int *runtimeVersion) ;
-
1677 
-
1688 hipError_t hipModuleLoad(hipModule_t *module, const char *fname);
-
1689 
-
1700 hipError_t hipModuleUnload(hipModule_t module);
-
1701 
-
1711 hipError_t hipModuleGetFunction(hipFunction_t *function, hipModule_t module, const char *kname);
-
1712 
-
1723 hipError_t hipModuleGetGlobal(hipDeviceptr_t *dptr, size_t *bytes, hipModule_t hmod, const char *name);
-
1724 
-
1725 
-
1734 hipError_t hipModuleLoadData(hipModule_t *module, const void *image);
-
1735 
-
1736 
-
1757 hipError_t hipModuleLaunchKernel(hipFunction_t f,
-
1758  unsigned int gridDimX,
-
1759  unsigned int gridDimY,
-
1760  unsigned int gridDimZ,
-
1761  unsigned int blockDimX,
-
1762  unsigned int blockDimY,
-
1763  unsigned int blockDimZ,
-
1764  unsigned int sharedMemBytes,
-
1765  hipStream_t stream,
-
1766  void **kernelParams,
-
1767  void **extra) ;
-
1768 
-
1769 // doxygen end Version Management
-
1787 // TODO - expand descriptions:
- -
1794 
-
1795 
- -
1802 
-
1803 
-
1808 //TODO: implement IPC apis
-
1809 
-
1835 hipError_t hipIpcGetMemHandle(hipIpcMemHandle_t *handle, void *devPtr);
-
1836 
-
1873 hipError_t hipIpcOpenMemHandle(void **devPtr,
-
1874  hipIpcMemHandle_t handle, unsigned int flags);
-
1875 
-
1894 hipError_t hipIpcCloseMemHandle(void *devPtr);
-
1895 
-
1896 
-
1897 // hipError_t hipIpcGetMemHandle(hipIpcMemHandle_t* handle, void* devPtr);
-
1898 // hipError_t hipIpcCloseMemHandle(void *devPtr);
-
1899 // // hipError_t hipIpcOpenEventHandle(hipEvent_t* event, hipIpcEventHandle_t handle);
-
1900 // hipError_t hipIpcOpenMemHandle(void** devPtr, hipIpcMemHandle_t handle, unsigned int flags);
-
1901 
-
1902 
-
1903 #ifdef __cplusplus
-
1904 } /* extern "c" */
-
1905 #endif
-
1906 
-
1907 #ifdef __cplusplus
-
1908 
-
1916 hipError_t hipDeviceGetPCIBusId (char *pciBusId,int len,hipDevice_t device);
-
1917 #endif
-
1918 
-
1936 // end-group HCC_Specific
-
1943 // doxygen end HIP API
-
1948 #endif
-
hipError_t hipHostFree(void *ptr)
Free memory allocated by the hcc hip host memory allocation API This API performs an implicit hipDevi...
Definition: hip_memory.cpp:967
-
prefer larger L1 cache and smaller shared memory
Definition: hip_runtime_api.h:131
-
hipError_t hipModuleGetFunction(hipFunction_t *function, hipModule_t module, const char *kname)
Function with kname will be extracted if present in module.
Definition: hip_module.cpp:234
-
hipError_t hipCtxDisablePeerAccess(hipCtx_t peerCtx)
Disable direct access from current context's virtual address space to memory allocations physically l...
Definition: hip_peer.cpp:222
-
hipError_t hipDeviceGetByPCIBusId(int *device, const int *pciBusId)
Returns a handle to a compute device.
Definition: hip_device.cpp:376
-
hipError_t hipDeviceGetCacheConfig(hipFuncCache_t *cacheConfig)
Set Cache configuration for a specific function.
Definition: hip_device.cpp:88
-
hipError_t hipMemcpyAsync(void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind, hipStream_t stream)
Copy data from src to dst asynchronously.
Definition: hip_memory.cpp:635
-
hipError_t hipDriverGetVersion(int *driverVersion)
Returns the approximate HIP driver version.
Definition: hip_context.cpp:82
-
hipError_t hipPeekAtLastError(void)
Return last error returned by any HIP runtime API call.
Definition: hip_error.cpp:42
-
Definition: hip_hcc.h:575
-
struct dim3 dim3
-
hipError_t hipDeviceComputeCapability(int *major, int *minor, hipDevice_t device)
Returns the compute capability of the device.
Definition: hip_device.cpp:320
-
hipError_t hipMemGetAddressRange(hipDeviceptr_t *pbase, size_t *psize, hipDeviceptr_t dptr)
Get information on memory allocations.
Definition: hip_memory.cpp:1023
-
TODO-doc.
-
hipError_t hipMallocPitch(void **ptr, size_t *pitch, size_t width, size_t height)
Definition: hip_memory.cpp:233
-
hipError_t hipFuncSetCacheConfig(hipFuncCache_t config)
Set Cache configuration for a specific function.
Definition: hip_device.cpp:115
-
Definition: hip_hcc.h:375
-
hipError_t hipMemcpyToSymbol(const char *symbolName, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind)
Copies sizeBytes bytes from the memory area pointed to by src to the memory area pointed to by offset...
Definition: hip_memory.cpp:432
-
hipError_t hipStreamAddCallback(hipStream_t stream, hipStreamCallback_t callback, void *userData, unsigned int flags)
Adds a callback to be called on the host after all currently enqueued items in the stream have comple...
Definition: hip_stream.cpp:202
-
uint32_t x
x
Definition: hip_runtime_api.h:152
-
Host-to-Device Copy.
Definition: hip_runtime_api.h:167
-
hipError_t hipDeviceEnablePeerAccess(int peerDeviceId, unsigned int flags)
Enable direct access from current device's virtual address space to memory allocations physically loc...
Definition: hip_peer.cpp:194
-
hipError_t hipCtxPopCurrent(hipCtx_t *ctx)
Pop the current/default context and return the popped context.
Definition: hip_context.cpp:132
-
const char * hipGetErrorString(hipError_t hipError)
Return handy text string message to explain the error which occurred.
Definition: hip_error.cpp:57
-
hipError_t hipDeviceGetSharedMemConfig(hipSharedMemConfig *pConfig)
Returns bank width of shared memory for current device.
Definition: hip_device.cpp:133
-
Definition: hip_runtime_api.h:125
-
Device-to-Host Copy.
Definition: hip_runtime_api.h:168
-
prefer equal size L1 cache and shared memory
Definition: hip_runtime_api.h:132
-
hipError_t hipHostGetDevicePointer(void **devPtr, void *hstPtr, unsigned int flags)
Get Device pointer from Host Pointer allocated through hipHostMalloc.
-
hipError_t hipEventSynchronize(hipEvent_t event)
Wait for an event to complete.
Definition: hip_event.cpp:113
-
Definition: hip_hcc.h:383
-
hipError_t hipMemcpyHtoD(hipDeviceptr_t dst, void *src, size_t sizeBytes)
Copy data from Host to Device.
Definition: hip_memory.cpp:521
-
hipError_t hipModuleUnload(hipModule_t module)
Frees the module.
Definition: hip_module.cpp:166
-
hipError_t hipSetDeviceFlags(unsigned flags)
The current device behavior is changed according the flags passed.
-
hipError_t hipEventQuery(hipEvent_t event)
Query event status.
Definition: hip_event.cpp:179
-
hipError_t hipDeviceDisablePeerAccess(int peerDeviceId)
Disable direct access from current device's virtual address space to memory allocations physically lo...
Definition: hip_peer.cpp:186
-
hipError_t hipCtxGetSharedMemConfig(hipSharedMemConfig *pConfig)
Get Shared memory bank configuration.
Definition: hip_context.cpp:247
-
hipError_t hipCtxCreate(hipCtx_t *ctx, unsigned int flags, hipDevice_t device)
Create a context and set it as current/ default context.
Definition: hip_context.cpp:56
-
hipError_t hipCtxSetSharedMemConfig(hipSharedMemConfig config)
Set Shared memory bank configuration.
Definition: hip_context.cpp:238
-
hipError_t hipCtxSetCurrent(hipCtx_t ctx)
Set the passed context as current/default.
Definition: hip_context.cpp:179
-
hipError_t hipMallocHost(void **ptr, size_t size) __attribute__((deprecated("use hipHostMalloc instead")))
Allocate pinned host memory [Deprecated].
Definition: hip_memory.cpp:222
-
hipError_t hipIpcGetMemHandle(hipIpcMemHandle_t *handle, void *devPtr)
Gets an interprocess memory handle for an existing device memory allocation.
Definition: hip_memory.cpp:1042
-
hipError_t hipHostMalloc(void **ptr, size_t size, unsigned int flags)
Allocate device accessible page locked host memory.
Definition: hip_memory.cpp:161
-
Definition: hip_hcc.h:675
-
hipError_t hipModuleLoadData(hipModule_t *module, const void *image)
builds module from code object which resides in host memory. Image is pointer to that location...
Definition: hip_module.cpp:416
-
hipDeviceAttribute_t
Definition: hip_runtime_api.h:222
-
hipError_t hipEventDestroy(hipEvent_t event)
Destroy the specified event.
Definition: hip_event.cpp:100
-
hipError_t hipStreamCreateWithFlags(hipStream_t *stream, unsigned int flags)
Create an asynchronous stream.
Definition: hip_stream.cpp:63
-
hipError_t hipChooseDevice(int *device, const hipDeviceProp_t *prop)
Device which matches hipDeviceProp_t is returned.
Definition: hip_device.cpp:395
-
hipError_t hipCtxSetCacheConfig(hipFuncCache_t cacheConfig)
Set L1/Shared cache partition.
Definition: hip_context.cpp:229
-
hipError_t hipModuleLaunchKernel(hipFunction_t f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, hipStream_t stream, void **kernelParams, void **extra)
launches kernel f with launch parameters and shared memory on stream with arguments passed to kernelp...
-
Definition: hip_runtime_api.h:151
-
uint32_t y
y
Definition: hip_runtime_api.h:153
-
hipError_t hipModuleLoad(hipModule_t *module, const char *fname)
Loads code object from file into a hipModule_t.
Definition: hip_module.cpp:106
-
hipError_t hipEventCreateWithFlags(hipEvent_t *event, unsigned flags)
Create an event with the specified flags.
Definition: hip_event.cpp:54
-
hipError_t hipEventElapsedTime(float *ms, hipEvent_t start, hipEvent_t stop)
Return the elapsed time between two events.
Definition: hip_event.cpp:137
-
hipError_t hipDeviceSetCacheConfig(hipFuncCache_t cacheConfig)
Set L1/Shared cache partition.
Definition: hip_device.cpp:79
-
hipError_t hipDeviceGetLimit(size_t *pValue, hipLimit_t limit)
Get Resource limits of current device.
Definition: hip_device.cpp:101
-
hipError_t hipDeviceCanAccessPeer(int *canAccessPeer, int deviceId, int peerDeviceId)
Determine if a device can access a peer's memory.
Definition: hip_peer.cpp:179
-
hipError_t hipGetDeviceCount(int *count)
Return number of compute-capable devices.
Definition: hip_device.cpp:73
-
hipError_t hipMemset(void *dst, int value, size_t sizeBytes)
Copy data from src to dst asynchronously.
Definition: hip_memory.cpp:854
-
hipError_t hipStreamDestroy(hipStream_t stream)
Destroys the specified stream.
Definition: hip_stream.cpp:157
-
hipError_t hipHostGetFlags(unsigned int *flagsPtr, void *hostPtr)
Return flags associated with host pointer.
Definition: hip_memory.cpp:345
-
hipError_t hipStreamSynchronize(hipStream_t stream)
Wait for all commands in stream to complete.
Definition: hip_stream.cpp:134
-
hipError_t hipIpcOpenMemHandle(void **devPtr, hipIpcMemHandle_t handle, unsigned int flags)
Opens an interprocess memory handle exported from another process and returns a device pointer usable...
Definition: hip_memory.cpp:1068
-
hipError_t hipCtxGetCacheConfig(hipFuncCache_t *cacheConfig)
Set Cache configuration for a specific function.
Definition: hip_context.cpp:220
-
hipError_t hipMemcpyDtoD(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes)
Copy data from Device to Device.
Definition: hip_memory.cpp:563
-
Shared mem is banked at 4-bytes intervals and performs best when adjacent threads access data 4 bytes...
Definition: hip_runtime_api.h:141
-
hipError_t
Definition: hip_runtime_api.h:152
-
no preference for shared memory or L1 (default)
Definition: hip_runtime_api.h:129
-
hipMemcpyKind
Definition: hip_runtime_api.h:165
-
hipError_t hipCtxSynchronize(void)
Blocks until the default context has completed all preceding requested tasks.
Definition: hip_context.cpp:256
-
hipError_t hipCtxGetCurrent(hipCtx_t *ctx)
Get the handle of the current/ default context.
Definition: hip_context.cpp:166
-
hipError_t hipMemcpyDtoHAsync(void *dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream)
Copy data from Device to Host asynchronously.
Definition: hip_memory.cpp:658
-
hipError_t hipDeviceSynchronize(void)
Waits on all active streams on current device.
Definition: hip_device.cpp:153
-
hipError_t hipCtxPushCurrent(hipCtx_t ctx)
Push the context to be set as current/ default context.
Definition: hip_context.cpp:152
-
hipError_t hipMemcpyDtoH(void *dst, hipDeviceptr_t src, size_t sizeBytes)
Copy data from Device to Host.
Definition: hip_memory.cpp:542
-
Definition: hip_hcc.h:404
-
hipError_t hipDeviceGetName(char *name, int len, hipDevice_t device)
Returns an identifer string for the device.
Definition: hip_device.cpp:330
-
hipError_t hipGetDeviceProperties(hipDeviceProp_t *prop, int deviceId)
Returns device properties.
Definition: hip_device.cpp:275
-
hipError_t hipHostRegister(void *hostPtr, size_t sizeBytes, unsigned int flags)
Register host memory so it can be accessed from the current device.
Definition: hip_memory.cpp:369
-
hipError_t hipMalloc(void **ptr, size_t size)
Allocate memory on the default accelerator.
Definition: hip_memory.cpp:105
-
const char * hipGetErrorName(hipError_t hip_error)
Return name of the specified error code in text form.
Definition: hip_error.cpp:50
-
hipFuncCache_t
Definition: hip_runtime_api.h:128
-
hipError_t hipGetLastError(void)
Return last error returned by any HIP runtime API call and resets the stored error code to hipSuccess...
Definition: hip_error.cpp:32
-
hipError_t hipStreamWaitEvent(hipStream_t stream, hipEvent_t event, unsigned int flags)
Make the specified compute stream wait for an event.
Definition: hip_stream.cpp:80
-
hipError_t hipStreamGetFlags(hipStream_t stream, unsigned int *flags)
Return flags associated with this stream.
Definition: hip_stream.cpp:186
-
hipError_t hipHostAlloc(void **ptr, size_t size, unsigned int flags) __attribute__((deprecated("use hipHostMalloc instead")))
Allocate device accessible page locked host memory [Deprecated].
Definition: hip_memory.cpp:227
-
hipError_t hipMemGetInfo(size_t *free, size_t *total)
Query memory info. Return snapshot of free memory, and total allocatable memory on the device...
Definition: hip_memory.cpp:906
-
hipError_t hipCtxGetDevice(hipDevice_t *device)
Get the handle of the device associated with current/default context.
Definition: hip_context.cpp:193
-
hipError_t hipFree(void *ptr)
Free memory allocated by the hcc hip memory allocation API. This API performs an implicit hipDeviceSy...
Definition: hip_memory.cpp:940
-
uint32_t z
z
Definition: hip_runtime_api.h:154
-
hipError_t hipCtxGetApiVersion(hipCtx_t ctx, int *apiVersion)
Returns the approximate HIP api version.
Definition: hip_context.cpp:209
-
hipError_t hipDeviceReset(void)
The state of current device is discarded and updated to a fresh state.
Definition: hip_device.cpp:159
-
hipError_t hipInit(unsigned int flags)
Explicitly initializes the HIP runtime.
Definition: hip_context.cpp:42
-
hipError_t hipRuntimeGetVersion(int *runtimeVersion)
Returns the approximate HIP Runtime version.
Definition: hip_context.cpp:96
-
hipError_t hipMemcpyDtoDAsync(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream)
Copy data from Device to Device asynchronously.
Definition: hip_memory.cpp:651
-
Definition: hip_runtime_api.h:82
-
hipError_t hipSetDevice(int deviceId)
Set default device to be used for subsequent hip API calls from this thread.
Definition: hip_device.cpp:142
-
hipError_t hipDeviceGet(hipDevice_t *device, int ordinal)
Returns a handle to a compute device.
Definition: hip_context.cpp:68
-
hipError_t hipDeviceTotalMem(size_t *bytes, hipDevice_t device)
Returns the total amount of memory on the device.
Definition: hip_device.cpp:368
-
hipError_t hipMemsetAsync(void *dst, int value, size_t sizeBytes, hipStream_t stream)
Fills the first sizeBytes bytes of the memory area pointed to by dev with the constant byte value val...
Definition: hip_memory.cpp:805
-
The compiler selects a device-specific value for the banking.
Definition: hip_runtime_api.h:140
-
hipError_t hipCtxGetFlags(unsigned int *flags)
Return flags used for creating default context.
Definition: hip_context.cpp:262
-
Device-to-Device Copy.
Definition: hip_runtime_api.h:169
-
hipError_t hipCtxDestroy(hipCtx_t ctx)
Destroy a HIP context.
Definition: hip_context.cpp:110
-
Definition: hip_hcc.h:558
-
hipError_t hipMemcpyPeerAsync(void *dst, int dstDevice, const void *src, int srcDevice, size_t sizeBytes, hipStream_t stream)
Copies memory from one device to memory on another device.
Definition: hip_peer.cpp:209
-
Runtime will automatically determine copy-kind based on virtual addresses.
Definition: hip_runtime_api.h:170
-
hipSharedMemConfig
Definition: hip_runtime_api.h:139
-
hipError_t hipDeviceGetAttribute(int *pi, hipDeviceAttribute_t attr, int deviceId)
Query for a specific device attribute.
Definition: hip_device.cpp:249
-
hipError_t hipMemcpyHtoDAsync(hipDeviceptr_t dst, void *src, size_t sizeBytes, hipStream_t stream)
Copy data from Host to Device asynchronously.
Definition: hip_memory.cpp:644
-
hipError_t hipHostUnregister(void *hostPtr)
Un-register host pointer.
Definition: hip_memory.cpp:414
-
Definition: hip_hcc.h:463
-
hipError_t hipMemcpyPeer(void *dst, int dstDeviceId, const void *src, int srcDeviceId, size_t sizeBytes)
Copies memory from one device to memory on another device.
Definition: hip_peer.cpp:202
-
hipError_t hipStreamCreate(hipStream_t *stream)
Create an asynchronous stream.
Definition: hip_stream.cpp:72
-
hipError_t hipMemcpy(void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind)
Copy data from src to dst.
Definition: hip_memory.cpp:500
-
hipError_t hipEventCreate(hipEvent_t *event)
Definition: hip_event.cpp:61
-
hipError_t hipFreeHost(void *ptr) __attribute__((deprecated("use hipHostFree instead")))
Free memory allocated by the hcc hip host memory allocation API. [Deprecated].
Definition: hip_memory.cpp:994
-
void(* hipStreamCallback_t)(hipStream_t stream, hipError_t status, void *userData)
Definition: hip_runtime_api.h:639
-
hipError_t hipCtxEnablePeerAccess(hipCtx_t peerCtx, unsigned int flags)
Enables direct access to memory allocations in a peer context.
Definition: hip_peer.cpp:215
-
hipError_t hipDeviceSetSharedMemConfig(hipSharedMemConfig config)
The bank width of shared memory on current device is set.
Definition: hip_device.cpp:124
-
hipError_t hipMemcpyToSymbolAsync(const char *symbolName, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind, hipStream_t stream)
Copies sizeBytes bytes from the memory area pointed to by src to the memory area pointed to by offset...
Definition: hip_memory.cpp:460
-
hipError_t hipGetDevice(int *deviceId)
Return the default device id for the calling host thread.
Definition: hip_device.cpp:32
-
hipError_t hipEventRecord(hipEvent_t event, hipStream_t stream)
Record an event in the specified stream.
Definition: hip_event.cpp:68
-
hipError_t hipModuleGetGlobal(hipDeviceptr_t *dptr, size_t *bytes, hipModule_t hmod, const char *name)
returns device memory pointer and size of the kernel present in the module with symbol name ...
Definition: hip_module.cpp:395
-
Host-to-Host Copy.
Definition: hip_runtime_api.h:166
-
hipError_t hipDeviceGetPCIBusId(char *pciBusId, int len, int device)
Returns a PCI Bus Id string for the device, overloaded to take int device ID.
Definition: hip_device.cpp:356
-
prefer larger shared memory and smaller L1 cache
Definition: hip_runtime_api.h:130
-
hipError_t hipPointerGetAttributes(hipPointerAttribute_t *attributes, void *ptr)
Return attributes for the specified pointer.
Definition: hip_memory.cpp:38
-
hipError_t hipStreamQuery(hipStream_t stream)
Return hipSuccess if all of the operations in the specified stream have completed, or hipErrorNotReady if not.
Definition: hip_stream.cpp:113
-
Shared mem is banked at 8-byte intervals and performs best when adjacent threads access data 4 bytes ...
Definition: hip_runtime_api.h:142
-
hipError_t hipIpcCloseMemHandle(void *devPtr)
Close memory mapped with hipIpcOpenMemHandle.
Definition: hip_memory.cpp:1087
-
hipError_t hipProfilerStop()
Stop recording of profiling information. When using this API, start the profiler with profiling disab...
Definition: hip_hcc.cpp:1942
-
hipError_t hipProfilerStart()
Start recording of profiling information When using this API, start the profiler with profiling disab...
Definition: hip_hcc.cpp:1931
-
- - - - diff --git a/docs/RuntimeAPI/html/hcc__detail_2hip__texture_8h.html b/docs/RuntimeAPI/html/hcc__detail_2hip__texture_8h.html deleted file mode 100644 index 5aa672dda3..0000000000 --- a/docs/RuntimeAPI/html/hcc__detail_2hip__texture_8h.html +++ /dev/null @@ -1,560 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc_detail/hip_texture.h File Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
- -
-
hip_texture.h File Reference
-
-
- -

HIP C++ Texture API for hcc compiler. -More...

-
#include <limits.h>
-
-

Go to the source code of this file.

- - - - - - - - -

-Classes

struct  hipChannelFormatDesc
 
struct  textureReference
 
struct  hipArray
 
- - - - - - - -

-Macros

-#define hipTextureType1D   1
 
-#define tex1Dfetch(_tex, _addr)   (_tex._dataPtr[_addr])
 
-#define tex2D(_tex, _dx, _dy)   _tex._dataPtr[(unsigned int)_dx + (unsigned int)_dy*(_tex.width)]
 
- - - - - - - -

-Typedefs

-typedef struct hipChannelFormatDesc hipChannelFormatDesc
 
-typedef enum hipTextureReadMode hipTextureReadMode
 
-typedef enum hipTextureFilterMode hipTextureFilterMode
 
- - - - - - - -

-Enumerations

enum  hipChannelFormatKind { hipChannelFormatKindSigned = 0, -hipChannelFormatKindUnsigned, -hipChannelFormatKindFloat, -hipChannelFormatKindNone - }
 
enum  hipTextureReadMode { hipReadModeElementType - }
 
enum  hipTextureFilterMode { hipFilterModePoint - }
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

hipError_t hipMallocArray (hipArray **array, const hipChannelFormatDesc *desc, size_t width, size_t height=0, unsigned int flags=0)
 Allocate an array on the device. More...
 
hipError_t hipFreeArray (hipArray *array)
 Frees an array on the device. More...
 
hipError_t hipMemcpy2D (void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind)
 Copies data between host and device. More...
 
hipError_t hipMemcpy2DToArray (hipArray *dst, size_t wOffset, size_t hOffset, const void *src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind)
 Copies data between host and device. More...
 
hipError_t hipMemcpyToArray (hipArray *dst, size_t wOffset, size_t hOffset, const void *src, size_t count, hipMemcpyKind kind)
 Copies data between host and device. More...
 
hipChannelFormatDesc hipCreateChannelDesc (int x, int y, int z, int w, hipChannelFormatKind f)
 Returns a channel descriptor using the specified format. More...
 
-template<typename T >
hipChannelFormatDesc hipCreateChannelDesc ()
 
-template<>
hipChannelFormatDesc hipCreateChannelDesc< int > ()
 
-template<>
hipChannelFormatDesc hipCreateChannelDesc< unsigned int > ()
 
-template<>
hipChannelFormatDesc hipCreateChannelDesc< long > ()
 
-template<>
hipChannelFormatDesc hipCreateChannelDesc< unsigned long > ()
 
-template<>
hipChannelFormatDesc hipCreateChannelDesc< float > ()
 
-template<class T , int dim, enum hipTextureReadMode readMode>
hipError_t hipBindTexture (size_t *offset, struct texture< T, dim, readMode > &tex, const void *devPtr, const struct hipChannelFormatDesc *desc, size_t size=UINT_MAX)
 
-template<class T , int dim, enum hipTextureReadMode readMode>
hipError_t hipBindTexture (size_t *offset, struct texture< T, dim, readMode > &tex, const void *devPtr, size_t size=UINT_MAX)
 
-template<class T , int dim, enum hipTextureReadMode readMode>
hipError_t hipBindTextureToArray (struct texture< T, dim, readMode > &tex, hipArray *array)
 
-template<class T , int dim, enum hipTextureReadMode readMode>
hipError_t hipUnbindTexture (struct texture< T, dim, readMode > &tex)
 
-

Detailed Description

-

HIP C++ Texture API for hcc compiler.

-

Enumeration Type Documentation

- -
-
- - - - -
enum hipTextureFilterMode
-
- - -
Enumerator
hipFilterModePoint  -

Point filter mode.

-
- -
-
- -
-
- - - - -
enum hipTextureReadMode
-
- - -
Enumerator
hipReadModeElementType  -

Read texture as specified element type

-
- -
-
-

Function Documentation

- -
-
- - - - - - - - -
hipError_t hipFreeArray (hipArrayarray)
-
- -

Frees an array on the device.

-
Parameters
- - -
[in]arrayPointer to array to free
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, hipErrorInitializationError
-
See Also
hipMalloc, hipMallocPitch, hipFree, hipMallocArray, hipHostMalloc, hipHostFree
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMallocArray (hipArray ** array,
const hipChannelFormatDescdesc,
size_t width,
size_t height = 0,
unsigned int flags = 0 
)
-
- -

Allocate an array on the device.

-
Parameters
- - - - - - -
[out]arrayPointer to allocated array in device memory
[in]descRequested channel format
[in]widthRequested array allocation width
[in]heightRequested array allocation height
[in]flagsRequested properties of allocated array
-
-
-
Returns
hipSuccess, hipErrorMemoryAllocation
-
See Also
hipMalloc, hipMallocPitch, hipFree, hipFreeArray, hipHostMalloc, hipHostFree
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemcpy2D (void * dst,
size_t dpitch,
const void * src,
size_t spitch,
size_t width,
size_t height,
hipMemcpyKind kind 
)
-
- -

Copies data between host and device.

-
Parameters
- - - - - - - - -
[in]dstDestination memory address
[in]dpitchPitch of destination memory
[in]srcSource memory address
[in]spitchPitch of source memory
[in]widthWidth of matrix transfer (columns in bytes)
[in]heightHeight of matrix transfer (rows)
[in]kindType of transfer
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection
-
See Also
hipMemcpy, hipMemcpyToArray, hipMemcpy2DToArray, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemcpy2DToArray (hipArraydst,
size_t wOffset,
size_t hOffset,
const void * src,
size_t spitch,
size_t width,
size_t height,
hipMemcpyKind kind 
)
-
- -

Copies data between host and device.

-
Parameters
- - - - - - - - -
[in]dstDestination memory address
[in]dpitchPitch of destination memory
[in]srcSource memory address
[in]spitchPitch of source memory
[in]widthWidth of matrix transfer (columns in bytes)
[in]heightHeight of matrix transfer (rows)
[in]kindType of transfer
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection
-
See Also
hipMemcpy, hipMemcpyToArray, hipMemcpy2D, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hipError_t hipMemcpyToArray (hipArraydst,
size_t wOffset,
size_t hOffset,
const void * src,
size_t count,
hipMemcpyKind kind 
)
-
- -

Copies data between host and device.

-
Parameters
- - - - - - - - -
[in]dstDestination memory address
[in]dpitchPitch of destination memory
[in]srcSource memory address
[in]spitchPitch of source memory
[in]widthWidth of matrix transfer (columns in bytes)
[in]heightHeight of matrix transfer (rows)
[in]kindType of transfer
-
-
-
Returns
hipSuccess, hipErrorInvalidValue, #hipErrorInvalidPitchValue, hipErrorInvalidDevicePointer, hipErrorInvalidMemcpyDirection
-
See Also
hipMemcpy, hipMemcpy2DToArray, hipMemcpy2D, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync
- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/hcc__detail_2hip__texture_8h_source.html b/docs/RuntimeAPI/html/hcc__detail_2hip__texture_8h_source.html deleted file mode 100644 index 17dbbe2e7e..0000000000 --- a/docs/RuntimeAPI/html/hcc__detail_2hip__texture_8h_source.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc_detail/hip_texture.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_texture.h
-
-
-Go to the documentation of this file.
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 //#pragma once
-
24 
-
25 #ifndef HIP_HCC_DETAIL_TEXTURE_H
-
26 #define HIP_HCC_DETAIL_TEXTURE_H
-
27 
-
33 #include <limits.h>
-
34 
-
35 //#include <hip/hcc_detail/hip_runtime.h>
-
36 
-
37 //----
-
38 //Texture - TODO - likely need to move this to a separate file only included with kernel compilation.
-
39 #define hipTextureType1D 1
-
40 
-
41 typedef enum {
-
42  hipChannelFormatKindSigned = 0,
-
43  hipChannelFormatKindUnsigned,
-
44  hipChannelFormatKindFloat,
-
45  hipChannelFormatKindNone
-
46 
-
47 } hipChannelFormatKind;
-
48 
-
49 typedef struct hipChannelFormatDesc {
-
50  int x;
-
51  int y;
-
52  int z;
-
53  int w;
-
54  hipChannelFormatKind f;
- -
56 
-
57 typedef enum hipTextureReadMode
-
58 {
- - -
62 
- -
64 {
- - -
68 
- -
70  hipTextureFilterMode filterMode;
-
71  bool normalized;
-
72  hipChannelFormatDesc channelDesc;
-
73 };
-
74 #if __cplusplus
-
75 template <class T, int texType=hipTextureType1D, enum hipTextureReadMode=hipReadModeElementType>
-
76 struct texture : public textureReference {
-
77 
-
78  const T * _dataPtr; // pointer to underlying data.
-
79 
-
80  //texture() : filterMode(hipFilterModePoint), normalized(false), _dataPtr(NULL) {};
-
81  unsigned int width;
-
82  unsigned int height;
-
83 
-
84 };
-
85 #endif
-
86 
-
87 typedef struct {
-
88  unsigned int width;
-
89  unsigned int height;
-
90  hipChannelFormatKind f;
-
91  void* data; //FIXME: generalize this
-
92 } hipArray;
-
93 
-
94 
-
95 #define tex1Dfetch(_tex, _addr) (_tex._dataPtr[_addr])
-
96 
-
97 #define tex2D(_tex, _dx, _dy) \
-
98  _tex._dataPtr[(unsigned int)_dx + (unsigned int)_dy*(_tex.width)]
-
99 
- -
113  size_t width, size_t height = 0, unsigned int flags = 0);
-
114 
- -
124 
-
139 hipError_t hipMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind);
-
140 
-
155 hipError_t hipMemcpy2DToArray(hipArray* dst, size_t wOffset, size_t hOffset, const void* src,
-
156  size_t spitch, size_t width, size_t height, hipMemcpyKind kind);
-
157 
-
172 hipError_t hipMemcpyToArray(hipArray* dst, size_t wOffset, size_t hOffset,
-
173  const void* src, size_t count, hipMemcpyKind kind);
-
174 
-
175 
-
183 // These are C++ APIs - maybe belong in separate file.
-
207 // C API:
-
208 #if 0
-
209 hipChannelFormatDesc hipBindTexture(size_t *offset, struct textureReference *tex, const void *devPtr, const struct hipChannelFormatDesc *desc, size_t size=UINT_MAX)
-
210 {
-
211  tex->_dataPtr = devPtr;
-
212 }
-
213 #endif
-
214 
-
226 hipChannelFormatDesc hipCreateChannelDesc(int x, int y, int z, int w, hipChannelFormatKind f);
-
227 
-
228 // descriptors
-
229 template <typename T> inline hipChannelFormatDesc hipCreateChannelDesc() {
-
230  return hipCreateChannelDesc(0, 0, 0, 0, hipChannelFormatKindNone);
-
231 }
-
232 template <> inline hipChannelFormatDesc hipCreateChannelDesc<int>() {
-
233  int e = (int)sizeof(int) * 8;
-
234  return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned);
-
235 }
-
236 template <> inline hipChannelFormatDesc hipCreateChannelDesc<unsigned int>() {
-
237  int e = (int)sizeof(unsigned int) * 8;
-
238  return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned);
-
239 }
-
240 template <> inline hipChannelFormatDesc hipCreateChannelDesc<long>() {
-
241  int e = (int)sizeof(long) * 8;
-
242  return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned);
-
243 }
-
244 template <> inline hipChannelFormatDesc hipCreateChannelDesc<unsigned long>() {
-
245  int e = (int)sizeof(unsigned long) * 8;
-
246  return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned);
-
247 }
-
248 template <> inline hipChannelFormatDesc hipCreateChannelDesc<float>() {
-
249  int e = (int)sizeof(float) * 8;
-
250  return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindFloat);
-
251 }
-
252 
-
253 /*
-
254  * @brief hipBindTexture Binds size bytes of the memory area pointed to by @p devPtr to the texture reference tex.
-
255  *
-
256  * @p desc describes how the memory is interpreted when fetching values from the texture. The @p offset parameter is an optional byte offset as with the low-level
-
257  * hipBindTexture() function. Any memory previously bound to tex is unbound.
-
258  *
-
259  * @param[in] offset - Offset in bytes
-
260  * @param[out] tex - texture to bind
-
261  * @param[in] devPtr - Memory area on device
-
262  * @param[in] desc - Channel format
-
263  * @param[in] size - Size of the memory area pointed to by devPtr
-
264  * @return #hipSuccess, #hipErrorInvalidValue, #hipErrorMemoryFree, #hipErrorUnknown
-
265  **/
-
266 template <class T, int dim, enum hipTextureReadMode readMode>
-
267 hipError_t hipBindTexture(size_t *offset,
-
268  struct texture<T, dim, readMode> &tex,
-
269  const void *devPtr,
-
270  const struct hipChannelFormatDesc *desc,
-
271  size_t size=UINT_MAX)
-
272 {
-
273  tex._dataPtr = static_cast<const T*>(devPtr);
-
274 
-
275  return hipSuccess;
-
276 }
-
277 
-
278 /*
-
279  * @brief hipBindTexture Binds size bytes of the memory area pointed to by @p devPtr to the texture reference tex.
-
280  *
-
281  * @p desc describes how the memory is interpreted when fetching values from the texture. The @p offset parameter is an optional byte offset as with the low-level
-
282  * hipBindTexture() function. Any memory previously bound to tex is unbound.
-
283  *
-
284  * @param[in] offset - Offset in bytes
-
285  * @param[in] tex - texture to bind
-
286  * @param[in] devPtr - Memory area on device
-
287  * @param[in] size - Size of the memory area pointed to by devPtr
-
288  * @return #hipSuccess, #hipErrorInvalidValue, #hipErrorMemoryFree, #hipErrorUnknown
-
289  **/
-
290 template <class T, int dim, enum hipTextureReadMode readMode>
-
291 hipError_t hipBindTexture(size_t *offset,
-
292  struct texture<T, dim, readMode> &tex,
-
293  const void *devPtr,
-
294  size_t size=UINT_MAX)
-
295 {
-
296  return hipBindTexture(offset, tex, devPtr, &tex.channelDesc, size);
-
297 }
-
298 
-
299 template <class T, int dim, enum hipTextureReadMode readMode>
-
300 hipError_t hipBindTextureToArray(struct texture<T, dim, readMode> &tex, hipArray* array) {
-
301  tex.width = array->width;
-
302  tex.height = array->height;
-
303  tex._dataPtr = static_cast<const T*>(array->data);
-
304  return hipSuccess;
-
305 }
-
306 
-
307 /*
-
308  * @brief Unbinds the textuer bound to @p tex
-
309  *
-
310  * @param[in] tex - texture to unbind
-
311  *
-
312  * @return #hipSuccess
-
313  **/
-
314 template <class T, int dim, enum hipTextureReadMode readMode>
-
315 hipError_t hipUnbindTexture(struct texture<T, dim, readMode> &tex)
-
316 {
-
317  tex._dataPtr = NULL;
-
318 
-
319  return hipSuccess;
-
320 }
-
321 
-
322 
-
323 
-
324 // doxygen end Texture
-
330 // End doxygen API:
-
335 #endif
-
336 
-
hipError_t hipFreeArray(hipArray *array)
Frees an array on the device.
Definition: hip_memory.cpp:999
-
hipChannelFormatDesc hipCreateChannelDesc(int x, int y, int z, int w, hipChannelFormatKind f)
Returns a channel descriptor using the specified format.
Definition: hip_memory.cpp:276
-
Successful completion.
Definition: hip_runtime_api.h:153
-
hipError_t hipMemcpy2DToArray(hipArray *dst, size_t wOffset, size_t hOffset, const void *src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind)
Copies data between host and device.
Definition: hip_memory.cpp:692
-
hipTextureFilterMode
Definition: hip_texture.h:63
-
Definition: hip_texture.h:59
-
Definition: hip_texture.h:69
-
Definition: hip_texture.h:87
-
hipError_t
Definition: hip_runtime_api.h:152
-
hipError_t hipMemcpyToArray(hipArray *dst, size_t wOffset, size_t hOffset, const void *src, size_t count, hipMemcpyKind kind)
Copies data between host and device.
Definition: hip_memory.cpp:745
-
hipMemcpyKind
Definition: hip_runtime_api.h:165
-
Definition: hip_texture.h:65
-
Definition: hip_texture.h:49
-
hipTextureReadMode
Definition: hip_texture.h:57
-
hipError_t hipMemcpy2D(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind)
Copies data between host and device.
Definition: hip_memory.cpp:666
-
hipError_t hipMallocArray(hipArray **array, const hipChannelFormatDesc *desc, size_t width, size_t height=0, unsigned int flags=0)
Allocate an array on the device.
Definition: hip_memory.cpp:284
-
- - - - diff --git a/docs/RuntimeAPI/html/hcc__detail_2hip__vector__types_8h.html b/docs/RuntimeAPI/html/hcc__detail_2hip__vector__types_8h.html deleted file mode 100644 index 80b9f0458f..0000000000 --- a/docs/RuntimeAPI/html/hcc__detail_2hip__vector__types_8h.html +++ /dev/null @@ -1,431 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc_detail/hip_vector_types.h File Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
- -
-
hip_vector_types.h File Reference
-
-
- -

Defines the different newt vector types for HIP runtime. -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Classes

struct  char3
 
struct  uchar3
 
struct  char4
 
struct  uchar4
 
struct  short3
 
struct  ushort3
 
struct  int3
 
struct  uint3
 
struct  long3
 
struct  ulong3
 
struct  float1
 
struct  float3
 
struct  longlong3
 
struct  ulonglong3
 
struct  double1
 
struct  double3
 
- - - - - -

-Macros

#define __hip_align(name, val, data)
 
-#define __HIP_DEVICE__   __device__ __host__
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

-struct __hip_align (char1, 1, signed char x;)
 
-struct __hip_align (uchar1, 1, unsigned char x;)
 
-struct __hip_align (char2, 2, signed char x;signed char y;)
 
-struct __hip_align (uchar2, 2, unsigned char x;unsigned char y;)
 
-struct __hip_align (short1, 2, signed short x;)
 
-struct __hip_align (ushort1, 2, unsigned short x;)
 
-struct __hip_align (short2, 4, signed short x;signed short y;)
 
-struct __hip_align (ushort2, 4, unsigned short x;unsigned short y;)
 
-struct __hip_align (short4, 8, signed short x;signed short y;signed short z;signed short w;)
 
-struct __hip_align (ushort4, 8, unsigned short x;unsigned short y;unsigned short z;unsigned short w;)
 
-struct __hip_align (int1, 4, signed int x;)
 
-struct __hip_align (uint1, 4, unsigned int x;)
 
-struct __hip_align (int2, 8, signed int x;signed int y;)
 
-struct __hip_align (uint2, 8, unsigned int x;unsigned int y;)
 
-struct __hip_align (int4, 16, signed int x;signed int y;signed int z;signed int w;)
 
-struct __hip_align (uint4, 16, unsigned int x;unsigned int y;unsigned int z;unsigned int w;)
 
-struct __hip_align (long1, 8, long int x;)
 
-struct __hip_align (ulong1, 8, unsigned long x;)
 
-struct __hip_align (long2, 16, long int x;long int y;)
 
-struct __hip_align (ulong2, 16, unsigned long x;unsigned long y;)
 
-struct __hip_align (long4, 32, long int x;long int y;long int z;long int w;)
 
-struct __hip_align (ulong4, 32, unsigned long x;unsigned long y;unsigned long z;unsigned long w;)
 
-struct __hip_align (float2, 8, float x;float y;)
 
-struct __hip_align (float4, 16, float x;float y;float z;float w;)
 
-struct __hip_align (longlong1, 16, long long int x;)
 
-struct __hip_align (ulonglong1, 16, unsigned long long int x;)
 
-struct __attribute__ ((aligned(32))) longlong2
 
-struct __attribute__ ((aligned(64))) longlong4
 
-struct __attribute__ ((aligned(16))) double2
 
-__HIP_DEVICE__ char1 make_char1 (signed char)
 
-__HIP_DEVICE__ char2 make_char2 (signed char, signed char)
 
-__HIP_DEVICE__ char3 make_char3 (signed char, signed char, signed char)
 
-__HIP_DEVICE__ char4 make_char4 (signed char, signed char, signed char, signed char)
 
-__HIP_DEVICE__ short1 make_short1 (short)
 
-__HIP_DEVICE__ short2 make_short2 (short, short)
 
-__HIP_DEVICE__ short3 make_short3 (short, short, short)
 
-__HIP_DEVICE__ short4 make_short4 (short, short, short, short)
 
-__HIP_DEVICE__ int1 make_int1 (int)
 
-__HIP_DEVICE__ int2 make_int2 (int, int)
 
-__HIP_DEVICE__ int3 make_int3 (int, int, int)
 
-__HIP_DEVICE__ int4 make_int4 (int, int, int, int)
 
-__HIP_DEVICE__ long1 make_long1 (long)
 
-__HIP_DEVICE__ long2 make_long2 (long, long)
 
-__HIP_DEVICE__ long3 make_long3 (long, long, long)
 
-__HIP_DEVICE__ long4 make_long4 (long, long, long, long)
 
-__HIP_DEVICE__ longlong1 make_longlong1 (long long)
 
-__HIP_DEVICE__ longlong2 make_longlong2 (long long, long long)
 
-__HIP_DEVICE__ longlong3 make_longlong3 (long long, long long, long long)
 
-__HIP_DEVICE__ longlong4 make_longlong4 (long long, long long, long long, long long)
 
-__HIP_DEVICE__ uchar1 make_uchar1 (unsigned char)
 
-__HIP_DEVICE__ uchar2 make_uchar2 (unsigned char, unsigned char)
 
-__HIP_DEVICE__ uchar3 make_uchar3 (unsigned char, unsigned char, unsigned char)
 
-__HIP_DEVICE__ uchar4 make_uchar4 (unsigned char, unsigned char, unsigned char, unsigned char)
 
-__HIP_DEVICE__ ushort1 make_ushort1 (unsigned short)
 
-__HIP_DEVICE__ ushort2 make_ushort2 (unsigned short, unsigned short)
 
-__HIP_DEVICE__ ushort3 make_ushort3 (unsigned short, unsigned short, unsigned short)
 
-__HIP_DEVICE__ ushort4 make_ushort4 (unsigned short, unsigned short, unsigned short, unsigned short)
 
-__HIP_DEVICE__ uint1 make_uint1 (unsigned int)
 
-__HIP_DEVICE__ uint2 make_uint2 (unsigned int, unsigned int)
 
-__HIP_DEVICE__ uint3 make_uint3 (unsigned int, unsigned int, unsigned int)
 
-__HIP_DEVICE__ uint4 make_uint4 (unsigned int, unsigned int, unsigned int, unsigned int)
 
-__HIP_DEVICE__ ulong1 make_ulong1 (unsigned long)
 
-__HIP_DEVICE__ ulong2 make_ulong2 (unsigned long, unsigned long)
 
-__HIP_DEVICE__ ulong3 make_ulong3 (unsigned long, unsigned long, unsigned long)
 
-__HIP_DEVICE__ ulong4 make_ulong4 (unsigned long, unsigned long, unsigned long, unsigned long)
 
-__HIP_DEVICE__ ulonglong1 make_ulonglong1 (unsigned long long)
 
-__HIP_DEVICE__ ulonglong2 make_ulonglong2 (unsigned long long, unsigned long long)
 
-__HIP_DEVICE__ ulonglong3 make_ulonglong3 (unsigned long long, unsigned long long, unsigned long long)
 
-__HIP_DEVICE__ ulonglong4 make_ulonglong4 (unsigned long long, unsigned long long, unsigned long long, unsigned long long)
 
-__HIP_DEVICE__ float1 make_float1 (float)
 
-__HIP_DEVICE__ float2 make_float2 (float, float)
 
-__HIP_DEVICE__ float3 make_float3 (float, float, float)
 
-__HIP_DEVICE__ float4 make_float4 (float, float, float, float)
 
-__HIP_DEVICE__ double1 make_double1 (double)
 
-__HIP_DEVICE__ double2 make_double2 (double, double)
 
-__HIP_DEVICE__ double3 make_double3 (double, double, double)
 
-__HIP_DEVICE__ double4 make_double4 (double, double, double, double)
 
-__HIP_DEVICE__ double __longlong_as_double (long long int x)
 
-__HIP_DEVICE__ long long int __double_as_longlong (double x)
 
-

Detailed Description

-

Defines the different newt vector types for HIP runtime.

-

Macro Definition Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define __hip_align( name,
 val,
 data 
)
-
-Value:
__attribute__((aligned(val))) name \
-
{ data }
-
-
-
-
- - - - diff --git a/docs/RuntimeAPI/html/hcc__detail_2hip__vector__types_8h_source.html b/docs/RuntimeAPI/html/hcc__detail_2hip__vector__types_8h_source.html deleted file mode 100644 index 94a8896392..0000000000 --- a/docs/RuntimeAPI/html/hcc__detail_2hip__vector__types_8h_source.html +++ /dev/null @@ -1,547 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc_detail/hip_vector_types.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_vector_types.h
-
-
-Go to the documentation of this file.
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
28 #ifndef HIP_VECTOR_TYPES_H
-
29 #define HIP_VECTOR_TYPES_H
-
30 
-
31 #if defined (__HCC__) && (__hcc_workweek__ < 16032)
-
32 #error("This version of HIP requires a newer version of HCC.");
-
33 #endif
-
34 
-
35 #if 0
-
36 #include <hc_short_vector.hpp>
-
37 
-
38 using namespace hc::short_vector;
-
39 
-
40 
-
41 //-- Signed
-
42 // Define char vector types
-
43 typedef hc::short_vector::char1 char1;
-
44 typedef hc::short_vector::char2 char2;
-
45 typedef hc::short_vector::char3 char3;
-
46 typedef hc::short_vector::char4 char4;
-
47 
-
48 // Define short vector types
-
49 typedef hc::short_vector::short1 short1;
-
50 typedef hc::short_vector::short2 short2;
-
51 typedef hc::short_vector::short3 short3;
-
52 typedef hc::short_vector::short4 short4;
-
53 
-
54 // Define int vector types
-
55 typedef hc::short_vector::int1 int1;
-
56 typedef hc::short_vector::int2 int2;
-
57 typedef hc::short_vector::int3 int3;
-
58 typedef hc::short_vector::int4 int4;
-
59 
-
60 // Define long vector types
-
61 typedef hc::short_vector::long1 long1;
-
62 typedef hc::short_vector::long2 long2;
-
63 typedef hc::short_vector::long3 long3;
-
64 typedef hc::short_vector::long4 long4;
-
65 
-
66 // Define longlong vector types
-
67 typedef hc::short_vector::longlong1 longlong1;
-
68 typedef hc::short_vector::longlong2 longlong2;
-
69 typedef hc::short_vector::longlong3 longlong3;
-
70 typedef hc::short_vector::longlong4 longlong4;
-
71 
-
72 
-
73 //-- Unsigned
-
74 // Define uchar vector types
-
75 typedef hc::short_vector::uchar1 uchar1;
-
76 typedef hc::short_vector::uchar2 uchar2;
-
77 typedef hc::short_vector::uchar3 uchar3;
-
78 typedef hc::short_vector::uchar4 uchar4;
-
79 
-
80 // Define ushort vector types
-
81 typedef hc::short_vector::ushort1 ushort1;
-
82 typedef hc::short_vector::ushort2 ushort2;
-
83 typedef hc::short_vector::ushort3 ushort3;
-
84 typedef hc::short_vector::ushort4 ushort4;
-
85 
-
86 // Define uint vector types
-
87 typedef hc::short_vector::uint1 uint1;
-
88 typedef hc::short_vector::uint2 uint2;
-
89 typedef hc::short_vector::uint3 uint3;
-
90 typedef hc::short_vector::uint4 uint4;
-
91 
-
92 // Define ulong vector types
-
93 typedef hc::short_vector::ulong1 ulong1;
-
94 typedef hc::short_vector::ulong2 ulong2;
-
95 typedef hc::short_vector::ulong3 ulong3;
-
96 typedef hc::short_vector::ulong4 ulong4;
-
97 
-
98 // Define ulonglong vector types
-
99 typedef hc::short_vector::ulonglong1 ulonglong1;
-
100 typedef hc::short_vector::ulonglong2 ulonglong2;
-
101 typedef hc::short_vector::ulonglong3 ulonglong3;
-
102 typedef hc::short_vector::ulonglong4 ulonglong4;
-
103 
-
104 
-
105 //-- Floating point
-
106 // Define float vector types
-
107 typedef hc::short_vector::float1 float1;
-
108 typedef hc::short_vector::float2 float2;
-
109 typedef hc::short_vector::float3 float3;
-
110 typedef hc::short_vector::float4 float4;
-
111 
-
112 // Define double vector types
-
113 typedef hc::short_vector::double1 double1;
-
114 typedef hc::short_vector::double2 double2;
-
115 typedef hc::short_vector::double3 double3;
-
116 typedef hc::short_vector::double4 double4;
-
117 
-
118 #else
-
119 
-
120 #define __hip_align(name, val, data) \
-
121  __attribute__((aligned(val))) name \
-
122  { data }
-
123 
-
124 struct __hip_align(char1, 1, signed char x;);
-
125 struct __hip_align(uchar1, 1, unsigned char x;);
-
126 
-
127 struct __hip_align(char2, 2, signed char x; signed char y;);
-
128 struct __hip_align(uchar2, 2, unsigned char x; unsigned char y;);
-
129 
-
130 struct char3
-
131 {
-
132  signed char x, y, z;
-
133 };
-
134 
-
135 struct uchar3
-
136 {
-
137  unsigned char x, y, z;
-
138 };
-
139 
-
140 struct char4
-
141 {
-
142  union {
-
143  signed char x, y, z, w;
-
144  unsigned int val;
-
145  };
-
146 };
-
147 
-
148 struct uchar4
-
149 {
-
150  union {
-
151  unsigned char x, y, z, w;
-
152  unsigned int val;
-
153  };
-
154 };
-
155 
-
156 //struct __hip_align(char4, 4, signed char x; signed char y; signed char z; signed char w;);
-
157 //struct __hip_align(uchar4, 4, unsigned char x; unsigned char y; unsigned char z; unsigned char w;);
-
158 
-
159 struct __hip_align(short1, 2, signed short x;);
-
160 struct __hip_align(ushort1, 2, unsigned short x;);
-
161 
-
162 struct __hip_align(short2, 4, signed short x; signed short y;);
-
163 struct __hip_align(ushort2, 4, unsigned short x; unsigned short y;);
-
164 
-
165 struct short3
-
166 {
-
167  signed short x, y, z;
-
168 };
-
169 
-
170 struct ushort3
-
171 {
-
172  unsigned short x, y, z;
-
173 };
-
174 
-
175 struct __hip_align(short4, 8, signed short x; signed short y; signed short z; signed short w;);
-
176 struct __hip_align(ushort4, 8, unsigned short x; unsigned short y; unsigned short z; unsigned short w;);
-
177 
-
178 struct __hip_align(int1, 4, signed int x;);
-
179 struct __hip_align(uint1, 4, unsigned int x;);
-
180 
-
181 struct __hip_align(int2, 8, signed int x; signed int y;);
-
182 struct __hip_align(uint2, 8, unsigned int x; unsigned int y;);
-
183 
-
184 struct int3{
-
185  signed int x, y, z;
-
186 };
-
187 struct uint3{
-
188  unsigned int x, y, z;
-
189 };
-
190 
-
191 struct __hip_align(int4, 16, signed int x; signed int y; signed int z; signed int w;);
-
192 struct __hip_align(uint4, 16, unsigned int x; unsigned int y; unsigned int z; unsigned int w;);
-
193 
-
194 struct __hip_align(long1, 8, long int x;);
-
195 struct __hip_align(ulong1, 8, unsigned long x;);
-
196 
-
197 struct __hip_align(long2, 16, long int x; long int y;);
-
198 struct __hip_align(ulong2, 16, unsigned long x; unsigned long y;);
-
199 
-
200 struct long3{
-
201  long int x, y, z;
-
202 };
-
203 struct ulong3{
-
204  unsigned long x, y, z;
-
205 };
-
206 
-
207 struct __hip_align(long4, 32, long int x; long int y; long int z; long int w;);
-
208 struct __hip_align(ulong4, 32, unsigned long x; unsigned long y; unsigned long z; unsigned long w;);
-
209 
-
210 struct float1
-
211 {
-
212  float x;
-
213 };
-
214 
-
215 struct __hip_align(float2, 8, float x; float y;);
-
216 
-
217 struct float3
-
218 {
-
219  float x, y, z;
-
220 };
-
221 
-
222 struct __hip_align(float4, 16, float x; float y; float z; float w;);
-
223 
-
224 struct __hip_align(longlong1, 16, long long int x;);
-
225 struct __hip_align(ulonglong1, 16, unsigned long long int x;);
-
226 
-
227 struct __attribute__((aligned(32))) longlong2
-
228 {
-
229  long long int x, y;
-
230 };
-
231 
-
232 struct __attribute__((aligned(32))) ulonglong2
-
233 {
-
234  unsigned long long int x, y;
-
235 };
-
236 
-
237 struct longlong3
-
238 {
-
239  long long int x, y, z;
-
240 };
-
241 
- -
243 {
-
244  unsigned long long int x, y, z;
-
245 };
-
246 
-
247 struct __attribute__((aligned(64))) longlong4
-
248 {
-
249  long long int x, y, z, w;
-
250 };
-
251 
-
252 struct __attribute__((aligned(64))) ulonglong4
-
253 {
-
254  unsigned long long int x, y, z, w;
-
255 };
-
256 
-
257 struct double1
-
258 {
-
259  double x;
-
260 };
-
261 
-
262 struct __attribute__((aligned(16))) double2
-
263 {
-
264  double x, y;
-
265 };
-
266 
-
267 struct double3
-
268 {
-
269  double x, y, z;
-
270 };
-
271 
-
272 struct __attribute__((aligned(32))) double4
-
273 {
-
274  double x, y, z, w;
-
275 };
-
276 
-
277 #endif
-
278 
-
279 #if __HCC__
- -
281 #define __HIP_DEVICE__ __device__ __host__
-
282 #else
-
283 #define __HIP_DEVICE__
-
284 #endif
-
285 
-
286 __HIP_DEVICE__ char1 make_char1(signed char );
-
287 __HIP_DEVICE__ char2 make_char2(signed char, signed char );
-
288 __HIP_DEVICE__ char3 make_char3(signed char, signed char, signed char );
-
289 __HIP_DEVICE__ char4 make_char4(signed char, signed char, signed char, signed char );
-
290 
-
291 __HIP_DEVICE__ short1 make_short1(short );
-
292 __HIP_DEVICE__ short2 make_short2(short, short );
-
293 __HIP_DEVICE__ short3 make_short3(short, short, short );
-
294 __HIP_DEVICE__ short4 make_short4(short, short, short, short );
-
295 
-
296 __HIP_DEVICE__ int1 make_int1(int );
-
297 __HIP_DEVICE__ int2 make_int2(int, int );
-
298 __HIP_DEVICE__ int3 make_int3(int, int, int );
-
299 __HIP_DEVICE__ int4 make_int4(int, int, int, int );
-
300 
-
301 __HIP_DEVICE__ long1 make_long1(long );
-
302 __HIP_DEVICE__ long2 make_long2(long, long );
-
303 __HIP_DEVICE__ long3 make_long3(long, long, long );
-
304 __HIP_DEVICE__ long4 make_long4(long, long, long, long );
-
305 
-
306 __HIP_DEVICE__ longlong1 make_longlong1(long long );
-
307 __HIP_DEVICE__ longlong2 make_longlong2(long long, long long );
-
308 __HIP_DEVICE__ longlong3 make_longlong3(long long, long long, long long );
-
309 __HIP_DEVICE__ longlong4 make_longlong4(long long, long long, long long, long long );
-
310 
-
311 __HIP_DEVICE__ uchar1 make_uchar1(unsigned char );
-
312 __HIP_DEVICE__ uchar2 make_uchar2(unsigned char, unsigned char );
-
313 __HIP_DEVICE__ uchar3 make_uchar3(unsigned char, unsigned char, unsigned char );
-
314 __HIP_DEVICE__ uchar4 make_uchar4(unsigned char, unsigned char, unsigned char, unsigned char );
-
315 
-
316 __HIP_DEVICE__ ushort1 make_ushort1(unsigned short );
-
317 __HIP_DEVICE__ ushort2 make_ushort2(unsigned short, unsigned short );
-
318 __HIP_DEVICE__ ushort3 make_ushort3(unsigned short, unsigned short, unsigned short );
-
319 __HIP_DEVICE__ ushort4 make_ushort4(unsigned short, unsigned short, unsigned short, unsigned short );
-
320 
-
321 __HIP_DEVICE__ uint1 make_uint1(unsigned int );
-
322 __HIP_DEVICE__ uint2 make_uint2(unsigned int, unsigned int );
-
323 __HIP_DEVICE__ uint3 make_uint3(unsigned int, unsigned int, unsigned int );
-
324 __HIP_DEVICE__ uint4 make_uint4(unsigned int, unsigned int, unsigned int, unsigned int );
-
325 
-
326 __HIP_DEVICE__ ulong1 make_ulong1(unsigned long );
-
327 __HIP_DEVICE__ ulong2 make_ulong2(unsigned long, unsigned long );
-
328 __HIP_DEVICE__ ulong3 make_ulong3(unsigned long, unsigned long, unsigned long );
-
329 __HIP_DEVICE__ ulong4 make_ulong4(unsigned long, unsigned long, unsigned long, unsigned long );
-
330 
-
331 __HIP_DEVICE__ ulonglong1 make_ulonglong1(unsigned long long );
-
332 __HIP_DEVICE__ ulonglong2 make_ulonglong2(unsigned long long, unsigned long long);
-
333 __HIP_DEVICE__ ulonglong3 make_ulonglong3(unsigned long long, unsigned long long, unsigned long long);
-
334 __HIP_DEVICE__ ulonglong4 make_ulonglong4(unsigned long long, unsigned long long, unsigned long long, unsigned long long );
-
335 
-
336 __HIP_DEVICE__ float1 make_float1(float );
-
337 __HIP_DEVICE__ float2 make_float2(float, float );
-
338 __HIP_DEVICE__ float3 make_float3(float, float, float );
-
339 __HIP_DEVICE__ float4 make_float4(float, float, float, float );
-
340 
-
341 __HIP_DEVICE__ double1 make_double1(double );
-
342 __HIP_DEVICE__ double2 make_double2(double, double );
-
343 __HIP_DEVICE__ double3 make_double3(double, double, double );
-
344 __HIP_DEVICE__ double4 make_double4(double, double, double, double );
-
345 
-
346 extern __HIP_DEVICE__ double __longlong_as_double(long long int x);
-
347 extern __HIP_DEVICE__ long long int __double_as_longlong(double x);
-
348 
-
349 
-
350 /*
-
352 // Inline functions for creating vector types from basic types
-
353 #define ONE_COMPONENT_ACCESS(T, VT) inline VT make_ ##VT [[hc]] [[cpu]] (T x) { VT t; t.x = x; return t; };
-
354 #define TWO_COMPONENT_ACCESS(T, VT) inline VT make_ ##VT [[hc]] [[cpu]] (T x, T y) { VT t; t.x=x; t.y=y; return t; };
-
355 #define THREE_COMPONENT_ACCESS(T, VT) inline VT make_ ##VT [[hc]] [[cpu]] (T x, T y, T z) { VT t; t.x=x; t.y=y; t.z=z; return t; };
-
356 #define FOUR_COMPONENT_ACCESS(T, VT) inline VT make_ ##VT [[hc]] [[cpu]] (T x, T y, T z, T w) { VT t; t.x=x; t.y=y; t.z=z; t.w=w; return t; };
-
357 
-
358 
-
359 //signed:
-
360 ONE_COMPONENT_ACCESS (signed char, char1);
-
361 TWO_COMPONENT_ACCESS (signed char, char2);
-
362 THREE_COMPONENT_ACCESS(signed char, char3);
-
363 FOUR_COMPONENT_ACCESS (signed char, char4);
-
364 
-
365 ONE_COMPONENT_ACCESS (short, short1);
-
366 TWO_COMPONENT_ACCESS (short, short2);
-
367 THREE_COMPONENT_ACCESS(short, short3);
-
368 FOUR_COMPONENT_ACCESS (short, short4);
-
369 
-
370 ONE_COMPONENT_ACCESS (int, int1);
-
371 TWO_COMPONENT_ACCESS (int, int2);
-
372 THREE_COMPONENT_ACCESS(int, int3);
-
373 FOUR_COMPONENT_ACCESS (int, int4);
-
374 
-
375 ONE_COMPONENT_ACCESS (long int, long1);
-
376 TWO_COMPONENT_ACCESS (long int, long2);
-
377 THREE_COMPONENT_ACCESS(long int, long3);
-
378 FOUR_COMPONENT_ACCESS (long int, long4);
-
379 
-
380 ONE_COMPONENT_ACCESS (long long int, ulong1);
-
381 TWO_COMPONENT_ACCESS (long long int, ulong2);
-
382 THREE_COMPONENT_ACCESS(long long int, ulong3);
-
383 FOUR_COMPONENT_ACCESS (long long int, ulong4);
-
384 
-
385 ONE_COMPONENT_ACCESS (long long int, longlong1);
-
386 TWO_COMPONENT_ACCESS (long long int, longlong2);
-
387 THREE_COMPONENT_ACCESS(long long int, longlong3);
-
388 FOUR_COMPONENT_ACCESS (long long int, longlong4);
-
389 
-
390 
-
391 // unsigned:
-
392 ONE_COMPONENT_ACCESS (unsigned char, uchar1);
-
393 TWO_COMPONENT_ACCESS (unsigned char, uchar2);
-
394 THREE_COMPONENT_ACCESS(unsigned char, uchar3);
-
395 FOUR_COMPONENT_ACCESS (unsigned char, uchar4);
-
396 
-
397 ONE_COMPONENT_ACCESS (unsigned short, ushort1);
-
398 TWO_COMPONENT_ACCESS (unsigned short, ushort2);
-
399 THREE_COMPONENT_ACCESS(unsigned short, ushort3);
-
400 FOUR_COMPONENT_ACCESS (unsigned short, ushort4);
-
401 
-
402 ONE_COMPONENT_ACCESS (unsigned int, uint1);
-
403 TWO_COMPONENT_ACCESS (unsigned int, uint2);
-
404 THREE_COMPONENT_ACCESS(unsigned int, uint3);
-
405 FOUR_COMPONENT_ACCESS (unsigned int, uint4);
-
406 
-
407 ONE_COMPONENT_ACCESS (unsigned long int, ulong1);
-
408 TWO_COMPONENT_ACCESS (unsigned long int, ulong2);
-
409 THREE_COMPONENT_ACCESS(unsigned long int, ulong3);
-
410 FOUR_COMPONENT_ACCESS (unsigned long int, ulong4);
-
411 
-
412 ONE_COMPONENT_ACCESS (unsigned long long int, ulong1);
-
413 TWO_COMPONENT_ACCESS (unsigned long long int, ulong2);
-
414 THREE_COMPONENT_ACCESS(unsigned long long int, ulong3);
-
415 FOUR_COMPONENT_ACCESS (unsigned long long int, ulong4);
-
416 
-
417 ONE_COMPONENT_ACCESS (unsigned long long int, ulonglong1);
-
418 TWO_COMPONENT_ACCESS (unsigned long long int, ulonglong2);
-
419 THREE_COMPONENT_ACCESS(unsigned long long int, ulonglong3);
-
420 FOUR_COMPONENT_ACCESS (unsigned long long int, ulonglong4);
-
421 
-
422 
-
423 //Floating point
-
424 ONE_COMPONENT_ACCESS (float, float1);
-
425 TWO_COMPONENT_ACCESS (float, float2);
-
426 THREE_COMPONENT_ACCESS(float, float3);
-
427 FOUR_COMPONENT_ACCESS (float, float4);
-
428 
-
429 ONE_COMPONENT_ACCESS (double, double1);
-
430 TWO_COMPONENT_ACCESS (double, double2);
-
431 THREE_COMPONENT_ACCESS(double, double3);
-
432 FOUR_COMPONENT_ACCESS (double, double4);
-
433 */
-
434 
-
435 #endif
-
436 
-
Definition: hip_vector_types.h:135
-
Definition: hip_vector_types.h:187
-
Definition: hip_vector_types.h:203
-
Definition: hip_vector_types.h:257
-
TODO-doc.
-
Definition: hip_vector_types.h:217
-
Definition: hip_vector_types.h:165
-
Definition: hip_vector_types.h:237
-
Definition: hip_vector_types.h:184
-
Definition: hip_vector_types.h:242
-
Definition: hip_vector_types.h:140
-
Definition: hip_vector_types.h:200
-
Definition: hip_vector_types.h:267
-
Definition: hip_vector_types.h:170
-
Definition: hip_vector_types.h:130
-
Definition: hip_vector_types.h:148
-
Definition: hip_vector_types.h:210
-
- - - - diff --git a/docs/RuntimeAPI/html/hierarchy.html b/docs/RuntimeAPI/html/hierarchy.html deleted file mode 100644 index 7a51e86a9f..0000000000 --- a/docs/RuntimeAPI/html/hierarchy.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Class Hierarchy - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - -
- - - - -
- -
- -
-
-
Class Hierarchy
-
- - - - - diff --git a/docs/RuntimeAPI/html/hip__common_8h_source.html b/docs/RuntimeAPI/html/hip__common_8h_source.html deleted file mode 100644 index fbe04a41b0..0000000000 --- a/docs/RuntimeAPI/html/hip__common_8h_source.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hip_common.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_common.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 #pragma once
-
24 
-
25 // Common code included at start of every hip file.
-
26 // Auto enable __HIP_PLATFORM_HCC__ if compiling with HCC
-
27 // Other compiler (GCC,ICC,etc) need to set one of these macros explicitly
-
28 #if defined(__HCC__)
-
29 #define __HIP_PLATFORM_HCC__
-
30 #define __HIPCC__
-
31 
-
32 #if defined(__HCC_ACCELERATOR__) && (__HCC_ACCELERATOR__ != 0)
-
33 #define __HIP_DEVICE_COMPILE__ 1
-
34 #else
-
35 #define __HIP_DEVICE_COMPILE__ 0
-
36 #endif
-
37 #endif
-
38 
-
39 // Auto enable __HIP_PLATFORM_NVCC__ if compiling with NVCC
-
40 #if defined(__NVCC__)
-
41 #define __HIP_PLATFORM_NVCC__
-
42 # ifdef __CUDACC__
-
43 # define __HIPCC__
-
44 # endif
-
45 
-
46 #if defined(__CUDA_ARCH__) && (__CUDA_ARCH__ != 0)
-
47 #define __HIP_DEVICE_COMPILE__ 1
-
48 #else
-
49 #define __HIP_DEVICE_COMPILE__ 0
-
50 #endif
-
51 
-
52 #endif
-
53 
-
54 
-
55 
-
56 
-
57 #if __HIP_DEVICE_COMPILE__ == 0
-
58 // 32-bit Atomics
-
59 #define __HIP_ARCH_HAS_GLOBAL_INT32_ATOMICS__ (0)
-
60 #define __HIP_ARCH_HAS_GLOBAL_FLOAT_ATOMIC_EXCH__ (0)
-
61 #define __HIP_ARCH_HAS_SHARED_INT32_ATOMICS__ (0)
-
62 #define __HIP_ARCH_HAS_SHARED_FLOAT_ATOMIC_EXCH__ (0)
-
63 #define __HIP_ARCH_HAS_FLOAT_ATOMIC_ADD__ (0)
-
64 
-
65 // 64-bit Atomics
-
66 #define __HIP_ARCH_HAS_GLOBAL_INT64_ATOMICS__ (0)
-
67 #define __HIP_ARCH_HAS_SHARED_INT64_ATOMICS__ (0)
-
68 
-
69 // Doubles
-
70 #define __HIP_ARCH_HAS_DOUBLES__ (0)
-
71 
-
72 // Warp cross-lane operations
-
73 #define __HIP_ARCH_HAS_WARP_VOTE__ (0)
-
74 #define __HIP_ARCH_HAS_WARP_BALLOT__ (0)
-
75 #define __HIP_ARCH_HAS_WARP_SHUFFLE__ (0)
-
76 #define __HIP_ARCH_HAS_WARP_FUNNEL_SHIFT__ (0)
-
77 
-
78 // Sync
-
79 #define __HIP_ARCH_HAS_THREAD_FENCE_SYSTEM__ (0)
-
80 #define __HIP_ARCH_HAS_SYNC_THREAD_EXT__ (0)
-
81 
-
82 // Misc
-
83 #define __HIP_ARCH_HAS_SURFACE_FUNCS__ (0)
-
84 #define __HIP_ARCH_HAS_3DGRID__ (0)
-
85 #define __HIP_ARCH_HAS_DYNAMIC_PARALLEL__ (0)
-
86 #endif
-
- - - - diff --git a/docs/RuntimeAPI/html/hip__complex_8h_source.html b/docs/RuntimeAPI/html/hip__complex_8h_source.html deleted file mode 100644 index 94525b02a3..0000000000 --- a/docs/RuntimeAPI/html/hip__complex_8h_source.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hip_complex.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_complex.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 #pragma once
-
24 
-
25 #include <hip/hip_common.h>
-
26 
-
27 #if defined(__HIP_PLATFORM_HCC__) && !defined (__HIP_PLATFORM_NVCC__)
-
28 #include <hip/hcc_detail/hip_complex.h>
-
29 #elif defined(__HIP_PLATFORM_NVCC__) && !defined (__HIP_PLATFORM_HCC__)
-
30 #include <hip/nvcc_detail/hip_complex.h>
-
31 #else
-
32 #error("Must define exactly one of __HIP_PLATFORM_HCC__ or __HIP_PLATFORM_NVCC__");
-
33 #endif
-
34 
-
- - - - diff --git a/docs/RuntimeAPI/html/hip__fp16_8h_source.html b/docs/RuntimeAPI/html/hip__fp16_8h_source.html deleted file mode 100644 index 219cf2d03c..0000000000 --- a/docs/RuntimeAPI/html/hip__fp16_8h_source.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hip_fp16.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_fp16.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 #pragma once
-
24 
-
25 #include <hip/hip_common.h>
-
26 
-
27 #if defined(__HIP_PLATFORM_HCC__) && !defined (__HIP_PLATFORM_NVCC__)
-
28 #include <hip/hcc_detail/hip_fp16.h>
-
29 #elif defined(__HIP_PLATFORM_NVCC__) && !defined (__HIP_PLATFORM_HCC__)
-
30 #include "cuda_fp16.h"
-
31 #else
-
32 #error("Must define exactly one of __HIP_PLATFORM_HCC__ or __HIP_PLATFORM_NVCC__");
-
33 #endif
-
- - - - diff --git a/docs/RuntimeAPI/html/hip__hcc_8cpp.html b/docs/RuntimeAPI/html/hip__hcc_8cpp.html deleted file mode 100644 index 7a1c376dc0..0000000000 --- a/docs/RuntimeAPI/html/hip__hcc_8cpp.html +++ /dev/null @@ -1,486 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/src/hip_hcc.cpp File Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
- -
-
hip_hcc.cpp File Reference
-
-
-
#include <assert.h>
-#include <stdint.h>
-#include <iostream>
-#include <sstream>
-#include <list>
-#include <sys/types.h>
-#include <unistd.h>
-#include <deque>
-#include <vector>
-#include <algorithm>
-#include <atomic>
-#include <hc.hpp>
-#include <hc_am.hpp>
-#include "hsa/hsa_ext_amd.h"
-#include "libhsakmt/hsakmt.h"
-#include "hip/hip_runtime.h"
-#include "hip_hcc.h"
-#include "trace_helper.h"
-
- - - - - - - - - - - - - - - - - -

-Macros

-#define USE_COPY_EXT_V2   1
 
-#define HIP_USE_PRODUCT_NAME   1
 
-#define ErrorCheck(x)   error_check(x, __LINE__, __FILE__)
 
-#define DeviceErrorCheck(x)   if (x != HSA_STATUS_SUCCESS) { return hipErrorInvalidDevice; }
 
#define READ_ENV_I(_build, _ENV_VAR, _ENV_VAR2, _description)
 
#define READ_ENV_S(_build, _ENV_VAR, _ENV_VAR2, _description)
 
#define READ_ENV_C(_build, _ENV_VAR, _ENV_VAR2, _description, _callback)
 
-#define CASE_STRING(X)   case X: return #X ;break;
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

-std::string HIP_TRACE_API_COLOR ("green")
 
-std::atomic< int > g_lastShortTid (1)
 
-void recordApiTrace (std::string *fullStr, const std::string &apiStr)
 
-ihipDevice_tihipGetDevice (int deviceIndex)
 
-ihipCtx_tihipGetPrimaryCtx (unsigned deviceIndex)
 
-void ihipSetTlsDefaultCtx (ihipCtx_t *ctx)
 
-ihipCtx_tihipGetTlsDefaultCtx ()
 
-hipError_t ihipSynchronize (void)
 
-void error_check (hsa_status_t hsa_error_code, int line_num, std::string str)
 
-hsa_status_t FindGpuDevice (hsa_agent_t agent, void *data)
 
-hsa_status_t GetDevicePool (hsa_amd_memory_pool_t pool, void *data)
 
-int checkAccess (hsa_agent_t agent, hsa_amd_memory_pool_t pool)
 
-hsa_status_t get_region_info (hsa_region_t region, void *data)
 
-void ihipReadEnv_I (int *var_ptr, const char *var_name1, const char *var_name2, const char *description)
 
-void ihipReadEnv_S (std::string *var_ptr, const char *var_name1, const char *var_name2, const char *description)
 
-void ihipReadEnv_Callback (void *var_ptr, const char *var_name1, const char *var_name2, const char *description, std::string(*setterCallback)(void *var_ptr, const char *env))
 
-void parseTrigger (std::string triggerString, std::vector< ProfTrigger > &profTriggers)
 
-std::string HIP_DB_string (unsigned db)
 
-std::string HIP_DB_callback (void *var_ptr, const char *envVarString)
 
-std::string HIP_VISIBLE_DEVICES_callback (void *var_ptr, const char *envVarString)
 
-void ihipInit ()
 
-hipStream_t ihipSyncAndResolveStream (hipStream_t stream)
 
-void ihipPrintKernelLaunch (const char *kernelName, const grid_launch_parm *lp, const hipStream_t stream)
 
-hipStream_t ihipPreLaunchKernel (hipStream_t stream, dim3 grid, dim3 block, grid_launch_parm *lp, const char *kernelNameStr)
 
-hipStream_t ihipPreLaunchKernel (hipStream_t stream, size_t grid, dim3 block, grid_launch_parm *lp, const char *kernelNameStr)
 
-hipStream_t ihipPreLaunchKernel (hipStream_t stream, dim3 grid, size_t block, grid_launch_parm *lp, const char *kernelNameStr)
 
-hipStream_t ihipPreLaunchKernel (hipStream_t stream, size_t grid, size_t block, grid_launch_parm *lp, const char *kernelNameStr)
 
-void ihipPostLaunchKernel (const char *kernelName, hipStream_t stream, grid_launch_parm &lp)
 
-const char * ihipErrorString (hipError_t hip_error)
 
-void ihipSetTs (hipEvent_t e)
 
-const char * hipMemcpyStr (unsigned memKind)
 
-const char * hcMemcpyStr (hc::hcCommandKind memKind)
 
hipError_t hipProfilerStart ()
 Start recording of profiling information When using this API, start the profiler with profiling disabled. (–startdisabled) More...
 
hipError_t hipProfilerStop ()
 Stop recording of profiling information. When using this API, start the profiler with profiling disabled. (–startdisabled) More...
 
-hipError_t hipHccGetAccelerator (int deviceId, hc::accelerator *acc)
 
-hipError_t hipHccGetAcceleratorView (hipStream_t stream, hc::accelerator_view **av)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Variables

-const int release = 1
 
-const char * API_COLOR = KGRN
 
-const char * API_COLOR_END = KNRM
 
-int HIP_LAUNCH_BLOCKING = 0
 
-std::string HIP_LAUNCH_BLOCKING_KERNELS
 
-std::vector< std::string > g_hipLaunchBlockingKernels
 
-int HIP_API_BLOCKING = 0
 
-int HIP_PRINT_ENV = 0
 
-int HIP_TRACE_API = 0
 
-int HIP_PROFILE_API = 0
 
-std::string HIP_DB_START_API
 
-std::string HIP_DB_STOP_API
 
-int HIP_DB = 0
 
-int HIP_VISIBLE_DEVICES = 0
 
-int HIP_NUM_KERNELS_INFLIGHT = 128
 
-int HIP_WAIT_MODE = 0
 
-int HIP_FORCE_P2P_HOST = 0
 
-int HIP_DENY_PEER_ACCESS = 0
 
-int HIP_FORCE_SYNC_COPY = 0
 
-int HIP_COHERENT_HOST_ALLOC = 0
 
-std::once_flag hip_initialized
 
-ihipDevice_t ** g_deviceArray
 
-bool g_visible_device = false
 
-unsigned g_deviceCnt
 
-std::vector< int > g_hip_visible_devices
 
-hsa_agent_t g_cpu_agent
 
-unsigned g_numLogicalThreads
 
-std::vector< ProfTriggerg_dbStartTriggers
 
-std::vector< ProfTriggerg_dbStopTriggers
 
-thread_local hipError_t tls_lastHipError = hipSuccess
 
-thread_local ShortTid tls_shortTid
 
-

Detailed Description

-

Contains definitions for functions that are large enough that we don't want to inline them everywhere. This file is compiled and linked into apps running HIP / HCC path.

-

Macro Definition Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define READ_ENV_C( _build,
 _ENV_VAR,
 _ENV_VAR2,
 _description,
 _callback 
)
-
-Value:
if (_build == release) {\
-
ihipReadEnv_Callback(&_ENV_VAR, #_ENV_VAR, #_ENV_VAR2, _description, _callback);\
-
};
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define READ_ENV_I( _build,
 _ENV_VAR,
 _ENV_VAR2,
 _description 
)
-
-Value:
if (_build == release) {\
-
ihipReadEnv_I(&_ENV_VAR, #_ENV_VAR, #_ENV_VAR2, _description);\
-
};
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define READ_ENV_S( _build,
 _ENV_VAR,
 _ENV_VAR2,
 _description 
)
-
-Value:
if (_build == release) {\
-
ihipReadEnv_S(&_ENV_VAR, #_ENV_VAR, #_ENV_VAR2, _description);\
-
};
-
-
-
-
- - - - diff --git a/docs/RuntimeAPI/html/hip__hcc_8h_source.html b/docs/RuntimeAPI/html/hip__hcc_8h_source.html deleted file mode 100644 index 47908b7e34..0000000000 --- a/docs/RuntimeAPI/html/hip__hcc_8h_source.html +++ /dev/null @@ -1,922 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/src/hip_hcc.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_hcc.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 #ifndef HIP_HCC_H
-
24 #define HIP_HCC_H
-
25 
-
26 #include <hc.hpp>
-
27 #include <hsa/hsa.h>
-
28 #include "hsa/hsa_ext_amd.h"
-
29 #include "hip_util.h"
-
30 
-
31 
-
32 #if defined(__HCC__) && (__hcc_workweek__ < 16354)
-
33 #error("This version of HIP requires a newer version of HCC.");
-
34 #endif
-
35 
-
36 #define USE_DISPATCH_HSA_KERNEL 1
-
37 //
-
38 
-
39 
-
40 //---
-
41 // Environment variables:
-
42 
-
43 // Intended to distinguish whether an environment variable should be visible only in debug mode, or in debug+release.
-
44 //static const int debug = 0;
-
45 extern const int release;
-
46 
-
47 // TODO - this blocks both kernels and memory ops. Perhaps should have separate env var for kernels?
-
48 extern int HIP_LAUNCH_BLOCKING;
-
49 extern int HIP_API_BLOCKING;
-
50 
-
51 extern int HIP_PRINT_ENV;
-
52 extern int HIP_PROFILE_API;
-
53 //extern int HIP_TRACE_API;
-
54 extern int HIP_ATP;
-
55 extern int HIP_DB;
-
56 extern int HIP_STAGING_SIZE; /* size of staging buffers, in KB */
-
57 extern int HIP_STREAM_SIGNALS; /* number of signals to allocate at stream creation */
-
58 extern int HIP_VISIBLE_DEVICES; /* Contains a comma-separated sequence of GPU identifiers */
-
59 extern int HIP_FORCE_P2P_HOST;
-
60 
-
61 extern int HIP_COHERENT_HOST_ALLOC;
-
62 
-
63 
-
64 //---
-
65 // Chicken bits for disabling functionality to work around potential issues:
-
66 extern int HIP_DISABLE_HW_KERNEL_DEP;
-
67 
-
68 
-
69 // Class to assign a short TID to each new thread, for HIP debugging purposes.
-
70 class ShortTid {
-
71 public:
-
72 
-
73  ShortTid() ;
-
74 
-
75  int tid() const { return _shortTid; };
-
76  uint64_t incApiSeqNum() { return ++_apiSeqNum; };
-
77  uint64_t apiSeqNum() const { return _apiSeqNum; };
-
78 
-
79 private:
-
80  int _shortTid;
-
81 
-
82  // monotonically increasing API sequence number for this threa.
-
83  uint64_t _apiSeqNum;
-
84 };
-
85 
-
86 struct ProfTrigger {
-
87 
-
88  static const uint64_t MAX_TRIGGER = std::numeric_limits<uint64_t>::max();
-
89 
-
90  void print (int tid) {
-
91  std::cout << "Enabling tracing for ";
-
92  for (auto iter=_profTrigger.begin(); iter != _profTrigger.end(); iter++) {
-
93  std::cout << "tid:" << tid << "." << *iter << ",";
-
94  }
-
95  std::cout << "\n";
-
96  };
-
97 
-
98  uint64_t nextTrigger() { return _profTrigger.empty() ? MAX_TRIGGER : _profTrigger.back(); };
-
99  void add(uint64_t trigger) { _profTrigger.push_back(trigger); };
-
100  void sort() { std::sort (_profTrigger.begin(), _profTrigger.end(), std::greater<int>()); };
-
101 private:
-
102  std::vector<uint64_t> _profTrigger;
-
103 };
-
104 
-
105 
-
106 
-
107 //---
-
108 //Extern tls
-
109 extern thread_local hipError_t tls_lastHipError;
-
110 extern thread_local ShortTid tls_shortTid;
-
111 
-
112 extern std::vector<ProfTrigger> g_dbStartTriggers;
-
113 extern std::vector<ProfTrigger> g_dbStopTriggers;
-
114 
-
115 //---
-
116 //Forward defs:
-
117 class ihipStream_t;
-
118 class ihipDevice_t;
-
119 class ihipCtx_t;
-
120 
-
121 // Color defs for debug messages:
-
122 #define KNRM "\x1B[0m"
-
123 #define KRED "\x1B[31m"
-
124 #define KGRN "\x1B[32m"
-
125 #define KYEL "\x1B[33m"
-
126 #define KBLU "\x1B[34m"
-
127 #define KMAG "\x1B[35m"
-
128 #define KCYN "\x1B[36m"
-
129 #define KWHT "\x1B[37m"
-
130 
-
131 extern const char *API_COLOR;
-
132 extern const char *API_COLOR_END;
-
133 
-
134 
-
135 // If set, thread-safety is enforced on all stream functions.
-
136 // Stream functions will acquire a mutex before entering critical sections.
-
137 #define STREAM_THREAD_SAFE 1
-
138 
-
139 
-
140 #define CTX_THREAD_SAFE 1
-
141 
-
142 
-
143 // Compile debug trace mode - this prints debug messages to stderr when env var HIP_DB is set.
-
144 // May be set to 0 to remove debug if checks - possible code size and performance difference?
-
145 #define COMPILE_HIP_DB 1
-
146 
-
147 
-
148 // Compile HIP tracing capability.
-
149 // 0x1 = print a string at function entry with arguments.
-
150 // 0x2 = prints a simple message with function name + return code when function exits.
-
151 // 0x3 = print both.
-
152 // Must be enabled at runtime with HIP_TRACE_API
-
153 #define COMPILE_HIP_TRACE_API 0x3
-
154 
-
155 
-
156 // Compile code that generates trace markers for CodeXL ATP at HIP function begin/end.
-
157 // ATP is standard CodeXL format that includes timestamps for kernels, HSA RT APIs, and HIP APIs.
-
158 #ifndef COMPILE_HIP_ATP_MARKER
-
159 #define COMPILE_HIP_ATP_MARKER 0
-
160 #endif
-
161 
-
162 
-
163 
-
164 
-
165 // Compile support for trace markers that are displayed on CodeXL GUI at start/stop of each function boundary.
-
166 // TODO - currently we print the trace message at the beginning. if we waited, we could also include return codes, and any values returned
-
167 // through ptr-to-args (ie the pointers allocated by hipMalloc).
-
168 #if COMPILE_HIP_ATP_MARKER
-
169 #include "CXLActivityLogger.h"
-
170 #define MARKER_BEGIN(markerName,group) amdtBeginMarker(markerName, group, nullptr);
-
171 #define MARKER_END() amdtEndMarker();
-
172 #define RESUME_PROFILING amdtResumeProfiling(AMDT_ALL_PROFILING);
-
173 #define STOP_PROFILING amdtStopProfiling(AMDT_ALL_PROFILING);
-
174 #else
-
175 // Swallow scoped markers:
-
176 #define MARKER_BEGIN(markerName,group)
-
177 #define MARKER_END()
-
178 #define RESUME_PROFILING
-
179 #define STOP_PROFILING
-
180 #endif
-
181 
-
182 
-
183 extern void recordApiTrace(std::string *fullStr, const std::string &apiStr);
-
184 
-
185 #if COMPILE_HIP_ATP_MARKER || (COMPILE_HIP_TRACE_API & 0x1)
-
186 #define API_TRACE(...)\
-
187 {\
-
188  if (HIP_PROFILE_API || (COMPILE_HIP_DB && HIP_TRACE_API)) {\
-
189  std::string apiStr = std::string(__func__) + " (" + ToString(__VA_ARGS__) + ')';\
-
190  std::string fullStr;\
-
191  recordApiTrace(&fullStr, apiStr);\
-
192  if (HIP_PROFILE_API == 0x1) {MARKER_BEGIN(__func__, "HIP") }\
-
193  else if (HIP_PROFILE_API == 0x2) {MARKER_BEGIN(fullStr.c_str(), "HIP"); }\
-
194  }\
-
195 }
-
196 #else
-
197 // Swallow API_TRACE
-
198 #define API_TRACE(...)
-
199 #endif
-
200 
-
201 
-
202 // Just initialize the HIP runtime, but don't log any trace information.
-
203 #define HIP_INIT()\
-
204  std::call_once(hip_initialized, ihipInit);\
-
205  ihipCtxStackUpdate();
-
206 
-
207 
-
208 // This macro should be called at the beginning of every HIP API.
-
209 // It initialies the hip runtime (exactly once), and
-
210 // generate trace string that can be output to stderr or to ATP file.
-
211 #define HIP_INIT_API(...) \
-
212  HIP_INIT()\
-
213  API_TRACE(__VA_ARGS__);
-
214 
-
215 #define ihipLogStatus(hipStatus) \
-
216  ({\
-
217  hipError_t localHipStatus = hipStatus; /*local copy so hipStatus only evaluated once*/ \
-
218  tls_lastHipError = localHipStatus;\
-
219  \
-
220  if ((COMPILE_HIP_TRACE_API & 0x2) && HIP_TRACE_API) {\
-
221  fprintf(stderr, " %ship-api tid:%d.%lu %-30s ret=%2d (%s)>>%s\n", (localHipStatus == 0) ? API_COLOR:KRED, tls_shortTid.tid(),tls_shortTid.apiSeqNum(), __func__, localHipStatus, ihipErrorString(localHipStatus), API_COLOR_END);\
-
222  }\
-
223  if (HIP_PROFILE_API) { MARKER_END(); }\
-
224  localHipStatus;\
-
225  })
-
226 
-
227 
-
228 
-
229 
-
230 //---
-
231 //HIP_DB Debug flags:
-
232 #define DB_API 0 /* 0x01 - shortcut to enable HIP_TRACE_API on single switch */
-
233 #define DB_SYNC 1 /* 0x02 - trace synchronization pieces */
-
234 #define DB_MEM 2 /* 0x04 - trace memory allocation / deallocation */
-
235 #define DB_COPY 3 /* 0x08 - trace memory copy and peer commands. . */
-
236 #define DB_SIGNAL 4 /* 0x10 - trace signal pool commands */
-
237 #define DB_MAX_FLAG 5
-
238 // When adding a new debug flag, also add to the char name table below.
-
239 //
-
240 
-
241 struct DbName {
-
242  const char *_color;
-
243  const char *_shortName;
-
244 };
-
245 
-
246 static const DbName dbName [] =
-
247 {
-
248  {KGRN, "api"}, // not used,
-
249  {KYEL, "sync"},
-
250  {KCYN, "mem"},
-
251  {KMAG, "copy"},
-
252  {KRED, "signal"},
-
253 };
-
254 
-
255 
-
256 
-
257 #if COMPILE_HIP_DB
-
258 #define tprintf(trace_level, ...) {\
-
259  if (HIP_DB & (1<<(trace_level))) {\
-
260  char msgStr[1000];\
-
261  snprintf(msgStr, 2000, __VA_ARGS__);\
-
262  fprintf (stderr, " %ship-%s tid:%d:%s%s", dbName[trace_level]._color, dbName[trace_level]._shortName, tls_shortTid.tid(), msgStr, KNRM); \
-
263  }\
-
264 }
-
265 #else
-
266 /* Compile to empty code */
-
267 #define tprintf(trace_level, ...)
-
268 #endif
-
269 
-
270 
-
271 
-
272 
-
273 
-
274 class ihipException : public std::exception
-
275 {
-
276 public:
-
277  ihipException(hipError_t e) : _code(e) {};
-
278 
-
279  hipError_t _code;
-
280 };
-
281 
-
282 
-
283 #ifdef __cplusplus
-
284 extern "C" {
-
285 #endif
-
286 
-
287 
-
288 #ifdef __cplusplus
-
289 }
-
290 #endif
-
291 
-
292 const hipStream_t hipStreamNull = 0x0;
-
293 
-
294 
-
295 // Used to remove lock, for performance or stimulating bugs.
- -
297 {
-
298  public:
-
299  void lock() { }
-
300  bool try_lock() {return true; }
-
301  void unlock() { }
-
302 };
-
303 
-
304 
-
305 #if STREAM_THREAD_SAFE
-
306 typedef std::mutex StreamMutex;
-
307 #else
-
308 #warning "Stream thread-safe disabled"
-
309 typedef FakeMutex StreamMutex;
-
310 #endif
-
311 
-
312 // Pair Device and Ctx together, these could also be toggled separately if desired.
-
313 #if CTX_THREAD_SAFE
-
314 typedef std::mutex CtxMutex;
-
315 #else
-
316 typedef FakeMutex CtxMutex;
-
317 #warning "Device thread-safe disabled"
-
318 #endif
-
319 
-
320 //
-
321 //---
-
322 // Protects access to the member _data with a lock acquired on contruction/destruction.
-
323 // T must contain a _mutex field which meets the BasicLockable requirements (lock/unlock)
-
324 template<typename T>
- -
326 {
-
327 public:
-
328  LockedAccessor(T &criticalData, bool autoUnlock=true) :
-
329  _criticalData(&criticalData),
-
330  _autoUnlock(autoUnlock)
-
331 
-
332  {
-
333  tprintf(DB_SYNC, "lock critical data %s.%p\n", typeid(T).name(), _criticalData);
-
334  _criticalData->_mutex.lock();
-
335  };
-
336 
-
337  ~LockedAccessor()
-
338  {
-
339  if (_autoUnlock) {
-
340  tprintf(DB_SYNC, "auto-unlock critical data %s.%p\n",typeid(T).name(), _criticalData);
-
341  _criticalData->_mutex.unlock();
-
342  }
-
343  }
-
344 
-
345  void unlock()
-
346  {
-
347  tprintf(DB_SYNC, "unlock critical data %s.%p\n", typeid(T).name(), _criticalData);
-
348  _criticalData->_mutex.unlock();
-
349  }
-
350 
-
351  // Syntactic sugar so -> can be used to get the underlying type.
-
352  T *operator->() { return _criticalData; };
-
353 
-
354 private:
-
355  T *_criticalData;
-
356  bool _autoUnlock;
-
357 };
-
358 
-
359 
-
360 template <typename MUTEX_TYPE>
-
361 struct LockedBase {
-
362 
-
363  // Experts-only interface for explicit locking.
-
364  // Most uses should use the lock-accessor.
-
365  void lock() { _mutex.lock(); }
-
366  void unlock() { _mutex.unlock(); }
-
367 
-
368  MUTEX_TYPE _mutex;
-
369 };
-
370 
-
374 #define HIP_IPC_HANDLE_SIZE 64
- -
376 {
-
377 public:
-
378  hsa_amd_ipc_memory_t ipc_handle;
-
379  char reserved[HIP_IPC_HANDLE_SIZE];
-
380  size_t psize;
-
381 };
-
382 
- -
384 public:
-
385  ihipFunction_t(const char *name) {
-
386  size_t nameSz = strlen(name);
-
387  char *kernelName = (char*)malloc(nameSz);
-
388  strncpy(kernelName, name, nameSz);
-
389  _kernelName = kernelName;
-
390  };
-
391 
-
392  ~ihipFunction_t() {
-
393  if (_kernelName) {
-
394  free((void*)_kernelName);
-
395  _kernelName = NULL;
-
396  };
-
397  };
-
398 public:
-
399  const char *_kernelName;
-
400  hsa_executable_symbol_t _kernelSymbol;
-
401  uint64_t _kernel;
-
402 };
-
403 
- -
405 public:
-
406  hsa_executable_t executable;
-
407  hsa_code_object_t object;
-
408  std::string fileName;
-
409  void *ptr;
-
410  size_t size;
-
411 
-
412  ihipModule_t() : executable(), object(), fileName(), ptr(nullptr), size(0), hipFunctionTable() {}
-
413  ~ihipModule_t() {
-
414  for (int i = 0; i < hipFunctionTable.size(); ++i) {
-
415  ihipFunction_t *func = hipFunctionTable[i];
-
416  delete func;
-
417  }
-
418  hipFunctionTable.clear();
-
419  }
-
420 
-
421  void registerFunction(ihipFunction_t* func) {
-
422  hipFunctionTable.push_back(func);
-
423  }
-
424 private:
-
425  std::vector<ihipFunction_t*> hipFunctionTable;
-
426 };
-
427 
-
428 template <typename MUTEX_TYPE>
-
429 class ihipStreamCriticalBase_t : public LockedBase<MUTEX_TYPE>
-
430 {
-
431 public:
-
432  ihipStreamCriticalBase_t(hc::accelerator_view av) :
-
433  _kernelCnt(0),
-
434  _av(av)
-
435  {
-
436  };
-
437 
- -
439  }
-
440 
- -
442 
-
443 public:
-
444  // TODO - remove _kernelCnt mechanism:
-
445  uint32_t _kernelCnt; // Count of inflight kernels in this stream. Reset at ::wait().
-
446  hc::accelerator_view _av;
-
447 };
-
448 
-
449 
-
450 // if HIP code needs to acquire locks for both ihipCtx_t and ihipStream_t, it should first acquire the lock
-
451 // for the ihipCtx_t and then for the individual streams. The locks should not be acquired in reverse order
-
452 // or deadlock may occur. In some cases, it may be possible to reduce the range where the locks must be held.
-
453 // HIP routines should avoid acquiring and releasing the same lock during the execution of a single HIP API.
-
454 
-
455 
- - -
458 
-
459 
-
460 
-
461 //---
-
462 // Internal stream structure.
- -
464 public:
-
465  enum ScheduleMode {Auto, Spin, Yield};
-
466  typedef uint64_t SeqNum_t ;
-
467 
-
468  ihipStream_t(ihipCtx_t *ctx, hc::accelerator_view av, unsigned int flags);
-
469  ~ihipStream_t();
-
470 
-
471  // kind is hipMemcpyKind
-
472  void locked_copySync (void* dst, const void* src, size_t sizeBytes, unsigned kind, bool resolveOn = true);
-
473 
-
474 
-
475  void locked_copyAsync(void* dst, const void* src, size_t sizeBytes, unsigned kind);
-
476 
-
477 
-
478  //---
-
479  // Member functions that begin with locked_ are thread-safe accessors - these acquire / release the critical mutex.
-
480  LockedAccessor_StreamCrit_t lockopen_preKernelCommand();
-
481  void lockclose_postKernelCommand(const char *kernelName, hc::accelerator_view *av);
-
482 
-
483 
-
484  void locked_wait(bool assertQueueEmpty=false);
-
485 
-
486  hc::accelerator_view* locked_getAv() { LockedAccessor_StreamCrit_t crit(_criticalData); return &(crit->_av); };
-
487 
-
488  void locked_waitEvent(hipEvent_t event);
-
489  void locked_recordEvent(hipEvent_t event);
-
490 
-
491 
-
492  //---
-
493 
-
494  // Use this if we already have the stream critical data mutex:
-
495  void wait(LockedAccessor_StreamCrit_t &crit, bool assertQueueEmpty=false);
-
496 
-
497  void launchModuleKernel(hc::accelerator_view av, hsa_signal_t signal,
-
498  uint32_t blockDimX, uint32_t blockDimY, uint32_t blockDimZ,
-
499  uint32_t gridDimX, uint32_t gridDimY, uint32_t gridDimZ,
-
500  uint32_t groupSegmentSize, uint32_t sharedMemBytes,
-
501  void *kernarg, size_t kernSize, uint64_t kernel);
-
502 
-
503 
-
504 
-
505  //-- Non-racy accessors:
-
506  // These functions access fields set at initialization time and are non-racy (so do not acquire mutex)
-
507  const ihipDevice_t * getDevice() const;
-
508  ihipCtx_t * getCtx() const;
-
509 
-
510 
-
511 public:
-
512  //---
-
513  //Public member vars - these are set at initialization and never change:
-
514  SeqNum_t _id; // monotonic sequence ID
-
515  unsigned _flags;
-
516 
-
517 
-
518 private:
-
519 
-
520 
-
521  // The unsigned return is hipMemcpyKind
-
522  unsigned resolveMemcpyDirection(bool srcInDeviceMem, bool dstInDeviceMem);
-
523  void resolveHcMemcpyDirection(unsigned hipMemKind,
-
524  const hc::AmPointerInfo *dstPtrInfo, const hc::AmPointerInfo *srcPtrInfo,
-
525  hc::hcCommandKind *hcCopyDir,
-
526  ihipCtx_t **copyDevice,
-
527  bool *forceUnpinnedCopy);
-
528 
-
529  bool canSeeMemory(const ihipCtx_t *thisCtx, const hc::AmPointerInfo *dstInfo, const hc::AmPointerInfo *srcInfo);
-
530 
-
531 
-
532 private: // Data
-
533  // Critical Data - MUST be accessed through LockedAccessor_StreamCrit_t
-
534  ihipStreamCritical_t _criticalData;
-
535 
-
536  ihipCtx_t *_ctx; // parent context that owns this stream.
-
537 
-
538  // Friends:
-
539  friend std::ostream& operator<<(std::ostream& os, const ihipStream_t& s);
- -
541 
-
542  ScheduleMode _scheduleMode;
-
543 };
-
544 
-
545 
-
546 
-
547 //----
-
548 // Internal event structure:
-
549 enum hipEventStatus_t {
-
550  hipEventStatusUnitialized = 0, // event is unutilized, must be "Created" before use.
-
551  hipEventStatusCreated = 1,
-
552  hipEventStatusRecording = 2, // event has been enqueued to record something.
-
553  hipEventStatusRecorded = 3, // event has been recorded - timestamps are valid.
-
554 } ;
-
555 
-
556 
-
557 // internal hip event structure.
-
558 struct ihipEvent_t {
-
559  hipEventStatus_t _state;
-
560 
-
561  hipStream_t _stream; // Stream where the event is recorded, or NULL if all streams.
-
562  unsigned _flags;
-
563 
-
564  hc::completion_future _marker;
-
565  uint64_t _timestamp; // store timestamp, may be set on host or by marker.
-
566 } ;
-
567 
-
568 
-
569 
-
570 
-
571 
-
572 //----
-
573 // Properties of the HIP device.
-
574 // Multiple contexts can point to same device.
- -
576 {
-
577 public:
-
578  ihipDevice_t(unsigned deviceId, unsigned deviceCnt, hc::accelerator &acc);
-
579  ~ihipDevice_t();
-
580 
-
581  // Accessors:
-
582  ihipCtx_t *getPrimaryCtx() const { return _primaryCtx; };
-
583 
-
584 public:
-
585  unsigned _deviceId; // device ID
-
586 
-
587  hc::accelerator _acc;
-
588  hsa_agent_t _hsaAgent; // hsa agent handle
-
589 
-
591  unsigned _computeUnits;
-
592  hipDeviceProp_t _props; // saved device properties.
-
593 
-
594  // TODO - report this through device properties, base on HCC API call.
-
595  int _isLargeBar;
-
596 
-
597  ihipCtx_t *_primaryCtx;
-
598 
-
599 private:
-
600  hipError_t initProperties(hipDeviceProp_t* prop);
-
601 };
-
602 //=============================================================================
-
603 
-
604 
-
605 
-
606 //=============================================================================
-
607 //class ihipCtxCriticalBase_t
-
608 template <typename MUTEX_TYPE>
- -
610 {
-
611 public:
-
612  ihipCtxCriticalBase_t(unsigned deviceCnt) :
-
613  _peerCnt(0)
-
614  {
-
615  _peerAgents = new hsa_agent_t[deviceCnt];
-
616  };
-
617 
- -
619  if (_peerAgents != nullptr) {
-
620  delete _peerAgents;
-
621  _peerAgents = nullptr;
-
622  }
-
623  _peerCnt = 0;
-
624  }
-
625 
-
626  // Streams:
-
627  void addStream(ihipStream_t *stream);
-
628  std::list<ihipStream_t*> &streams() { return _streams; };
-
629  const std::list<ihipStream_t*> &const_streams() const { return _streams; };
-
630 
-
631 
-
632  // Peer Accessor classes:
-
633  bool isPeerWatcher(const ihipCtx_t *peer); // returns True if peer has access to memory physically located on this device.
-
634  bool addPeerWatcher(const ihipCtx_t *thisCtx, ihipCtx_t *peer);
-
635  bool removePeerWatcher(const ihipCtx_t *thisCtx, ihipCtx_t *peer);
-
636  void resetPeerWatchers(ihipCtx_t *thisDevice);
-
637  void printPeerWatchers(FILE *f) const;
-
638 
-
639  uint32_t peerCnt() const { return _peerCnt; };
-
640  hsa_agent_t *peerAgents() const { return _peerAgents; };
-
641 
-
642 
-
643  // TODO - move private
-
644  std::list<ihipCtx_t*> _peers; // list of enabled peer devices.
-
645 
-
646  friend class LockedAccessor<ihipCtxCriticalBase_t>;
-
647 private:
-
648  //--- Stream Tracker:
-
649  std::list< ihipStream_t* > _streams; // streams associated with this device.
-
650 
-
651 
-
652  //--- Peer Tracker:
-
653  // These reflect the currently Enabled set of peers for this GPU:
-
654  // Enabled peers have permissions to access the memory physically allocated on this device.
-
655  // Note the peers always contain the self agent for easy interfacing with HSA APIs.
-
656  uint32_t _peerCnt; // number of enabled peers
-
657  hsa_agent_t *_peerAgents; // efficient packed array of enabled agents (to use for allocations.)
-
658 private:
-
659  void recomputePeerAgents();
-
660 };
-
661 // Note Mutex type Real/Fake selected based on CtxMutex
- -
663 
-
664 // This type is used by functions that need access to the critical device structures.
- -
666 //=============================================================================
-
667 
-
668 
-
669 //=============================================================================
-
670 //class ihipCtx_t:
-
671 // A HIP CTX (context) points at one of the existing devices and contains the streams,
-
672 // peer-to-peer mappings, creation flags. Multiple contexts can point to the same
-
673 // device.
-
674 //
- -
676 {
-
677 public: // Functions:
-
678  ihipCtx_t(ihipDevice_t *device, unsigned deviceCnt, unsigned flags); // note: calls constructor for _criticalData
-
679  ~ihipCtx_t();
-
680 
-
681  // Functions which read or write the critical data are named locked_.
-
682  // ihipCtx_t does not use recursive locks so the ihip implementation must avoid calling a locked_ function from within a locked_ function.
-
683  // External functions which call several locked_ functions will acquire and release the lock for each function. if this occurs in
-
684  // performance-sensitive code we may want to refactor by adding non-locked functions and creating a new locked_ member function to call them all.
-
685  void locked_addStream(ihipStream_t *s);
-
686  void locked_removeStream(ihipStream_t *s);
-
687  void locked_reset();
-
688  void locked_waitAllStreams();
-
689  void locked_syncDefaultStream(bool waitOnSelf);
-
690 
-
691  ihipCtxCritical_t &criticalData() { return _criticalData; }; // TODO, move private. Fix P2P.
-
692 
-
693  const ihipDevice_t *getDevice() const { return _device; };
-
694  int getDeviceNum() const { return _device->_deviceId; };
-
695 
-
696  // TODO - review uses of getWriteableDevice(), can these be converted to getDevice()
-
697  ihipDevice_t *getWriteableDevice() const { return _device; };
-
698 
-
699  std::string toString() const;
-
700 
-
701 public: // Data
-
702  // The NULL stream is used if no other stream is specified.
-
703  // Default stream has special synchronization properties with other streams.
-
704  ihipStream_t *_defaultStream;
-
705 
-
706  // Flags specified when the context is created:
-
707  unsigned _ctxFlags;
-
708 
-
709 private:
-
710  ihipDevice_t *_device;
-
711 
-
712 
-
713 private: // Critical data, protected with locked access:
-
714  // Members of _protected data MUST be accessed through the LockedAccessor.
-
715  // Search for LockedAccessor<ihipCtxCritical_t> for examples; do not access _criticalData directly.
-
716  ihipCtxCritical_t _criticalData;
-
717 
-
718 };
-
719 
-
720 
-
721 
-
722 //=================================================================================================
-
723 // Global variable definition:
-
724 extern std::once_flag hip_initialized;
-
725 extern unsigned g_deviceCnt;
-
726 extern hsa_agent_t g_cpu_agent ; // the CPU agent.
-
727 
-
728 //=================================================================================================
-
729 // Extern functions:
-
730 extern void ihipInit();
-
731 extern const char *ihipErrorString(hipError_t);
-
732 extern ihipCtx_t *ihipGetTlsDefaultCtx();
-
733 extern void ihipSetTlsDefaultCtx(ihipCtx_t *ctx);
-
734 extern hipError_t ihipSynchronize(void);
-
735 extern void ihipCtxStackUpdate();
-
736 
-
737 extern ihipDevice_t *ihipGetDevice(int);
-
738 ihipCtx_t * ihipGetPrimaryCtx(unsigned deviceIndex);
-
739 
-
740 extern void ihipSetTs(hipEvent_t e);
-
741 
-
742 
-
743 hipStream_t ihipSyncAndResolveStream(hipStream_t);
-
744 
-
745 // Stream printf functions:
-
746 inline std::ostream& operator<<(std::ostream& os, const ihipStream_t& s)
-
747 {
-
748  os << "stream#";
-
749  os << s.getDevice()->_deviceId;;
-
750  os << '.';
-
751  os << s._id;
-
752  return os;
-
753 }
-
754 
-
755 inline std::ostream & operator<<(std::ostream& os, const dim3& s)
-
756 {
-
757  os << '{';
-
758  os << s.x;
-
759  os << ',';
-
760  os << s.y;
-
761  os << ',';
-
762  os << s.z;
-
763  os << '}';
-
764  return os;
-
765 }
-
766 
-
767 inline std::ostream & operator<<(std::ostream& os, const gl_dim3& s)
-
768 {
-
769  os << '{';
-
770  os << s.x;
-
771  os << ',';
-
772  os << s.y;
-
773  os << ',';
-
774  os << s.z;
-
775  os << '}';
-
776  return os;
-
777 }
-
778 
-
779 // Stream printf functions:
-
780 inline std::ostream& operator<<(std::ostream& os, const hipEvent_t& e)
-
781 {
-
782  os << "event:" << std::hex << static_cast<void*> (e);
-
783  return os;
-
784 }
-
785 
-
786 inline std::ostream& operator<<(std::ostream& os, const ihipCtx_t* c)
-
787 {
-
788  os << "ctx:" << static_cast<const void*> (c)
-
789  << ".dev:" << c->getDevice()->_deviceId;
-
790  return os;
-
791 }
-
792 
-
793 
-
794 // Helper functions that are used across src files:
-
795 namespace hip_internal {
-
796  hipError_t memcpyAsync (void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind, hipStream_t stream);
-
797 };
-
798 
-
799 
-
800 #endif
-
Definition: hip_hcc.h:241
-
Definition: hip_hcc.h:575
-
Definition: hip_hcc.h:361
-
Definition: hip_hcc.h:86
-
friend hipError_t hipStreamQuery(hipStream_t)
Return hipSuccess if all of the operations in the specified stream have completed, or hipErrorNotReady if not.
Definition: hip_stream.cpp:113
-
Definition: hip_hcc.h:296
-
Definition: hip_hcc.h:375
-
uint32_t x
x
Definition: hip_runtime_api.h:152
-
Definition: hip_hcc.h:383
-
Definition: hip_hcc.h:675
-
Definition: hip_runtime_api.h:151
-
uint32_t y
y
Definition: hip_runtime_api.h:153
-
hipError_t
Definition: hip_runtime_api.h:152
-
hipMemcpyKind
Definition: hip_runtime_api.h:165
-
Definition: hip_hcc.h:404
-
unsigned _computeUnits
Number of compute units supported by the device:
Definition: hip_hcc.h:591
-
uint32_t z
z
Definition: hip_runtime_api.h:154
-
Definition: hip_hcc.h:70
-
Definition: hip_runtime_api.h:82
-
Definition: hip_hcc.h:558
-
Definition: hip_hcc.h:274
-
Definition: hip_hcc.h:609
-
Definition: hip_hcc.h:463
-
Definition: hip_hcc.h:429
-
hsa_amd_ipc_memory_t ipc_handle
ipc memory handle on ROCr
Definition: hip_hcc.h:378
-
Definition: hip_hcc.h:325
-
- - - - diff --git a/docs/RuntimeAPI/html/hip__ldg_8h_source.html b/docs/RuntimeAPI/html/hip__ldg_8h_source.html deleted file mode 100644 index 3fe22d965f..0000000000 --- a/docs/RuntimeAPI/html/hip__ldg_8h_source.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc_detail/hip_ldg.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_ldg.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 #ifndef HIP_LDG_H
-
24 #define HIP_LDG_H
-
25 
-
26 #if __HCC__
-
27 #if __hcc_workweek__ >= 16164
-
28 #include "hip/hip_vector_types.h"
- -
30 
-
31 
-
32 __device__ char __ldg(const char* );
-
33 __device__ char2 __ldg(const char2* );
-
34 __device__ char4 __ldg(const char4* );
-
35 __device__ signed char __ldg(const signed char* );
-
36 __device__ unsigned char __ldg(const unsigned char* );
-
37 
-
38 __device__ short __ldg(const short* );
-
39 __device__ short2 __ldg(const short2* );
-
40 __device__ short4 __ldg(const short4* );
-
41 __device__ unsigned short __ldg(const unsigned short* );
-
42 
-
43 __device__ int __ldg(const int* );
-
44 __device__ int2 __ldg(const int2* );
-
45 __device__ int4 __ldg(const int4* );
-
46 __device__ unsigned int __ldg(const unsigned int* );
-
47 
-
48 
-
49 __device__ long __ldg(const long* );
-
50 __device__ unsigned long __ldg(const unsigned long* );
-
51 
-
52 __device__ long long __ldg(const long long* );
-
53 __device__ longlong2 __ldg(const longlong2* );
-
54 __device__ unsigned long long __ldg(const unsigned long long* );
-
55 
-
56 __device__ uchar2 __ldg(const uchar2* );
-
57 __device__ uchar4 __ldg(const uchar4* );
-
58 
-
59 __device__ ushort2 __ldg(const ushort2* );
-
60 
-
61 __device__ uint2 __ldg(const uint2* );
-
62 __device__ uint4 __ldg(const uint4* );
-
63 
-
64 __device__ ulonglong2 __ldg(const ulonglong2* );
-
65 
-
66 __device__ float __ldg(const float* );
-
67 __device__ float2 __ldg(const float2* );
-
68 __device__ float4 __ldg(const float4* );
-
69 
-
70 __device__ double __ldg(const double* );
-
71 __device__ double2 __ldg(const double2* );
-
72 
-
73 #endif // __hcc_workweek__
-
74 
-
75 #endif // __HCC__
-
76 
-
77 #endif // HIP_LDG_H
-
78 
-
TODO-doc.
-
Definition: hip_vector_types.h:140
-
Definition: hip_vector_types.h:148
-
- - - - diff --git a/docs/RuntimeAPI/html/hip__profile_8h_source.html b/docs/RuntimeAPI/html/hip__profile_8h_source.html deleted file mode 100644 index e11e0a46f3..0000000000 --- a/docs/RuntimeAPI/html/hip__profile_8h_source.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hip_profile.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_profile.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 #pragma once
-
24 
-
25 #if not defined (ENABLE_HIP_PROFILE)
-
26 #define ENABLE_HIP_PROFILE 1
-
27 #endif
-
28 
-
29 #if defined(__HIP_PLATFORM_HCC__) and (ENABLE_HIP_PROFILE==1)
-
30 #include <CXLActivityLogger.h>
-
31 #define HIP_SCOPED_MARKER(markerName, group) amdtScopedMarker __scopedMarker(markerName, group, nullptr);
-
32 #define HIP_BEGIN_MARKER(markerName, group) amdtBeginMarker(markerName, group, nullptr);
-
33 #define HIP_END_MARKER() amdtEndMarker();
-
34 #else
-
35 #define HIP_SCOPED_MARKER(markerName, group)
-
36 #define HIP_BEGIN_MARKER(markerName, group)
-
37 #define HIP_END_MARKER()
-
38 #endif
-
- - - - diff --git a/docs/RuntimeAPI/html/hip__runtime_8h_source.html b/docs/RuntimeAPI/html/hip__runtime_8h_source.html deleted file mode 100644 index 6989a57f94..0000000000 --- a/docs/RuntimeAPI/html/hip__runtime_8h_source.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hip_runtime.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_runtime.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
28 //
-
32 //
-
35 
-
36 #pragma once
-
37 
-
38 // Some standard header files, these are included by hc.hpp and so want to make them avail on both
-
39 // paths to provide a consistent include env and avoid "missing symbol" errors that only appears
-
40 // on NVCC path:
-
41 #include <stdint.h>
-
42 #include <stdio.h>
-
43 #include <stdlib.h>
-
44 #include <assert.h>
-
45 
-
46 #if __cplusplus > 199711L
-
47 #include <thread>
-
48 #endif
-
49 
-
50 
-
51 #include <hip/hip_common.h>
-
52 
-
53 #if defined(__HIP_PLATFORM_HCC__) && !defined (__HIP_PLATFORM_NVCC__)
- -
55 #elif defined(__HIP_PLATFORM_NVCC__) && !defined (__HIP_PLATFORM_HCC__)
-
56 #include <hip/nvcc_detail/hip_runtime.h>
-
57 #else
-
58 #error("Must define exactly one of __HIP_PLATFORM_HCC__ or __HIP_PLATFORM_NVCC__");
-
59 #endif
-
60 
-
61 
-
62 #include <hip/hip_runtime_api.h>
-
63 #include <hip/hip_vector_types.h>
-
64 
-
Contains definitions of APIs for HIP runtime.
-
- - - - diff --git a/docs/RuntimeAPI/html/hip__runtime__api_8h_source.html b/docs/RuntimeAPI/html/hip__runtime__api_8h_source.html deleted file mode 100644 index 61781f127d..0000000000 --- a/docs/RuntimeAPI/html/hip__runtime__api_8h_source.html +++ /dev/null @@ -1,431 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hip_runtime_api.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_runtime_api.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
30 #pragma once
-
31 
-
32 
-
33 #include <string.h> // for getDeviceProp
-
34 #include <hip/hip_common.h>
-
35 
-
36 enum {
-
37 HIP_SUCCESS = 0,
-
38 HIP_ERROR_INVALID_VALUE,
-
39 HIP_ERROR_NOT_INITIALIZED,
-
40 HIP_ERROR_LAUNCH_OUT_OF_RESOURCES
-
41 };
-
42 
-
43 typedef struct {
-
44  // 32-bit Atomics
-
45  unsigned hasGlobalInt32Atomics : 1;
-
46  unsigned hasGlobalFloatAtomicExch : 1;
-
47  unsigned hasSharedInt32Atomics : 1;
-
48  unsigned hasSharedFloatAtomicExch : 1;
-
49  unsigned hasFloatAtomicAdd : 1;
-
50 
-
51  // 64-bit Atomics
-
52  unsigned hasGlobalInt64Atomics : 1;
-
53  unsigned hasSharedInt64Atomics : 1;
-
54 
-
55  // Doubles
-
56  unsigned hasDoubles : 1;
-
57 
-
58  // Warp cross-lane operations
-
59  unsigned hasWarpVote : 1;
-
60  unsigned hasWarpBallot : 1;
-
61  unsigned hasWarpShuffle : 1;
-
62  unsigned hasFunnelShift : 1;
-
63 
-
64  // Sync
-
65  unsigned hasThreadFenceSystem : 1;
-
66  unsigned hasSyncThreadsExt : 1;
-
67 
-
68  // Misc
-
69  unsigned hasSurfaceFuncs : 1;
-
70  unsigned has3dGrid : 1;
-
71  unsigned hasDynamicParallelism : 1;
- -
73 
-
74 
-
75 //---
-
76 // Common headers for both NVCC and HCC paths:
-
77 
-
82 typedef struct hipDeviceProp_t {
-
83  char name[256];
-
84  size_t totalGlobalMem;
- - -
87  int warpSize;
- -
89  int maxThreadsDim[3];
-
90  int maxGridSize[3];
-
91  int clockRate;
- - -
94  size_t totalConstMem;
-
95  int major;
-
96  int minor;
- - - - - - - -
104  int pciBusID;
- - - - -
109  } hipDeviceProp_t;
-
110 
-
111 
-
115 enum hipMemoryType {
-
116  hipMemoryTypeHost,
-
117  hipMemoryTypeDevice
-
118 };
-
119 
-
120 
-
121 
-
125 typedef struct hipPointerAttribute_t {
-
126  enum hipMemoryType memoryType;
-
127  int device;
-
128  void *devicePointer;
-
129  void *hostPointer;
-
130  int isManaged;
-
131  unsigned allocationFlags; /* flags specified when memory was allocated*/
-
132  /* peers? */
- -
134 
-
135 
-
136 // hack to get these to show up in Doxygen:
-
144 /*
-
145  * @brief hipError_t
-
146  * @enum
-
147  * @ingroup Enumerations
-
148  */
-
149 // Developer note - when updating these, update the hipErrorName and hipErrorString functions in NVCC and HCC paths
-
150 // Also update the hipCUDAErrorTohipError function in NVCC path.
-
151 
-
152 typedef enum hipError_t {
- -
154  hipErrorOutOfMemory = 2,
-
155  hipErrorNotInitialized = 3,
-
156  hipErrorDeinitialized = 4,
-
157  hipErrorProfilerDisabled = 5,
-
158  hipErrorProfilerNotInitialized = 6,
-
159  hipErrorProfilerAlreadyStarted = 7,
-
160  hipErrorProfilerAlreadyStopped = 8,
-
161  hipErrorInvalidImage = 200,
- -
163  hipErrorContextAlreadyCurrent = 202,
-
164  hipErrorMapFailed = 205,
-
165  hipErrorUnmapFailed = 206,
-
166  hipErrorArrayIsMapped = 207,
-
167  hipErrorAlreadyMapped = 208,
-
168  hipErrorNoBinaryForGpu = 209,
-
169  hipErrorAlreadyAcquired = 210,
-
170  hipErrorNotMapped = 211,
-
171  hipErrorNotMappedAsArray = 212,
-
172  hipErrorNotMappedAsPointer = 213,
-
173  hipErrorECCNotCorrectable = 214,
-
174  hipErrorUnsupportedLimit = 215,
-
175  hipErrorContextAlreadyInUse = 216,
-
176  hipErrorPeerAccessUnsupported = 217,
- -
178  hipErrorInvalidGraphicsContext = 219,
-
179  hipErrorInvalidSource = 300,
-
180  hipErrorFileNotFound = 301,
-
181  hipErrorSharedObjectSymbolNotFound = 302,
-
182  hipErrorSharedObjectInitFailed = 303,
-
183  hipErrorOperatingSystem = 304,
-
184  hipErrorInvalidHandle = 400,
-
185  hipErrorNotFound = 500,
-
186  hipErrorIllegalAddress = 700,
-
187  hipErrorInvalidSymbol = 701,
-
188 // Runtime Error Codes start here.
-
189  hipErrorMissingConfiguration = 1001,
- - - -
193  hipErrorPriorLaunchFailure = 1005,
-
194  hipErrorLaunchTimeOut = 1006,
- -
196  hipErrorInvalidDeviceFunction = 1008,
-
197  hipErrorInvalidConfiguration = 1009,
- - - - - - - - - -
207 
- - - - - - - -
215 } hipError_t;
-
216 
-
217 /*
-
218  * @brief hipDeviceAttribute_t
-
219  * @enum
-
220  * @ingroup Enumerations
-
221  */
-
222 typedef enum hipDeviceAttribute_t {
- - - - - - - - - - - - - - - - - - - - - - - - - - -
249 
-
254 #if defined(__HIP_PLATFORM_HCC__) && !defined (__HIP_PLATFORM_NVCC__)
- -
256 #elif defined(__HIP_PLATFORM_NVCC__) && !defined (__HIP_PLATFORM_HCC__)
-
257 #include "hip/nvcc_detail/hip_runtime_api.h"
-
258 #else
-
259 #error("Must define exactly one of __HIP_PLATFORM_HCC__ or __HIP_PLATFORM_NVCC__");
-
260 #endif
-
261 
-
262 
-
270 #ifdef __cplusplus
-
271 template<class T>
-
272 static inline hipError_t hipMalloc ( T** devPtr, size_t size)
-
273 {
-
274  return hipMalloc((void**)devPtr, size);
-
275 }
-
276 
-
277 // Provide an override to automatically typecast the pointer type from void**, and also provide a default for the flags.
-
278 template<class T>
-
279 static inline hipError_t hipHostMalloc( T** ptr, size_t size, unsigned int flags = hipHostMallocDefault)
-
280 {
-
281  return hipHostMalloc((void**)ptr, size, flags);
-
282 }
-
283 #endif
-
Call to hipGetDeviceCount returned 0 devices.
Definition: hip_runtime_api.h:205
-
size_t totalConstMem
Size of shared memory region (in bytes).
Definition: hip_runtime_api.h:94
-
Maximum Shared Memory Per Multiprocessor.
Definition: hip_runtime_api.h:246
-
Maximum x-dimension of a block.
Definition: hip_runtime_api.h:224
-
Maximum x-dimension of a grid.
Definition: hip_runtime_api.h:227
-
Peer access was already enabled from the current device.
Definition: hip_runtime_api.h:206
-
HSA runtime memory call returned error. Typically not seen in production systems. ...
Definition: hip_runtime_api.h:209
-
Global memory bus width in bits.
Definition: hip_runtime_api.h:236
-
Produced when the IPC memory attach failed from ROCr.
Definition: hip_runtime_api.h:213
-
Successful completion.
Definition: hip_runtime_api.h:153
-
int minor
Minor compute capability. On HCC, this is an approximation and features may differ from CUDA CC...
Definition: hip_runtime_api.h:96
-
In CUDA DRV, it is CUDA_ERROR_INVALID_PTX.
Definition: hip_runtime_api.h:177
-
int canMapHostMemory
Check whether HIP can map host memory.
Definition: hip_runtime_api.h:108
-
Maximum number of 32-bit registers available to a thread block. This number is shared by all thread b...
Definition: hip_runtime_api.h:233
-
int regsPerBlock
Registers per block.
Definition: hip_runtime_api.h:86
-
Size of L2 cache in bytes. 0 if the device doesn't have L2 cache.
Definition: hip_runtime_api.h:239
-
#define hipHostMallocDefault
Flags that can be used with hipHostMalloc.
Definition: hip_runtime_api.h:103
-
HSA runtime call other than memory returned error. Typically not seen in production systems...
Definition: hip_runtime_api.h:210
-
int isMultiGpuBoard
1 if device is on a multi-GPU board, 0 if not.
Definition: hip_runtime_api.h:107
-
DeviceID must be in range 0...#compute-devices.
Definition: hip_runtime_api.h:198
-
Peak clock frequency in kilohertz.
Definition: hip_runtime_api.h:234
-
Definition: hip_runtime_api.h:125
-
int clockRate
Max clock frequency of the multiProcessors in khz.
Definition: hip_runtime_api.h:91
-
Maximum z-dimension of a grid.
Definition: hip_runtime_api.h:229
-
Minor compute capability version number.
Definition: hip_runtime_api.h:242
-
Maximum shared memory available per block in bytes.
Definition: hip_runtime_api.h:230
-
int pciBusID
PCI Bus ID.
Definition: hip_runtime_api.h:104
-
Maximum y-dimension of a grid.
Definition: hip_runtime_api.h:228
-
Multiple GPU devices.
Definition: hip_runtime_api.h:247
-
Unknown error.
Definition: hip_runtime_api.h:202
-
int maxThreadsPerBlock
Max work items per work group or workgroup max size.
Definition: hip_runtime_api.h:88
-
Maximum y-dimension of a block.
Definition: hip_runtime_api.h:225
-
hipError_t hipHostMalloc(void **ptr, size_t size, unsigned int flags)
Allocate device accessible page locked host memory.
Definition: hip_memory.cpp:161
-
size_t sharedMemPerBlock
Size of shared memory region (in bytes).
Definition: hip_runtime_api.h:85
-
int maxThreadsPerMultiProcessor
Maximum resident threads per multi-processor.
Definition: hip_runtime_api.h:99
-
Produced when trying to lock a page-locked memory.
Definition: hip_runtime_api.h:211
-
int l2CacheSize
L2 cache size.
Definition: hip_runtime_api.h:98
-
hipDeviceAttribute_t
Definition: hip_runtime_api.h:222
-
Major compute capability version number.
Definition: hip_runtime_api.h:241
-
Peer access was never enabled from the current device.
Definition: hip_runtime_api.h:208
-
Maximum number of threads per block.
Definition: hip_runtime_api.h:223
-
Resource handle (hipEvent_t or hipStream_t) invalid.
Definition: hip_runtime_api.h:203
-
Memory allocation error.
Definition: hip_runtime_api.h:190
-
hipDeviceArch_t arch
Architectural feature flags. New for HIP.
Definition: hip_runtime_api.h:102
-
int maxGridSize[3]
Max grid dimensions (XYZ).
Definition: hip_runtime_api.h:90
-
int computeMode
Compute mode.
Definition: hip_runtime_api.h:100
-
Maximum z-dimension of a block.
Definition: hip_runtime_api.h:226
-
PCI Bus ID.
Definition: hip_runtime_api.h:244
-
Invalid memory copy direction.
Definition: hip_runtime_api.h:201
-
Marker that more error codes are needed.
Definition: hip_runtime_api.h:214
-
Warp size in threads.
Definition: hip_runtime_api.h:232
-
int major
Major compute capability. On HCC, this is an approximation and features may differ from CUDA CC...
Definition: hip_runtime_api.h:95
-
Peak memory clock frequency in kilohertz.
Definition: hip_runtime_api.h:235
-
Maximum resident threads per multiprocessor.
Definition: hip_runtime_api.h:240
-
hipError_t
Definition: hip_runtime_api.h:152
-
int clockInstructionRate
Frequency in khz of the timer used by the device-side "clock*" instructions. New for HIP...
Definition: hip_runtime_api.h:101
-
Constant memory size in bytes.
Definition: hip_runtime_api.h:231
-
int warpSize
Warp size.
Definition: hip_runtime_api.h:87
-
int concurrentKernels
Device can possibly execute multiple kernels concurrently.
Definition: hip_runtime_api.h:103
-
size_t totalGlobalMem
Size of global memory region (in bytes).
Definition: hip_runtime_api.h:84
-
Invalid Device Pointer.
Definition: hip_runtime_api.h:200
-
An exception occurred on the device while executing a kernel.
Definition: hip_runtime_api.h:192
-
hipError_t hipMalloc(void **ptr, size_t size)
Allocate memory on the default accelerator.
Definition: hip_memory.cpp:105
-
Compute mode that device is currently in.
Definition: hip_runtime_api.h:238
-
PCI Device ID.
Definition: hip_runtime_api.h:245
-
int maxThreadsDim[3]
Max number of threads in each dimension (XYZ) of a block.
Definition: hip_runtime_api.h:89
-
Number of multiprocessors on the device.
Definition: hip_runtime_api.h:237
-
int memoryBusWidth
Global memory bus width in bits.
Definition: hip_runtime_api.h:93
-
One or more of the parameters passed to the API call is NULL or not in an acceptable range...
Definition: hip_runtime_api.h:199
-
Definition: hip_runtime_api.h:82
-
Indicates that asynchronous operations enqueued earlier are not ready. This is not actually an error...
Definition: hip_runtime_api.h:204
-
size_t maxSharedMemoryPerMultiProcessor
Maximum Shared Memory Per Multiprocessor.
Definition: hip_runtime_api.h:106
-
int pciDeviceID
PCI Device ID.
Definition: hip_runtime_api.h:105
-
char name[256]
Device name.
Definition: hip_runtime_api.h:83
-
Produced when trying to unlock a non-page-locked memory.
Definition: hip_runtime_api.h:212
-
Definition: hip_runtime_api.h:43
-
Contains C function APIs for HIP runtime. This file does not use any HCC builtin or special language ...
-
int memoryClockRate
Max global memory clock frequency in khz.
Definition: hip_runtime_api.h:92
-
TODO comment from hipErrorInitializationError.
Definition: hip_runtime_api.h:191
-
Produced when input context is invalid.
Definition: hip_runtime_api.h:162
-
Device can possibly execute multiple kernels concurrently.
Definition: hip_runtime_api.h:243
-
int multiProcessorCount
Number of multi-processors (compute units).
Definition: hip_runtime_api.h:97
-
Out of resources error.
Definition: hip_runtime_api.h:195
-
- - - - diff --git a/docs/RuntimeAPI/html/hip__texture_8h_source.html b/docs/RuntimeAPI/html/hip__texture_8h_source.html deleted file mode 100644 index 6fdfd354c0..0000000000 --- a/docs/RuntimeAPI/html/hip__texture_8h_source.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hip_texture.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_texture.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 
-
24 
-
25 #ifndef HIP_HIP_TEXTURE_H
-
26 #define HIP_HIP_TEXTURE_H
-
27 
-
28 #if defined(__HIP_PLATFORM_HCC__) && !defined (__HIP_PLATFORM_NVCC__)
- -
30 #elif defined(__HIP_PLATFORM_NVCC__) && !defined (__HIP_PLATFORM_HCC__)
-
31 #include <hip/nvcc_detail/hip_texture.h>
-
32 #else
-
33 #error("Must define exactly one of __HIP_PLATFORM_HCC__ or __HIP_PLATFORM_NVCC__");
-
34 #endif
-
35 
-
36 
-
37 #endif
-
HIP C++ Texture API for hcc compiler.
-
- - - - diff --git a/docs/RuntimeAPI/html/hip__util_8h_source.html b/docs/RuntimeAPI/html/hip__util_8h_source.html deleted file mode 100644 index b3ecdd89b1..0000000000 --- a/docs/RuntimeAPI/html/hip__util_8h_source.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/src/hip_util.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_util.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 #ifndef HIP_UTIL_H
-
24 #define HIP_UTIL_H
-
25 
-
26 #include <assert.h>
-
27 #include <stdint.h>
-
28 #include <iostream>
-
29 #include <sstream>
-
30 #include <list>
-
31 #include <sys/types.h>
-
32 #include <unistd.h>
-
33 #include <deque>
-
34 #include <vector>
-
35 #include <algorithm>
-
36 
-
37 
-
38 #endif
-
- - - - diff --git a/docs/RuntimeAPI/html/hip__vector__types_8h_source.html b/docs/RuntimeAPI/html/hip__vector__types_8h_source.html deleted file mode 100644 index dcc0703001..0000000000 --- a/docs/RuntimeAPI/html/hip__vector__types_8h_source.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hip_vector_types.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
hip_vector_types.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
24 
-
25 #pragma once
-
26 
-
27 #include <hip/hip_common.h>
-
28 
-
29 
-
30 #if defined(__HIP_PLATFORM_HCC__) && !defined (__HIP_PLATFORM_NVCC__)
-
31 #if __cplusplus
- -
33 #endif
-
34 #elif defined(__HIP_PLATFORM_NVCC__) && !defined (__HIP_PLATFORM_HCC__)
-
35 #include <vector_types.h>
-
36 #else
-
37 #error("Must define exactly one of __HIP_PLATFORM_HCC__ or __HIP_PLATFORM_NVCC__");
-
38 #endif
-
Defines the different newt vector types for HIP runtime.
-
- - - - diff --git a/docs/RuntimeAPI/html/host__defines_8h.html b/docs/RuntimeAPI/html/host__defines_8h.html deleted file mode 100644 index 9b8eb086e1..0000000000 --- a/docs/RuntimeAPI/html/host__defines_8h.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc_detail/host_defines.h File Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
- -
-
host_defines.h File Reference
-
-
- -

TODO-doc. -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - -

-Macros

#define __host__   __attribute__((cpu))
 
-#define __device__   __attribute__((hc))
 
-#define __global__   __attribute__((hc_grid_launch))
 
-#define __noinline__   __attribute__((noinline))
 
-#define __forceinline__   __attribute__((always_inline))
 
-#define __shared__   tile_static
 
-#define __constant__   __attribute__((address_space(1)))
 
-

Detailed Description

-

TODO-doc.

-

Macro Definition Documentation

- -
-
- - - - -
#define __host__   __attribute__((cpu))
-
-

Function and kernel markers

- -
-
-
- - - - diff --git a/docs/RuntimeAPI/html/host__defines_8h_source.html b/docs/RuntimeAPI/html/host__defines_8h_source.html deleted file mode 100644 index f8eac1b2a7..0000000000 --- a/docs/RuntimeAPI/html/host__defines_8h_source.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/include/hip/hcc_detail/host_defines.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
host_defines.h
-
-
-Go to the documentation of this file.
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
28 #ifndef HOST_DEFINES_H
-
29 #define HOST_DEFINES_H
-
30 
-
31 #ifdef __HCC__
-
32 
-
35 #define __host__ __attribute__((cpu))
-
36 #define __device__ __attribute__((hc))
-
37 
-
38 #define __global__ __attribute__((hc_grid_launch))
-
39 
-
40 #define __noinline__ __attribute__((noinline))
-
41 #define __forceinline__ __attribute__((always_inline))
-
42 
-
43 
-
44 
-
45 /*
-
46  * Variable Type Qualifiers:
-
47  */
-
48 // _restrict is supported by the compiler
-
49 #define __shared__ tile_static
-
50 #define __constant__ __attribute__((address_space(1)))
-
51 
-
52 #else
-
53 // Non-HCC compiler
-
57 #define __host__
-
58 #define __device__
-
59 
-
60 #define __global__
-
61 
-
62 #define __noinline__
-
63 #define __forceinline__
-
64 
-
65 #define __shared__
-
66 #define __constant__
-
67 
-
68 #endif
-
69 
-
70 #endif
-
- - - - diff --git a/docs/RuntimeAPI/html/index.html b/docs/RuntimeAPI/html/index.html deleted file mode 100644 index a5823c259c..0000000000 --- a/docs/RuntimeAPI/html/index.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Heterogeneous-computing Interface for Portability (HIP) - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
-
-
Heterogeneous-computing Interface for Portability (HIP)
-
-
-

The HIP interface makes it very easy to port existing CUDA apps to run on AMD GPUs, or to develop new apps that can run on either CUDA or AMD GPUs from a common source base.

-
    -
  • HIP is very thin and has little or no performance impact over coding directly in CUDA NVCC or HCC HC mode.
  • -
  • HIP allows developers to use the "best" development environment and tools on each target platform.
  • -
  • HIP allows coding in a single-source C++ programming language including features such as templates, C++11 lambdas,and more.
  • -
  • "hipify" tool automatically converts source from CUDA to HIP.
  • -
  • Developers can specialize for CUDA or HCC to tune for performance or handle tricky cases with #ifdef.
  • -
  • See the HIP API.
  • -
-
- - - - diff --git a/docs/RuntimeAPI/html/jquery.js b/docs/RuntimeAPI/html/jquery.js deleted file mode 100644 index c197801c5d..0000000000 --- a/docs/RuntimeAPI/html/jquery.js +++ /dev/null @@ -1,31 +0,0 @@ -/*! - * jQuery JavaScript Library v1.7.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Mon Nov 21 21:11:03 2011 -0500 - */ -(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType; -if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1 -},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av); -ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length; -if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b -})}})(window); diff --git a/docs/RuntimeAPI/html/modules.html b/docs/RuntimeAPI/html/modules.html deleted file mode 100644 index ba3bae37e0..0000000000 --- a/docs/RuntimeAPI/html/modules.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Modules - - - - - - - - - -
-
-
- - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
- - - - - - - - - - -
- -
- -
-
-
Modules
-
- - - - - diff --git a/docs/RuntimeAPI/html/nav_f.png b/docs/RuntimeAPI/html/nav_f.png deleted file mode 100644 index 72a58a529e..0000000000 Binary files a/docs/RuntimeAPI/html/nav_f.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/nav_g.png b/docs/RuntimeAPI/html/nav_g.png deleted file mode 100644 index 2093a237a9..0000000000 Binary files a/docs/RuntimeAPI/html/nav_g.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/nav_h.png b/docs/RuntimeAPI/html/nav_h.png deleted file mode 100644 index 33389b101d..0000000000 Binary files a/docs/RuntimeAPI/html/nav_h.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/open.png b/docs/RuntimeAPI/html/open.png deleted file mode 100644 index 30f75c7efe..0000000000 Binary files a/docs/RuntimeAPI/html/open.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/pages.html b/docs/RuntimeAPI/html/pages.html deleted file mode 100644 index 2236c6e7e0..0000000000 --- a/docs/RuntimeAPI/html/pages.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Related Pages - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - -
- - - - -
- -
- -
-
-
Related Pages
-
-
-
Here is a list of all related documentation pages:
-
- - - - diff --git a/docs/RuntimeAPI/html/search/all_0.html b/docs/RuntimeAPI/html/search/all_0.html deleted file mode 100644 index 17b6da85df..0000000000 --- a/docs/RuntimeAPI/html/search/all_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_0.js b/docs/RuntimeAPI/html/search/all_0.js deleted file mode 100644 index 2901eb97b7..0000000000 --- a/docs/RuntimeAPI/html/search/all_0.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['_5f_5fhalf',['__half',['../struct____half.html',1,'']]], - ['_5f_5fhost_5f_5f',['__host__',['../host__defines_8h.html#a803050db3c78e0db3ea59a0c35499622',1,'host_defines.h']]], - ['_5f_5fthreadfence',['__threadfence',['../group__Fence.html#ga8ed093b29d5c05d46a1240e7a35a6d13',1,'hip_runtime.h']]], - ['_5f_5fthreadfence_5fblock',['__threadfence_block',['../group__Fence.html#ga675c8823d497b2fd91abc42085e5ae25',1,'hip_runtime.h']]], - ['_5f_5fthreadfence_5fsystem',['__threadfence_system',['../group__Fence.html#ga21e7328a2daaf9e376d10b5c6b3de0ae',1,'__threadfence_system(void): device_util.cpp'],['../group__Fence.html#ga21e7328a2daaf9e376d10b5c6b3de0ae',1,'__threadfence_system(void): device_util.cpp']]], - ['_5fcomputeunits',['_computeUnits',['../classihipDevice__t.html#a655e03136394df32571a52707aa371c5',1,'ihipDevice_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_1.html b/docs/RuntimeAPI/html/search/all_1.html deleted file mode 100644 index e2906449f2..0000000000 --- a/docs/RuntimeAPI/html/search/all_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_1.js b/docs/RuntimeAPI/html/search/all_1.js deleted file mode 100644 index 2fba32867b..0000000000 --- a/docs/RuntimeAPI/html/search/all_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['arch',['arch',['../structhipDeviceProp__t.html#afc58158e44bef6ad26f2be401434b049',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_10.html b/docs/RuntimeAPI/html/search/all_10.html deleted file mode 100644 index c55c8367e4..0000000000 --- a/docs/RuntimeAPI/html/search/all_10.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_10.js b/docs/RuntimeAPI/html/search/all_10.js deleted file mode 100644 index bb8f6295d1..0000000000 --- a/docs/RuntimeAPI/html/search/all_10.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['texture_20reference_20management',['Texture Reference Management',['../group__Texture.html',1,'']]], - ['texturereference',['textureReference',['../structtextureReference.html',1,'']]], - ['totalconstmem',['totalConstMem',['../structhipDeviceProp__t.html#a29880232c56120be3455ce00d5379665',1,'hipDeviceProp_t']]], - ['totalglobalmem',['totalGlobalMem',['../structhipDeviceProp__t.html#acedd6a2d23423441e4bf51c4a1b719f9',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_11.html b/docs/RuntimeAPI/html/search/all_11.html deleted file mode 100644 index 6f3943a941..0000000000 --- a/docs/RuntimeAPI/html/search/all_11.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_11.js b/docs/RuntimeAPI/html/search/all_11.js deleted file mode 100644 index e1eb527d76..0000000000 --- a/docs/RuntimeAPI/html/search/all_11.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['uchar3',['uchar3',['../structuchar3.html',1,'']]], - ['uchar4',['uchar4',['../structuchar4.html',1,'']]], - ['uint3',['uint3',['../structuint3.html',1,'']]], - ['ulong3',['ulong3',['../structulong3.html',1,'']]], - ['ulonglong3',['ulonglong3',['../structulonglong3.html',1,'']]], - ['ushort3',['ushort3',['../structushort3.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_12.html b/docs/RuntimeAPI/html/search/all_12.html deleted file mode 100644 index 3c7c89ef60..0000000000 --- a/docs/RuntimeAPI/html/search/all_12.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_12.js b/docs/RuntimeAPI/html/search/all_12.js deleted file mode 100644 index 46a1400a7b..0000000000 --- a/docs/RuntimeAPI/html/search/all_12.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['warpsize',['warpSize',['../structhipDeviceProp__t.html#af3357d33c004608bf05bc21a352be81b',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_13.html b/docs/RuntimeAPI/html/search/all_13.html deleted file mode 100644 index 0bd629b86b..0000000000 --- a/docs/RuntimeAPI/html/search/all_13.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_13.js b/docs/RuntimeAPI/html/search/all_13.js deleted file mode 100644 index 250c203caf..0000000000 --- a/docs/RuntimeAPI/html/search/all_13.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['x',['x',['../structdim3.html#ac866c05f83a28dac20a153fc65b3b16c',1,'dim3']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_14.html b/docs/RuntimeAPI/html/search/all_14.html deleted file mode 100644 index 2ad638b277..0000000000 --- a/docs/RuntimeAPI/html/search/all_14.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_14.js b/docs/RuntimeAPI/html/search/all_14.js deleted file mode 100644 index 133dd9dc6e..0000000000 --- a/docs/RuntimeAPI/html/search/all_14.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['y',['y',['../structdim3.html#a83e60e072f7e8bdfde6ac05053cbb370',1,'dim3']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_15.html b/docs/RuntimeAPI/html/search/all_15.html deleted file mode 100644 index d3b5274ba7..0000000000 --- a/docs/RuntimeAPI/html/search/all_15.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_15.js b/docs/RuntimeAPI/html/search/all_15.js deleted file mode 100644 index e8bf38b99c..0000000000 --- a/docs/RuntimeAPI/html/search/all_15.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['z',['z',['../structdim3.html#a866e38993ecc4e76fd47311236c16b04',1,'dim3']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_2.html b/docs/RuntimeAPI/html/search/all_2.html deleted file mode 100644 index 95ded1222d..0000000000 --- a/docs/RuntimeAPI/html/search/all_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_2.js b/docs/RuntimeAPI/html/search/all_2.js deleted file mode 100644 index 8d42650d49..0000000000 --- a/docs/RuntimeAPI/html/search/all_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['bug_20list',['Bug List',['../bug.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_3.html b/docs/RuntimeAPI/html/search/all_3.html deleted file mode 100644 index 4d312d03dd..0000000000 --- a/docs/RuntimeAPI/html/search/all_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_3.js b/docs/RuntimeAPI/html/search/all_3.js deleted file mode 100644 index eed6c54048..0000000000 --- a/docs/RuntimeAPI/html/search/all_3.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['canmaphostmemory',['canMapHostMemory',['../structhipDeviceProp__t.html#ac2143f5448607d1a02a9e8783fcf06a1',1,'hipDeviceProp_t']]], - ['char3',['char3',['../structchar3.html',1,'']]], - ['char4',['char4',['../structchar4.html',1,'']]], - ['clockinstructionrate',['clockInstructionRate',['../structhipDeviceProp__t.html#a6fbf3b08a1a08ae700f1a06265f6666b',1,'hipDeviceProp_t']]], - ['clockrate',['clockRate',['../structhipDeviceProp__t.html#a1dd15bee43692b8649dfbdc1adbaaf96',1,'hipDeviceProp_t']]], - ['computemode',['computeMode',['../structhipDeviceProp__t.html#ae7d9216f8583a703359d0b9373823f5d',1,'hipDeviceProp_t']]], - ['concurrentkernels',['concurrentKernels',['../structhipDeviceProp__t.html#ad8461a28caf9c38c58cf358583b5bee3',1,'hipDeviceProp_t']]], - ['control',['Control',['../group__Profiler.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_4.html b/docs/RuntimeAPI/html/search/all_4.html deleted file mode 100644 index d72a9104cd..0000000000 --- a/docs/RuntimeAPI/html/search/all_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_4.js b/docs/RuntimeAPI/html/search/all_4.js deleted file mode 100644 index 07d1b6e566..0000000000 --- a/docs/RuntimeAPI/html/search/all_4.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['dbname',['DbName',['../structDbName.html',1,'']]], - ['deprecated_20list',['Deprecated List',['../deprecated.html',1,'']]], - ['device_20management',['Device Management',['../group__Device.html',1,'']]], - ['dim3',['dim3',['../structdim3.html',1,'dim3'],['../group__GlobalDefs.html#gacb37281795c3567d0b10a61c056d512b',1,'dim3(): hip_runtime_api.h']]], - ['double1',['double1',['../structdouble1.html',1,'']]], - ['double3',['double3',['../structdouble3.html',1,'']]], - ['device_20memory_20access',['Device Memory Access',['../group__PeerToPeer.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_5.html b/docs/RuntimeAPI/html/search/all_5.html deleted file mode 100644 index 99ef726704..0000000000 --- a/docs/RuntimeAPI/html/search/all_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_5.js b/docs/RuntimeAPI/html/search/all_5.js deleted file mode 100644 index c9fd17e83e..0000000000 --- a/docs/RuntimeAPI/html/search/all_5.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['error_20handling',['Error Handling',['../group__Error.html',1,'']]], - ['event_20management',['Event Management',['../group__Event.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_6.html b/docs/RuntimeAPI/html/search/all_6.html deleted file mode 100644 index 6133ab3af1..0000000000 --- a/docs/RuntimeAPI/html/search/all_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_6.js b/docs/RuntimeAPI/html/search/all_6.js deleted file mode 100644 index feba6529f6..0000000000 --- a/docs/RuntimeAPI/html/search/all_6.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['fakemutex',['FakeMutex',['../classFakeMutex.html',1,'']]], - ['fence_20functions',['Fence Functions',['../group__Fence.html',1,'']]], - ['float1',['float1',['../structfloat1.html',1,'']]], - ['float3',['float3',['../structfloat3.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_7.html b/docs/RuntimeAPI/html/search/all_7.html deleted file mode 100644 index 574812594f..0000000000 --- a/docs/RuntimeAPI/html/search/all_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_7.js b/docs/RuntimeAPI/html/search/all_7.js deleted file mode 100644 index 529e9394c3..0000000000 --- a/docs/RuntimeAPI/html/search/all_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['global_20enum_20and_20defines',['Global enum and defines',['../group__GlobalDefs.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_8.html b/docs/RuntimeAPI/html/search/all_8.html deleted file mode 100644 index 0179bdd463..0000000000 --- a/docs/RuntimeAPI/html/search/all_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_8.js b/docs/RuntimeAPI/html/search/all_8.js deleted file mode 100644 index 1e1570aaa0..0000000000 --- a/docs/RuntimeAPI/html/search/all_8.js +++ /dev/null @@ -1,230 +0,0 @@ -var searchData= -[ - ['hip_20api',['HIP API',['../group__API.html',1,'']]], - ['has3dgrid',['has3dGrid',['../structhipDeviceArch__t.html#aa5e22d295cce0d9a34ee6e7e7e378c26',1,'hipDeviceArch_t']]], - ['hasdoubles',['hasDoubles',['../structhipDeviceArch__t.html#a2d624e3d85e615b71d1182f8912893b4',1,'hipDeviceArch_t']]], - ['hasdynamicparallelism',['hasDynamicParallelism',['../structhipDeviceArch__t.html#a9114bfc718bf0648b54ff9a319a36b35',1,'hipDeviceArch_t']]], - ['hasfloatatomicadd',['hasFloatAtomicAdd',['../structhipDeviceArch__t.html#a2321d6ef74aac91c044f3289d25b2d41',1,'hipDeviceArch_t']]], - ['hasfunnelshift',['hasFunnelShift',['../structhipDeviceArch__t.html#aaec4f2d983d4602858fae8e9ddeee3ff',1,'hipDeviceArch_t']]], - ['hasglobalfloatatomicexch',['hasGlobalFloatAtomicExch',['../structhipDeviceArch__t.html#a8f213ae9a4729dff1c636ac5de0e2fa2',1,'hipDeviceArch_t']]], - ['hasglobalint32atomics',['hasGlobalInt32Atomics',['../structhipDeviceArch__t.html#a8d00c3ab98869b602c714fe7abe68e93',1,'hipDeviceArch_t']]], - ['hasglobalint64atomics',['hasGlobalInt64Atomics',['../structhipDeviceArch__t.html#ad5aa54dbab22dbcd8cf98f57a96c6636',1,'hipDeviceArch_t']]], - ['hassharedfloatatomicexch',['hasSharedFloatAtomicExch',['../structhipDeviceArch__t.html#aff005558b4edabd27b27f286ac5b2f2b',1,'hipDeviceArch_t']]], - ['hassharedint32atomics',['hasSharedInt32Atomics',['../structhipDeviceArch__t.html#a1596330b1cb9cc73f142aee11b2ab853',1,'hipDeviceArch_t']]], - ['hassharedint64atomics',['hasSharedInt64Atomics',['../structhipDeviceArch__t.html#a00c2b930fcdcad9ea7b54b449db13966',1,'hipDeviceArch_t']]], - ['hassurfacefuncs',['hasSurfaceFuncs',['../structhipDeviceArch__t.html#a9eb2462148686d4c048b69b6e09f835e',1,'hipDeviceArch_t']]], - ['hassyncthreadsext',['hasSyncThreadsExt',['../structhipDeviceArch__t.html#ade6a3b21ad5f344dcd92c52102c274ba',1,'hipDeviceArch_t']]], - ['hasthreadfencesystem',['hasThreadFenceSystem',['../structhipDeviceArch__t.html#ac2818e3b91cba8beb36741e9867bb887',1,'hipDeviceArch_t']]], - ['haswarpballot',['hasWarpBallot',['../structhipDeviceArch__t.html#af1e934a8a5106995bcc256287585564c',1,'hipDeviceArch_t']]], - ['haswarpshuffle',['hasWarpShuffle',['../structhipDeviceArch__t.html#a3d922e8fc97ca1e8ecc39600b138fa2d',1,'hipDeviceArch_t']]], - ['haswarpvote',['hasWarpVote',['../structhipDeviceArch__t.html#a35bde017352eca1d4e0eceb3bf79f274',1,'hipDeviceArch_t']]], - ['hcc_2dspecific_20accessors',['HCC-Specific Accessors',['../group__HCC__Specific.html',1,'']]], - ['hip_20environment_20variables',['HIP Environment Variables',['../group__HIP-ENV.html',1,'']]], - ['hip_5fdynamic_5fshared',['HIP_DYNAMIC_SHARED',['../hcc__detail_2hip__runtime_8h.html#a1e7ec14fb6b74c03b6ec804d6ef7e0ea',1,'hip_runtime.h']]], - ['hip_5fhcc_2ecpp',['hip_hcc.cpp',['../hip__hcc_8cpp.html',1,'']]], - ['hip_5fruntime_2eh',['hip_runtime.h',['../hcc__detail_2hip__runtime_8h.html',1,'']]], - ['hip_5fruntime_5fapi_2eh',['hip_runtime_api.h',['../hcc__detail_2hip__runtime__api_8h.html',1,'']]], - ['hip_5ftexture_2eh',['hip_texture.h',['../hcc__detail_2hip__texture_8h.html',1,'']]], - ['hip_5fvector_5ftypes_2eh',['hip_vector_types.h',['../hcc__detail_2hip__vector__types_8h.html',1,'']]], - ['hiparray',['hipArray',['../structhipArray.html',1,'']]], - ['hipchannelformatdesc',['hipChannelFormatDesc',['../structhipChannelFormatDesc.html',1,'']]], - ['hipchoosedevice',['hipChooseDevice',['../group__Device.html#gaf1e365e1d17cf40644d1470de4817c8e',1,'hipChooseDevice(int *device, const hipDeviceProp_t *prop): hip_device.cpp'],['../group__Device.html#gaf1e365e1d17cf40644d1470de4817c8e',1,'hipChooseDevice(int *device, const hipDeviceProp_t *prop): hip_device.cpp']]], - ['hipcreatechanneldesc',['hipCreateChannelDesc',['../group__Texture.html#gac9b0ae733fa849842342fab6d42c7b6f',1,'hipCreateChannelDesc(int x, int y, int z, int w, hipChannelFormatKind f): hip_memory.cpp'],['../group__Texture.html#gac9b0ae733fa849842342fab6d42c7b6f',1,'hipCreateChannelDesc(int x, int y, int z, int w, hipChannelFormatKind f): hip_memory.cpp']]], - ['hipctxcreate',['hipCtxCreate',['../group__Context.html#gab6dbcff5c5b1249a5ac5cf39ae9d08bc',1,'hipCtxCreate(hipCtx_t *ctx, unsigned int flags, hipDevice_t device): hip_context.cpp'],['../group__Context.html#gab6dbcff5c5b1249a5ac5cf39ae9d08bc',1,'hipCtxCreate(hipCtx_t *ctx, unsigned int flags, hipDevice_t device): hip_context.cpp']]], - ['hipctxdestroy',['hipCtxDestroy',['../group__Context.html#ga9a65fe43238ef303a6d97826c05fd14e',1,'hipCtxDestroy(hipCtx_t ctx): hip_context.cpp'],['../group__Context.html#ga9a65fe43238ef303a6d97826c05fd14e',1,'hipCtxDestroy(hipCtx_t ctx): hip_context.cpp']]], - ['hipctxdisablepeeraccess',['hipCtxDisablePeerAccess',['../group__Context.html#gaf48e4e9c3b6bbad5deaeff10d2e28b31',1,'hipCtxDisablePeerAccess(hipCtx_t peerCtx): hip_peer.cpp'],['../group__Context.html#gaf48e4e9c3b6bbad5deaeff10d2e28b31',1,'hipCtxDisablePeerAccess(hipCtx_t peerCtx): hip_peer.cpp']]], - ['hipctxenablepeeraccess',['hipCtxEnablePeerAccess',['../group__Context.html#ga834dfd99d72082fe8770142fa30b30e2',1,'hipCtxEnablePeerAccess(hipCtx_t peerCtx, unsigned int flags): hip_peer.cpp'],['../group__Context.html#ga834dfd99d72082fe8770142fa30b30e2',1,'hipCtxEnablePeerAccess(hipCtx_t peerCtx, unsigned int flags): hip_peer.cpp']]], - ['hipctxgetapiversion',['hipCtxGetApiVersion',['../group__Context.html#gabe5941e6798c71a8351b7d51311e7e8f',1,'hipCtxGetApiVersion(hipCtx_t ctx, int *apiVersion): hip_context.cpp'],['../group__Context.html#gabe5941e6798c71a8351b7d51311e7e8f',1,'hipCtxGetApiVersion(hipCtx_t ctx, int *apiVersion): hip_context.cpp']]], - ['hipctxgetcacheconfig',['hipCtxGetCacheConfig',['../group__Context.html#gab10373068faafd3042c9003e2e6d905a',1,'hipCtxGetCacheConfig(hipFuncCache_t *cacheConfig): hip_context.cpp'],['../group__Context.html#gab10373068faafd3042c9003e2e6d905a',1,'hipCtxGetCacheConfig(hipFuncCache_t *cacheConfig): hip_context.cpp']]], - ['hipctxgetcurrent',['hipCtxGetCurrent',['../group__Context.html#ga741786101d348fdbfa1f64546860357a',1,'hipCtxGetCurrent(hipCtx_t *ctx): hip_context.cpp'],['../group__Context.html#ga741786101d348fdbfa1f64546860357a',1,'hipCtxGetCurrent(hipCtx_t *ctx): hip_context.cpp']]], - ['hipctxgetdevice',['hipCtxGetDevice',['../group__Context.html#ga8aa32cf64272da929f23ecbafefefcee',1,'hipCtxGetDevice(hipDevice_t *device): hip_context.cpp'],['../group__Context.html#ga8aa32cf64272da929f23ecbafefefcee',1,'hipCtxGetDevice(hipDevice_t *device): hip_context.cpp']]], - ['hipctxgetflags',['hipCtxGetFlags',['../group__Context.html#ga12a7a993e10f775fbf61a0b14288ed1b',1,'hipCtxGetFlags(unsigned int *flags): hip_context.cpp'],['../group__Context.html#ga12a7a993e10f775fbf61a0b14288ed1b',1,'hipCtxGetFlags(unsigned int *flags): hip_context.cpp']]], - ['hipctxgetsharedmemconfig',['hipCtxGetSharedMemConfig',['../group__Context.html#ga3c78b22dd03435a7ca88621a45409565',1,'hipCtxGetSharedMemConfig(hipSharedMemConfig *pConfig): hip_context.cpp'],['../group__Context.html#ga3c78b22dd03435a7ca88621a45409565',1,'hipCtxGetSharedMemConfig(hipSharedMemConfig *pConfig): hip_context.cpp']]], - ['hipctxpopcurrent',['hipCtxPopCurrent',['../group__Context.html#ga2cc4ea5a6b78d9d7990a88a7863467d4',1,'hipCtxPopCurrent(hipCtx_t *ctx): hip_context.cpp'],['../group__Context.html#ga2cc4ea5a6b78d9d7990a88a7863467d4',1,'hipCtxPopCurrent(hipCtx_t *ctx): hip_context.cpp']]], - ['hipctxpushcurrent',['hipCtxPushCurrent',['../group__Context.html#ga9c9d92f29d68cacdea4c062c97e50a8a',1,'hipCtxPushCurrent(hipCtx_t ctx): hip_context.cpp'],['../group__Context.html#ga9c9d92f29d68cacdea4c062c97e50a8a',1,'hipCtxPushCurrent(hipCtx_t ctx): hip_context.cpp']]], - ['hipctxsetcacheconfig',['hipCtxSetCacheConfig',['../group__Context.html#ga7eacc656f1d1b6f5a683bea31be67a2f',1,'hipCtxSetCacheConfig(hipFuncCache_t cacheConfig): hip_context.cpp'],['../group__Context.html#ga7eacc656f1d1b6f5a683bea31be67a2f',1,'hipCtxSetCacheConfig(hipFuncCache_t cacheConfig): hip_context.cpp']]], - ['hipctxsetcurrent',['hipCtxSetCurrent',['../group__Context.html#ga834a192f70c2bfc0269c309436776feb',1,'hipCtxSetCurrent(hipCtx_t ctx): hip_context.cpp'],['../group__Context.html#ga834a192f70c2bfc0269c309436776feb',1,'hipCtxSetCurrent(hipCtx_t ctx): hip_context.cpp']]], - ['hipctxsetsharedmemconfig',['hipCtxSetSharedMemConfig',['../group__Context.html#gad5c1d4ced27f584a74ed550dd002fa5a',1,'hipCtxSetSharedMemConfig(hipSharedMemConfig config): hip_context.cpp'],['../group__Context.html#gad5c1d4ced27f584a74ed550dd002fa5a',1,'hipCtxSetSharedMemConfig(hipSharedMemConfig config): hip_context.cpp']]], - ['hipctxsynchronize',['hipCtxSynchronize',['../group__Context.html#gad45cd968e8e3dcfd24ef050cab2f41c8',1,'hipCtxSynchronize(void): hip_context.cpp'],['../group__Context.html#gad45cd968e8e3dcfd24ef050cab2f41c8',1,'hipCtxSynchronize(void): hip_context.cpp']]], - ['hipdevicearch_5ft',['hipDeviceArch_t',['../structhipDeviceArch__t.html',1,'']]], - ['hipdeviceattribute_5ft',['hipDeviceAttribute_t',['../group__GlobalDefs.html#gacc0acd7b9bda126c6bb3dfd6e2796d7c',1,'hip_runtime_api.h']]], - ['hipdeviceattributeclockrate',['hipDeviceAttributeClockRate',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca2300e077e020e7967592065561373b00',1,'hip_runtime_api.h']]], - ['hipdeviceattributecomputecapabilitymajor',['hipDeviceAttributeComputeCapabilityMajor',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca2735739cf977b7d303266f6781131e8d',1,'hip_runtime_api.h']]], - ['hipdeviceattributecomputecapabilityminor',['hipDeviceAttributeComputeCapabilityMinor',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca38edc4fcae456e47160d349da3249b85',1,'hip_runtime_api.h']]], - ['hipdeviceattributecomputemode',['hipDeviceAttributeComputeMode',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca4d0369a6ef7bd7890fdcabc16ed3385d',1,'hip_runtime_api.h']]], - ['hipdeviceattributeconcurrentkernels',['hipDeviceAttributeConcurrentKernels',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7cad9f45254d0d048677f560032532d5504',1,'hip_runtime_api.h']]], - ['hipdeviceattributeismultigpuboard',['hipDeviceAttributeIsMultiGpuBoard',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca6129311200a17dcc5fa8d2256874ae3d',1,'hip_runtime_api.h']]], - ['hipdeviceattributel2cachesize',['hipDeviceAttributeL2CacheSize',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca582ae5a26a7148504878890028e4b64c',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxblockdimx',['hipDeviceAttributeMaxBlockDimX',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7cac1e4ac589db0d8adbbc241e3d0fcd594',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxblockdimy',['hipDeviceAttributeMaxBlockDimY',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca187dbffe12db09a56c0f75c340d879c9',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxblockdimz',['hipDeviceAttributeMaxBlockDimZ',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7caf811f51e03d1ffb025d80ac1da088675',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxgriddimx',['hipDeviceAttributeMaxGridDimX',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca03db8df0e7a9fbdaae683d97e8ac9c87',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxgriddimy',['hipDeviceAttributeMaxGridDimY',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca5b5cc49972679c5ccf62b79425ee99df',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxgriddimz',['hipDeviceAttributeMaxGridDimZ',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca6c206ac083999caf4640e5d91dae24f7',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxregistersperblock',['hipDeviceAttributeMaxRegistersPerBlock',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca82289b170192b6ea742be0efc6f95107',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxsharedmemoryperblock',['hipDeviceAttributeMaxSharedMemoryPerBlock',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca7bca3aa18b26d40eba043ae93e15c7e5',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxsharedmemorypermultiprocessor',['hipDeviceAttributeMaxSharedMemoryPerMultiprocessor',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7cad3e7f3d01533b32e12211172fcf410ba',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxthreadsperblock',['hipDeviceAttributeMaxThreadsPerBlock',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca8327aa23782d9c994bdef33a6d62e02e',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxthreadspermultiprocessor',['hipDeviceAttributeMaxThreadsPerMultiProcessor',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7caddc08922b491eb1f6a583833cbf4e2f0',1,'hip_runtime_api.h']]], - ['hipdeviceattributememorybuswidth',['hipDeviceAttributeMemoryBusWidth',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca848c1396fab6f20463c6aefb828b0870',1,'hip_runtime_api.h']]], - ['hipdeviceattributememoryclockrate',['hipDeviceAttributeMemoryClockRate',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca6b68deafd65f036b30dc8051573eb000',1,'hip_runtime_api.h']]], - ['hipdeviceattributemultiprocessorcount',['hipDeviceAttributeMultiprocessorCount',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca5c1519870733ccf0b83f722678240e5f',1,'hip_runtime_api.h']]], - ['hipdeviceattributepcibusid',['hipDeviceAttributePciBusId',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca572b29c44f1322aa7657fdd784832f88',1,'hip_runtime_api.h']]], - ['hipdeviceattributepcideviceid',['hipDeviceAttributePciDeviceId',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca955d90286e87be9e3528f0b817ab32ff',1,'hip_runtime_api.h']]], - ['hipdeviceattributetotalconstantmemory',['hipDeviceAttributeTotalConstantMemory',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7cac6089ac3a0f9c77cc382fb0eaa73ae9c',1,'hip_runtime_api.h']]], - ['hipdeviceattributewarpsize',['hipDeviceAttributeWarpSize',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7caffd94133e823247a6f1215343232f6ec',1,'hip_runtime_api.h']]], - ['hipdevicecanaccesspeer',['hipDeviceCanAccessPeer',['../group__PeerToPeer.html#ga0a1c9ccd775758d9d7d5b5a1f525b719',1,'hipDeviceCanAccessPeer(int *canAccessPeer, int deviceId, int peerDeviceId): hip_peer.cpp'],['../group__PeerToPeer.html#ga0a1c9ccd775758d9d7d5b5a1f525b719',1,'hipDeviceCanAccessPeer(int *canAccessPeer, int deviceId, int peerDeviceId): hip_peer.cpp']]], - ['hipdevicecomputecapability',['hipDeviceComputeCapability',['../group__Driver.html#ga0a1cf94d2b571ca3279577d5af0d1672',1,'hipDeviceComputeCapability(int *major, int *minor, hipDevice_t device): hip_device.cpp'],['../group__Driver.html#ga0a1cf94d2b571ca3279577d5af0d1672',1,'hipDeviceComputeCapability(int *major, int *minor, hipDevice_t device): hip_device.cpp']]], - ['hipdevicedisablepeeraccess',['hipDeviceDisablePeerAccess',['../group__PeerToPeer.html#ga85030c72824fb60aaddc7374ab60481b',1,'hipDeviceDisablePeerAccess(int peerDeviceId): hip_peer.cpp'],['../group__PeerToPeer.html#ga85030c72824fb60aaddc7374ab60481b',1,'hipDeviceDisablePeerAccess(int peerDeviceId): hip_peer.cpp']]], - ['hipdeviceenablepeeraccess',['hipDeviceEnablePeerAccess',['../group__PeerToPeer.html#ga0caca59034134d7a7bb893cc1caa653e',1,'hipDeviceEnablePeerAccess(int peerDeviceId, unsigned int flags): hip_peer.cpp'],['../group__PeerToPeer.html#ga0caca59034134d7a7bb893cc1caa653e',1,'hipDeviceEnablePeerAccess(int peerDeviceId, unsigned int flags): hip_peer.cpp']]], - ['hipdeviceget',['hipDeviceGet',['../group__Driver.html#gadf6c74aaf7c22fea80e9ac3400d43704',1,'hipDeviceGet(hipDevice_t *device, int ordinal): hip_context.cpp'],['../group__Driver.html#gadf6c74aaf7c22fea80e9ac3400d43704',1,'hipDeviceGet(hipDevice_t *device, int deviceId): hip_context.cpp']]], - ['hipdevicegetattribute',['hipDeviceGetAttribute',['../group__Device.html#ga7080a145a4239a7276e0dc22062026c1',1,'hipDeviceGetAttribute(int *pi, hipDeviceAttribute_t attr, int deviceId): hip_device.cpp'],['../group__Device.html#ga7080a145a4239a7276e0dc22062026c1',1,'hipDeviceGetAttribute(int *pi, hipDeviceAttribute_t attr, int device): hip_device.cpp']]], - ['hipdevicegetbypcibusid',['hipDeviceGetByPCIBusId',['../group__Driver.html#gafe08d5632ebd24edc26a19da380b2120',1,'hipDeviceGetByPCIBusId(int *device, const int *pciBusId): hip_device.cpp'],['../group__Driver.html#gafe08d5632ebd24edc26a19da380b2120',1,'hipDeviceGetByPCIBusId(int *device, const int *pciBusId): hip_device.cpp']]], - ['hipdevicegetcacheconfig',['hipDeviceGetCacheConfig',['../group__Device.html#ga37057f9830ad6fab7ce5f05f6d3c89ab',1,'hipDeviceGetCacheConfig(hipFuncCache_t *cacheConfig): hip_device.cpp'],['../group__Device.html#ga37057f9830ad6fab7ce5f05f6d3c89ab',1,'hipDeviceGetCacheConfig(hipFuncCache_t *cacheConfig): hip_device.cpp']]], - ['hipdevicegetlimit',['hipDeviceGetLimit',['../group__Device.html#gaa72baeb520f1d52fe17817e852937218',1,'hipDeviceGetLimit(size_t *pValue, hipLimit_t limit): hip_device.cpp'],['../group__Device.html#gaa72baeb520f1d52fe17817e852937218',1,'hipDeviceGetLimit(size_t *pValue, hipLimit_t limit): hip_device.cpp']]], - ['hipdevicegetname',['hipDeviceGetName',['../group__Driver.html#ga24df15e180a7b2b351cd362e5b7d2dac',1,'hipDeviceGetName(char *name, int len, hipDevice_t device): hip_device.cpp'],['../group__Driver.html#ga24df15e180a7b2b351cd362e5b7d2dac',1,'hipDeviceGetName(char *name, int len, hipDevice_t device): hip_device.cpp']]], - ['hipdevicegetpcibusid',['hipDeviceGetPCIBusId',['../group__Driver.html#gaaa961c8ec8047903617f4245fa50256a',1,'hipDeviceGetPCIBusId(char *pciBusId, int len, int device): hip_device.cpp'],['../group__Driver.html#gaaa961c8ec8047903617f4245fa50256a',1,'hipDeviceGetPCIBusId(char *pciBusId, int len, int device): hip_device.cpp']]], - ['hipdevicegetsharedmemconfig',['hipDeviceGetSharedMemConfig',['../group__Device.html#ga1bb08f774a34a468d969a8a04791c9bb',1,'hipDeviceGetSharedMemConfig(hipSharedMemConfig *pConfig): hip_device.cpp'],['../group__Device.html#ga1bb08f774a34a468d969a8a04791c9bb',1,'hipDeviceGetSharedMemConfig(hipSharedMemConfig *pConfig): hip_device.cpp']]], - ['hipdeviceprop_5ft',['hipDeviceProp_t',['../structhipDeviceProp__t.html',1,'']]], - ['hipdevicereset',['hipDeviceReset',['../group__Device.html#ga8d57161ae56a8edc46eeda447417bf6c',1,'hipDeviceReset(void): hip_device.cpp'],['../group__Device.html#ga8d57161ae56a8edc46eeda447417bf6c',1,'hipDeviceReset(void): hip_device.cpp']]], - ['hipdevicescheduleauto',['hipDeviceScheduleAuto',['../group__GlobalDefs.html#ga9032d35eb7383948828ee48e1e19f5fd',1,'hip_runtime_api.h']]], - ['hipdeviceschedulespin',['hipDeviceScheduleSpin',['../group__GlobalDefs.html#ga713d962bafb7758dc1ff0675e4239453',1,'hip_runtime_api.h']]], - ['hipdevicescheduleyield',['hipDeviceScheduleYield',['../group__GlobalDefs.html#gaaf1e2706430c06601aa12a8af2a0ba5a',1,'hip_runtime_api.h']]], - ['hipdevicesetcacheconfig',['hipDeviceSetCacheConfig',['../group__Device.html#gaada3d30a46ae06f68cf1574f496b86ee',1,'hipDeviceSetCacheConfig(hipFuncCache_t cacheConfig): hip_device.cpp'],['../group__Device.html#gaada3d30a46ae06f68cf1574f496b86ee',1,'hipDeviceSetCacheConfig(hipFuncCache_t cacheConfig): hip_device.cpp']]], - ['hipdevicesetsharedmemconfig',['hipDeviceSetSharedMemConfig',['../group__Device.html#ga9b1f279084e76691cedfbfadf9c717ee',1,'hipDeviceSetSharedMemConfig(hipSharedMemConfig config): hip_device.cpp'],['../group__Device.html#ga9b1f279084e76691cedfbfadf9c717ee',1,'hipDeviceSetSharedMemConfig(hipSharedMemConfig config): hip_device.cpp']]], - ['hipdevicesynchronize',['hipDeviceSynchronize',['../group__Device.html#gaefdc2847fb1d6c3fb1354e827a191ebd',1,'hipDeviceSynchronize(void): hip_device.cpp'],['../group__Device.html#gaefdc2847fb1d6c3fb1354e827a191ebd',1,'hipDeviceSynchronize(void): hip_device.cpp']]], - ['hipdevicetotalmem',['hipDeviceTotalMem',['../group__Driver.html#ga8991e535d0ef1ead0524e73364623041',1,'hipDeviceTotalMem(size_t *bytes, hipDevice_t device): hip_device.cpp'],['../group__Driver.html#ga8991e535d0ef1ead0524e73364623041',1,'hipDeviceTotalMem(size_t *bytes, hipDevice_t device): hip_device.cpp']]], - ['hipdoublecomplex',['hipDoubleComplex',['../structhipDoubleComplex.html',1,'']]], - ['hipdrivergetversion',['hipDriverGetVersion',['../group__Driver.html#gaf6c342f52d2a29a0aca5cdd89b4dd47c',1,'hipDriverGetVersion(int *driverVersion): hip_context.cpp'],['../group__Driver.html#gaf6c342f52d2a29a0aca5cdd89b4dd47c',1,'hipDriverGetVersion(int *driverVersion): hip_context.cpp']]], - ['hiperror_5ft',['hipError_t',['../group__GlobalDefs.html#gadf5010f6e140a53ecbdf949e73e87594',1,'hip_runtime_api.h']]], - ['hiperrorhostmemoryalreadyregistered',['hipErrorHostMemoryAlreadyRegistered',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a9d7173cea72aace620a83d502569de1b',1,'hip_runtime_api.h']]], - ['hiperrorhostmemorynotregistered',['hipErrorHostMemoryNotRegistered',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a6901476ca88eed786fb8be003d9661d9',1,'hip_runtime_api.h']]], - ['hiperrorinitializationerror',['hipErrorInitializationError',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a7e935ae88ee1f9ff3920156ac6864520',1,'hip_runtime_api.h']]], - ['hiperrorinvalidcontext',['hipErrorInvalidContext',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594ad9d895f7f4dbf63a4586b2aab593c9fe',1,'hip_runtime_api.h']]], - ['hiperrorinvaliddevice',['hipErrorInvalidDevice',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a07ab9b704ea693c1781a52741c60cd0d',1,'hip_runtime_api.h']]], - ['hiperrorinvaliddevicepointer',['hipErrorInvalidDevicePointer',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a37a93fcd2b0aed9bf52b82fa26031e6f',1,'hip_runtime_api.h']]], - ['hiperrorinvalidkernelfile',['hipErrorInvalidKernelFile',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594ae508537d5e9a293bb1e63802d4a61380',1,'hip_runtime_api.h']]], - ['hiperrorinvalidmemcpydirection',['hipErrorInvalidMemcpyDirection',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594ae35ad9fb66b7c33f21a021efe89975b0',1,'hip_runtime_api.h']]], - ['hiperrorinvalidresourcehandle',['hipErrorInvalidResourceHandle',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a88e525a7c8f35552dfada58e9f2f6d3a',1,'hip_runtime_api.h']]], - ['hiperrorinvalidvalue',['hipErrorInvalidValue',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a1e8215fe1108a508bad3944bce7b4d83',1,'hip_runtime_api.h']]], - ['hiperrorlaunchfailure',['hipErrorLaunchFailure',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a3df72146e762c5a901d3af06027a1de9',1,'hip_runtime_api.h']]], - ['hiperrorlaunchoutofresources',['hipErrorLaunchOutOfResources',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a3ea57f211997a84fa1c582414bcabc47',1,'hip_runtime_api.h']]], - ['hiperrormapbufferobjectfailed',['hipErrorMapBufferObjectFailed',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594ab4de2174991cc16a3e1986f5da25262b',1,'hip_runtime_api.h']]], - ['hiperrormemoryallocation',['hipErrorMemoryAllocation',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a8293288a10109874749afe2562db09f2',1,'hip_runtime_api.h']]], - ['hiperrornodevice',['hipErrorNoDevice',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594ad4406972c318df36d231310a15131c24',1,'hip_runtime_api.h']]], - ['hiperrornotready',['hipErrorNotReady',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594aa9638063c8746a9d1fda2b2069a0a9f1',1,'hip_runtime_api.h']]], - ['hiperrorpeeraccessalreadyenabled',['hipErrorPeerAccessAlreadyEnabled',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a5399c146f91246f8b77abcd4ea30e7ac',1,'hip_runtime_api.h']]], - ['hiperrorpeeraccessnotenabled',['hipErrorPeerAccessNotEnabled',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a2ee0bf2e64840f253e4a1b12bbaf2d09',1,'hip_runtime_api.h']]], - ['hiperrorruntimememory',['hipErrorRuntimeMemory',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a1159eb9a6be66bea740a8bfb61378723',1,'hip_runtime_api.h']]], - ['hiperrorruntimeother',['hipErrorRuntimeOther',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a44f847c5914be2177feac107dcb096d1',1,'hip_runtime_api.h']]], - ['hiperrortbd',['hipErrorTbd',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594ab556409e11ddb0c4cf77a2f4fc91ea9e',1,'hip_runtime_api.h']]], - ['hiperrorunknown',['hipErrorUnknown',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594aa74e64c5b2f5fb0d6a92681f5b234073',1,'hip_runtime_api.h']]], - ['hipeventblockingsync',['hipEventBlockingSync',['../group__GlobalDefs.html#gafa1c076a5b991763a98695063f1ea11d',1,'hip_runtime_api.h']]], - ['hipeventcreate',['hipEventCreate',['../group__Event.html#ga5df2309c9f29ca4c8e669db658d411b4',1,'hipEventCreate(hipEvent_t *event): hip_event.cpp'],['../group__Event.html#ga5df2309c9f29ca4c8e669db658d411b4',1,'hipEventCreate(hipEvent_t *event): hip_event.cpp']]], - ['hipeventcreatewithflags',['hipEventCreateWithFlags',['../group__Event.html#gae86a5acb1b22b61bc9ecb9c28fc71b75',1,'hipEventCreateWithFlags(hipEvent_t *event, unsigned flags): hip_event.cpp'],['../group__Event.html#gae86a5acb1b22b61bc9ecb9c28fc71b75',1,'hipEventCreateWithFlags(hipEvent_t *event, unsigned flags): hip_event.cpp']]], - ['hipeventdefault',['hipEventDefault',['../group__GlobalDefs.html#ga122a5853359eba97cf047ddd153740f0',1,'hip_runtime_api.h']]], - ['hipeventdestroy',['hipEventDestroy',['../group__Event.html#ga83260357dce0c39e8c6a3c74ec97484c',1,'hipEventDestroy(hipEvent_t event): hip_event.cpp'],['../group__Event.html#ga83260357dce0c39e8c6a3c74ec97484c',1,'hipEventDestroy(hipEvent_t event): hip_event.cpp']]], - ['hipeventdisabletiming',['hipEventDisableTiming',['../group__GlobalDefs.html#ga3c0f44a85e36a4c67671da6bcdad0351',1,'hip_runtime_api.h']]], - ['hipeventelapsedtime',['hipEventElapsedTime',['../group__Event.html#gad4128b815cb475c8e13c7e66ff6250b7',1,'hipEventElapsedTime(float *ms, hipEvent_t start, hipEvent_t stop): hip_event.cpp'],['../group__Event.html#gad4128b815cb475c8e13c7e66ff6250b7',1,'hipEventElapsedTime(float *ms, hipEvent_t start, hipEvent_t stop): hip_event.cpp']]], - ['hipeventinterprocess',['hipEventInterprocess',['../group__GlobalDefs.html#ga0f01d74059baa704e42aeff8222166bb',1,'hip_runtime_api.h']]], - ['hipeventquery',['hipEventQuery',['../group__Event.html#ga5d12d7b798b5ceb5932d1ac21f5ac776',1,'hipEventQuery(hipEvent_t event): hip_event.cpp'],['../group__Event.html#ga5d12d7b798b5ceb5932d1ac21f5ac776',1,'hipEventQuery(hipEvent_t event): hip_event.cpp']]], - ['hipeventrecord',['hipEventRecord',['../group__Event.html#ga553b6f7a8e7b7dd9536d8a64c24d7e29',1,'hipEventRecord(hipEvent_t event, hipStream_t stream): hip_event.cpp'],['../group__Event.html#ga553b6f7a8e7b7dd9536d8a64c24d7e29',1,'hipEventRecord(hipEvent_t event, hipStream_t stream): hip_event.cpp']]], - ['hipeventsynchronize',['hipEventSynchronize',['../group__Event.html#ga1f72d98ba5d6f7dc3da54e0c41fe38b1',1,'hipEventSynchronize(hipEvent_t event): hip_event.cpp'],['../group__Event.html#ga1f72d98ba5d6f7dc3da54e0c41fe38b1',1,'hipEventSynchronize(hipEvent_t event): hip_event.cpp']]], - ['hipfiltermodepoint',['hipFilterModePoint',['../hcc__detail_2hip__texture_8h.html#aa2f0b6002b81d0a43a808cb880bb21e6a56ede038ab7c805ec4b5b61d2b678dfc',1,'hip_texture.h']]], - ['hipfloatcomplex',['hipFloatComplex',['../structhipFloatComplex.html',1,'']]], - ['hipfree',['hipFree',['../group__Memory.html#ga740d08da65cae1441ba32f8fedb863d1',1,'hipFree(void *ptr): hip_memory.cpp'],['../group__Memory.html#ga740d08da65cae1441ba32f8fedb863d1',1,'hipFree(void *ptr): hip_memory.cpp']]], - ['hipfreearray',['hipFreeArray',['../hcc__detail_2hip__texture_8h.html#ae29935073517245c69bc64790dd2747a',1,'hip_memory.cpp']]], - ['hipfreehost',['hipFreeHost',['../group__Memory.html#gad2164cc3d49da53052f4b83b789e90c9',1,'hipFreeHost(void *ptr) __attribute__((deprecated("use hipHostFree instead"))): hip_memory.cpp'],['../group__Memory.html#gad2164cc3d49da53052f4b83b789e90c9',1,'hipFreeHost(void *ptr): hip_memory.cpp']]], - ['hipfunccache_5ft',['hipFuncCache_t',['../group__GlobalDefs.html#ga86e5c5692645963a9a673e1aa88ba6ca',1,'hipFuncCache_t(): hip_runtime_api.h'],['../group__GlobalDefs.html#ga7effbca2af70714feaa3330bf1a77a72',1,'hipFuncCache_t(): hip_runtime_api.h']]], - ['hipfunccachepreferequal',['hipFuncCachePreferEqual',['../group__GlobalDefs.html#gga86e5c5692645963a9a673e1aa88ba6caa0ddab0e840107634a152033103be44d7',1,'hip_runtime_api.h']]], - ['hipfunccachepreferl1',['hipFuncCachePreferL1',['../group__GlobalDefs.html#gga86e5c5692645963a9a673e1aa88ba6caa636a3c140db6b9d4a8bf7d5a61c398c5',1,'hip_runtime_api.h']]], - ['hipfunccacheprefernone',['hipFuncCachePreferNone',['../group__GlobalDefs.html#gga86e5c5692645963a9a673e1aa88ba6caa0813fbaa008ce1231ff9fed3911eb3af',1,'hip_runtime_api.h']]], - ['hipfunccacheprefershared',['hipFuncCachePreferShared',['../group__GlobalDefs.html#gga86e5c5692645963a9a673e1aa88ba6caa9b34337dfbadba25ed2aa270bbcabc43',1,'hip_runtime_api.h']]], - ['hipfuncsetcacheconfig',['hipFuncSetCacheConfig',['../group__Device.html#ga82f0637f09eb1082f6fd025f76c2c6f5',1,'hipFuncSetCacheConfig(hipFuncCache_t config): hip_device.cpp'],['../group__Device.html#ga82f0637f09eb1082f6fd025f76c2c6f5',1,'hipFuncSetCacheConfig(hipFuncCache_t cacheConfig): hip_device.cpp']]], - ['hipgetdevice',['hipGetDevice',['../group__Device.html#ga7e0e2e8c5f78e3c7449764657c254e0a',1,'hipGetDevice(int *deviceId): hip_device.cpp'],['../group__Device.html#ga7e0e2e8c5f78e3c7449764657c254e0a',1,'hipGetDevice(int *deviceId): hip_device.cpp']]], - ['hipgetdevicecount',['hipGetDeviceCount',['../group__Device.html#ga8555d5c76d88c50ddbf54ae70b568394',1,'hipGetDeviceCount(int *count): hip_device.cpp'],['../group__Device.html#ga8555d5c76d88c50ddbf54ae70b568394',1,'hipGetDeviceCount(int *count): hip_device.cpp']]], - ['hipgetdeviceproperties',['hipGetDeviceProperties',['../group__Device.html#ga32208513b7cd491f0cb5fc884053f790',1,'hipGetDeviceProperties(hipDeviceProp_t *prop, int deviceId): hip_device.cpp'],['../group__Device.html#ga32208513b7cd491f0cb5fc884053f790',1,'hipGetDeviceProperties(hipDeviceProp_t *props, int device): hip_device.cpp']]], - ['hipgeterrorname',['hipGetErrorName',['../group__Error.html#ga88c474d77635523dbf6ca67be7b56999',1,'hipGetErrorName(hipError_t hip_error): hip_error.cpp'],['../group__Error.html#ga88c474d77635523dbf6ca67be7b56999',1,'hipGetErrorName(hipError_t hip_error): hip_error.cpp']]], - ['hipgeterrorstring',['hipGetErrorString',['../group__Error.html#ga1421a2ee561f30d5b1dbed3ecb28b264',1,'hipGetErrorString(hipError_t hipError): hip_error.cpp'],['../group__Error.html#ga1421a2ee561f30d5b1dbed3ecb28b264',1,'hipGetErrorString(hipError_t hip_error): hip_error.cpp']]], - ['hipgetlasterror',['hipGetLastError',['../group__Error.html#ga533daeb9114d7fc2db8d867adf9e419b',1,'hipGetLastError(void): hip_error.cpp'],['../group__Error.html#ga533daeb9114d7fc2db8d867adf9e419b',1,'hipGetLastError(): hip_error.cpp']]], - ['hiphostalloc',['hipHostAlloc',['../group__Memory.html#gac5ae7f11cefc7085f39ee7868e71724a',1,'hipHostAlloc(void **ptr, size_t size, unsigned int flags) __attribute__((deprecated("use hipHostMalloc instead"))): hip_memory.cpp'],['../group__Memory.html#gac5ae7f11cefc7085f39ee7868e71724a',1,'hipHostAlloc(void **ptr, size_t sizeBytes, unsigned int flags): hip_memory.cpp']]], - ['hiphostfree',['hipHostFree',['../group__Memory.html#ga2e543f58ee4544e317cd695d6d82e0a3',1,'hipHostFree(void *ptr): hip_memory.cpp'],['../group__Memory.html#ga2e543f58ee4544e317cd695d6d82e0a3',1,'hipHostFree(void *ptr): hip_memory.cpp']]], - ['hiphostgetdevicepointer',['hipHostGetDevicePointer',['../group__Memory.html#ga8fa7a0478020b835a24785cd6bb89725',1,'hip_runtime_api.h']]], - ['hiphostgetflags',['hipHostGetFlags',['../group__Memory.html#ga4d26915873b3e3534ceb4dc310f8709a',1,'hipHostGetFlags(unsigned int *flagsPtr, void *hostPtr): hip_memory.cpp'],['../group__Memory.html#ga4d26915873b3e3534ceb4dc310f8709a',1,'hipHostGetFlags(unsigned int *flagsPtr, void *hostPtr): hip_memory.cpp']]], - ['hiphostmalloc',['hipHostMalloc',['../group__Memory.html#gaad40bc7d97ccc799403ef5a9a8c246e1',1,'hipHostMalloc(void **ptr, size_t size, unsigned int flags): hip_memory.cpp'],['../group__Memory.html#gaad40bc7d97ccc799403ef5a9a8c246e1',1,'hipHostMalloc(void **ptr, size_t sizeBytes, unsigned int flags): hip_memory.cpp']]], - ['hiphostmallocdefault',['hipHostMallocDefault',['../group__GlobalDefs.html#gad594ec51cb5b5e946c1e354bf80bddc7',1,'hip_runtime_api.h']]], - ['hiphostregister',['hipHostRegister',['../group__Memory.html#gab8258f051e1a1f7385f794a15300e674',1,'hipHostRegister(void *hostPtr, size_t sizeBytes, unsigned int flags): hip_memory.cpp'],['../group__Memory.html#gab8258f051e1a1f7385f794a15300e674',1,'hipHostRegister(void *hostPtr, size_t sizeBytes, unsigned int flags): hip_memory.cpp']]], - ['hiphostregisterdefault',['hipHostRegisterDefault',['../group__GlobalDefs.html#gac7c100d241ff84ad10109bb00b7b25dc',1,'hip_runtime_api.h']]], - ['hiphostregisteriomemory',['hipHostRegisterIoMemory',['../group__GlobalDefs.html#gaefa79f1b4481d6a1d1091c14b24f33d0',1,'hip_runtime_api.h']]], - ['hiphostregistermapped',['hipHostRegisterMapped',['../group__GlobalDefs.html#gacfa4edcfcb39fc61bff6bdecb14d7618',1,'hip_runtime_api.h']]], - ['hiphostregisterportable',['hipHostRegisterPortable',['../group__GlobalDefs.html#ga2db444f2315d412d3c7ba80ec6049583',1,'hip_runtime_api.h']]], - ['hiphostunregister',['hipHostUnregister',['../group__Memory.html#ga4c9e1810b9f5858d36c4d28c91c86924',1,'hipHostUnregister(void *hostPtr): hip_memory.cpp'],['../group__Memory.html#ga4c9e1810b9f5858d36c4d28c91c86924',1,'hipHostUnregister(void *hostPtr): hip_memory.cpp']]], - ['hipinit',['hipInit',['../group__Driver.html#ga01baa652dda5815c594d047060496caa',1,'hipInit(unsigned int flags): hip_context.cpp'],['../group__Driver.html#ga01baa652dda5815c594d047060496caa',1,'hipInit(unsigned int flags): hip_context.cpp']]], - ['hipipcclosememhandle',['hipIpcCloseMemHandle',['../group__API.html#gac2db0688a6a471e17ca631977e199da7',1,'hipIpcCloseMemHandle(void *devPtr): hip_memory.cpp'],['../group__API.html#gac2db0688a6a471e17ca631977e199da7',1,'hipIpcCloseMemHandle(void *devPtr): hip_memory.cpp']]], - ['hipipcgetmemhandle',['hipIpcGetMemHandle',['../group__API.html#gafd8c80f7e3b6426a630fff768409be70',1,'hipIpcGetMemHandle(hipIpcMemHandle_t *handle, void *devPtr): hip_memory.cpp'],['../group__API.html#gafd8c80f7e3b6426a630fff768409be70',1,'hipIpcGetMemHandle(hipIpcMemHandle_t *handle, void *devPtr): hip_memory.cpp']]], - ['hipipcopenmemhandle',['hipIpcOpenMemHandle',['../group__API.html#ga2ada334c986e10805d58167e260cb0df',1,'hipIpcOpenMemHandle(void **devPtr, hipIpcMemHandle_t handle, unsigned int flags): hip_memory.cpp'],['../group__API.html#ga2ada334c986e10805d58167e260cb0df',1,'hipIpcOpenMemHandle(void **devPtr, hipIpcMemHandle_t handle, unsigned int flags): hip_memory.cpp']]], - ['hipmalloc',['hipMalloc',['../group__Memory.html#ga4c6fcfe80010069d2792780d00dcead2',1,'hipMalloc(void **ptr, size_t size): hip_memory.cpp'],['../group__Memory.html#ga4c6fcfe80010069d2792780d00dcead2',1,'hipMalloc(void **ptr, size_t sizeBytes): hip_memory.cpp']]], - ['hipmallocarray',['hipMallocArray',['../hcc__detail_2hip__texture_8h.html#aea2f071ae2e4a0847f6aa42d1ef56129',1,'hip_memory.cpp']]], - ['hipmallochost',['hipMallocHost',['../group__Memory.html#gad3d3cdf82eb0058fc9eac1f939cd9d30',1,'hipMallocHost(void **ptr, size_t size) __attribute__((deprecated("use hipHostMalloc instead"))): hip_memory.cpp'],['../group__Memory.html#gad3d3cdf82eb0058fc9eac1f939cd9d30',1,'hipMallocHost(void **ptr, size_t sizeBytes): hip_memory.cpp']]], - ['hipmallocpitch',['hipMallocPitch',['../group__Memory.html#ga805c7320498926e444616fe090c727ee',1,'hipMallocPitch(void **ptr, size_t *pitch, size_t width, size_t height): hip_memory.cpp'],['../group__Memory.html#ga805c7320498926e444616fe090c727ee',1,'hipMallocPitch(void **ptr, size_t *pitch, size_t width, size_t height): hip_memory.cpp']]], - ['hipmemcpy',['hipMemcpy',['../group__Memory.html#gac1a055d288302edd641c6d7416858e1e',1,'hipMemcpy(void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind): hip_memory.cpp'],['../group__Memory.html#gac1a055d288302edd641c6d7416858e1e',1,'hipMemcpy(void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind): hip_memory.cpp']]], - ['hipmemcpy2d',['hipMemcpy2D',['../hcc__detail_2hip__texture_8h.html#a8af4597ff0cd17247d8a857c4d8bfa8a',1,'hip_memory.cpp']]], - ['hipmemcpy2dtoarray',['hipMemcpy2DToArray',['../hcc__detail_2hip__texture_8h.html#ab08b0bd6cdbb57e79df40ef1cd0374e0',1,'hip_memory.cpp']]], - ['hipmemcpyasync',['hipMemcpyAsync',['../group__Memory.html#gad55fa9f5980b711bc93c52820149ba18',1,'hipMemcpyAsync(void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind, hipStream_t stream): hip_memory.cpp'],['../group__Memory.html#gad55fa9f5980b711bc93c52820149ba18',1,'hipMemcpyAsync(void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind, hipStream_t stream): hip_memory.cpp']]], - ['hipmemcpydefault',['hipMemcpyDefault',['../group__GlobalDefs.html#gga232e222db36b1fc672ba98054d036a18a4e37107e416f79a2edf2b6534163c823',1,'hip_runtime_api.h']]], - ['hipmemcpydevicetodevice',['hipMemcpyDeviceToDevice',['../group__GlobalDefs.html#gga232e222db36b1fc672ba98054d036a18abd05a09d3105e0ce25b34dd91cf83f88',1,'hip_runtime_api.h']]], - ['hipmemcpydevicetohost',['hipMemcpyDeviceToHost',['../group__GlobalDefs.html#gga232e222db36b1fc672ba98054d036a18aba2505e9ce1e5382f17730bc670917d1',1,'hip_runtime_api.h']]], - ['hipmemcpydtod',['hipMemcpyDtoD',['../group__Memory.html#ga814f245b8918f173c1f2f8c1480f7f93',1,'hipMemcpyDtoD(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes): hip_memory.cpp'],['../group__Memory.html#ga814f245b8918f173c1f2f8c1480f7f93',1,'hipMemcpyDtoD(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes): hip_memory.cpp']]], - ['hipmemcpydtodasync',['hipMemcpyDtoDAsync',['../group__Memory.html#gad3bba6016cba62f0e933cdfb4c312d27',1,'hipMemcpyDtoDAsync(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream): hip_memory.cpp'],['../group__Memory.html#gad3bba6016cba62f0e933cdfb4c312d27',1,'hipMemcpyDtoDAsync(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream): hip_memory.cpp']]], - ['hipmemcpydtoh',['hipMemcpyDtoH',['../group__Memory.html#gae61f4e35ff1b9643c6328bc45d091c3f',1,'hipMemcpyDtoH(void *dst, hipDeviceptr_t src, size_t sizeBytes): hip_memory.cpp'],['../group__Memory.html#gae61f4e35ff1b9643c6328bc45d091c3f',1,'hipMemcpyDtoH(void *dst, hipDeviceptr_t src, size_t sizeBytes): hip_memory.cpp']]], - ['hipmemcpydtohasync',['hipMemcpyDtoHAsync',['../group__Memory.html#gad69da1994a646b843fb1fa465dbeb623',1,'hipMemcpyDtoHAsync(void *dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream): hip_memory.cpp'],['../group__Memory.html#gad69da1994a646b843fb1fa465dbeb623',1,'hipMemcpyDtoHAsync(void *dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream): hip_memory.cpp']]], - ['hipmemcpyhosttodevice',['hipMemcpyHostToDevice',['../group__GlobalDefs.html#gga232e222db36b1fc672ba98054d036a18aff32175ecb0c7113200286eff8211008',1,'hip_runtime_api.h']]], - ['hipmemcpyhosttohost',['hipMemcpyHostToHost',['../group__GlobalDefs.html#gga232e222db36b1fc672ba98054d036a18a9d66b705aa85a9c83f0f533cef70d0af',1,'hip_runtime_api.h']]], - ['hipmemcpyhtod',['hipMemcpyHtoD',['../group__Memory.html#gaa415ecdd2535e1eb618ed8a31a6f03af',1,'hipMemcpyHtoD(hipDeviceptr_t dst, void *src, size_t sizeBytes): hip_memory.cpp'],['../group__Memory.html#gaa415ecdd2535e1eb618ed8a31a6f03af',1,'hipMemcpyHtoD(hipDeviceptr_t dst, void *src, size_t sizeBytes): hip_memory.cpp']]], - ['hipmemcpyhtodasync',['hipMemcpyHtoDAsync',['../group__Memory.html#gae3e76acb34bed5e3b19b4c1822975bcd',1,'hipMemcpyHtoDAsync(hipDeviceptr_t dst, void *src, size_t sizeBytes, hipStream_t stream): hip_memory.cpp'],['../group__Memory.html#gae3e76acb34bed5e3b19b4c1822975bcd',1,'hipMemcpyHtoDAsync(hipDeviceptr_t dst, void *src, size_t sizeBytes, hipStream_t stream): hip_memory.cpp']]], - ['hipmemcpykind',['hipMemcpyKind',['../group__GlobalDefs.html#ga232e222db36b1fc672ba98054d036a18',1,'hipMemcpyKind(): hip_runtime_api.h'],['../group__GlobalDefs.html#ga0c04e67413ce030817361f02673e5c85',1,'hipMemcpyKind(): hip_runtime_api.h']]], - ['hipmemcpypeer',['hipMemcpyPeer',['../group__PeerToPeer.html#ga5512f45e25c08052667c8ffe7162333b',1,'hipMemcpyPeer(void *dst, int dstDeviceId, const void *src, int srcDeviceId, size_t sizeBytes): hip_peer.cpp'],['../group__PeerToPeer.html#ga5512f45e25c08052667c8ffe7162333b',1,'hipMemcpyPeer(void *dst, int dstDevice, const void *src, int srcDevice, size_t sizeBytes): hip_peer.cpp']]], - ['hipmemcpypeerasync',['hipMemcpyPeerAsync',['../group__PeerToPeer.html#ga216f951370c931d22e80c089ab724ed9',1,'hipMemcpyPeerAsync(void *dst, int dstDevice, const void *src, int srcDevice, size_t sizeBytes, hipStream_t stream): hip_peer.cpp'],['../group__PeerToPeer.html#ga216f951370c931d22e80c089ab724ed9',1,'hipMemcpyPeerAsync(void *dst, int dstDevice, const void *src, int srcDevice, size_t sizeBytes, hipStream_t stream): hip_peer.cpp']]], - ['hipmemcpytoarray',['hipMemcpyToArray',['../hcc__detail_2hip__texture_8h.html#a2e631f0b6757b47b74cdaa2911784be9',1,'hip_memory.cpp']]], - ['hipmemcpytosymbol',['hipMemcpyToSymbol',['../group__Memory.html#ga131ac5c1ba04e186112491cb9bf964bc',1,'hipMemcpyToSymbol(const char *symbolName, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind): hip_memory.cpp'],['../group__Memory.html#ga131ac5c1ba04e186112491cb9bf964bc',1,'hipMemcpyToSymbol(const char *symbolName, const void *src, size_t count, size_t offset, hipMemcpyKind kind): hip_memory.cpp']]], - ['hipmemcpytosymbolasync',['hipMemcpyToSymbolAsync',['../group__Memory.html#ga7dd66b9e8e0e7159177b42a250fe23c4',1,'hipMemcpyToSymbolAsync(const char *symbolName, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind, hipStream_t stream): hip_memory.cpp'],['../group__Memory.html#ga7dd66b9e8e0e7159177b42a250fe23c4',1,'hipMemcpyToSymbolAsync(const char *symbolName, const void *src, size_t count, size_t offset, hipMemcpyKind kind, hipStream_t stream): hip_memory.cpp']]], - ['hipmemgetaddressrange',['hipMemGetAddressRange',['../group__PeerToPeer.html#gac7d9132f6e3d102e9b512020e5654f38',1,'hipMemGetAddressRange(hipDeviceptr_t *pbase, size_t *psize, hipDeviceptr_t dptr): hip_memory.cpp'],['../group__PeerToPeer.html#gac7d9132f6e3d102e9b512020e5654f38',1,'hipMemGetAddressRange(hipDeviceptr_t *pbase, size_t *psize, hipDeviceptr_t dptr): hip_memory.cpp']]], - ['hipmemgetinfo',['hipMemGetInfo',['../group__Memory.html#ga311c3e246a21590de14478b8bd063be2',1,'hipMemGetInfo(size_t *free, size_t *total): hip_memory.cpp'],['../group__Memory.html#ga311c3e246a21590de14478b8bd063be2',1,'hipMemGetInfo(size_t *free, size_t *total): hip_memory.cpp']]], - ['hipmemset',['hipMemset',['../group__Memory.html#gac7441e74affcce4b8b69dba996c5ebc4',1,'hipMemset(void *dst, int value, size_t sizeBytes): hip_memory.cpp'],['../group__Memory.html#gac7441e74affcce4b8b69dba996c5ebc4',1,'hipMemset(void *dst, int value, size_t sizeBytes): hip_memory.cpp']]], - ['hipmemsetasync',['hipMemsetAsync',['../group__Memory.html#gae7d90e14c387e49f10db597f12915c54',1,'hipMemsetAsync(void *dst, int value, size_t sizeBytes, hipStream_t stream): hip_memory.cpp'],['../group__Memory.html#gae7d90e14c387e49f10db597f12915c54',1,'hipMemsetAsync(void *dst, int value, size_t sizeBytes, hipStream_t stream): hip_memory.cpp']]], - ['hipmodulegetfunction',['hipModuleGetFunction',['../group__Driver.html#ga9648b457bb837838cb936b417b56a65d',1,'hipModuleGetFunction(hipFunction_t *function, hipModule_t module, const char *kname): hip_module.cpp'],['../group__Driver.html#ga9648b457bb837838cb936b417b56a65d',1,'hipModuleGetFunction(hipFunction_t *hfunc, hipModule_t hmod, const char *name): hip_module.cpp']]], - ['hipmodulegetglobal',['hipModuleGetGlobal',['../group__Driver.html#ga3e425a680285f495e776f096e9632c89',1,'hipModuleGetGlobal(hipDeviceptr_t *dptr, size_t *bytes, hipModule_t hmod, const char *name): hip_module.cpp'],['../group__Driver.html#ga3e425a680285f495e776f096e9632c89',1,'hipModuleGetGlobal(hipDeviceptr_t *dptr, size_t *bytes, hipModule_t hmod, const char *name): hip_module.cpp']]], - ['hipmodulelaunchkernel',['hipModuleLaunchKernel',['../group__Driver.html#ga2e4de5937aa8171e9eda16c881ed0674',1,'hip_runtime_api.h']]], - ['hipmoduleload',['hipModuleLoad',['../group__Driver.html#ga31d806d976e91d36bd990ae3004d8760',1,'hipModuleLoad(hipModule_t *module, const char *fname): hip_module.cpp'],['../group__Driver.html#ga31d806d976e91d36bd990ae3004d8760',1,'hipModuleLoad(hipModule_t *module, const char *fname): hip_module.cpp']]], - ['hipmoduleloaddata',['hipModuleLoadData',['../group__Driver.html#gaabdbd73e952a741e861d01109c4790f3',1,'hipModuleLoadData(hipModule_t *module, const void *image): hip_module.cpp'],['../group__Driver.html#gaabdbd73e952a741e861d01109c4790f3',1,'hipModuleLoadData(hipModule_t *module, const void *image): hip_module.cpp']]], - ['hipmoduleunload',['hipModuleUnload',['../group__Driver.html#gae58e345f55bb3ec13dca80d2df88e0ed',1,'hipModuleUnload(hipModule_t module): hip_module.cpp'],['../group__Driver.html#gae58e345f55bb3ec13dca80d2df88e0ed',1,'hipModuleUnload(hipModule_t hmod): hip_module.cpp']]], - ['hippeekatlasterror',['hipPeekAtLastError',['../group__Error.html#ga1dd660bc739f7e13edd34615660f0148',1,'hipPeekAtLastError(void): hip_error.cpp'],['../group__Error.html#ga1dd660bc739f7e13edd34615660f0148',1,'hipPeekAtLastError(): hip_error.cpp']]], - ['hippointerattribute_5ft',['hipPointerAttribute_t',['../structhipPointerAttribute__t.html',1,'']]], - ['hippointergetattributes',['hipPointerGetAttributes',['../group__Memory.html#ga3d68ba64959615d4ab84f10caa12433b',1,'hipPointerGetAttributes(hipPointerAttribute_t *attributes, void *ptr): hip_memory.cpp'],['../group__Memory.html#ga3d68ba64959615d4ab84f10caa12433b',1,'hipPointerGetAttributes(hipPointerAttribute_t *attributes, void *ptr): hip_memory.cpp']]], - ['hipprofilerstart',['hipProfilerStart',['../group__Profiler.html#ga40aa20d731f9c8f0586127d589759e1d',1,'hipProfilerStart(): hip_hcc.cpp'],['../group__Profiler.html#ga40aa20d731f9c8f0586127d589759e1d',1,'hipProfilerStart(): hip_hcc.cpp']]], - ['hipprofilerstop',['hipProfilerStop',['../group__Profiler.html#ga777994cae0f7bdef24131fc1f3ed626e',1,'hipProfilerStop(): hip_hcc.cpp'],['../group__Profiler.html#ga777994cae0f7bdef24131fc1f3ed626e',1,'hipProfilerStop(): hip_hcc.cpp']]], - ['hipreadmodeelementtype',['hipReadModeElementType',['../hcc__detail_2hip__texture_8h.html#a442e950774f7306dc33692e358c92c94a829645801202174d052d667ffa4e1b8d',1,'hip_texture.h']]], - ['hipruntimegetversion',['hipRuntimeGetVersion',['../group__Driver.html#gae8b7ba34d2e11e334650aa51a4dd87ee',1,'hipRuntimeGetVersion(int *runtimeVersion): hip_context.cpp'],['../group__Driver.html#gae8b7ba34d2e11e334650aa51a4dd87ee',1,'hipRuntimeGetVersion(int *runtimeVersion): hip_context.cpp']]], - ['hipsetdevice',['hipSetDevice',['../group__Device.html#ga43c1e7f15925eeb762195ccb5e063eae',1,'hipSetDevice(int deviceId): hip_device.cpp'],['../group__Device.html#ga43c1e7f15925eeb762195ccb5e063eae',1,'hipSetDevice(int deviceId): hip_device.cpp']]], - ['hipsetdeviceflags',['hipSetDeviceFlags',['../group__Device.html#ga6e54db382768827e84725632018307aa',1,'hip_runtime_api.h']]], - ['hipsharedmembanksizedefault',['hipSharedMemBankSizeDefault',['../group__GlobalDefs.html#gga2e17b71d94ac350f2ccd914fd49d104eaf5b325c9b7bde878913f768eaba5014d',1,'hip_runtime_api.h']]], - ['hipsharedmembanksizeeightbyte',['hipSharedMemBankSizeEightByte',['../group__GlobalDefs.html#gga2e17b71d94ac350f2ccd914fd49d104ea64518b4f5a25f536c883330167e79258',1,'hip_runtime_api.h']]], - ['hipsharedmembanksizefourbyte',['hipSharedMemBankSizeFourByte',['../group__GlobalDefs.html#gga2e17b71d94ac350f2ccd914fd49d104ea0a95a6e0c33106c42d66ab9476ff954a',1,'hip_runtime_api.h']]], - ['hipsharedmemconfig',['hipSharedMemConfig',['../group__GlobalDefs.html#ga2e17b71d94ac350f2ccd914fd49d104e',1,'hipSharedMemConfig(): hip_runtime_api.h'],['../group__GlobalDefs.html#ga6b1ca424fa26a5fb718937d662eaee7f',1,'hipSharedMemConfig(): hip_runtime_api.h']]], - ['hipstreamaddcallback',['hipStreamAddCallback',['../group__Stream.html#ga3e098cd7478828b2104abb41a7bb00d3',1,'hipStreamAddCallback(hipStream_t stream, hipStreamCallback_t callback, void *userData, unsigned int flags): hip_stream.cpp'],['../group__Stream.html#ga3e098cd7478828b2104abb41a7bb00d3',1,'hipStreamAddCallback(hipStream_t stream, hipStreamCallback_t callback, void *userData, unsigned int flags): hip_stream.cpp']]], - ['hipstreamcallback_5ft',['hipStreamCallback_t',['../group__Stream.html#gadd389da2e3926a8ff17658d029015dcd',1,'hip_runtime_api.h']]], - ['hipstreamcreate',['hipStreamCreate',['../group__Stream.html#gaff5b62d6e9502d80879f7176f4d03102',1,'hipStreamCreate(hipStream_t *stream): hip_stream.cpp'],['../group__Stream.html#gaff5b62d6e9502d80879f7176f4d03102',1,'hipStreamCreate(hipStream_t *stream): hip_stream.cpp']]], - ['hipstreamcreatewithflags',['hipStreamCreateWithFlags',['../group__Stream.html#gaf2382e3cc6632332a8983a0f58e43494',1,'hipStreamCreateWithFlags(hipStream_t *stream, unsigned int flags): hip_stream.cpp'],['../group__Stream.html#gaf2382e3cc6632332a8983a0f58e43494',1,'hipStreamCreateWithFlags(hipStream_t *stream, unsigned int flags): hip_stream.cpp']]], - ['hipstreamdefault',['hipStreamDefault',['../group__GlobalDefs.html#ga6df5f70eb976836ab3598cacf0ffcdf9',1,'hip_runtime_api.h']]], - ['hipstreamdestroy',['hipStreamDestroy',['../group__Stream.html#ga3076a3499ed2c7821311006100bb95ec',1,'hipStreamDestroy(hipStream_t stream): hip_stream.cpp'],['../group__Stream.html#ga3076a3499ed2c7821311006100bb95ec',1,'hipStreamDestroy(hipStream_t stream): hip_stream.cpp']]], - ['hipstreamgetflags',['hipStreamGetFlags',['../group__Stream.html#ga3249555a26439591b8873f70b39bb116',1,'hipStreamGetFlags(hipStream_t stream, unsigned int *flags): hip_stream.cpp'],['../group__Stream.html#ga3249555a26439591b8873f70b39bb116',1,'hipStreamGetFlags(hipStream_t stream, unsigned int *flags): hip_stream.cpp']]], - ['hipstreamnonblocking',['hipStreamNonBlocking',['../group__GlobalDefs.html#gaaba9ae995d9b43b7d1ee70c6fa12c57d',1,'hip_runtime_api.h']]], - ['hipstreamquery',['hipStreamQuery',['../classihipStream__t.html#a46bba2e3bfbb0915a08fb608aed31858',1,'ihipStream_t::hipStreamQuery()'],['../group__Stream.html#ga925b39ff78d3b5fd458bd9e2cade9f4e',1,'hipStreamQuery(hipStream_t stream): hip_stream.cpp'],['../group__Stream.html#ga925b39ff78d3b5fd458bd9e2cade9f4e',1,'hipStreamQuery(hipStream_t stream): hip_stream.cpp']]], - ['hipstreamsynchronize',['hipStreamSynchronize',['../group__Stream.html#gabbfb9f573a6ebe8c478605ecb5504a74',1,'hipStreamSynchronize(hipStream_t stream): hip_stream.cpp'],['../group__Stream.html#gabbfb9f573a6ebe8c478605ecb5504a74',1,'hipStreamSynchronize(hipStream_t stream): hip_stream.cpp']]], - ['hipstreamwaitevent',['hipStreamWaitEvent',['../group__Stream.html#gacdd84c8f8ef1539c96c57c1d5bcae633',1,'hipStreamWaitEvent(hipStream_t stream, hipEvent_t event, unsigned int flags): hip_stream.cpp'],['../group__Stream.html#gacdd84c8f8ef1539c96c57c1d5bcae633',1,'hipStreamWaitEvent(hipStream_t stream, hipEvent_t event, unsigned int flags): hip_stream.cpp']]], - ['hipsuccess',['hipSuccess',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594aadfbdb847b149723c684ebd764556063',1,'hip_runtime_api.h']]], - ['hiptexturefiltermode',['hipTextureFilterMode',['../hcc__detail_2hip__texture_8h.html#aa2f0b6002b81d0a43a808cb880bb21e6',1,'hip_texture.h']]], - ['hiptexturereadmode',['hipTextureReadMode',['../hcc__detail_2hip__texture_8h.html#a442e950774f7306dc33692e358c92c94',1,'hip_texture.h']]], - ['host_5fdefines_2eh',['host_defines.h',['../host__defines_8h.html',1,'']]], - ['heterogeneous_2dcomputing_20interface_20for_20portability_20_28hip_29',['Heterogeneous-computing Interface for Portability (HIP)',['../index.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_9.html b/docs/RuntimeAPI/html/search/all_9.html deleted file mode 100644 index cd46d44056..0000000000 --- a/docs/RuntimeAPI/html/search/all_9.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_9.js b/docs/RuntimeAPI/html/search/all_9.js deleted file mode 100644 index 33821caa67..0000000000 --- a/docs/RuntimeAPI/html/search/all_9.js +++ /dev/null @@ -1,19 +0,0 @@ -var searchData= -[ - ['initialization_20and_20version',['Initialization and Version',['../group__Driver.html',1,'']]], - ['ihipctx_5ft',['ihipCtx_t',['../classihipCtx__t.html',1,'']]], - ['ihipctxcriticalbase_5ft',['ihipCtxCriticalBase_t',['../classihipCtxCriticalBase__t.html',1,'']]], - ['ihipctxcriticalbase_5ft_3c_20ctxmutex_20_3e',['ihipCtxCriticalBase_t< CtxMutex >',['../classihipCtxCriticalBase__t.html',1,'']]], - ['ihipdevice_5ft',['ihipDevice_t',['../classihipDevice__t.html',1,'']]], - ['ihipevent_5ft',['ihipEvent_t',['../structihipEvent__t.html',1,'']]], - ['ihipexception',['ihipException',['../classihipException.html',1,'']]], - ['ihipfunction_5ft',['ihipFunction_t',['../classihipFunction__t.html',1,'']]], - ['ihipipcmemhandle_5ft',['ihipIpcMemHandle_t',['../classihipIpcMemHandle__t.html',1,'']]], - ['ihipmodule_5ft',['ihipModule_t',['../classihipModule__t.html',1,'']]], - ['ihipstream_5ft',['ihipStream_t',['../classihipStream__t.html',1,'']]], - ['ihipstreamcriticalbase_5ft',['ihipStreamCriticalBase_t',['../classihipStreamCriticalBase__t.html',1,'']]], - ['ihipstreamcriticalbase_5ft_3c_20streammutex_20_3e',['ihipStreamCriticalBase_t< StreamMutex >',['../classihipStreamCriticalBase__t.html',1,'']]], - ['int3',['int3',['../structint3.html',1,'']]], - ['ipc_5fhandle',['ipc_handle',['../classihipIpcMemHandle__t.html#af2142ab7d9f820acbad7638428509d42',1,'ihipIpcMemHandle_t']]], - ['ismultigpuboard',['isMultiGpuBoard',['../structhipDeviceProp__t.html#a9bb19b2b0cdee8977ed63964532d639d',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_a.html b/docs/RuntimeAPI/html/search/all_a.html deleted file mode 100644 index eab655301b..0000000000 --- a/docs/RuntimeAPI/html/search/all_a.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_a.js b/docs/RuntimeAPI/html/search/all_a.js deleted file mode 100644 index 8be519d6d6..0000000000 --- a/docs/RuntimeAPI/html/search/all_a.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['l2cachesize',['l2CacheSize',['../structhipDeviceProp__t.html#a24404decccc16833973c803ced6f3a51',1,'hipDeviceProp_t']]], - ['lockedaccessor',['LockedAccessor',['../classLockedAccessor.html',1,'']]], - ['lockedbase',['LockedBase',['../structLockedBase.html',1,'']]], - ['lockedbase_3c_20ctxmutex_20_3e',['LockedBase< CtxMutex >',['../structLockedBase.html',1,'']]], - ['lockedbase_3c_20streammutex_20_3e',['LockedBase< StreamMutex >',['../structLockedBase.html',1,'']]], - ['long3',['long3',['../structlong3.html',1,'']]], - ['longlong3',['longlong3',['../structlonglong3.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_b.html b/docs/RuntimeAPI/html/search/all_b.html deleted file mode 100644 index a2c161e0bd..0000000000 --- a/docs/RuntimeAPI/html/search/all_b.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_b.js b/docs/RuntimeAPI/html/search/all_b.js deleted file mode 100644 index 462c78d2d5..0000000000 --- a/docs/RuntimeAPI/html/search/all_b.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['management',['Management',['../group__Context.html',1,'']]], - ['major',['major',['../structhipDeviceProp__t.html#aec9e4173c2e34cc232300c415dbd5e4f',1,'hipDeviceProp_t']]], - ['maxgridsize',['maxGridSize',['../structhipDeviceProp__t.html#ae529c23929f592120081fed31d877a55',1,'hipDeviceProp_t']]], - ['maxsharedmemorypermultiprocessor',['maxSharedMemoryPerMultiProcessor',['../structhipDeviceProp__t.html#aa1a32a7f387f6da845db7b228711fce8',1,'hipDeviceProp_t']]], - ['maxthreadsdim',['maxThreadsDim',['../structhipDeviceProp__t.html#a8ebba6fc12f80c9a9cf9b9193f0da465',1,'hipDeviceProp_t']]], - ['maxthreadsperblock',['maxThreadsPerBlock',['../structhipDeviceProp__t.html#af971cf1ca3ec1f68ad09036c0cc672e0',1,'hipDeviceProp_t']]], - ['maxthreadspermultiprocessor',['maxThreadsPerMultiProcessor',['../structhipDeviceProp__t.html#a23a39f4fd795addb3b125e9c3f6295ea',1,'hipDeviceProp_t']]], - ['memory_20management',['Memory Management',['../group__Memory.html',1,'']]], - ['memorybuswidth',['memoryBusWidth',['../structhipDeviceProp__t.html#a1d710ce8bd34daf66f892a66a2273132',1,'hipDeviceProp_t']]], - ['memoryclockrate',['memoryClockRate',['../structhipDeviceProp__t.html#a6db0ab8e7e8cc13c84d7bb7f70226d5e',1,'hipDeviceProp_t']]], - ['minor',['minor',['../structhipDeviceProp__t.html#abb51208e2509a7a1d107f0da69108938',1,'hipDeviceProp_t']]], - ['multiprocessorcount',['multiProcessorCount',['../structhipDeviceProp__t.html#add8d9d2ad52aece9fd1dbe25c18d9d57',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_c.html b/docs/RuntimeAPI/html/search/all_c.html deleted file mode 100644 index bdd3ee2c50..0000000000 --- a/docs/RuntimeAPI/html/search/all_c.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_c.js b/docs/RuntimeAPI/html/search/all_c.js deleted file mode 100644 index 124bf0ddb8..0000000000 --- a/docs/RuntimeAPI/html/search/all_c.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['name',['name',['../structhipDeviceProp__t.html#a5b44bf8fa46faefcde989942b1d11a5e',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_d.html b/docs/RuntimeAPI/html/search/all_d.html deleted file mode 100644 index d51093367e..0000000000 --- a/docs/RuntimeAPI/html/search/all_d.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_d.js b/docs/RuntimeAPI/html/search/all_d.js deleted file mode 100644 index 0584a45193..0000000000 --- a/docs/RuntimeAPI/html/search/all_d.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['pcibusid',['pciBusID',['../structhipDeviceProp__t.html#a1350f64d49b717ed3a06458f7549ccb0',1,'hipDeviceProp_t']]], - ['pcideviceid',['pciDeviceID',['../structhipDeviceProp__t.html#ae6aa845dc2d540f85098ea30be35f4eb',1,'hipDeviceProp_t']]], - ['proftrigger',['ProfTrigger',['../structProfTrigger.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_e.html b/docs/RuntimeAPI/html/search/all_e.html deleted file mode 100644 index 3cda0172ed..0000000000 --- a/docs/RuntimeAPI/html/search/all_e.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_e.js b/docs/RuntimeAPI/html/search/all_e.js deleted file mode 100644 index 44ba50e0b7..0000000000 --- a/docs/RuntimeAPI/html/search/all_e.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['regsperblock',['regsPerBlock',['../structhipDeviceProp__t.html#a73c1c21648a901799ff6bef83c11135b',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/all_f.html b/docs/RuntimeAPI/html/search/all_f.html deleted file mode 100644 index 7419b0297e..0000000000 --- a/docs/RuntimeAPI/html/search/all_f.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/all_f.js b/docs/RuntimeAPI/html/search/all_f.js deleted file mode 100644 index 0656e6726f..0000000000 --- a/docs/RuntimeAPI/html/search/all_f.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['sharedmemperblock',['sharedMemPerBlock',['../structhipDeviceProp__t.html#a3b9138678a0795c2677eddcfb1c67156',1,'hipDeviceProp_t']]], - ['short3',['short3',['../structshort3.html',1,'']]], - ['shorttid',['ShortTid',['../classShortTid.html',1,'']]], - ['stream_20management',['Stream Management',['../group__Stream.html',1,'']]], - ['struct_5ffloat',['struct_float',['../structstruct__float.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/classes_0.html b/docs/RuntimeAPI/html/search/classes_0.html deleted file mode 100644 index fabdc03679..0000000000 --- a/docs/RuntimeAPI/html/search/classes_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/classes_0.js b/docs/RuntimeAPI/html/search/classes_0.js deleted file mode 100644 index f1a5d5e882..0000000000 --- a/docs/RuntimeAPI/html/search/classes_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_5f_5fhalf',['__half',['../struct____half.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/classes_1.html b/docs/RuntimeAPI/html/search/classes_1.html deleted file mode 100644 index 800b6ae1bf..0000000000 --- a/docs/RuntimeAPI/html/search/classes_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/classes_1.js b/docs/RuntimeAPI/html/search/classes_1.js deleted file mode 100644 index 31c2da2c30..0000000000 --- a/docs/RuntimeAPI/html/search/classes_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['char3',['char3',['../structchar3.html',1,'']]], - ['char4',['char4',['../structchar4.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/classes_2.html b/docs/RuntimeAPI/html/search/classes_2.html deleted file mode 100644 index f65d263c0c..0000000000 --- a/docs/RuntimeAPI/html/search/classes_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/classes_2.js b/docs/RuntimeAPI/html/search/classes_2.js deleted file mode 100644 index f0c767feb0..0000000000 --- a/docs/RuntimeAPI/html/search/classes_2.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['dbname',['DbName',['../structDbName.html',1,'']]], - ['dim3',['dim3',['../structdim3.html',1,'']]], - ['double1',['double1',['../structdouble1.html',1,'']]], - ['double3',['double3',['../structdouble3.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/classes_3.html b/docs/RuntimeAPI/html/search/classes_3.html deleted file mode 100644 index 927e837f11..0000000000 --- a/docs/RuntimeAPI/html/search/classes_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/classes_3.js b/docs/RuntimeAPI/html/search/classes_3.js deleted file mode 100644 index 5149e86e09..0000000000 --- a/docs/RuntimeAPI/html/search/classes_3.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['fakemutex',['FakeMutex',['../classFakeMutex.html',1,'']]], - ['float1',['float1',['../structfloat1.html',1,'']]], - ['float3',['float3',['../structfloat3.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/classes_4.html b/docs/RuntimeAPI/html/search/classes_4.html deleted file mode 100644 index a447290ed6..0000000000 --- a/docs/RuntimeAPI/html/search/classes_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/classes_4.js b/docs/RuntimeAPI/html/search/classes_4.js deleted file mode 100644 index 059435714b..0000000000 --- a/docs/RuntimeAPI/html/search/classes_4.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['hiparray',['hipArray',['../structhipArray.html',1,'']]], - ['hipchannelformatdesc',['hipChannelFormatDesc',['../structhipChannelFormatDesc.html',1,'']]], - ['hipdevicearch_5ft',['hipDeviceArch_t',['../structhipDeviceArch__t.html',1,'']]], - ['hipdeviceprop_5ft',['hipDeviceProp_t',['../structhipDeviceProp__t.html',1,'']]], - ['hipdoublecomplex',['hipDoubleComplex',['../structhipDoubleComplex.html',1,'']]], - ['hipfloatcomplex',['hipFloatComplex',['../structhipFloatComplex.html',1,'']]], - ['hippointerattribute_5ft',['hipPointerAttribute_t',['../structhipPointerAttribute__t.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/classes_5.html b/docs/RuntimeAPI/html/search/classes_5.html deleted file mode 100644 index 63484c451e..0000000000 --- a/docs/RuntimeAPI/html/search/classes_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/classes_5.js b/docs/RuntimeAPI/html/search/classes_5.js deleted file mode 100644 index 5a5c313721..0000000000 --- a/docs/RuntimeAPI/html/search/classes_5.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['ihipctx_5ft',['ihipCtx_t',['../classihipCtx__t.html',1,'']]], - ['ihipctxcriticalbase_5ft',['ihipCtxCriticalBase_t',['../classihipCtxCriticalBase__t.html',1,'']]], - ['ihipctxcriticalbase_5ft_3c_20ctxmutex_20_3e',['ihipCtxCriticalBase_t< CtxMutex >',['../classihipCtxCriticalBase__t.html',1,'']]], - ['ihipdevice_5ft',['ihipDevice_t',['../classihipDevice__t.html',1,'']]], - ['ihipevent_5ft',['ihipEvent_t',['../structihipEvent__t.html',1,'']]], - ['ihipexception',['ihipException',['../classihipException.html',1,'']]], - ['ihipfunction_5ft',['ihipFunction_t',['../classihipFunction__t.html',1,'']]], - ['ihipipcmemhandle_5ft',['ihipIpcMemHandle_t',['../classihipIpcMemHandle__t.html',1,'']]], - ['ihipmodule_5ft',['ihipModule_t',['../classihipModule__t.html',1,'']]], - ['ihipstream_5ft',['ihipStream_t',['../classihipStream__t.html',1,'']]], - ['ihipstreamcriticalbase_5ft',['ihipStreamCriticalBase_t',['../classihipStreamCriticalBase__t.html',1,'']]], - ['ihipstreamcriticalbase_5ft_3c_20streammutex_20_3e',['ihipStreamCriticalBase_t< StreamMutex >',['../classihipStreamCriticalBase__t.html',1,'']]], - ['int3',['int3',['../structint3.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/classes_6.html b/docs/RuntimeAPI/html/search/classes_6.html deleted file mode 100644 index f3d70354c6..0000000000 --- a/docs/RuntimeAPI/html/search/classes_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/classes_6.js b/docs/RuntimeAPI/html/search/classes_6.js deleted file mode 100644 index ddc2606e32..0000000000 --- a/docs/RuntimeAPI/html/search/classes_6.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['lockedaccessor',['LockedAccessor',['../classLockedAccessor.html',1,'']]], - ['lockedbase',['LockedBase',['../structLockedBase.html',1,'']]], - ['lockedbase_3c_20ctxmutex_20_3e',['LockedBase< CtxMutex >',['../structLockedBase.html',1,'']]], - ['lockedbase_3c_20streammutex_20_3e',['LockedBase< StreamMutex >',['../structLockedBase.html',1,'']]], - ['long3',['long3',['../structlong3.html',1,'']]], - ['longlong3',['longlong3',['../structlonglong3.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/classes_7.html b/docs/RuntimeAPI/html/search/classes_7.html deleted file mode 100644 index 9e5f5c9861..0000000000 --- a/docs/RuntimeAPI/html/search/classes_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/classes_7.js b/docs/RuntimeAPI/html/search/classes_7.js deleted file mode 100644 index 750e29e1e6..0000000000 --- a/docs/RuntimeAPI/html/search/classes_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['proftrigger',['ProfTrigger',['../structProfTrigger.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/classes_8.html b/docs/RuntimeAPI/html/search/classes_8.html deleted file mode 100644 index 82c35b32ef..0000000000 --- a/docs/RuntimeAPI/html/search/classes_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/classes_8.js b/docs/RuntimeAPI/html/search/classes_8.js deleted file mode 100644 index 8440e320e4..0000000000 --- a/docs/RuntimeAPI/html/search/classes_8.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['short3',['short3',['../structshort3.html',1,'']]], - ['shorttid',['ShortTid',['../classShortTid.html',1,'']]], - ['struct_5ffloat',['struct_float',['../structstruct__float.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/classes_9.html b/docs/RuntimeAPI/html/search/classes_9.html deleted file mode 100644 index 4e83ac829b..0000000000 --- a/docs/RuntimeAPI/html/search/classes_9.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/classes_9.js b/docs/RuntimeAPI/html/search/classes_9.js deleted file mode 100644 index 8ced671759..0000000000 --- a/docs/RuntimeAPI/html/search/classes_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['texturereference',['textureReference',['../structtextureReference.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/classes_a.html b/docs/RuntimeAPI/html/search/classes_a.html deleted file mode 100644 index 616feb69a2..0000000000 --- a/docs/RuntimeAPI/html/search/classes_a.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/classes_a.js b/docs/RuntimeAPI/html/search/classes_a.js deleted file mode 100644 index e1eb527d76..0000000000 --- a/docs/RuntimeAPI/html/search/classes_a.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['uchar3',['uchar3',['../structuchar3.html',1,'']]], - ['uchar4',['uchar4',['../structuchar4.html',1,'']]], - ['uint3',['uint3',['../structuint3.html',1,'']]], - ['ulong3',['ulong3',['../structulong3.html',1,'']]], - ['ulonglong3',['ulonglong3',['../structulonglong3.html',1,'']]], - ['ushort3',['ushort3',['../structushort3.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/close.png b/docs/RuntimeAPI/html/search/close.png deleted file mode 100644 index 9342d3dfee..0000000000 Binary files a/docs/RuntimeAPI/html/search/close.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/search/defines_0.html b/docs/RuntimeAPI/html/search/defines_0.html deleted file mode 100644 index c2f0b46cfb..0000000000 --- a/docs/RuntimeAPI/html/search/defines_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/defines_0.js b/docs/RuntimeAPI/html/search/defines_0.js deleted file mode 100644 index 00fe08ccff..0000000000 --- a/docs/RuntimeAPI/html/search/defines_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_5f_5fhost_5f_5f',['__host__',['../host__defines_8h.html#a803050db3c78e0db3ea59a0c35499622',1,'host_defines.h']]] -]; diff --git a/docs/RuntimeAPI/html/search/defines_1.html b/docs/RuntimeAPI/html/search/defines_1.html deleted file mode 100644 index 9e1d9fa116..0000000000 --- a/docs/RuntimeAPI/html/search/defines_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/defines_1.js b/docs/RuntimeAPI/html/search/defines_1.js deleted file mode 100644 index b74e8321a7..0000000000 --- a/docs/RuntimeAPI/html/search/defines_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['hip_5fdynamic_5fshared',['HIP_DYNAMIC_SHARED',['../hcc__detail_2hip__runtime_8h.html#a1e7ec14fb6b74c03b6ec804d6ef7e0ea',1,'hip_runtime.h']]] -]; diff --git a/docs/RuntimeAPI/html/search/enums_0.html b/docs/RuntimeAPI/html/search/enums_0.html deleted file mode 100644 index b4cbe1e3ca..0000000000 --- a/docs/RuntimeAPI/html/search/enums_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/enums_0.js b/docs/RuntimeAPI/html/search/enums_0.js deleted file mode 100644 index bce6de432f..0000000000 --- a/docs/RuntimeAPI/html/search/enums_0.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['hipdeviceattribute_5ft',['hipDeviceAttribute_t',['../group__GlobalDefs.html#gacc0acd7b9bda126c6bb3dfd6e2796d7c',1,'hip_runtime_api.h']]], - ['hiperror_5ft',['hipError_t',['../group__GlobalDefs.html#gadf5010f6e140a53ecbdf949e73e87594',1,'hip_runtime_api.h']]], - ['hipfunccache_5ft',['hipFuncCache_t',['../group__GlobalDefs.html#ga86e5c5692645963a9a673e1aa88ba6ca',1,'hip_runtime_api.h']]], - ['hipmemcpykind',['hipMemcpyKind',['../group__GlobalDefs.html#ga232e222db36b1fc672ba98054d036a18',1,'hip_runtime_api.h']]], - ['hipsharedmemconfig',['hipSharedMemConfig',['../group__GlobalDefs.html#ga2e17b71d94ac350f2ccd914fd49d104e',1,'hip_runtime_api.h']]], - ['hiptexturefiltermode',['hipTextureFilterMode',['../hcc__detail_2hip__texture_8h.html#aa2f0b6002b81d0a43a808cb880bb21e6',1,'hip_texture.h']]], - ['hiptexturereadmode',['hipTextureReadMode',['../hcc__detail_2hip__texture_8h.html#a442e950774f7306dc33692e358c92c94',1,'hip_texture.h']]] -]; diff --git a/docs/RuntimeAPI/html/search/enumvalues_0.html b/docs/RuntimeAPI/html/search/enumvalues_0.html deleted file mode 100644 index 3e00fcf61a..0000000000 --- a/docs/RuntimeAPI/html/search/enumvalues_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/enumvalues_0.js b/docs/RuntimeAPI/html/search/enumvalues_0.js deleted file mode 100644 index 55b989c53e..0000000000 --- a/docs/RuntimeAPI/html/search/enumvalues_0.js +++ /dev/null @@ -1,65 +0,0 @@ -var searchData= -[ - ['hipdeviceattributeclockrate',['hipDeviceAttributeClockRate',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca2300e077e020e7967592065561373b00',1,'hip_runtime_api.h']]], - ['hipdeviceattributecomputecapabilitymajor',['hipDeviceAttributeComputeCapabilityMajor',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca2735739cf977b7d303266f6781131e8d',1,'hip_runtime_api.h']]], - ['hipdeviceattributecomputecapabilityminor',['hipDeviceAttributeComputeCapabilityMinor',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca38edc4fcae456e47160d349da3249b85',1,'hip_runtime_api.h']]], - ['hipdeviceattributecomputemode',['hipDeviceAttributeComputeMode',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca4d0369a6ef7bd7890fdcabc16ed3385d',1,'hip_runtime_api.h']]], - ['hipdeviceattributeconcurrentkernels',['hipDeviceAttributeConcurrentKernels',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7cad9f45254d0d048677f560032532d5504',1,'hip_runtime_api.h']]], - ['hipdeviceattributeismultigpuboard',['hipDeviceAttributeIsMultiGpuBoard',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca6129311200a17dcc5fa8d2256874ae3d',1,'hip_runtime_api.h']]], - ['hipdeviceattributel2cachesize',['hipDeviceAttributeL2CacheSize',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca582ae5a26a7148504878890028e4b64c',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxblockdimx',['hipDeviceAttributeMaxBlockDimX',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7cac1e4ac589db0d8adbbc241e3d0fcd594',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxblockdimy',['hipDeviceAttributeMaxBlockDimY',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca187dbffe12db09a56c0f75c340d879c9',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxblockdimz',['hipDeviceAttributeMaxBlockDimZ',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7caf811f51e03d1ffb025d80ac1da088675',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxgriddimx',['hipDeviceAttributeMaxGridDimX',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca03db8df0e7a9fbdaae683d97e8ac9c87',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxgriddimy',['hipDeviceAttributeMaxGridDimY',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca5b5cc49972679c5ccf62b79425ee99df',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxgriddimz',['hipDeviceAttributeMaxGridDimZ',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca6c206ac083999caf4640e5d91dae24f7',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxregistersperblock',['hipDeviceAttributeMaxRegistersPerBlock',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca82289b170192b6ea742be0efc6f95107',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxsharedmemoryperblock',['hipDeviceAttributeMaxSharedMemoryPerBlock',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca7bca3aa18b26d40eba043ae93e15c7e5',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxsharedmemorypermultiprocessor',['hipDeviceAttributeMaxSharedMemoryPerMultiprocessor',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7cad3e7f3d01533b32e12211172fcf410ba',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxthreadsperblock',['hipDeviceAttributeMaxThreadsPerBlock',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca8327aa23782d9c994bdef33a6d62e02e',1,'hip_runtime_api.h']]], - ['hipdeviceattributemaxthreadspermultiprocessor',['hipDeviceAttributeMaxThreadsPerMultiProcessor',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7caddc08922b491eb1f6a583833cbf4e2f0',1,'hip_runtime_api.h']]], - ['hipdeviceattributememorybuswidth',['hipDeviceAttributeMemoryBusWidth',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca848c1396fab6f20463c6aefb828b0870',1,'hip_runtime_api.h']]], - ['hipdeviceattributememoryclockrate',['hipDeviceAttributeMemoryClockRate',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca6b68deafd65f036b30dc8051573eb000',1,'hip_runtime_api.h']]], - ['hipdeviceattributemultiprocessorcount',['hipDeviceAttributeMultiprocessorCount',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca5c1519870733ccf0b83f722678240e5f',1,'hip_runtime_api.h']]], - ['hipdeviceattributepcibusid',['hipDeviceAttributePciBusId',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca572b29c44f1322aa7657fdd784832f88',1,'hip_runtime_api.h']]], - ['hipdeviceattributepcideviceid',['hipDeviceAttributePciDeviceId',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7ca955d90286e87be9e3528f0b817ab32ff',1,'hip_runtime_api.h']]], - ['hipdeviceattributetotalconstantmemory',['hipDeviceAttributeTotalConstantMemory',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7cac6089ac3a0f9c77cc382fb0eaa73ae9c',1,'hip_runtime_api.h']]], - ['hipdeviceattributewarpsize',['hipDeviceAttributeWarpSize',['../group__GlobalDefs.html#ggacc0acd7b9bda126c6bb3dfd6e2796d7caffd94133e823247a6f1215343232f6ec',1,'hip_runtime_api.h']]], - ['hiperrorhostmemoryalreadyregistered',['hipErrorHostMemoryAlreadyRegistered',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a9d7173cea72aace620a83d502569de1b',1,'hip_runtime_api.h']]], - ['hiperrorhostmemorynotregistered',['hipErrorHostMemoryNotRegistered',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a6901476ca88eed786fb8be003d9661d9',1,'hip_runtime_api.h']]], - ['hiperrorinitializationerror',['hipErrorInitializationError',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a7e935ae88ee1f9ff3920156ac6864520',1,'hip_runtime_api.h']]], - ['hiperrorinvalidcontext',['hipErrorInvalidContext',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594ad9d895f7f4dbf63a4586b2aab593c9fe',1,'hip_runtime_api.h']]], - ['hiperrorinvaliddevice',['hipErrorInvalidDevice',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a07ab9b704ea693c1781a52741c60cd0d',1,'hip_runtime_api.h']]], - ['hiperrorinvaliddevicepointer',['hipErrorInvalidDevicePointer',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a37a93fcd2b0aed9bf52b82fa26031e6f',1,'hip_runtime_api.h']]], - ['hiperrorinvalidkernelfile',['hipErrorInvalidKernelFile',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594ae508537d5e9a293bb1e63802d4a61380',1,'hip_runtime_api.h']]], - ['hiperrorinvalidmemcpydirection',['hipErrorInvalidMemcpyDirection',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594ae35ad9fb66b7c33f21a021efe89975b0',1,'hip_runtime_api.h']]], - ['hiperrorinvalidresourcehandle',['hipErrorInvalidResourceHandle',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a88e525a7c8f35552dfada58e9f2f6d3a',1,'hip_runtime_api.h']]], - ['hiperrorinvalidvalue',['hipErrorInvalidValue',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a1e8215fe1108a508bad3944bce7b4d83',1,'hip_runtime_api.h']]], - ['hiperrorlaunchfailure',['hipErrorLaunchFailure',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a3df72146e762c5a901d3af06027a1de9',1,'hip_runtime_api.h']]], - ['hiperrorlaunchoutofresources',['hipErrorLaunchOutOfResources',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a3ea57f211997a84fa1c582414bcabc47',1,'hip_runtime_api.h']]], - ['hiperrormapbufferobjectfailed',['hipErrorMapBufferObjectFailed',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594ab4de2174991cc16a3e1986f5da25262b',1,'hip_runtime_api.h']]], - ['hiperrormemoryallocation',['hipErrorMemoryAllocation',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a8293288a10109874749afe2562db09f2',1,'hip_runtime_api.h']]], - ['hiperrornodevice',['hipErrorNoDevice',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594ad4406972c318df36d231310a15131c24',1,'hip_runtime_api.h']]], - ['hiperrornotready',['hipErrorNotReady',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594aa9638063c8746a9d1fda2b2069a0a9f1',1,'hip_runtime_api.h']]], - ['hiperrorpeeraccessalreadyenabled',['hipErrorPeerAccessAlreadyEnabled',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a5399c146f91246f8b77abcd4ea30e7ac',1,'hip_runtime_api.h']]], - ['hiperrorpeeraccessnotenabled',['hipErrorPeerAccessNotEnabled',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a2ee0bf2e64840f253e4a1b12bbaf2d09',1,'hip_runtime_api.h']]], - ['hiperrorruntimememory',['hipErrorRuntimeMemory',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a1159eb9a6be66bea740a8bfb61378723',1,'hip_runtime_api.h']]], - ['hiperrorruntimeother',['hipErrorRuntimeOther',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594a44f847c5914be2177feac107dcb096d1',1,'hip_runtime_api.h']]], - ['hiperrortbd',['hipErrorTbd',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594ab556409e11ddb0c4cf77a2f4fc91ea9e',1,'hip_runtime_api.h']]], - ['hiperrorunknown',['hipErrorUnknown',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594aa74e64c5b2f5fb0d6a92681f5b234073',1,'hip_runtime_api.h']]], - ['hipfiltermodepoint',['hipFilterModePoint',['../hcc__detail_2hip__texture_8h.html#aa2f0b6002b81d0a43a808cb880bb21e6a56ede038ab7c805ec4b5b61d2b678dfc',1,'hip_texture.h']]], - ['hipfunccachepreferequal',['hipFuncCachePreferEqual',['../group__GlobalDefs.html#gga86e5c5692645963a9a673e1aa88ba6caa0ddab0e840107634a152033103be44d7',1,'hip_runtime_api.h']]], - ['hipfunccachepreferl1',['hipFuncCachePreferL1',['../group__GlobalDefs.html#gga86e5c5692645963a9a673e1aa88ba6caa636a3c140db6b9d4a8bf7d5a61c398c5',1,'hip_runtime_api.h']]], - ['hipfunccacheprefernone',['hipFuncCachePreferNone',['../group__GlobalDefs.html#gga86e5c5692645963a9a673e1aa88ba6caa0813fbaa008ce1231ff9fed3911eb3af',1,'hip_runtime_api.h']]], - ['hipfunccacheprefershared',['hipFuncCachePreferShared',['../group__GlobalDefs.html#gga86e5c5692645963a9a673e1aa88ba6caa9b34337dfbadba25ed2aa270bbcabc43',1,'hip_runtime_api.h']]], - ['hipmemcpydefault',['hipMemcpyDefault',['../group__GlobalDefs.html#gga232e222db36b1fc672ba98054d036a18a4e37107e416f79a2edf2b6534163c823',1,'hip_runtime_api.h']]], - ['hipmemcpydevicetodevice',['hipMemcpyDeviceToDevice',['../group__GlobalDefs.html#gga232e222db36b1fc672ba98054d036a18abd05a09d3105e0ce25b34dd91cf83f88',1,'hip_runtime_api.h']]], - ['hipmemcpydevicetohost',['hipMemcpyDeviceToHost',['../group__GlobalDefs.html#gga232e222db36b1fc672ba98054d036a18aba2505e9ce1e5382f17730bc670917d1',1,'hip_runtime_api.h']]], - ['hipmemcpyhosttodevice',['hipMemcpyHostToDevice',['../group__GlobalDefs.html#gga232e222db36b1fc672ba98054d036a18aff32175ecb0c7113200286eff8211008',1,'hip_runtime_api.h']]], - ['hipmemcpyhosttohost',['hipMemcpyHostToHost',['../group__GlobalDefs.html#gga232e222db36b1fc672ba98054d036a18a9d66b705aa85a9c83f0f533cef70d0af',1,'hip_runtime_api.h']]], - ['hipreadmodeelementtype',['hipReadModeElementType',['../hcc__detail_2hip__texture_8h.html#a442e950774f7306dc33692e358c92c94a829645801202174d052d667ffa4e1b8d',1,'hip_texture.h']]], - ['hipsharedmembanksizedefault',['hipSharedMemBankSizeDefault',['../group__GlobalDefs.html#gga2e17b71d94ac350f2ccd914fd49d104eaf5b325c9b7bde878913f768eaba5014d',1,'hip_runtime_api.h']]], - ['hipsharedmembanksizeeightbyte',['hipSharedMemBankSizeEightByte',['../group__GlobalDefs.html#gga2e17b71d94ac350f2ccd914fd49d104ea64518b4f5a25f536c883330167e79258',1,'hip_runtime_api.h']]], - ['hipsharedmembanksizefourbyte',['hipSharedMemBankSizeFourByte',['../group__GlobalDefs.html#gga2e17b71d94ac350f2ccd914fd49d104ea0a95a6e0c33106c42d66ab9476ff954a',1,'hip_runtime_api.h']]], - ['hipsuccess',['hipSuccess',['../group__GlobalDefs.html#ggadf5010f6e140a53ecbdf949e73e87594aadfbdb847b149723c684ebd764556063',1,'hip_runtime_api.h']]] -]; diff --git a/docs/RuntimeAPI/html/search/files_0.html b/docs/RuntimeAPI/html/search/files_0.html deleted file mode 100644 index c7aa36c96f..0000000000 --- a/docs/RuntimeAPI/html/search/files_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/files_0.js b/docs/RuntimeAPI/html/search/files_0.js deleted file mode 100644 index 31d22e4c27..0000000000 --- a/docs/RuntimeAPI/html/search/files_0.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['hip_5fhcc_2ecpp',['hip_hcc.cpp',['../hip__hcc_8cpp.html',1,'']]], - ['hip_5fruntime_2eh',['hip_runtime.h',['../hcc__detail_2hip__runtime_8h.html',1,'']]], - ['hip_5fruntime_5fapi_2eh',['hip_runtime_api.h',['../hcc__detail_2hip__runtime__api_8h.html',1,'']]], - ['hip_5ftexture_2eh',['hip_texture.h',['../hcc__detail_2hip__texture_8h.html',1,'']]], - ['hip_5fvector_5ftypes_2eh',['hip_vector_types.h',['../hcc__detail_2hip__vector__types_8h.html',1,'']]], - ['host_5fdefines_2eh',['host_defines.h',['../host__defines_8h.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/functions_0.html b/docs/RuntimeAPI/html/search/functions_0.html deleted file mode 100644 index 16a5a527a8..0000000000 --- a/docs/RuntimeAPI/html/search/functions_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/functions_0.js b/docs/RuntimeAPI/html/search/functions_0.js deleted file mode 100644 index 81e400d4c8..0000000000 --- a/docs/RuntimeAPI/html/search/functions_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['_5f_5fthreadfence',['__threadfence',['../group__Fence.html#ga8ed093b29d5c05d46a1240e7a35a6d13',1,'hip_runtime.h']]], - ['_5f_5fthreadfence_5fblock',['__threadfence_block',['../group__Fence.html#ga675c8823d497b2fd91abc42085e5ae25',1,'hip_runtime.h']]], - ['_5f_5fthreadfence_5fsystem',['__threadfence_system',['../group__Fence.html#ga21e7328a2daaf9e376d10b5c6b3de0ae',1,'__threadfence_system(void): device_util.cpp'],['../group__Fence.html#ga21e7328a2daaf9e376d10b5c6b3de0ae',1,'__threadfence_system(void): device_util.cpp']]] -]; diff --git a/docs/RuntimeAPI/html/search/functions_1.html b/docs/RuntimeAPI/html/search/functions_1.html deleted file mode 100644 index 3b4eacfebf..0000000000 --- a/docs/RuntimeAPI/html/search/functions_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/functions_1.js b/docs/RuntimeAPI/html/search/functions_1.js deleted file mode 100644 index d70b5aa8c0..0000000000 --- a/docs/RuntimeAPI/html/search/functions_1.js +++ /dev/null @@ -1,111 +0,0 @@ -var searchData= -[ - ['hipchoosedevice',['hipChooseDevice',['../group__Device.html#gaf1e365e1d17cf40644d1470de4817c8e',1,'hipChooseDevice(int *device, const hipDeviceProp_t *prop): hip_device.cpp'],['../group__Device.html#gaf1e365e1d17cf40644d1470de4817c8e',1,'hipChooseDevice(int *device, const hipDeviceProp_t *prop): hip_device.cpp']]], - ['hipcreatechanneldesc',['hipCreateChannelDesc',['../group__Texture.html#gac9b0ae733fa849842342fab6d42c7b6f',1,'hipCreateChannelDesc(int x, int y, int z, int w, hipChannelFormatKind f): hip_memory.cpp'],['../group__Texture.html#gac9b0ae733fa849842342fab6d42c7b6f',1,'hipCreateChannelDesc(int x, int y, int z, int w, hipChannelFormatKind f): hip_memory.cpp']]], - ['hipctxcreate',['hipCtxCreate',['../group__Context.html#gab6dbcff5c5b1249a5ac5cf39ae9d08bc',1,'hipCtxCreate(hipCtx_t *ctx, unsigned int flags, hipDevice_t device): hip_context.cpp'],['../group__Context.html#gab6dbcff5c5b1249a5ac5cf39ae9d08bc',1,'hipCtxCreate(hipCtx_t *ctx, unsigned int flags, hipDevice_t device): hip_context.cpp']]], - ['hipctxdestroy',['hipCtxDestroy',['../group__Context.html#ga9a65fe43238ef303a6d97826c05fd14e',1,'hipCtxDestroy(hipCtx_t ctx): hip_context.cpp'],['../group__Context.html#ga9a65fe43238ef303a6d97826c05fd14e',1,'hipCtxDestroy(hipCtx_t ctx): hip_context.cpp']]], - ['hipctxdisablepeeraccess',['hipCtxDisablePeerAccess',['../group__Context.html#gaf48e4e9c3b6bbad5deaeff10d2e28b31',1,'hipCtxDisablePeerAccess(hipCtx_t peerCtx): hip_peer.cpp'],['../group__Context.html#gaf48e4e9c3b6bbad5deaeff10d2e28b31',1,'hipCtxDisablePeerAccess(hipCtx_t peerCtx): hip_peer.cpp']]], - ['hipctxenablepeeraccess',['hipCtxEnablePeerAccess',['../group__Context.html#ga834dfd99d72082fe8770142fa30b30e2',1,'hipCtxEnablePeerAccess(hipCtx_t peerCtx, unsigned int flags): hip_peer.cpp'],['../group__Context.html#ga834dfd99d72082fe8770142fa30b30e2',1,'hipCtxEnablePeerAccess(hipCtx_t peerCtx, unsigned int flags): hip_peer.cpp']]], - ['hipctxgetapiversion',['hipCtxGetApiVersion',['../group__Context.html#gabe5941e6798c71a8351b7d51311e7e8f',1,'hipCtxGetApiVersion(hipCtx_t ctx, int *apiVersion): hip_context.cpp'],['../group__Context.html#gabe5941e6798c71a8351b7d51311e7e8f',1,'hipCtxGetApiVersion(hipCtx_t ctx, int *apiVersion): hip_context.cpp']]], - ['hipctxgetcacheconfig',['hipCtxGetCacheConfig',['../group__Context.html#gab10373068faafd3042c9003e2e6d905a',1,'hipCtxGetCacheConfig(hipFuncCache_t *cacheConfig): hip_context.cpp'],['../group__Context.html#gab10373068faafd3042c9003e2e6d905a',1,'hipCtxGetCacheConfig(hipFuncCache_t *cacheConfig): hip_context.cpp']]], - ['hipctxgetcurrent',['hipCtxGetCurrent',['../group__Context.html#ga741786101d348fdbfa1f64546860357a',1,'hipCtxGetCurrent(hipCtx_t *ctx): hip_context.cpp'],['../group__Context.html#ga741786101d348fdbfa1f64546860357a',1,'hipCtxGetCurrent(hipCtx_t *ctx): hip_context.cpp']]], - ['hipctxgetdevice',['hipCtxGetDevice',['../group__Context.html#ga8aa32cf64272da929f23ecbafefefcee',1,'hipCtxGetDevice(hipDevice_t *device): hip_context.cpp'],['../group__Context.html#ga8aa32cf64272da929f23ecbafefefcee',1,'hipCtxGetDevice(hipDevice_t *device): hip_context.cpp']]], - ['hipctxgetflags',['hipCtxGetFlags',['../group__Context.html#ga12a7a993e10f775fbf61a0b14288ed1b',1,'hipCtxGetFlags(unsigned int *flags): hip_context.cpp'],['../group__Context.html#ga12a7a993e10f775fbf61a0b14288ed1b',1,'hipCtxGetFlags(unsigned int *flags): hip_context.cpp']]], - ['hipctxgetsharedmemconfig',['hipCtxGetSharedMemConfig',['../group__Context.html#ga3c78b22dd03435a7ca88621a45409565',1,'hipCtxGetSharedMemConfig(hipSharedMemConfig *pConfig): hip_context.cpp'],['../group__Context.html#ga3c78b22dd03435a7ca88621a45409565',1,'hipCtxGetSharedMemConfig(hipSharedMemConfig *pConfig): hip_context.cpp']]], - ['hipctxpopcurrent',['hipCtxPopCurrent',['../group__Context.html#ga2cc4ea5a6b78d9d7990a88a7863467d4',1,'hipCtxPopCurrent(hipCtx_t *ctx): hip_context.cpp'],['../group__Context.html#ga2cc4ea5a6b78d9d7990a88a7863467d4',1,'hipCtxPopCurrent(hipCtx_t *ctx): hip_context.cpp']]], - ['hipctxpushcurrent',['hipCtxPushCurrent',['../group__Context.html#ga9c9d92f29d68cacdea4c062c97e50a8a',1,'hipCtxPushCurrent(hipCtx_t ctx): hip_context.cpp'],['../group__Context.html#ga9c9d92f29d68cacdea4c062c97e50a8a',1,'hipCtxPushCurrent(hipCtx_t ctx): hip_context.cpp']]], - ['hipctxsetcacheconfig',['hipCtxSetCacheConfig',['../group__Context.html#ga7eacc656f1d1b6f5a683bea31be67a2f',1,'hipCtxSetCacheConfig(hipFuncCache_t cacheConfig): hip_context.cpp'],['../group__Context.html#ga7eacc656f1d1b6f5a683bea31be67a2f',1,'hipCtxSetCacheConfig(hipFuncCache_t cacheConfig): hip_context.cpp']]], - ['hipctxsetcurrent',['hipCtxSetCurrent',['../group__Context.html#ga834a192f70c2bfc0269c309436776feb',1,'hipCtxSetCurrent(hipCtx_t ctx): hip_context.cpp'],['../group__Context.html#ga834a192f70c2bfc0269c309436776feb',1,'hipCtxSetCurrent(hipCtx_t ctx): hip_context.cpp']]], - ['hipctxsetsharedmemconfig',['hipCtxSetSharedMemConfig',['../group__Context.html#gad5c1d4ced27f584a74ed550dd002fa5a',1,'hipCtxSetSharedMemConfig(hipSharedMemConfig config): hip_context.cpp'],['../group__Context.html#gad5c1d4ced27f584a74ed550dd002fa5a',1,'hipCtxSetSharedMemConfig(hipSharedMemConfig config): hip_context.cpp']]], - ['hipctxsynchronize',['hipCtxSynchronize',['../group__Context.html#gad45cd968e8e3dcfd24ef050cab2f41c8',1,'hipCtxSynchronize(void): hip_context.cpp'],['../group__Context.html#gad45cd968e8e3dcfd24ef050cab2f41c8',1,'hipCtxSynchronize(void): hip_context.cpp']]], - ['hipdevicecanaccesspeer',['hipDeviceCanAccessPeer',['../group__PeerToPeer.html#ga0a1c9ccd775758d9d7d5b5a1f525b719',1,'hipDeviceCanAccessPeer(int *canAccessPeer, int deviceId, int peerDeviceId): hip_peer.cpp'],['../group__PeerToPeer.html#ga0a1c9ccd775758d9d7d5b5a1f525b719',1,'hipDeviceCanAccessPeer(int *canAccessPeer, int deviceId, int peerDeviceId): hip_peer.cpp']]], - ['hipdevicecomputecapability',['hipDeviceComputeCapability',['../group__Driver.html#ga0a1cf94d2b571ca3279577d5af0d1672',1,'hipDeviceComputeCapability(int *major, int *minor, hipDevice_t device): hip_device.cpp'],['../group__Driver.html#ga0a1cf94d2b571ca3279577d5af0d1672',1,'hipDeviceComputeCapability(int *major, int *minor, hipDevice_t device): hip_device.cpp']]], - ['hipdevicedisablepeeraccess',['hipDeviceDisablePeerAccess',['../group__PeerToPeer.html#ga85030c72824fb60aaddc7374ab60481b',1,'hipDeviceDisablePeerAccess(int peerDeviceId): hip_peer.cpp'],['../group__PeerToPeer.html#ga85030c72824fb60aaddc7374ab60481b',1,'hipDeviceDisablePeerAccess(int peerDeviceId): hip_peer.cpp']]], - ['hipdeviceenablepeeraccess',['hipDeviceEnablePeerAccess',['../group__PeerToPeer.html#ga0caca59034134d7a7bb893cc1caa653e',1,'hipDeviceEnablePeerAccess(int peerDeviceId, unsigned int flags): hip_peer.cpp'],['../group__PeerToPeer.html#ga0caca59034134d7a7bb893cc1caa653e',1,'hipDeviceEnablePeerAccess(int peerDeviceId, unsigned int flags): hip_peer.cpp']]], - ['hipdeviceget',['hipDeviceGet',['../group__Driver.html#gadf6c74aaf7c22fea80e9ac3400d43704',1,'hipDeviceGet(hipDevice_t *device, int ordinal): hip_context.cpp'],['../group__Driver.html#gadf6c74aaf7c22fea80e9ac3400d43704',1,'hipDeviceGet(hipDevice_t *device, int deviceId): hip_context.cpp']]], - ['hipdevicegetattribute',['hipDeviceGetAttribute',['../group__Device.html#ga7080a145a4239a7276e0dc22062026c1',1,'hipDeviceGetAttribute(int *pi, hipDeviceAttribute_t attr, int deviceId): hip_device.cpp'],['../group__Device.html#ga7080a145a4239a7276e0dc22062026c1',1,'hipDeviceGetAttribute(int *pi, hipDeviceAttribute_t attr, int device): hip_device.cpp']]], - ['hipdevicegetbypcibusid',['hipDeviceGetByPCIBusId',['../group__Driver.html#gafe08d5632ebd24edc26a19da380b2120',1,'hipDeviceGetByPCIBusId(int *device, const int *pciBusId): hip_device.cpp'],['../group__Driver.html#gafe08d5632ebd24edc26a19da380b2120',1,'hipDeviceGetByPCIBusId(int *device, const int *pciBusId): hip_device.cpp']]], - ['hipdevicegetcacheconfig',['hipDeviceGetCacheConfig',['../group__Device.html#ga37057f9830ad6fab7ce5f05f6d3c89ab',1,'hipDeviceGetCacheConfig(hipFuncCache_t *cacheConfig): hip_device.cpp'],['../group__Device.html#ga37057f9830ad6fab7ce5f05f6d3c89ab',1,'hipDeviceGetCacheConfig(hipFuncCache_t *cacheConfig): hip_device.cpp']]], - ['hipdevicegetlimit',['hipDeviceGetLimit',['../group__Device.html#gaa72baeb520f1d52fe17817e852937218',1,'hipDeviceGetLimit(size_t *pValue, hipLimit_t limit): hip_device.cpp'],['../group__Device.html#gaa72baeb520f1d52fe17817e852937218',1,'hipDeviceGetLimit(size_t *pValue, hipLimit_t limit): hip_device.cpp']]], - ['hipdevicegetname',['hipDeviceGetName',['../group__Driver.html#ga24df15e180a7b2b351cd362e5b7d2dac',1,'hipDeviceGetName(char *name, int len, hipDevice_t device): hip_device.cpp'],['../group__Driver.html#ga24df15e180a7b2b351cd362e5b7d2dac',1,'hipDeviceGetName(char *name, int len, hipDevice_t device): hip_device.cpp']]], - ['hipdevicegetpcibusid',['hipDeviceGetPCIBusId',['../group__Driver.html#gaaa961c8ec8047903617f4245fa50256a',1,'hipDeviceGetPCIBusId(char *pciBusId, int len, int device): hip_device.cpp'],['../group__Driver.html#gaaa961c8ec8047903617f4245fa50256a',1,'hipDeviceGetPCIBusId(char *pciBusId, int len, int device): hip_device.cpp']]], - ['hipdevicegetsharedmemconfig',['hipDeviceGetSharedMemConfig',['../group__Device.html#ga1bb08f774a34a468d969a8a04791c9bb',1,'hipDeviceGetSharedMemConfig(hipSharedMemConfig *pConfig): hip_device.cpp'],['../group__Device.html#ga1bb08f774a34a468d969a8a04791c9bb',1,'hipDeviceGetSharedMemConfig(hipSharedMemConfig *pConfig): hip_device.cpp']]], - ['hipdevicereset',['hipDeviceReset',['../group__Device.html#ga8d57161ae56a8edc46eeda447417bf6c',1,'hipDeviceReset(void): hip_device.cpp'],['../group__Device.html#ga8d57161ae56a8edc46eeda447417bf6c',1,'hipDeviceReset(void): hip_device.cpp']]], - ['hipdevicesetcacheconfig',['hipDeviceSetCacheConfig',['../group__Device.html#gaada3d30a46ae06f68cf1574f496b86ee',1,'hipDeviceSetCacheConfig(hipFuncCache_t cacheConfig): hip_device.cpp'],['../group__Device.html#gaada3d30a46ae06f68cf1574f496b86ee',1,'hipDeviceSetCacheConfig(hipFuncCache_t cacheConfig): hip_device.cpp']]], - ['hipdevicesetsharedmemconfig',['hipDeviceSetSharedMemConfig',['../group__Device.html#ga9b1f279084e76691cedfbfadf9c717ee',1,'hipDeviceSetSharedMemConfig(hipSharedMemConfig config): hip_device.cpp'],['../group__Device.html#ga9b1f279084e76691cedfbfadf9c717ee',1,'hipDeviceSetSharedMemConfig(hipSharedMemConfig config): hip_device.cpp']]], - ['hipdevicesynchronize',['hipDeviceSynchronize',['../group__Device.html#gaefdc2847fb1d6c3fb1354e827a191ebd',1,'hipDeviceSynchronize(void): hip_device.cpp'],['../group__Device.html#gaefdc2847fb1d6c3fb1354e827a191ebd',1,'hipDeviceSynchronize(void): hip_device.cpp']]], - ['hipdevicetotalmem',['hipDeviceTotalMem',['../group__Driver.html#ga8991e535d0ef1ead0524e73364623041',1,'hipDeviceTotalMem(size_t *bytes, hipDevice_t device): hip_device.cpp'],['../group__Driver.html#ga8991e535d0ef1ead0524e73364623041',1,'hipDeviceTotalMem(size_t *bytes, hipDevice_t device): hip_device.cpp']]], - ['hipdrivergetversion',['hipDriverGetVersion',['../group__Driver.html#gaf6c342f52d2a29a0aca5cdd89b4dd47c',1,'hipDriverGetVersion(int *driverVersion): hip_context.cpp'],['../group__Driver.html#gaf6c342f52d2a29a0aca5cdd89b4dd47c',1,'hipDriverGetVersion(int *driverVersion): hip_context.cpp']]], - ['hipeventcreate',['hipEventCreate',['../group__Event.html#ga5df2309c9f29ca4c8e669db658d411b4',1,'hipEventCreate(hipEvent_t *event): hip_event.cpp'],['../group__Event.html#ga5df2309c9f29ca4c8e669db658d411b4',1,'hipEventCreate(hipEvent_t *event): hip_event.cpp']]], - ['hipeventcreatewithflags',['hipEventCreateWithFlags',['../group__Event.html#gae86a5acb1b22b61bc9ecb9c28fc71b75',1,'hipEventCreateWithFlags(hipEvent_t *event, unsigned flags): hip_event.cpp'],['../group__Event.html#gae86a5acb1b22b61bc9ecb9c28fc71b75',1,'hipEventCreateWithFlags(hipEvent_t *event, unsigned flags): hip_event.cpp']]], - ['hipeventdestroy',['hipEventDestroy',['../group__Event.html#ga83260357dce0c39e8c6a3c74ec97484c',1,'hipEventDestroy(hipEvent_t event): hip_event.cpp'],['../group__Event.html#ga83260357dce0c39e8c6a3c74ec97484c',1,'hipEventDestroy(hipEvent_t event): hip_event.cpp']]], - ['hipeventelapsedtime',['hipEventElapsedTime',['../group__Event.html#gad4128b815cb475c8e13c7e66ff6250b7',1,'hipEventElapsedTime(float *ms, hipEvent_t start, hipEvent_t stop): hip_event.cpp'],['../group__Event.html#gad4128b815cb475c8e13c7e66ff6250b7',1,'hipEventElapsedTime(float *ms, hipEvent_t start, hipEvent_t stop): hip_event.cpp']]], - ['hipeventquery',['hipEventQuery',['../group__Event.html#ga5d12d7b798b5ceb5932d1ac21f5ac776',1,'hipEventQuery(hipEvent_t event): hip_event.cpp'],['../group__Event.html#ga5d12d7b798b5ceb5932d1ac21f5ac776',1,'hipEventQuery(hipEvent_t event): hip_event.cpp']]], - ['hipeventrecord',['hipEventRecord',['../group__Event.html#ga553b6f7a8e7b7dd9536d8a64c24d7e29',1,'hipEventRecord(hipEvent_t event, hipStream_t stream): hip_event.cpp'],['../group__Event.html#ga553b6f7a8e7b7dd9536d8a64c24d7e29',1,'hipEventRecord(hipEvent_t event, hipStream_t stream): hip_event.cpp']]], - ['hipeventsynchronize',['hipEventSynchronize',['../group__Event.html#ga1f72d98ba5d6f7dc3da54e0c41fe38b1',1,'hipEventSynchronize(hipEvent_t event): hip_event.cpp'],['../group__Event.html#ga1f72d98ba5d6f7dc3da54e0c41fe38b1',1,'hipEventSynchronize(hipEvent_t event): hip_event.cpp']]], - ['hipfree',['hipFree',['../group__Memory.html#ga740d08da65cae1441ba32f8fedb863d1',1,'hipFree(void *ptr): hip_memory.cpp'],['../group__Memory.html#ga740d08da65cae1441ba32f8fedb863d1',1,'hipFree(void *ptr): hip_memory.cpp']]], - ['hipfreearray',['hipFreeArray',['../hcc__detail_2hip__texture_8h.html#ae29935073517245c69bc64790dd2747a',1,'hip_memory.cpp']]], - ['hipfreehost',['hipFreeHost',['../group__Memory.html#gad2164cc3d49da53052f4b83b789e90c9',1,'hipFreeHost(void *ptr) __attribute__((deprecated("use hipHostFree instead"))): hip_memory.cpp'],['../group__Memory.html#gad2164cc3d49da53052f4b83b789e90c9',1,'hipFreeHost(void *ptr): hip_memory.cpp']]], - ['hipfuncsetcacheconfig',['hipFuncSetCacheConfig',['../group__Device.html#ga82f0637f09eb1082f6fd025f76c2c6f5',1,'hipFuncSetCacheConfig(hipFuncCache_t config): hip_device.cpp'],['../group__Device.html#ga82f0637f09eb1082f6fd025f76c2c6f5',1,'hipFuncSetCacheConfig(hipFuncCache_t cacheConfig): hip_device.cpp']]], - ['hipgetdevice',['hipGetDevice',['../group__Device.html#ga7e0e2e8c5f78e3c7449764657c254e0a',1,'hipGetDevice(int *deviceId): hip_device.cpp'],['../group__Device.html#ga7e0e2e8c5f78e3c7449764657c254e0a',1,'hipGetDevice(int *deviceId): hip_device.cpp']]], - ['hipgetdevicecount',['hipGetDeviceCount',['../group__Device.html#ga8555d5c76d88c50ddbf54ae70b568394',1,'hipGetDeviceCount(int *count): hip_device.cpp'],['../group__Device.html#ga8555d5c76d88c50ddbf54ae70b568394',1,'hipGetDeviceCount(int *count): hip_device.cpp']]], - ['hipgetdeviceproperties',['hipGetDeviceProperties',['../group__Device.html#ga32208513b7cd491f0cb5fc884053f790',1,'hipGetDeviceProperties(hipDeviceProp_t *prop, int deviceId): hip_device.cpp'],['../group__Device.html#ga32208513b7cd491f0cb5fc884053f790',1,'hipGetDeviceProperties(hipDeviceProp_t *props, int device): hip_device.cpp']]], - ['hipgeterrorname',['hipGetErrorName',['../group__Error.html#ga88c474d77635523dbf6ca67be7b56999',1,'hipGetErrorName(hipError_t hip_error): hip_error.cpp'],['../group__Error.html#ga88c474d77635523dbf6ca67be7b56999',1,'hipGetErrorName(hipError_t hip_error): hip_error.cpp']]], - ['hipgeterrorstring',['hipGetErrorString',['../group__Error.html#ga1421a2ee561f30d5b1dbed3ecb28b264',1,'hipGetErrorString(hipError_t hipError): hip_error.cpp'],['../group__Error.html#ga1421a2ee561f30d5b1dbed3ecb28b264',1,'hipGetErrorString(hipError_t hip_error): hip_error.cpp']]], - ['hipgetlasterror',['hipGetLastError',['../group__Error.html#ga533daeb9114d7fc2db8d867adf9e419b',1,'hipGetLastError(void): hip_error.cpp'],['../group__Error.html#ga533daeb9114d7fc2db8d867adf9e419b',1,'hipGetLastError(): hip_error.cpp']]], - ['hiphostalloc',['hipHostAlloc',['../group__Memory.html#gac5ae7f11cefc7085f39ee7868e71724a',1,'hipHostAlloc(void **ptr, size_t size, unsigned int flags) __attribute__((deprecated("use hipHostMalloc instead"))): hip_memory.cpp'],['../group__Memory.html#gac5ae7f11cefc7085f39ee7868e71724a',1,'hipHostAlloc(void **ptr, size_t sizeBytes, unsigned int flags): hip_memory.cpp']]], - ['hiphostfree',['hipHostFree',['../group__Memory.html#ga2e543f58ee4544e317cd695d6d82e0a3',1,'hipHostFree(void *ptr): hip_memory.cpp'],['../group__Memory.html#ga2e543f58ee4544e317cd695d6d82e0a3',1,'hipHostFree(void *ptr): hip_memory.cpp']]], - ['hiphostgetdevicepointer',['hipHostGetDevicePointer',['../group__Memory.html#ga8fa7a0478020b835a24785cd6bb89725',1,'hip_runtime_api.h']]], - ['hiphostgetflags',['hipHostGetFlags',['../group__Memory.html#ga4d26915873b3e3534ceb4dc310f8709a',1,'hipHostGetFlags(unsigned int *flagsPtr, void *hostPtr): hip_memory.cpp'],['../group__Memory.html#ga4d26915873b3e3534ceb4dc310f8709a',1,'hipHostGetFlags(unsigned int *flagsPtr, void *hostPtr): hip_memory.cpp']]], - ['hiphostmalloc',['hipHostMalloc',['../group__Memory.html#gaad40bc7d97ccc799403ef5a9a8c246e1',1,'hipHostMalloc(void **ptr, size_t size, unsigned int flags): hip_memory.cpp'],['../group__Memory.html#gaad40bc7d97ccc799403ef5a9a8c246e1',1,'hipHostMalloc(void **ptr, size_t sizeBytes, unsigned int flags): hip_memory.cpp']]], - ['hiphostregister',['hipHostRegister',['../group__Memory.html#gab8258f051e1a1f7385f794a15300e674',1,'hipHostRegister(void *hostPtr, size_t sizeBytes, unsigned int flags): hip_memory.cpp'],['../group__Memory.html#gab8258f051e1a1f7385f794a15300e674',1,'hipHostRegister(void *hostPtr, size_t sizeBytes, unsigned int flags): hip_memory.cpp']]], - ['hiphostunregister',['hipHostUnregister',['../group__Memory.html#ga4c9e1810b9f5858d36c4d28c91c86924',1,'hipHostUnregister(void *hostPtr): hip_memory.cpp'],['../group__Memory.html#ga4c9e1810b9f5858d36c4d28c91c86924',1,'hipHostUnregister(void *hostPtr): hip_memory.cpp']]], - ['hipinit',['hipInit',['../group__Driver.html#ga01baa652dda5815c594d047060496caa',1,'hipInit(unsigned int flags): hip_context.cpp'],['../group__Driver.html#ga01baa652dda5815c594d047060496caa',1,'hipInit(unsigned int flags): hip_context.cpp']]], - ['hipipcclosememhandle',['hipIpcCloseMemHandle',['../group__API.html#gac2db0688a6a471e17ca631977e199da7',1,'hipIpcCloseMemHandle(void *devPtr): hip_memory.cpp'],['../group__API.html#gac2db0688a6a471e17ca631977e199da7',1,'hipIpcCloseMemHandle(void *devPtr): hip_memory.cpp']]], - ['hipipcgetmemhandle',['hipIpcGetMemHandle',['../group__API.html#gafd8c80f7e3b6426a630fff768409be70',1,'hipIpcGetMemHandle(hipIpcMemHandle_t *handle, void *devPtr): hip_memory.cpp'],['../group__API.html#gafd8c80f7e3b6426a630fff768409be70',1,'hipIpcGetMemHandle(hipIpcMemHandle_t *handle, void *devPtr): hip_memory.cpp']]], - ['hipipcopenmemhandle',['hipIpcOpenMemHandle',['../group__API.html#ga2ada334c986e10805d58167e260cb0df',1,'hipIpcOpenMemHandle(void **devPtr, hipIpcMemHandle_t handle, unsigned int flags): hip_memory.cpp'],['../group__API.html#ga2ada334c986e10805d58167e260cb0df',1,'hipIpcOpenMemHandle(void **devPtr, hipIpcMemHandle_t handle, unsigned int flags): hip_memory.cpp']]], - ['hipmalloc',['hipMalloc',['../group__Memory.html#ga4c6fcfe80010069d2792780d00dcead2',1,'hipMalloc(void **ptr, size_t size): hip_memory.cpp'],['../group__Memory.html#ga4c6fcfe80010069d2792780d00dcead2',1,'hipMalloc(void **ptr, size_t sizeBytes): hip_memory.cpp']]], - ['hipmallocarray',['hipMallocArray',['../hcc__detail_2hip__texture_8h.html#aea2f071ae2e4a0847f6aa42d1ef56129',1,'hip_memory.cpp']]], - ['hipmallochost',['hipMallocHost',['../group__Memory.html#gad3d3cdf82eb0058fc9eac1f939cd9d30',1,'hipMallocHost(void **ptr, size_t size) __attribute__((deprecated("use hipHostMalloc instead"))): hip_memory.cpp'],['../group__Memory.html#gad3d3cdf82eb0058fc9eac1f939cd9d30',1,'hipMallocHost(void **ptr, size_t sizeBytes): hip_memory.cpp']]], - ['hipmallocpitch',['hipMallocPitch',['../group__Memory.html#ga805c7320498926e444616fe090c727ee',1,'hipMallocPitch(void **ptr, size_t *pitch, size_t width, size_t height): hip_memory.cpp'],['../group__Memory.html#ga805c7320498926e444616fe090c727ee',1,'hipMallocPitch(void **ptr, size_t *pitch, size_t width, size_t height): hip_memory.cpp']]], - ['hipmemcpy',['hipMemcpy',['../group__Memory.html#gac1a055d288302edd641c6d7416858e1e',1,'hipMemcpy(void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind): hip_memory.cpp'],['../group__Memory.html#gac1a055d288302edd641c6d7416858e1e',1,'hipMemcpy(void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind): hip_memory.cpp']]], - ['hipmemcpy2d',['hipMemcpy2D',['../hcc__detail_2hip__texture_8h.html#a8af4597ff0cd17247d8a857c4d8bfa8a',1,'hip_memory.cpp']]], - ['hipmemcpy2dtoarray',['hipMemcpy2DToArray',['../hcc__detail_2hip__texture_8h.html#ab08b0bd6cdbb57e79df40ef1cd0374e0',1,'hip_memory.cpp']]], - ['hipmemcpyasync',['hipMemcpyAsync',['../group__Memory.html#gad55fa9f5980b711bc93c52820149ba18',1,'hipMemcpyAsync(void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind, hipStream_t stream): hip_memory.cpp'],['../group__Memory.html#gad55fa9f5980b711bc93c52820149ba18',1,'hipMemcpyAsync(void *dst, const void *src, size_t sizeBytes, hipMemcpyKind kind, hipStream_t stream): hip_memory.cpp']]], - ['hipmemcpydtod',['hipMemcpyDtoD',['../group__Memory.html#ga814f245b8918f173c1f2f8c1480f7f93',1,'hipMemcpyDtoD(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes): hip_memory.cpp'],['../group__Memory.html#ga814f245b8918f173c1f2f8c1480f7f93',1,'hipMemcpyDtoD(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes): hip_memory.cpp']]], - ['hipmemcpydtodasync',['hipMemcpyDtoDAsync',['../group__Memory.html#gad3bba6016cba62f0e933cdfb4c312d27',1,'hipMemcpyDtoDAsync(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream): hip_memory.cpp'],['../group__Memory.html#gad3bba6016cba62f0e933cdfb4c312d27',1,'hipMemcpyDtoDAsync(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream): hip_memory.cpp']]], - ['hipmemcpydtoh',['hipMemcpyDtoH',['../group__Memory.html#gae61f4e35ff1b9643c6328bc45d091c3f',1,'hipMemcpyDtoH(void *dst, hipDeviceptr_t src, size_t sizeBytes): hip_memory.cpp'],['../group__Memory.html#gae61f4e35ff1b9643c6328bc45d091c3f',1,'hipMemcpyDtoH(void *dst, hipDeviceptr_t src, size_t sizeBytes): hip_memory.cpp']]], - ['hipmemcpydtohasync',['hipMemcpyDtoHAsync',['../group__Memory.html#gad69da1994a646b843fb1fa465dbeb623',1,'hipMemcpyDtoHAsync(void *dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream): hip_memory.cpp'],['../group__Memory.html#gad69da1994a646b843fb1fa465dbeb623',1,'hipMemcpyDtoHAsync(void *dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream): hip_memory.cpp']]], - ['hipmemcpyhtod',['hipMemcpyHtoD',['../group__Memory.html#gaa415ecdd2535e1eb618ed8a31a6f03af',1,'hipMemcpyHtoD(hipDeviceptr_t dst, void *src, size_t sizeBytes): hip_memory.cpp'],['../group__Memory.html#gaa415ecdd2535e1eb618ed8a31a6f03af',1,'hipMemcpyHtoD(hipDeviceptr_t dst, void *src, size_t sizeBytes): hip_memory.cpp']]], - ['hipmemcpyhtodasync',['hipMemcpyHtoDAsync',['../group__Memory.html#gae3e76acb34bed5e3b19b4c1822975bcd',1,'hipMemcpyHtoDAsync(hipDeviceptr_t dst, void *src, size_t sizeBytes, hipStream_t stream): hip_memory.cpp'],['../group__Memory.html#gae3e76acb34bed5e3b19b4c1822975bcd',1,'hipMemcpyHtoDAsync(hipDeviceptr_t dst, void *src, size_t sizeBytes, hipStream_t stream): hip_memory.cpp']]], - ['hipmemcpypeer',['hipMemcpyPeer',['../group__PeerToPeer.html#ga5512f45e25c08052667c8ffe7162333b',1,'hipMemcpyPeer(void *dst, int dstDeviceId, const void *src, int srcDeviceId, size_t sizeBytes): hip_peer.cpp'],['../group__PeerToPeer.html#ga5512f45e25c08052667c8ffe7162333b',1,'hipMemcpyPeer(void *dst, int dstDevice, const void *src, int srcDevice, size_t sizeBytes): hip_peer.cpp']]], - ['hipmemcpypeerasync',['hipMemcpyPeerAsync',['../group__PeerToPeer.html#ga216f951370c931d22e80c089ab724ed9',1,'hipMemcpyPeerAsync(void *dst, int dstDevice, const void *src, int srcDevice, size_t sizeBytes, hipStream_t stream): hip_peer.cpp'],['../group__PeerToPeer.html#ga216f951370c931d22e80c089ab724ed9',1,'hipMemcpyPeerAsync(void *dst, int dstDevice, const void *src, int srcDevice, size_t sizeBytes, hipStream_t stream): hip_peer.cpp']]], - ['hipmemcpytoarray',['hipMemcpyToArray',['../hcc__detail_2hip__texture_8h.html#a2e631f0b6757b47b74cdaa2911784be9',1,'hip_memory.cpp']]], - ['hipmemcpytosymbol',['hipMemcpyToSymbol',['../group__Memory.html#ga131ac5c1ba04e186112491cb9bf964bc',1,'hipMemcpyToSymbol(const char *symbolName, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind): hip_memory.cpp'],['../group__Memory.html#ga131ac5c1ba04e186112491cb9bf964bc',1,'hipMemcpyToSymbol(const char *symbolName, const void *src, size_t count, size_t offset, hipMemcpyKind kind): hip_memory.cpp']]], - ['hipmemcpytosymbolasync',['hipMemcpyToSymbolAsync',['../group__Memory.html#ga7dd66b9e8e0e7159177b42a250fe23c4',1,'hipMemcpyToSymbolAsync(const char *symbolName, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind, hipStream_t stream): hip_memory.cpp'],['../group__Memory.html#ga7dd66b9e8e0e7159177b42a250fe23c4',1,'hipMemcpyToSymbolAsync(const char *symbolName, const void *src, size_t count, size_t offset, hipMemcpyKind kind, hipStream_t stream): hip_memory.cpp']]], - ['hipmemgetaddressrange',['hipMemGetAddressRange',['../group__PeerToPeer.html#gac7d9132f6e3d102e9b512020e5654f38',1,'hipMemGetAddressRange(hipDeviceptr_t *pbase, size_t *psize, hipDeviceptr_t dptr): hip_memory.cpp'],['../group__PeerToPeer.html#gac7d9132f6e3d102e9b512020e5654f38',1,'hipMemGetAddressRange(hipDeviceptr_t *pbase, size_t *psize, hipDeviceptr_t dptr): hip_memory.cpp']]], - ['hipmemgetinfo',['hipMemGetInfo',['../group__Memory.html#ga311c3e246a21590de14478b8bd063be2',1,'hipMemGetInfo(size_t *free, size_t *total): hip_memory.cpp'],['../group__Memory.html#ga311c3e246a21590de14478b8bd063be2',1,'hipMemGetInfo(size_t *free, size_t *total): hip_memory.cpp']]], - ['hipmemset',['hipMemset',['../group__Memory.html#gac7441e74affcce4b8b69dba996c5ebc4',1,'hipMemset(void *dst, int value, size_t sizeBytes): hip_memory.cpp'],['../group__Memory.html#gac7441e74affcce4b8b69dba996c5ebc4',1,'hipMemset(void *dst, int value, size_t sizeBytes): hip_memory.cpp']]], - ['hipmemsetasync',['hipMemsetAsync',['../group__Memory.html#gae7d90e14c387e49f10db597f12915c54',1,'hipMemsetAsync(void *dst, int value, size_t sizeBytes, hipStream_t stream): hip_memory.cpp'],['../group__Memory.html#gae7d90e14c387e49f10db597f12915c54',1,'hipMemsetAsync(void *dst, int value, size_t sizeBytes, hipStream_t stream): hip_memory.cpp']]], - ['hipmodulegetfunction',['hipModuleGetFunction',['../group__Driver.html#ga9648b457bb837838cb936b417b56a65d',1,'hipModuleGetFunction(hipFunction_t *function, hipModule_t module, const char *kname): hip_module.cpp'],['../group__Driver.html#ga9648b457bb837838cb936b417b56a65d',1,'hipModuleGetFunction(hipFunction_t *hfunc, hipModule_t hmod, const char *name): hip_module.cpp']]], - ['hipmodulegetglobal',['hipModuleGetGlobal',['../group__Driver.html#ga3e425a680285f495e776f096e9632c89',1,'hipModuleGetGlobal(hipDeviceptr_t *dptr, size_t *bytes, hipModule_t hmod, const char *name): hip_module.cpp'],['../group__Driver.html#ga3e425a680285f495e776f096e9632c89',1,'hipModuleGetGlobal(hipDeviceptr_t *dptr, size_t *bytes, hipModule_t hmod, const char *name): hip_module.cpp']]], - ['hipmodulelaunchkernel',['hipModuleLaunchKernel',['../group__Driver.html#ga2e4de5937aa8171e9eda16c881ed0674',1,'hip_runtime_api.h']]], - ['hipmoduleload',['hipModuleLoad',['../group__Driver.html#ga31d806d976e91d36bd990ae3004d8760',1,'hipModuleLoad(hipModule_t *module, const char *fname): hip_module.cpp'],['../group__Driver.html#ga31d806d976e91d36bd990ae3004d8760',1,'hipModuleLoad(hipModule_t *module, const char *fname): hip_module.cpp']]], - ['hipmoduleloaddata',['hipModuleLoadData',['../group__Driver.html#gaabdbd73e952a741e861d01109c4790f3',1,'hipModuleLoadData(hipModule_t *module, const void *image): hip_module.cpp'],['../group__Driver.html#gaabdbd73e952a741e861d01109c4790f3',1,'hipModuleLoadData(hipModule_t *module, const void *image): hip_module.cpp']]], - ['hipmoduleunload',['hipModuleUnload',['../group__Driver.html#gae58e345f55bb3ec13dca80d2df88e0ed',1,'hipModuleUnload(hipModule_t module): hip_module.cpp'],['../group__Driver.html#gae58e345f55bb3ec13dca80d2df88e0ed',1,'hipModuleUnload(hipModule_t hmod): hip_module.cpp']]], - ['hippeekatlasterror',['hipPeekAtLastError',['../group__Error.html#ga1dd660bc739f7e13edd34615660f0148',1,'hipPeekAtLastError(void): hip_error.cpp'],['../group__Error.html#ga1dd660bc739f7e13edd34615660f0148',1,'hipPeekAtLastError(): hip_error.cpp']]], - ['hippointergetattributes',['hipPointerGetAttributes',['../group__Memory.html#ga3d68ba64959615d4ab84f10caa12433b',1,'hipPointerGetAttributes(hipPointerAttribute_t *attributes, void *ptr): hip_memory.cpp'],['../group__Memory.html#ga3d68ba64959615d4ab84f10caa12433b',1,'hipPointerGetAttributes(hipPointerAttribute_t *attributes, void *ptr): hip_memory.cpp']]], - ['hipprofilerstart',['hipProfilerStart',['../group__Profiler.html#ga40aa20d731f9c8f0586127d589759e1d',1,'hipProfilerStart(): hip_hcc.cpp'],['../group__Profiler.html#ga40aa20d731f9c8f0586127d589759e1d',1,'hipProfilerStart(): hip_hcc.cpp']]], - ['hipprofilerstop',['hipProfilerStop',['../group__Profiler.html#ga777994cae0f7bdef24131fc1f3ed626e',1,'hipProfilerStop(): hip_hcc.cpp'],['../group__Profiler.html#ga777994cae0f7bdef24131fc1f3ed626e',1,'hipProfilerStop(): hip_hcc.cpp']]], - ['hipruntimegetversion',['hipRuntimeGetVersion',['../group__Driver.html#gae8b7ba34d2e11e334650aa51a4dd87ee',1,'hipRuntimeGetVersion(int *runtimeVersion): hip_context.cpp'],['../group__Driver.html#gae8b7ba34d2e11e334650aa51a4dd87ee',1,'hipRuntimeGetVersion(int *runtimeVersion): hip_context.cpp']]], - ['hipsetdevice',['hipSetDevice',['../group__Device.html#ga43c1e7f15925eeb762195ccb5e063eae',1,'hipSetDevice(int deviceId): hip_device.cpp'],['../group__Device.html#ga43c1e7f15925eeb762195ccb5e063eae',1,'hipSetDevice(int deviceId): hip_device.cpp']]], - ['hipsetdeviceflags',['hipSetDeviceFlags',['../group__Device.html#ga6e54db382768827e84725632018307aa',1,'hip_runtime_api.h']]], - ['hipstreamaddcallback',['hipStreamAddCallback',['../group__Stream.html#ga3e098cd7478828b2104abb41a7bb00d3',1,'hipStreamAddCallback(hipStream_t stream, hipStreamCallback_t callback, void *userData, unsigned int flags): hip_stream.cpp'],['../group__Stream.html#ga3e098cd7478828b2104abb41a7bb00d3',1,'hipStreamAddCallback(hipStream_t stream, hipStreamCallback_t callback, void *userData, unsigned int flags): hip_stream.cpp']]], - ['hipstreamcreate',['hipStreamCreate',['../group__Stream.html#gaff5b62d6e9502d80879f7176f4d03102',1,'hipStreamCreate(hipStream_t *stream): hip_stream.cpp'],['../group__Stream.html#gaff5b62d6e9502d80879f7176f4d03102',1,'hipStreamCreate(hipStream_t *stream): hip_stream.cpp']]], - ['hipstreamcreatewithflags',['hipStreamCreateWithFlags',['../group__Stream.html#gaf2382e3cc6632332a8983a0f58e43494',1,'hipStreamCreateWithFlags(hipStream_t *stream, unsigned int flags): hip_stream.cpp'],['../group__Stream.html#gaf2382e3cc6632332a8983a0f58e43494',1,'hipStreamCreateWithFlags(hipStream_t *stream, unsigned int flags): hip_stream.cpp']]], - ['hipstreamdestroy',['hipStreamDestroy',['../group__Stream.html#ga3076a3499ed2c7821311006100bb95ec',1,'hipStreamDestroy(hipStream_t stream): hip_stream.cpp'],['../group__Stream.html#ga3076a3499ed2c7821311006100bb95ec',1,'hipStreamDestroy(hipStream_t stream): hip_stream.cpp']]], - ['hipstreamgetflags',['hipStreamGetFlags',['../group__Stream.html#ga3249555a26439591b8873f70b39bb116',1,'hipStreamGetFlags(hipStream_t stream, unsigned int *flags): hip_stream.cpp'],['../group__Stream.html#ga3249555a26439591b8873f70b39bb116',1,'hipStreamGetFlags(hipStream_t stream, unsigned int *flags): hip_stream.cpp']]], - ['hipstreamquery',['hipStreamQuery',['../group__Stream.html#ga925b39ff78d3b5fd458bd9e2cade9f4e',1,'hipStreamQuery(hipStream_t stream): hip_stream.cpp'],['../group__Stream.html#ga925b39ff78d3b5fd458bd9e2cade9f4e',1,'hipStreamQuery(hipStream_t stream): hip_stream.cpp']]], - ['hipstreamsynchronize',['hipStreamSynchronize',['../group__Stream.html#gabbfb9f573a6ebe8c478605ecb5504a74',1,'hipStreamSynchronize(hipStream_t stream): hip_stream.cpp'],['../group__Stream.html#gabbfb9f573a6ebe8c478605ecb5504a74',1,'hipStreamSynchronize(hipStream_t stream): hip_stream.cpp']]], - ['hipstreamwaitevent',['hipStreamWaitEvent',['../group__Stream.html#gacdd84c8f8ef1539c96c57c1d5bcae633',1,'hipStreamWaitEvent(hipStream_t stream, hipEvent_t event, unsigned int flags): hip_stream.cpp'],['../group__Stream.html#gacdd84c8f8ef1539c96c57c1d5bcae633',1,'hipStreamWaitEvent(hipStream_t stream, hipEvent_t event, unsigned int flags): hip_stream.cpp']]] -]; diff --git a/docs/RuntimeAPI/html/search/groups_0.html b/docs/RuntimeAPI/html/search/groups_0.html deleted file mode 100644 index 2090afa206..0000000000 --- a/docs/RuntimeAPI/html/search/groups_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/groups_0.js b/docs/RuntimeAPI/html/search/groups_0.js deleted file mode 100644 index 41450aa73c..0000000000 --- a/docs/RuntimeAPI/html/search/groups_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['control',['Control',['../group__Profiler.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/groups_1.html b/docs/RuntimeAPI/html/search/groups_1.html deleted file mode 100644 index 3ad8a3ba5e..0000000000 --- a/docs/RuntimeAPI/html/search/groups_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/groups_1.js b/docs/RuntimeAPI/html/search/groups_1.js deleted file mode 100644 index 9f4a599ed0..0000000000 --- a/docs/RuntimeAPI/html/search/groups_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['device_20management',['Device Management',['../group__Device.html',1,'']]], - ['device_20memory_20access',['Device Memory Access',['../group__PeerToPeer.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/groups_2.html b/docs/RuntimeAPI/html/search/groups_2.html deleted file mode 100644 index 361832c940..0000000000 --- a/docs/RuntimeAPI/html/search/groups_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/groups_2.js b/docs/RuntimeAPI/html/search/groups_2.js deleted file mode 100644 index c9fd17e83e..0000000000 --- a/docs/RuntimeAPI/html/search/groups_2.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['error_20handling',['Error Handling',['../group__Error.html',1,'']]], - ['event_20management',['Event Management',['../group__Event.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/groups_3.html b/docs/RuntimeAPI/html/search/groups_3.html deleted file mode 100644 index f42200a1c1..0000000000 --- a/docs/RuntimeAPI/html/search/groups_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/groups_3.js b/docs/RuntimeAPI/html/search/groups_3.js deleted file mode 100644 index 04e0d8aba5..0000000000 --- a/docs/RuntimeAPI/html/search/groups_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['fence_20functions',['Fence Functions',['../group__Fence.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/groups_4.html b/docs/RuntimeAPI/html/search/groups_4.html deleted file mode 100644 index b07fdf95ae..0000000000 --- a/docs/RuntimeAPI/html/search/groups_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/groups_4.js b/docs/RuntimeAPI/html/search/groups_4.js deleted file mode 100644 index 529e9394c3..0000000000 --- a/docs/RuntimeAPI/html/search/groups_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['global_20enum_20and_20defines',['Global enum and defines',['../group__GlobalDefs.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/groups_5.html b/docs/RuntimeAPI/html/search/groups_5.html deleted file mode 100644 index 35324c03fa..0000000000 --- a/docs/RuntimeAPI/html/search/groups_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/groups_5.js b/docs/RuntimeAPI/html/search/groups_5.js deleted file mode 100644 index 178e3f55de..0000000000 --- a/docs/RuntimeAPI/html/search/groups_5.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['hip_20api',['HIP API',['../group__API.html',1,'']]], - ['hcc_2dspecific_20accessors',['HCC-Specific Accessors',['../group__HCC__Specific.html',1,'']]], - ['hip_20environment_20variables',['HIP Environment Variables',['../group__HIP-ENV.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/groups_6.html b/docs/RuntimeAPI/html/search/groups_6.html deleted file mode 100644 index 323140233c..0000000000 --- a/docs/RuntimeAPI/html/search/groups_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/groups_6.js b/docs/RuntimeAPI/html/search/groups_6.js deleted file mode 100644 index f99f43b337..0000000000 --- a/docs/RuntimeAPI/html/search/groups_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['initialization_20and_20version',['Initialization and Version',['../group__Driver.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/groups_7.html b/docs/RuntimeAPI/html/search/groups_7.html deleted file mode 100644 index 27334b6a7d..0000000000 --- a/docs/RuntimeAPI/html/search/groups_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/groups_7.js b/docs/RuntimeAPI/html/search/groups_7.js deleted file mode 100644 index 0541757e52..0000000000 --- a/docs/RuntimeAPI/html/search/groups_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['management',['Management',['../group__Context.html',1,'']]], - ['memory_20management',['Memory Management',['../group__Memory.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/groups_8.html b/docs/RuntimeAPI/html/search/groups_8.html deleted file mode 100644 index 863d13654f..0000000000 --- a/docs/RuntimeAPI/html/search/groups_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/groups_8.js b/docs/RuntimeAPI/html/search/groups_8.js deleted file mode 100644 index 7cc1c54c23..0000000000 --- a/docs/RuntimeAPI/html/search/groups_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['stream_20management',['Stream Management',['../group__Stream.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/groups_9.html b/docs/RuntimeAPI/html/search/groups_9.html deleted file mode 100644 index e42b2804e7..0000000000 --- a/docs/RuntimeAPI/html/search/groups_9.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/groups_9.js b/docs/RuntimeAPI/html/search/groups_9.js deleted file mode 100644 index dec0aef6b9..0000000000 --- a/docs/RuntimeAPI/html/search/groups_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['texture_20reference_20management',['Texture Reference Management',['../group__Texture.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/mag_sel.png b/docs/RuntimeAPI/html/search/mag_sel.png deleted file mode 100644 index 81f6040a20..0000000000 Binary files a/docs/RuntimeAPI/html/search/mag_sel.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/search/nomatches.html b/docs/RuntimeAPI/html/search/nomatches.html deleted file mode 100644 index b1ded27e9a..0000000000 --- a/docs/RuntimeAPI/html/search/nomatches.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - -
-
No Matches
-
- - diff --git a/docs/RuntimeAPI/html/search/pages_0.html b/docs/RuntimeAPI/html/search/pages_0.html deleted file mode 100644 index c51c834506..0000000000 --- a/docs/RuntimeAPI/html/search/pages_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/pages_0.js b/docs/RuntimeAPI/html/search/pages_0.js deleted file mode 100644 index 8d42650d49..0000000000 --- a/docs/RuntimeAPI/html/search/pages_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['bug_20list',['Bug List',['../bug.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/pages_1.html b/docs/RuntimeAPI/html/search/pages_1.html deleted file mode 100644 index 2a98fce174..0000000000 --- a/docs/RuntimeAPI/html/search/pages_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/pages_1.js b/docs/RuntimeAPI/html/search/pages_1.js deleted file mode 100644 index 038da5410f..0000000000 --- a/docs/RuntimeAPI/html/search/pages_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['deprecated_20list',['Deprecated List',['../deprecated.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/pages_2.html b/docs/RuntimeAPI/html/search/pages_2.html deleted file mode 100644 index 0711a0b418..0000000000 --- a/docs/RuntimeAPI/html/search/pages_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/pages_2.js b/docs/RuntimeAPI/html/search/pages_2.js deleted file mode 100644 index 09f9fa0389..0000000000 --- a/docs/RuntimeAPI/html/search/pages_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['heterogeneous_2dcomputing_20interface_20for_20portability_20_28hip_29',['Heterogeneous-computing Interface for Portability (HIP)',['../index.html',1,'']]] -]; diff --git a/docs/RuntimeAPI/html/search/related_0.html b/docs/RuntimeAPI/html/search/related_0.html deleted file mode 100644 index b6476349f4..0000000000 --- a/docs/RuntimeAPI/html/search/related_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/related_0.js b/docs/RuntimeAPI/html/search/related_0.js deleted file mode 100644 index 6f5dc6598c..0000000000 --- a/docs/RuntimeAPI/html/search/related_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['hipstreamquery',['hipStreamQuery',['../classihipStream__t.html#a46bba2e3bfbb0915a08fb608aed31858',1,'ihipStream_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/search.css b/docs/RuntimeAPI/html/search/search.css deleted file mode 100644 index 4d7612ff63..0000000000 --- a/docs/RuntimeAPI/html/search/search.css +++ /dev/null @@ -1,271 +0,0 @@ -/*---------------- Search Box */ - -#FSearchBox { - float: left; -} - -#MSearchBox { - white-space : nowrap; - position: absolute; - float: none; - display: inline; - margin-top: 8px; - right: 0px; - width: 170px; - z-index: 102; - background-color: white; -} - -#MSearchBox .left -{ - display:block; - position:absolute; - left:10px; - width:20px; - height:19px; - background:url('search_l.png') no-repeat; - background-position:right; -} - -#MSearchSelect { - display:block; - position:absolute; - width:20px; - height:19px; -} - -.left #MSearchSelect { - left:4px; -} - -.right #MSearchSelect { - right:5px; -} - -#MSearchField { - display:block; - position:absolute; - height:19px; - background:url('search_m.png') repeat-x; - border:none; - width:111px; - margin-left:20px; - padding-left:4px; - color: #909090; - outline: none; - font: 9pt Arial, Verdana, sans-serif; -} - -#FSearchBox #MSearchField { - margin-left:15px; -} - -#MSearchBox .right { - display:block; - position:absolute; - right:10px; - top:0px; - width:20px; - height:19px; - background:url('search_r.png') no-repeat; - background-position:left; -} - -#MSearchClose { - display: none; - position: absolute; - top: 4px; - background : none; - border: none; - margin: 0px 4px 0px 0px; - padding: 0px 0px; - outline: none; -} - -.left #MSearchClose { - left: 6px; -} - -.right #MSearchClose { - right: 2px; -} - -.MSearchBoxActive #MSearchField { - color: #000000; -} - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; - z-index: 1; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt Arial, Verdana, sans-serif; - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: monospace; - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: #000000; - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: #000000; - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - width: 60ex; - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; - padding-bottom: 15px; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -body.SRPage { - margin: 5px 2px; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; -} - -.SRResult { - display: none; -} - -DIV.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.searchresult { - background-color: #F0F3F8; -} - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/docs/RuntimeAPI/html/search/search.js b/docs/RuntimeAPI/html/search/search.js deleted file mode 100644 index f85f411038..0000000000 --- a/docs/RuntimeAPI/html/search/search.js +++ /dev/null @@ -1,815 +0,0 @@ -// Search script generated by doxygen -// Copyright (C) 2009 by Dimitri van Heesch. - -// The code in this file is loosly based on main.js, part of Natural Docs, -// which is Copyright (C) 2003-2008 Greg Valure -// Natural Docs is licensed under the GPL. - -var indexSectionsWithContent = -{ - 0: "_abcdefghilmnprstuwxyz", - 1: "_cdfhilpstu", - 2: "h", - 3: "_h", - 4: "_achilmnprstwxyz", - 5: "dh", - 6: "h", - 7: "h", - 8: "h", - 9: "_h", - 10: "cdefghimst", - 11: "bdh" -}; - -var indexSectionNames = -{ - 0: "all", - 1: "classes", - 2: "files", - 3: "functions", - 4: "variables", - 5: "typedefs", - 6: "enums", - 7: "enumvalues", - 8: "related", - 9: "defines", - 10: "groups", - 11: "pages" -}; - -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches.html'; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName == 'DIV' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName == 'DIV' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; e - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/typedefs_0.js b/docs/RuntimeAPI/html/search/typedefs_0.js deleted file mode 100644 index 8cfe168754..0000000000 --- a/docs/RuntimeAPI/html/search/typedefs_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['dim3',['dim3',['../group__GlobalDefs.html#gacb37281795c3567d0b10a61c056d512b',1,'hip_runtime_api.h']]] -]; diff --git a/docs/RuntimeAPI/html/search/typedefs_1.html b/docs/RuntimeAPI/html/search/typedefs_1.html deleted file mode 100644 index 455fe2b2b9..0000000000 --- a/docs/RuntimeAPI/html/search/typedefs_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/typedefs_1.js b/docs/RuntimeAPI/html/search/typedefs_1.js deleted file mode 100644 index ab13806a51..0000000000 --- a/docs/RuntimeAPI/html/search/typedefs_1.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['hipfunccache_5ft',['hipFuncCache_t',['../group__GlobalDefs.html#ga7effbca2af70714feaa3330bf1a77a72',1,'hip_runtime_api.h']]], - ['hipmemcpykind',['hipMemcpyKind',['../group__GlobalDefs.html#ga0c04e67413ce030817361f02673e5c85',1,'hip_runtime_api.h']]], - ['hipsharedmemconfig',['hipSharedMemConfig',['../group__GlobalDefs.html#ga6b1ca424fa26a5fb718937d662eaee7f',1,'hip_runtime_api.h']]], - ['hipstreamcallback_5ft',['hipStreamCallback_t',['../group__Stream.html#gadd389da2e3926a8ff17658d029015dcd',1,'hip_runtime_api.h']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_0.html b/docs/RuntimeAPI/html/search/variables_0.html deleted file mode 100644 index 1b8adc9b33..0000000000 --- a/docs/RuntimeAPI/html/search/variables_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_0.js b/docs/RuntimeAPI/html/search/variables_0.js deleted file mode 100644 index 12df77b8fe..0000000000 --- a/docs/RuntimeAPI/html/search/variables_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_5fcomputeunits',['_computeUnits',['../classihipDevice__t.html#a655e03136394df32571a52707aa371c5',1,'ihipDevice_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_1.html b/docs/RuntimeAPI/html/search/variables_1.html deleted file mode 100644 index 78f63cd1eb..0000000000 --- a/docs/RuntimeAPI/html/search/variables_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_1.js b/docs/RuntimeAPI/html/search/variables_1.js deleted file mode 100644 index 2fba32867b..0000000000 --- a/docs/RuntimeAPI/html/search/variables_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['arch',['arch',['../structhipDeviceProp__t.html#afc58158e44bef6ad26f2be401434b049',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_2.html b/docs/RuntimeAPI/html/search/variables_2.html deleted file mode 100644 index ea80d20140..0000000000 --- a/docs/RuntimeAPI/html/search/variables_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_2.js b/docs/RuntimeAPI/html/search/variables_2.js deleted file mode 100644 index 82dc751418..0000000000 --- a/docs/RuntimeAPI/html/search/variables_2.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['canmaphostmemory',['canMapHostMemory',['../structhipDeviceProp__t.html#ac2143f5448607d1a02a9e8783fcf06a1',1,'hipDeviceProp_t']]], - ['clockinstructionrate',['clockInstructionRate',['../structhipDeviceProp__t.html#a6fbf3b08a1a08ae700f1a06265f6666b',1,'hipDeviceProp_t']]], - ['clockrate',['clockRate',['../structhipDeviceProp__t.html#a1dd15bee43692b8649dfbdc1adbaaf96',1,'hipDeviceProp_t']]], - ['computemode',['computeMode',['../structhipDeviceProp__t.html#ae7d9216f8583a703359d0b9373823f5d',1,'hipDeviceProp_t']]], - ['concurrentkernels',['concurrentKernels',['../structhipDeviceProp__t.html#ad8461a28caf9c38c58cf358583b5bee3',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_3.html b/docs/RuntimeAPI/html/search/variables_3.html deleted file mode 100644 index 0dca26f47b..0000000000 --- a/docs/RuntimeAPI/html/search/variables_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_3.js b/docs/RuntimeAPI/html/search/variables_3.js deleted file mode 100644 index 0fba3440bc..0000000000 --- a/docs/RuntimeAPI/html/search/variables_3.js +++ /dev/null @@ -1,20 +0,0 @@ -var searchData= -[ - ['has3dgrid',['has3dGrid',['../structhipDeviceArch__t.html#aa5e22d295cce0d9a34ee6e7e7e378c26',1,'hipDeviceArch_t']]], - ['hasdoubles',['hasDoubles',['../structhipDeviceArch__t.html#a2d624e3d85e615b71d1182f8912893b4',1,'hipDeviceArch_t']]], - ['hasdynamicparallelism',['hasDynamicParallelism',['../structhipDeviceArch__t.html#a9114bfc718bf0648b54ff9a319a36b35',1,'hipDeviceArch_t']]], - ['hasfloatatomicadd',['hasFloatAtomicAdd',['../structhipDeviceArch__t.html#a2321d6ef74aac91c044f3289d25b2d41',1,'hipDeviceArch_t']]], - ['hasfunnelshift',['hasFunnelShift',['../structhipDeviceArch__t.html#aaec4f2d983d4602858fae8e9ddeee3ff',1,'hipDeviceArch_t']]], - ['hasglobalfloatatomicexch',['hasGlobalFloatAtomicExch',['../structhipDeviceArch__t.html#a8f213ae9a4729dff1c636ac5de0e2fa2',1,'hipDeviceArch_t']]], - ['hasglobalint32atomics',['hasGlobalInt32Atomics',['../structhipDeviceArch__t.html#a8d00c3ab98869b602c714fe7abe68e93',1,'hipDeviceArch_t']]], - ['hasglobalint64atomics',['hasGlobalInt64Atomics',['../structhipDeviceArch__t.html#ad5aa54dbab22dbcd8cf98f57a96c6636',1,'hipDeviceArch_t']]], - ['hassharedfloatatomicexch',['hasSharedFloatAtomicExch',['../structhipDeviceArch__t.html#aff005558b4edabd27b27f286ac5b2f2b',1,'hipDeviceArch_t']]], - ['hassharedint32atomics',['hasSharedInt32Atomics',['../structhipDeviceArch__t.html#a1596330b1cb9cc73f142aee11b2ab853',1,'hipDeviceArch_t']]], - ['hassharedint64atomics',['hasSharedInt64Atomics',['../structhipDeviceArch__t.html#a00c2b930fcdcad9ea7b54b449db13966',1,'hipDeviceArch_t']]], - ['hassurfacefuncs',['hasSurfaceFuncs',['../structhipDeviceArch__t.html#a9eb2462148686d4c048b69b6e09f835e',1,'hipDeviceArch_t']]], - ['hassyncthreadsext',['hasSyncThreadsExt',['../structhipDeviceArch__t.html#ade6a3b21ad5f344dcd92c52102c274ba',1,'hipDeviceArch_t']]], - ['hasthreadfencesystem',['hasThreadFenceSystem',['../structhipDeviceArch__t.html#ac2818e3b91cba8beb36741e9867bb887',1,'hipDeviceArch_t']]], - ['haswarpballot',['hasWarpBallot',['../structhipDeviceArch__t.html#af1e934a8a5106995bcc256287585564c',1,'hipDeviceArch_t']]], - ['haswarpshuffle',['hasWarpShuffle',['../structhipDeviceArch__t.html#a3d922e8fc97ca1e8ecc39600b138fa2d',1,'hipDeviceArch_t']]], - ['haswarpvote',['hasWarpVote',['../structhipDeviceArch__t.html#a35bde017352eca1d4e0eceb3bf79f274',1,'hipDeviceArch_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_4.html b/docs/RuntimeAPI/html/search/variables_4.html deleted file mode 100644 index 400e8e9b41..0000000000 --- a/docs/RuntimeAPI/html/search/variables_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_4.js b/docs/RuntimeAPI/html/search/variables_4.js deleted file mode 100644 index f7bbc877f4..0000000000 --- a/docs/RuntimeAPI/html/search/variables_4.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['ipc_5fhandle',['ipc_handle',['../classihipIpcMemHandle__t.html#af2142ab7d9f820acbad7638428509d42',1,'ihipIpcMemHandle_t']]], - ['ismultigpuboard',['isMultiGpuBoard',['../structhipDeviceProp__t.html#a9bb19b2b0cdee8977ed63964532d639d',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_5.html b/docs/RuntimeAPI/html/search/variables_5.html deleted file mode 100644 index 7f1241f94b..0000000000 --- a/docs/RuntimeAPI/html/search/variables_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_5.js b/docs/RuntimeAPI/html/search/variables_5.js deleted file mode 100644 index 41a7c59602..0000000000 --- a/docs/RuntimeAPI/html/search/variables_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['l2cachesize',['l2CacheSize',['../structhipDeviceProp__t.html#a24404decccc16833973c803ced6f3a51',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_6.html b/docs/RuntimeAPI/html/search/variables_6.html deleted file mode 100644 index 7536df8d5a..0000000000 --- a/docs/RuntimeAPI/html/search/variables_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_6.js b/docs/RuntimeAPI/html/search/variables_6.js deleted file mode 100644 index 8fc226ebc6..0000000000 --- a/docs/RuntimeAPI/html/search/variables_6.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['major',['major',['../structhipDeviceProp__t.html#aec9e4173c2e34cc232300c415dbd5e4f',1,'hipDeviceProp_t']]], - ['maxgridsize',['maxGridSize',['../structhipDeviceProp__t.html#ae529c23929f592120081fed31d877a55',1,'hipDeviceProp_t']]], - ['maxsharedmemorypermultiprocessor',['maxSharedMemoryPerMultiProcessor',['../structhipDeviceProp__t.html#aa1a32a7f387f6da845db7b228711fce8',1,'hipDeviceProp_t']]], - ['maxthreadsdim',['maxThreadsDim',['../structhipDeviceProp__t.html#a8ebba6fc12f80c9a9cf9b9193f0da465',1,'hipDeviceProp_t']]], - ['maxthreadsperblock',['maxThreadsPerBlock',['../structhipDeviceProp__t.html#af971cf1ca3ec1f68ad09036c0cc672e0',1,'hipDeviceProp_t']]], - ['maxthreadspermultiprocessor',['maxThreadsPerMultiProcessor',['../structhipDeviceProp__t.html#a23a39f4fd795addb3b125e9c3f6295ea',1,'hipDeviceProp_t']]], - ['memorybuswidth',['memoryBusWidth',['../structhipDeviceProp__t.html#a1d710ce8bd34daf66f892a66a2273132',1,'hipDeviceProp_t']]], - ['memoryclockrate',['memoryClockRate',['../structhipDeviceProp__t.html#a6db0ab8e7e8cc13c84d7bb7f70226d5e',1,'hipDeviceProp_t']]], - ['minor',['minor',['../structhipDeviceProp__t.html#abb51208e2509a7a1d107f0da69108938',1,'hipDeviceProp_t']]], - ['multiprocessorcount',['multiProcessorCount',['../structhipDeviceProp__t.html#add8d9d2ad52aece9fd1dbe25c18d9d57',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_7.html b/docs/RuntimeAPI/html/search/variables_7.html deleted file mode 100644 index 66186a6994..0000000000 --- a/docs/RuntimeAPI/html/search/variables_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_7.js b/docs/RuntimeAPI/html/search/variables_7.js deleted file mode 100644 index 124bf0ddb8..0000000000 --- a/docs/RuntimeAPI/html/search/variables_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['name',['name',['../structhipDeviceProp__t.html#a5b44bf8fa46faefcde989942b1d11a5e',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_8.html b/docs/RuntimeAPI/html/search/variables_8.html deleted file mode 100644 index aa13bf24a5..0000000000 --- a/docs/RuntimeAPI/html/search/variables_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_8.js b/docs/RuntimeAPI/html/search/variables_8.js deleted file mode 100644 index 71b6a5df56..0000000000 --- a/docs/RuntimeAPI/html/search/variables_8.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['pcibusid',['pciBusID',['../structhipDeviceProp__t.html#a1350f64d49b717ed3a06458f7549ccb0',1,'hipDeviceProp_t']]], - ['pcideviceid',['pciDeviceID',['../structhipDeviceProp__t.html#ae6aa845dc2d540f85098ea30be35f4eb',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_9.html b/docs/RuntimeAPI/html/search/variables_9.html deleted file mode 100644 index 78cc249f7d..0000000000 --- a/docs/RuntimeAPI/html/search/variables_9.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_9.js b/docs/RuntimeAPI/html/search/variables_9.js deleted file mode 100644 index 44ba50e0b7..0000000000 --- a/docs/RuntimeAPI/html/search/variables_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['regsperblock',['regsPerBlock',['../structhipDeviceProp__t.html#a73c1c21648a901799ff6bef83c11135b',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_a.html b/docs/RuntimeAPI/html/search/variables_a.html deleted file mode 100644 index 592abaa33c..0000000000 --- a/docs/RuntimeAPI/html/search/variables_a.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_a.js b/docs/RuntimeAPI/html/search/variables_a.js deleted file mode 100644 index a582d60c6a..0000000000 --- a/docs/RuntimeAPI/html/search/variables_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['sharedmemperblock',['sharedMemPerBlock',['../structhipDeviceProp__t.html#a3b9138678a0795c2677eddcfb1c67156',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_b.html b/docs/RuntimeAPI/html/search/variables_b.html deleted file mode 100644 index 78052a1e03..0000000000 --- a/docs/RuntimeAPI/html/search/variables_b.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_b.js b/docs/RuntimeAPI/html/search/variables_b.js deleted file mode 100644 index b356d6e142..0000000000 --- a/docs/RuntimeAPI/html/search/variables_b.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['totalconstmem',['totalConstMem',['../structhipDeviceProp__t.html#a29880232c56120be3455ce00d5379665',1,'hipDeviceProp_t']]], - ['totalglobalmem',['totalGlobalMem',['../structhipDeviceProp__t.html#acedd6a2d23423441e4bf51c4a1b719f9',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_c.html b/docs/RuntimeAPI/html/search/variables_c.html deleted file mode 100644 index b2260e465b..0000000000 --- a/docs/RuntimeAPI/html/search/variables_c.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_c.js b/docs/RuntimeAPI/html/search/variables_c.js deleted file mode 100644 index 46a1400a7b..0000000000 --- a/docs/RuntimeAPI/html/search/variables_c.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['warpsize',['warpSize',['../structhipDeviceProp__t.html#af3357d33c004608bf05bc21a352be81b',1,'hipDeviceProp_t']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_d.html b/docs/RuntimeAPI/html/search/variables_d.html deleted file mode 100644 index f47799968f..0000000000 --- a/docs/RuntimeAPI/html/search/variables_d.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_d.js b/docs/RuntimeAPI/html/search/variables_d.js deleted file mode 100644 index 250c203caf..0000000000 --- a/docs/RuntimeAPI/html/search/variables_d.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['x',['x',['../structdim3.html#ac866c05f83a28dac20a153fc65b3b16c',1,'dim3']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_e.html b/docs/RuntimeAPI/html/search/variables_e.html deleted file mode 100644 index 1165006622..0000000000 --- a/docs/RuntimeAPI/html/search/variables_e.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_e.js b/docs/RuntimeAPI/html/search/variables_e.js deleted file mode 100644 index 133dd9dc6e..0000000000 --- a/docs/RuntimeAPI/html/search/variables_e.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['y',['y',['../structdim3.html#a83e60e072f7e8bdfde6ac05053cbb370',1,'dim3']]] -]; diff --git a/docs/RuntimeAPI/html/search/variables_f.html b/docs/RuntimeAPI/html/search/variables_f.html deleted file mode 100644 index 537dd7c28e..0000000000 --- a/docs/RuntimeAPI/html/search/variables_f.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/docs/RuntimeAPI/html/search/variables_f.js b/docs/RuntimeAPI/html/search/variables_f.js deleted file mode 100644 index e8bf38b99c..0000000000 --- a/docs/RuntimeAPI/html/search/variables_f.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['z',['z',['../structdim3.html#a866e38993ecc4e76fd47311236c16b04',1,'dim3']]] -]; diff --git a/docs/RuntimeAPI/html/structDbName-members.html b/docs/RuntimeAPI/html/structDbName-members.html deleted file mode 100644 index 7ea2987d5f..0000000000 --- a/docs/RuntimeAPI/html/structDbName-members.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
DbName Member List
-
-
- -

This is the complete list of members for DbName, including all inherited members.

- - - -
_color (defined in DbName)DbName
_shortName (defined in DbName)DbName
- - - - diff --git a/docs/RuntimeAPI/html/structDbName.html b/docs/RuntimeAPI/html/structDbName.html deleted file mode 100644 index 5d14f3369c..0000000000 --- a/docs/RuntimeAPI/html/structDbName.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: DbName Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
DbName Struct Reference
-
-
- - - - - - -

-Public Attributes

-const char * _color
 
-const char * _shortName
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structLockedBase-members.html b/docs/RuntimeAPI/html/structLockedBase-members.html deleted file mode 100644 index 6672fa92f6..0000000000 --- a/docs/RuntimeAPI/html/structLockedBase-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
LockedBase< MUTEX_TYPE > Member List
-
-
- -

This is the complete list of members for LockedBase< MUTEX_TYPE >, including all inherited members.

- - - - -
_mutex (defined in LockedBase< MUTEX_TYPE >)LockedBase< MUTEX_TYPE >
lock() (defined in LockedBase< MUTEX_TYPE >)LockedBase< MUTEX_TYPE >inline
unlock() (defined in LockedBase< MUTEX_TYPE >)LockedBase< MUTEX_TYPE >inline
- - - - diff --git a/docs/RuntimeAPI/html/structLockedBase.html b/docs/RuntimeAPI/html/structLockedBase.html deleted file mode 100644 index 3dfbff92a4..0000000000 --- a/docs/RuntimeAPI/html/structLockedBase.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: LockedBase< MUTEX_TYPE > Struct Template Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
LockedBase< MUTEX_TYPE > Struct Template Reference
-
-
-
-Inheritance diagram for LockedBase< MUTEX_TYPE >:
-
-
- - -ihipCtxCriticalBase_t< MUTEX_TYPE > -ihipStreamCriticalBase_t< MUTEX_TYPE > - -
- - - - - - -

-Public Member Functions

-void lock ()
 
-void unlock ()
 
- - - -

-Public Attributes

-MUTEX_TYPE _mutex
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structLockedBase.png b/docs/RuntimeAPI/html/structLockedBase.png deleted file mode 100644 index 41977d7d58..0000000000 Binary files a/docs/RuntimeAPI/html/structLockedBase.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/structProfTrigger-members.html b/docs/RuntimeAPI/html/structProfTrigger-members.html deleted file mode 100644 index 7467446c8d..0000000000 --- a/docs/RuntimeAPI/html/structProfTrigger-members.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
ProfTrigger Member List
-
-
- -

This is the complete list of members for ProfTrigger, including all inherited members.

- - - - - - -
add(uint64_t trigger) (defined in ProfTrigger)ProfTriggerinline
MAX_TRIGGER (defined in ProfTrigger)ProfTriggerstatic
nextTrigger() (defined in ProfTrigger)ProfTriggerinline
print(int tid) (defined in ProfTrigger)ProfTriggerinline
sort() (defined in ProfTrigger)ProfTriggerinline
- - - - diff --git a/docs/RuntimeAPI/html/structProfTrigger.html b/docs/RuntimeAPI/html/structProfTrigger.html deleted file mode 100644 index a62d6dfb48..0000000000 --- a/docs/RuntimeAPI/html/structProfTrigger.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: ProfTrigger Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
ProfTrigger Struct Reference
-
-
- - - - - - - - - - -

-Public Member Functions

-void print (int tid)
 
-uint64_t nextTrigger ()
 
-void add (uint64_t trigger)
 
-void sort ()
 
- - - -

-Static Public Attributes

-static const uint64_t MAX_TRIGGER = std::numeric_limits<uint64_t>::max()
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/struct____half-members.html b/docs/RuntimeAPI/html/struct____half-members.html deleted file mode 100644 index 5eb5166825..0000000000 --- a/docs/RuntimeAPI/html/struct____half-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
__half Member List
-
-
- -

This is the complete list of members for __half, including all inherited members.

- - -
x (defined in __half)__half
- - - - diff --git a/docs/RuntimeAPI/html/struct____half.html b/docs/RuntimeAPI/html/struct____half.html deleted file mode 100644 index 73172bbe87..0000000000 --- a/docs/RuntimeAPI/html/struct____half.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: __half Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
__half Struct Reference
-
-
- - - - -

-Public Attributes

-unsigned x: 16
 
-
The documentation for this struct was generated from the following file:
    -
  • /home/rocm/hip/include/hip/hcc_detail/hip_fp16.h
  • -
-
- - - - diff --git a/docs/RuntimeAPI/html/structchar3-members.html b/docs/RuntimeAPI/html/structchar3-members.html deleted file mode 100644 index 84f58bd6c8..0000000000 --- a/docs/RuntimeAPI/html/structchar3-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
char3 Member List
-
-
- -

This is the complete list of members for char3, including all inherited members.

- - - - -
x (defined in char3)char3
y (defined in char3)char3
z (defined in char3)char3
- - - - diff --git a/docs/RuntimeAPI/html/structchar3.html b/docs/RuntimeAPI/html/structchar3.html deleted file mode 100644 index e6b4a355e6..0000000000 --- a/docs/RuntimeAPI/html/structchar3.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: char3 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
char3 Struct Reference
-
-
- - - - - - - - -

-Public Attributes

-signed char x
 
-signed char y
 
-signed char z
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structchar4-members.html b/docs/RuntimeAPI/html/structchar4-members.html deleted file mode 100644 index 37df9b2b9b..0000000000 --- a/docs/RuntimeAPI/html/structchar4-members.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
char4 Member List
-
-
- -

This is the complete list of members for char4, including all inherited members.

- - - - - - -
val (defined in char4)char4
w (defined in char4)char4
x (defined in char4)char4
y (defined in char4)char4
z (defined in char4)char4
- - - - diff --git a/docs/RuntimeAPI/html/structchar4.html b/docs/RuntimeAPI/html/structchar4.html deleted file mode 100644 index ea4aff9f7a..0000000000 --- a/docs/RuntimeAPI/html/structchar4.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: char4 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
char4 Struct Reference
-
-
- - - - - - - - - - - - - - - -

-Public Attributes

-union {
-   signed char   x
 
-   signed char   y
 
-   signed char   z
 
-   signed char   w
 
-   unsigned int   val
 
}; 
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structdim3-members.html b/docs/RuntimeAPI/html/structdim3-members.html deleted file mode 100644 index 231fa8d0f9..0000000000 --- a/docs/RuntimeAPI/html/structdim3-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
dim3 Member List
-
-
- -

This is the complete list of members for dim3, including all inherited members.

- - - - -
xdim3
ydim3
zdim3
- - - - diff --git a/docs/RuntimeAPI/html/structdim3.html b/docs/RuntimeAPI/html/structdim3.html deleted file mode 100644 index a93484f438..0000000000 --- a/docs/RuntimeAPI/html/structdim3.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: dim3 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
- -
- -

#include <hip_runtime_api.h>

- - - - - - - - - - - -

-Public Attributes

-uint32_t x
 x
 
-uint32_t y
 y
 
-uint32_t z
 z
 
-

Detailed Description

-

Struct for data in 3D

-

The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structdouble1-members.html b/docs/RuntimeAPI/html/structdouble1-members.html deleted file mode 100644 index 39e0794417..0000000000 --- a/docs/RuntimeAPI/html/structdouble1-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
double1 Member List
-
-
- -

This is the complete list of members for double1, including all inherited members.

- - -
x (defined in double1)double1
- - - - diff --git a/docs/RuntimeAPI/html/structdouble1.html b/docs/RuntimeAPI/html/structdouble1.html deleted file mode 100644 index 2c80f23d2d..0000000000 --- a/docs/RuntimeAPI/html/structdouble1.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: double1 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
double1 Struct Reference
-
-
- - - - -

-Public Attributes

-double x
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structdouble3-members.html b/docs/RuntimeAPI/html/structdouble3-members.html deleted file mode 100644 index 5dac28d9cf..0000000000 --- a/docs/RuntimeAPI/html/structdouble3-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
double3 Member List
-
-
- -

This is the complete list of members for double3, including all inherited members.

- - - - -
x (defined in double3)double3
y (defined in double3)double3
z (defined in double3)double3
- - - - diff --git a/docs/RuntimeAPI/html/structdouble3.html b/docs/RuntimeAPI/html/structdouble3.html deleted file mode 100644 index 6ad945ab3b..0000000000 --- a/docs/RuntimeAPI/html/structdouble3.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: double3 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
double3 Struct Reference
-
-
- - - - - - - - -

-Public Attributes

-double x
 
-double y
 
-double z
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structfloat1-members.html b/docs/RuntimeAPI/html/structfloat1-members.html deleted file mode 100644 index ac66596d17..0000000000 --- a/docs/RuntimeAPI/html/structfloat1-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
float1 Member List
-
-
- -

This is the complete list of members for float1, including all inherited members.

- - -
x (defined in float1)float1
- - - - diff --git a/docs/RuntimeAPI/html/structfloat1.html b/docs/RuntimeAPI/html/structfloat1.html deleted file mode 100644 index 33b66ec49f..0000000000 --- a/docs/RuntimeAPI/html/structfloat1.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: float1 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
float1 Struct Reference
-
-
- - - - -

-Public Attributes

-float x
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structfloat3-members.html b/docs/RuntimeAPI/html/structfloat3-members.html deleted file mode 100644 index 20edd625b0..0000000000 --- a/docs/RuntimeAPI/html/structfloat3-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
float3 Member List
-
-
- -

This is the complete list of members for float3, including all inherited members.

- - - - -
x (defined in float3)float3
y (defined in float3)float3
z (defined in float3)float3
- - - - diff --git a/docs/RuntimeAPI/html/structfloat3.html b/docs/RuntimeAPI/html/structfloat3.html deleted file mode 100644 index edcb5b0788..0000000000 --- a/docs/RuntimeAPI/html/structfloat3.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: float3 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
float3 Struct Reference
-
-
- - - - - - - - -

-Public Attributes

-float x
 
-float y
 
-float z
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structhipArray-members.html b/docs/RuntimeAPI/html/structhipArray-members.html deleted file mode 100644 index 395a5a1ada..0000000000 --- a/docs/RuntimeAPI/html/structhipArray-members.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
hipArray Member List
-
-
- -

This is the complete list of members for hipArray, including all inherited members.

- - - - - -
data (defined in hipArray)hipArray
f (defined in hipArray)hipArray
height (defined in hipArray)hipArray
width (defined in hipArray)hipArray
- - - - diff --git a/docs/RuntimeAPI/html/structhipArray.html b/docs/RuntimeAPI/html/structhipArray.html deleted file mode 100644 index feba6e7a2d..0000000000 --- a/docs/RuntimeAPI/html/structhipArray.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: hipArray Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
hipArray Struct Reference
-
-
- - - - - - - - - - -

-Public Attributes

-unsigned int width
 
-unsigned int height
 
-hipChannelFormatKind f
 
-void * data
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structhipChannelFormatDesc-members.html b/docs/RuntimeAPI/html/structhipChannelFormatDesc-members.html deleted file mode 100644 index 276fe8b79b..0000000000 --- a/docs/RuntimeAPI/html/structhipChannelFormatDesc-members.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
hipChannelFormatDesc Member List
-
-
- -

This is the complete list of members for hipChannelFormatDesc, including all inherited members.

- - - - - - -
f (defined in hipChannelFormatDesc)hipChannelFormatDesc
w (defined in hipChannelFormatDesc)hipChannelFormatDesc
x (defined in hipChannelFormatDesc)hipChannelFormatDesc
y (defined in hipChannelFormatDesc)hipChannelFormatDesc
z (defined in hipChannelFormatDesc)hipChannelFormatDesc
- - - - diff --git a/docs/RuntimeAPI/html/structhipChannelFormatDesc.html b/docs/RuntimeAPI/html/structhipChannelFormatDesc.html deleted file mode 100644 index 98bf065336..0000000000 --- a/docs/RuntimeAPI/html/structhipChannelFormatDesc.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: hipChannelFormatDesc Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
hipChannelFormatDesc Struct Reference
-
-
- - - - - - - - - - - - -

-Public Attributes

-int x
 
-int y
 
-int z
 
-int w
 
-hipChannelFormatKind f
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structhipDeviceArch__t-members.html b/docs/RuntimeAPI/html/structhipDeviceArch__t-members.html deleted file mode 100644 index 0810a6ca90..0000000000 --- a/docs/RuntimeAPI/html/structhipDeviceArch__t-members.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
hipDeviceArch_t Member List
-
- - - - - diff --git a/docs/RuntimeAPI/html/structhipDeviceArch__t.html b/docs/RuntimeAPI/html/structhipDeviceArch__t.html deleted file mode 100644 index 7c66d3cbc9..0000000000 --- a/docs/RuntimeAPI/html/structhipDeviceArch__t.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: hipDeviceArch_t Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
hipDeviceArch_t Struct Reference
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

-unsigned hasGlobalInt32Atomics: 1
 32-bit integer atomics for global memory.
 
-unsigned hasGlobalFloatAtomicExch: 1
 32-bit float atomic exch for global memory.
 
-unsigned hasSharedInt32Atomics: 1
 32-bit integer atomics for shared memory.
 
-unsigned hasSharedFloatAtomicExch: 1
 32-bit float atomic exch for shared memory.
 
-unsigned hasFloatAtomicAdd: 1
 32-bit float atomic add in global and shared memory.
 
-unsigned hasGlobalInt64Atomics: 1
 64-bit integer atomics for global memory.
 
-unsigned hasSharedInt64Atomics: 1
 64-bit integer atomics for shared memory.
 
-unsigned hasDoubles: 1
 Double-precision floating point.
 
-unsigned hasWarpVote: 1
 Warp vote instructions (__any, __all).
 
-unsigned hasWarpBallot: 1
 Warp ballot instructions (__ballot).
 
-unsigned hasWarpShuffle: 1
 Warp shuffle operations. (__shfl_*).
 
-unsigned hasFunnelShift: 1
 Funnel two words into one with shift&mask caps.
 
-unsigned hasThreadFenceSystem: 1
 __threadfence_system.
 
-unsigned hasSyncThreadsExt: 1
 __syncthreads_count, syncthreads_and, syncthreads_or.
 
-unsigned hasSurfaceFuncs: 1
 Surface functions.
 
-unsigned has3dGrid: 1
 Grid and group dims are 3D (rather than 2D).
 
-unsigned hasDynamicParallelism: 1
 Dynamic parallelism.
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structhipDeviceProp__t-members.html b/docs/RuntimeAPI/html/structhipDeviceProp__t-members.html deleted file mode 100644 index 1bdc39fa96..0000000000 --- a/docs/RuntimeAPI/html/structhipDeviceProp__t-members.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
hipDeviceProp_t Member List
-
- - - - - diff --git a/docs/RuntimeAPI/html/structhipDeviceProp__t.html b/docs/RuntimeAPI/html/structhipDeviceProp__t.html deleted file mode 100644 index c3ec16cdec..0000000000 --- a/docs/RuntimeAPI/html/structhipDeviceProp__t.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: hipDeviceProp_t Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
hipDeviceProp_t Struct Reference
-
-
- -

#include <hip_runtime_api.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

-char name [256]
 Device name.
 
-size_t totalGlobalMem
 Size of global memory region (in bytes).
 
-size_t sharedMemPerBlock
 Size of shared memory region (in bytes).
 
-int regsPerBlock
 Registers per block.
 
-int warpSize
 Warp size.
 
-int maxThreadsPerBlock
 Max work items per work group or workgroup max size.
 
-int maxThreadsDim [3]
 Max number of threads in each dimension (XYZ) of a block.
 
-int maxGridSize [3]
 Max grid dimensions (XYZ).
 
-int clockRate
 Max clock frequency of the multiProcessors in khz.
 
-int memoryClockRate
 Max global memory clock frequency in khz.
 
-int memoryBusWidth
 Global memory bus width in bits.
 
-size_t totalConstMem
 Size of shared memory region (in bytes).
 
-int major
 Major compute capability. On HCC, this is an approximation and features may differ from CUDA CC. See the arch feature flags for portable ways to query feature caps.
 
-int minor
 Minor compute capability. On HCC, this is an approximation and features may differ from CUDA CC. See the arch feature flags for portable ways to query feature caps.
 
-int multiProcessorCount
 Number of multi-processors (compute units).
 
-int l2CacheSize
 L2 cache size.
 
-int maxThreadsPerMultiProcessor
 Maximum resident threads per multi-processor.
 
-int computeMode
 Compute mode.
 
-int clockInstructionRate
 Frequency in khz of the timer used by the device-side "clock*" instructions. New for HIP.
 
-hipDeviceArch_t arch
 Architectural feature flags. New for HIP.
 
-int concurrentKernels
 Device can possibly execute multiple kernels concurrently.
 
-int pciBusID
 PCI Bus ID.
 
-int pciDeviceID
 PCI Device ID.
 
-size_t maxSharedMemoryPerMultiProcessor
 Maximum Shared Memory Per Multiprocessor.
 
-int isMultiGpuBoard
 1 if device is on a multi-GPU board, 0 if not.
 
-int canMapHostMemory
 Check whether HIP can map host memory.
 
-

Detailed Description

-

hipDeviceProp

-

The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structhipDoubleComplex-members.html b/docs/RuntimeAPI/html/structhipDoubleComplex-members.html deleted file mode 100644 index 8af91a6348..0000000000 --- a/docs/RuntimeAPI/html/structhipDoubleComplex-members.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
hipDoubleComplex Member List
-
-
- -

This is the complete list of members for hipDoubleComplex, including all inherited members.

- - - -
x (defined in hipDoubleComplex)hipDoubleComplex
y (defined in hipDoubleComplex)hipDoubleComplex
- - - - diff --git a/docs/RuntimeAPI/html/structhipDoubleComplex.html b/docs/RuntimeAPI/html/structhipDoubleComplex.html deleted file mode 100644 index 96315b9ef2..0000000000 --- a/docs/RuntimeAPI/html/structhipDoubleComplex.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: hipDoubleComplex Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
hipDoubleComplex Struct Reference
-
-
- - - - - - -

-Public Attributes

-double x
 
-double y
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structhipFloatComplex-members.html b/docs/RuntimeAPI/html/structhipFloatComplex-members.html deleted file mode 100644 index 1cf90de8f3..0000000000 --- a/docs/RuntimeAPI/html/structhipFloatComplex-members.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
hipFloatComplex Member List
-
-
- -

This is the complete list of members for hipFloatComplex, including all inherited members.

- - - -
x (defined in hipFloatComplex)hipFloatComplex
y (defined in hipFloatComplex)hipFloatComplex
- - - - diff --git a/docs/RuntimeAPI/html/structhipFloatComplex.html b/docs/RuntimeAPI/html/structhipFloatComplex.html deleted file mode 100644 index 14bb04fc9f..0000000000 --- a/docs/RuntimeAPI/html/structhipFloatComplex.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: hipFloatComplex Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
hipFloatComplex Struct Reference
-
-
- - - - - - -

-Public Attributes

-float x
 
-float y
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structhipPointerAttribute__t-members.html b/docs/RuntimeAPI/html/structhipPointerAttribute__t-members.html deleted file mode 100644 index b600b4fa3f..0000000000 --- a/docs/RuntimeAPI/html/structhipPointerAttribute__t-members.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
hipPointerAttribute_t Member List
-
-
- -

This is the complete list of members for hipPointerAttribute_t, including all inherited members.

- - - - - - - -
allocationFlags (defined in hipPointerAttribute_t)hipPointerAttribute_t
device (defined in hipPointerAttribute_t)hipPointerAttribute_t
devicePointer (defined in hipPointerAttribute_t)hipPointerAttribute_t
hostPointer (defined in hipPointerAttribute_t)hipPointerAttribute_t
isManaged (defined in hipPointerAttribute_t)hipPointerAttribute_t
memoryType (defined in hipPointerAttribute_t)hipPointerAttribute_t
- - - - diff --git a/docs/RuntimeAPI/html/structhipPointerAttribute__t.html b/docs/RuntimeAPI/html/structhipPointerAttribute__t.html deleted file mode 100644 index 6c6fb0d5b9..0000000000 --- a/docs/RuntimeAPI/html/structhipPointerAttribute__t.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: hipPointerAttribute_t Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
hipPointerAttribute_t Struct Reference
-
-
- -

#include <hip_runtime_api.h>

- - - - - - - - - - - - - - -

-Public Attributes

-enum hipMemoryType memoryType
 
-int device
 
-void * devicePointer
 
-void * hostPointer
 
-int isManaged
 
-unsigned allocationFlags
 
-

Detailed Description

-

Pointer attributes

-

The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structihipEvent__t-members.html b/docs/RuntimeAPI/html/structihipEvent__t-members.html deleted file mode 100644 index 0ed940c02e..0000000000 --- a/docs/RuntimeAPI/html/structihipEvent__t-members.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
ihipEvent_t Member List
-
-
- -

This is the complete list of members for ihipEvent_t, including all inherited members.

- - - - - - -
_flags (defined in ihipEvent_t)ihipEvent_t
_marker (defined in ihipEvent_t)ihipEvent_t
_state (defined in ihipEvent_t)ihipEvent_t
_stream (defined in ihipEvent_t)ihipEvent_t
_timestamp (defined in ihipEvent_t)ihipEvent_t
- - - - diff --git a/docs/RuntimeAPI/html/structihipEvent__t.html b/docs/RuntimeAPI/html/structihipEvent__t.html deleted file mode 100644 index 7092e3dc44..0000000000 --- a/docs/RuntimeAPI/html/structihipEvent__t.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: ihipEvent_t Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
ihipEvent_t Struct Reference
-
-
- - - - - - - - - - - - -

-Public Attributes

-hipEventStatus_t _state
 
-hipStream_t _stream
 
-unsigned _flags
 
-hc::completion_future _marker
 
-uint64_t _timestamp
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structint3-members.html b/docs/RuntimeAPI/html/structint3-members.html deleted file mode 100644 index fc82310b40..0000000000 --- a/docs/RuntimeAPI/html/structint3-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
int3 Member List
-
-
- -

This is the complete list of members for int3, including all inherited members.

- - - - -
x (defined in int3)int3
y (defined in int3)int3
z (defined in int3)int3
- - - - diff --git a/docs/RuntimeAPI/html/structint3.html b/docs/RuntimeAPI/html/structint3.html deleted file mode 100644 index 57b6e81773..0000000000 --- a/docs/RuntimeAPI/html/structint3.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: int3 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
int3 Struct Reference
-
-
- - - - - - - - -

-Public Attributes

-signed int x
 
-signed int y
 
-signed int z
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structlong3-members.html b/docs/RuntimeAPI/html/structlong3-members.html deleted file mode 100644 index 001b1cf117..0000000000 --- a/docs/RuntimeAPI/html/structlong3-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
long3 Member List
-
-
- -

This is the complete list of members for long3, including all inherited members.

- - - - -
x (defined in long3)long3
y (defined in long3)long3
z (defined in long3)long3
- - - - diff --git a/docs/RuntimeAPI/html/structlong3.html b/docs/RuntimeAPI/html/structlong3.html deleted file mode 100644 index 15f9630874..0000000000 --- a/docs/RuntimeAPI/html/structlong3.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: long3 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
long3 Struct Reference
-
-
- - - - - - - - -

-Public Attributes

-long int x
 
-long int y
 
-long int z
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structlonglong3-members.html b/docs/RuntimeAPI/html/structlonglong3-members.html deleted file mode 100644 index d9b512c754..0000000000 --- a/docs/RuntimeAPI/html/structlonglong3-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
longlong3 Member List
-
-
- -

This is the complete list of members for longlong3, including all inherited members.

- - - - -
x (defined in longlong3)longlong3
y (defined in longlong3)longlong3
z (defined in longlong3)longlong3
- - - - diff --git a/docs/RuntimeAPI/html/structlonglong3.html b/docs/RuntimeAPI/html/structlonglong3.html deleted file mode 100644 index 2167c4f811..0000000000 --- a/docs/RuntimeAPI/html/structlonglong3.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: longlong3 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
longlong3 Struct Reference
-
-
- - - - - - - - -

-Public Attributes

-long long int x
 
-long long int y
 
-long long int z
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structshort3-members.html b/docs/RuntimeAPI/html/structshort3-members.html deleted file mode 100644 index e16bf8b5c3..0000000000 --- a/docs/RuntimeAPI/html/structshort3-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
short3 Member List
-
-
- -

This is the complete list of members for short3, including all inherited members.

- - - - -
x (defined in short3)short3
y (defined in short3)short3
z (defined in short3)short3
- - - - diff --git a/docs/RuntimeAPI/html/structshort3.html b/docs/RuntimeAPI/html/structshort3.html deleted file mode 100644 index f5075a1305..0000000000 --- a/docs/RuntimeAPI/html/structshort3.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: short3 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
short3 Struct Reference
-
-
- - - - - - - - -

-Public Attributes

-signed short x
 
-signed short y
 
-signed short z
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structstruct__float-members.html b/docs/RuntimeAPI/html/structstruct__float-members.html deleted file mode 100644 index 5a3aab1708..0000000000 --- a/docs/RuntimeAPI/html/structstruct__float-members.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
struct_float Member List
-
-
- -

This is the complete list of members for struct_float, including all inherited members.

- - - -
f (defined in struct_float)struct_float
u (defined in struct_float)struct_float
- - - - diff --git a/docs/RuntimeAPI/html/structstruct__float.html b/docs/RuntimeAPI/html/structstruct__float.html deleted file mode 100644 index 438a7868d7..0000000000 --- a/docs/RuntimeAPI/html/structstruct__float.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: struct_float Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
struct_float Struct Reference
-
-
- - - - - - - - - -

-Public Attributes

-union {
-   float   f
 
-   unsigned   u
 
}; 
 
-
The documentation for this struct was generated from the following file:
    -
  • /home/rocm/hip/src/hip_fp16.cpp
  • -
-
- - - - diff --git a/docs/RuntimeAPI/html/structtextureReference-members.html b/docs/RuntimeAPI/html/structtextureReference-members.html deleted file mode 100644 index 09b0950f1f..0000000000 --- a/docs/RuntimeAPI/html/structtextureReference-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
textureReference Member List
-
-
- -

This is the complete list of members for textureReference, including all inherited members.

- - - - -
channelDesc (defined in textureReference)textureReference
filterMode (defined in textureReference)textureReference
normalized (defined in textureReference)textureReference
- - - - diff --git a/docs/RuntimeAPI/html/structtextureReference.html b/docs/RuntimeAPI/html/structtextureReference.html deleted file mode 100644 index 23cdba0ce7..0000000000 --- a/docs/RuntimeAPI/html/structtextureReference.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: textureReference Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
textureReference Struct Reference
-
-
- - - - - - - - -

-Public Attributes

-hipTextureFilterMode filterMode
 
-bool normalized
 
-hipChannelFormatDesc channelDesc
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structuchar3-members.html b/docs/RuntimeAPI/html/structuchar3-members.html deleted file mode 100644 index 8a71a7aad5..0000000000 --- a/docs/RuntimeAPI/html/structuchar3-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
uchar3 Member List
-
-
- -

This is the complete list of members for uchar3, including all inherited members.

- - - - -
x (defined in uchar3)uchar3
y (defined in uchar3)uchar3
z (defined in uchar3)uchar3
- - - - diff --git a/docs/RuntimeAPI/html/structuchar3.html b/docs/RuntimeAPI/html/structuchar3.html deleted file mode 100644 index dce48635b2..0000000000 --- a/docs/RuntimeAPI/html/structuchar3.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: uchar3 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
uchar3 Struct Reference
-
-
- - - - - - - - -

-Public Attributes

-unsigned char x
 
-unsigned char y
 
-unsigned char z
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structuchar4-members.html b/docs/RuntimeAPI/html/structuchar4-members.html deleted file mode 100644 index 1dba273012..0000000000 --- a/docs/RuntimeAPI/html/structuchar4-members.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
uchar4 Member List
-
-
- -

This is the complete list of members for uchar4, including all inherited members.

- - - - - - -
val (defined in uchar4)uchar4
w (defined in uchar4)uchar4
x (defined in uchar4)uchar4
y (defined in uchar4)uchar4
z (defined in uchar4)uchar4
- - - - diff --git a/docs/RuntimeAPI/html/structuchar4.html b/docs/RuntimeAPI/html/structuchar4.html deleted file mode 100644 index c4a79303d6..0000000000 --- a/docs/RuntimeAPI/html/structuchar4.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: uchar4 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
uchar4 Struct Reference
-
-
- - - - - - - - - - - - - - - -

-Public Attributes

-union {
-   unsigned char   x
 
-   unsigned char   y
 
-   unsigned char   z
 
-   unsigned char   w
 
-   unsigned int   val
 
}; 
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structuint3-members.html b/docs/RuntimeAPI/html/structuint3-members.html deleted file mode 100644 index 1d2bc9ffd4..0000000000 --- a/docs/RuntimeAPI/html/structuint3-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
uint3 Member List
-
-
- -

This is the complete list of members for uint3, including all inherited members.

- - - - -
x (defined in uint3)uint3
y (defined in uint3)uint3
z (defined in uint3)uint3
- - - - diff --git a/docs/RuntimeAPI/html/structuint3.html b/docs/RuntimeAPI/html/structuint3.html deleted file mode 100644 index efbd9f5194..0000000000 --- a/docs/RuntimeAPI/html/structuint3.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: uint3 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
uint3 Struct Reference
-
-
- - - - - - - - -

-Public Attributes

-unsigned int x
 
-unsigned int y
 
-unsigned int z
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structulong3-members.html b/docs/RuntimeAPI/html/structulong3-members.html deleted file mode 100644 index 59ae827ac7..0000000000 --- a/docs/RuntimeAPI/html/structulong3-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
ulong3 Member List
-
-
- -

This is the complete list of members for ulong3, including all inherited members.

- - - - -
x (defined in ulong3)ulong3
y (defined in ulong3)ulong3
z (defined in ulong3)ulong3
- - - - diff --git a/docs/RuntimeAPI/html/structulong3.html b/docs/RuntimeAPI/html/structulong3.html deleted file mode 100644 index 490a0233a0..0000000000 --- a/docs/RuntimeAPI/html/structulong3.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: ulong3 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
ulong3 Struct Reference
-
-
- - - - - - - - -

-Public Attributes

-unsigned long x
 
-unsigned long y
 
-unsigned long z
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structulonglong3-members.html b/docs/RuntimeAPI/html/structulonglong3-members.html deleted file mode 100644 index 99328e4c6c..0000000000 --- a/docs/RuntimeAPI/html/structulonglong3-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
ulonglong3 Member List
-
-
- -

This is the complete list of members for ulonglong3, including all inherited members.

- - - - -
x (defined in ulonglong3)ulonglong3
y (defined in ulonglong3)ulonglong3
z (defined in ulonglong3)ulonglong3
- - - - diff --git a/docs/RuntimeAPI/html/structulonglong3.html b/docs/RuntimeAPI/html/structulonglong3.html deleted file mode 100644 index 5906b64824..0000000000 --- a/docs/RuntimeAPI/html/structulonglong3.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: ulonglong3 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
ulonglong3 Struct Reference
-
-
- - - - - - - - -

-Public Attributes

-unsigned long long int x
 
-unsigned long long int y
 
-unsigned long long int z
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/structushort3-members.html b/docs/RuntimeAPI/html/structushort3-members.html deleted file mode 100644 index 05559529c4..0000000000 --- a/docs/RuntimeAPI/html/structushort3-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: Member List - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
-
-
ushort3 Member List
-
-
- -

This is the complete list of members for ushort3, including all inherited members.

- - - - -
x (defined in ushort3)ushort3
y (defined in ushort3)ushort3
z (defined in ushort3)ushort3
- - - - diff --git a/docs/RuntimeAPI/html/structushort3.html b/docs/RuntimeAPI/html/structushort3.html deleted file mode 100644 index 2a24ed4382..0000000000 --- a/docs/RuntimeAPI/html/structushort3.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: ushort3 Struct Reference - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- -
-
- -
-
ushort3 Struct Reference
-
-
- - - - - - - - -

-Public Attributes

-unsigned short x
 
-unsigned short y
 
-unsigned short z
 
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/docs/RuntimeAPI/html/sync_off.png b/docs/RuntimeAPI/html/sync_off.png deleted file mode 100644 index 3b443fc628..0000000000 Binary files a/docs/RuntimeAPI/html/sync_off.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/sync_on.png b/docs/RuntimeAPI/html/sync_on.png deleted file mode 100644 index e08320fb64..0000000000 Binary files a/docs/RuntimeAPI/html/sync_on.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/tab_a.png b/docs/RuntimeAPI/html/tab_a.png deleted file mode 100644 index 3b725c41c5..0000000000 Binary files a/docs/RuntimeAPI/html/tab_a.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/tab_b.png b/docs/RuntimeAPI/html/tab_b.png deleted file mode 100644 index e2b4a8638c..0000000000 Binary files a/docs/RuntimeAPI/html/tab_b.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/tab_h.png b/docs/RuntimeAPI/html/tab_h.png deleted file mode 100644 index fd5cb70548..0000000000 Binary files a/docs/RuntimeAPI/html/tab_h.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/tab_s.png b/docs/RuntimeAPI/html/tab_s.png deleted file mode 100644 index ab478c95b6..0000000000 Binary files a/docs/RuntimeAPI/html/tab_s.png and /dev/null differ diff --git a/docs/RuntimeAPI/html/tabs.css b/docs/RuntimeAPI/html/tabs.css deleted file mode 100644 index 9cf578f23a..0000000000 --- a/docs/RuntimeAPI/html/tabs.css +++ /dev/null @@ -1,60 +0,0 @@ -.tabs, .tabs2, .tabs3 { - background-image: url('tab_b.png'); - width: 100%; - z-index: 101; - font-size: 13px; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; -} - -.tabs2 { - font-size: 10px; -} -.tabs3 { - font-size: 9px; -} - -.tablist { - margin: 0; - padding: 0; - display: table; -} - -.tablist li { - float: left; - display: table-cell; - background-image: url('tab_b.png'); - line-height: 36px; - list-style: none; -} - -.tablist a { - display: block; - padding: 0 20px; - font-weight: bold; - background-image:url('tab_s.png'); - background-repeat:no-repeat; - background-position:right; - color: #283A5D; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; - outline: none; -} - -.tabs3 .tablist a { - padding: 0 10px; -} - -.tablist a:hover { - background-image: url('tab_h.png'); - background-repeat:repeat-x; - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); - text-decoration: none; -} - -.tablist li.current a { - background-image: url('tab_a.png'); - background-repeat:repeat-x; - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); -} diff --git a/docs/RuntimeAPI/html/trace__helper_8h_source.html b/docs/RuntimeAPI/html/trace__helper_8h_source.html deleted file mode 100644 index dcd5ea1eb7..0000000000 --- a/docs/RuntimeAPI/html/trace__helper_8h_source.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - -HIP: Heterogenous-computing Interface for Portability: /home/rocm/hip/src/trace_helper.h Source File - - - - - - - - - -
-
- - - - - - -
-
HIP: Heterogenous-computing Interface for Portability -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
trace_helper.h
-
-
-
1 /*
-
2 Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
-
3 
-
4 Permission is hereby granted, free of charge, to any person obtaining a copy
-
5 of this software and associated documentation files (the "Software"), to deal
-
6 in the Software without restriction, including without limitation the rights
-
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
8 copies of the Software, and to permit persons to whom the Software is
-
9 furnished to do so, subject to the following conditions:
-
10 
-
11 The above copyright notice and this permission notice shall be included in
-
12 all copies or substantial portions of the Software.
-
13 
-
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
20 THE SOFTWARE.
-
21 */
-
22 
-
23 //#pragma once
-
24 
-
25 #ifndef TRACE_HELPER_H
-
26 #define TRACE_HELPER_H
-
27 
-
28 #include <iostream>
-
29 #include <iomanip>
-
30 #include <string>
-
31 
-
32 //---
-
33 // Helper functions to convert HIP function arguments into strings.
-
34 // Handles POD data types as well as enumerations (ie hipMemcpyKind).
-
35 // The implementation uses C++11 variadic templates and template specialization.
-
36 // The hipMemcpyKind example below is a good example that shows how to implement conversion for a new HSA type.
-
37 
-
38 
-
39 // Handy macro to convert an enumeration to a stringified version of same:
-
40 #define CASE_STR(x) case x: return #x;
-
41 
-
42 
-
43 // Building block functions:
-
44 template <typename T>
-
45 inline std::string ToHexString(T v)
-
46 {
-
47  std::ostringstream ss;
-
48  ss << "0x" << std::hex << v;
-
49  return ss.str();
-
50 };
-
51 
-
52 
-
53 //---
-
54 // Template overloads for ToString to handle specific types
-
55 
-
56 // This is the default which works for most types:
-
57 template <typename T>
-
58 inline std::string ToString(T v)
-
59 {
-
60  std::ostringstream ss;
-
61  ss << v;
-
62  return ss.str();
-
63 };
-
64 
-
65 
-
66 // hipEvent_t specialization. TODO - maybe add an event ID for debug?
-
67 template <>
-
68 inline std::string ToString(hipEvent_t v)
-
69 {
-
70  std::ostringstream ss;
-
71  ss << v;
-
72  return ss.str();
-
73 };
-
74 
-
75 
-
76 
-
77 // hipStream_t
-
78 template <>
-
79 inline std::string ToString(hipStream_t v)
-
80 {
-
81  std::ostringstream ss;
-
82  if (v == NULL) {
-
83  ss << "stream:<null>";
-
84  } else {
-
85  ss << *v;
-
86  }
-
87 
-
88  return ss.str();
-
89 };
-
90 
-
91 // hipMemcpyKind specialization
-
92 template <>
-
93 inline std::string ToString(hipMemcpyKind v)
-
94 {
-
95  switch(v) {
-
96  CASE_STR(hipMemcpyHostToHost);
-
97  CASE_STR(hipMemcpyHostToDevice);
-
98  CASE_STR(hipMemcpyDeviceToHost);
-
99  CASE_STR(hipMemcpyDeviceToDevice);
-
100  CASE_STR(hipMemcpyDefault);
-
101  default : return ToHexString(v);
-
102  };
-
103 };
-
104 
-
105 
-
106 template <>
-
107 inline std::string ToString(hipError_t v)
-
108 {
-
109  return ihipErrorString(v);
-
110 };
-
111 
-
112 
-
113 // Catch empty arguments case
-
114 inline std::string ToString()
-
115 {
-
116  return ("");
-
117 }
-
118 
-
119 
-
120 //---
-
121 // C++11 variadic template - peels off first argument, converts to string, and calls itself again to peel the next arg.
-
122 // Strings are automatically separated by comma+space.
-
123 template <typename T, typename... Args>
-
124 inline std::string ToString(T first, Args... args)
-
125 {
-
126  return ToString(first) + ", " + ToString(args...) ;
-
127 }
-
128 
-
129 #endif
-
Host-to-Device Copy.
Definition: hip_runtime_api.h:167
-
Device-to-Host Copy.
Definition: hip_runtime_api.h:168
-
hipError_t
Definition: hip_runtime_api.h:152
-
hipMemcpyKind
Definition: hip_runtime_api.h:165
-
Device-to-Device Copy.
Definition: hip_runtime_api.h:169
-
Definition: hip_hcc.h:558
-
Runtime will automatically determine copy-kind based on virtual addresses.
Definition: hip_runtime_api.h:170
-
Definition: hip_hcc.h:463
-
Host-to-Host Copy.
Definition: hip_runtime_api.h:166
-
- - - - diff --git a/docs/markdown/CUDA_Driver_API_functions_supported_by_HIP.md b/docs/markdown/CUDA_Driver_API_functions_supported_by_HIP.md index 3434d29a70..d797b31832 100644 --- a/docs/markdown/CUDA_Driver_API_functions_supported_by_HIP.md +++ b/docs/markdown/CUDA_Driver_API_functions_supported_by_HIP.md @@ -323,89 +323,281 @@ | 500 |*`CUDA_ERROR_NOT_FOUND`* |*`hipErrorNotFound`* | This indicates that a named symbol was not found. Examples of symbols are global/constant variable names, texture names, and surface names. | | 600 |*`CUDA_ERROR_NOT_READY`* |*`hipErrorNotReady`* | This indicates that asynchronous operations issued previously have not completed yet. This result is not actually an error, but must be indicated differently than CUDA_SUCCESS (which indicates completion). Calls that may return this value include cuEventQuery() and cuStreamQuery(). | | 700 |*`CUDA_ERROR_ILLEGAL_ADDRESS`* |*`hipErrorIllegalAddress`* | While executing a kernel, the device encountered a load or store instruction on an invalid memory address. The context cannot be used, so it must be destroyed (and a new one should be created). All existing device memory allocations from this context are invalid and must be reconstructed if the program is to continue using CUDA. | - +| 701 |*`CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES`* |*`hipErrorLaunchOutOfResources`* | This indicates that a launch did not occur because it did not have appropriate resources. This error usually indicates that the user has attempted to pass too many arguments to the device kernel, or the kernel launch specifies too many threads for the kernel's register count. Passing arguments of the wrong size (i.e. a 64-bit pointer when a 32-bit int is expected) is equivalent to passing too many arguments and can also result in this error. | +| 702 |*`CUDA_ERROR_LAUNCH_TIMEOUT`* |*`hipErrorLaunchTimeOut`* | This indicates that the device kernel took too long to execute. This can only occur if timeouts are enabled - see the device attribute CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT for more information. The context cannot be used (and must be destroyed similar to CUDA_ERROR_LAUNCH_FAILED). All existing device memory allocations from this context are invalid and must be reconstructed if the program is to continue using CUDA. | +| 703 |*`CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING`* | | This error indicates a kernel launch that uses an incompatible texturing mode. | +| 704 |*`CUDA_ERROR_PEER_ACCESS_ALREADY_ENABLED`* |*`hipErrorPeerAccessAlreadyEnabled`* | This error indicates that a call to cuCtxEnablePeerAccess() is trying to re-enable peer access to a context which has already had peer access to it enabled. | +| 705 |*`CUDA_ERROR_PEER_ACCESS_NOT_ENABLED`* |*`hipErrorPeerAccessNotEnabled`* | This error indicates that cuCtxDisablePeerAccess() is trying to disable peer access which has not been enabled yet via cuCtxEnablePeerAccess(). | +| 708 |*`CUDA_ERROR_PRIMARY_CONTEXT_ACTIVE`* | | This error indicates that cuCtxDisablePeerAccess() is trying to disable peer access which has not been enabled yet via cuCtxEnablePeerAccess(). | +| 709 |*`CUDA_ERROR_CONTEXT_IS_DESTROYED`* | | This error indicates that the context current to the calling thread has been destroyed using cuCtxDestroy, or is a primary context which has not yet been initialized. | +| 710 |*`CUDA_ERROR_ASSERT`* | | A device-side assert triggered during kernel execution. The context cannot be used anymore, and must be destroyed. All existing device memory allocations from this context are invalid and must be reconstructed if the program is to continue using CUDA. | +| 711 |*`CUDA_ERROR_TOO_MANY_PEERS`* | | This error indicates that the hardware resources required to enable peer access have been exhausted for one or more of the devices passed to cuCtxEnablePeerAccess(). | +| 712 |*`CUDA_ERROR_HOST_MEMORY_ALREADY_REGISTERED`* |*`hipErrorHostMemoryAlreadyRegistered`* | This error indicates that the memory range passed to cuMemHostRegister() has already been registered. | +| 713 |*`CUDA_ERROR_HOST_MEMORY_NOT_REGISTERED`* |*`hipErrorHostMemoryNotRegistered`* | This error indicates that the pointer passed to cuMemHostUnregister() does not correspond to any currently registered memory region. | +| 714 |*`CUDA_ERROR_HARDWARE_STACK_ERROR`* | | While executing a kernel, the device encountered a stack error. This can be due to stack corruption or exceeding the stack size limit. The context cannot be used, so it must be destroyed (and a new one should be created). All existing device memory allocations from this context are invalid and must be reconstructed if the program is to continue using CUDA. | +| 715 |*`CUDA_ERROR_ILLEGAL_INSTRUCTION`* | | While executing a kernel, the device encountered an illegal instruction. The context cannot be used, so it must be destroyed (and a new one should be created). All existing device memory allocations from this context are invalid and must be reconstructed if the program is to continue using CUDA. | +| 716 |*`CUDA_ERROR_MISALIGNED_ADDRESS`* | | While executing a kernel, the device encountered a load or store instruction on a memory address which is not aligned. The context cannot be used, so it must be destroyed (and a new one should be created). All existing device memory allocations from this context are invalid and must be reconstructed if the program is to continue using CUDA. | +| 717 |*`CUDA_ERROR_INVALID_ADDRESS_SPACE`* | | While executing a kernel, the device encountered an instruction which can only operate on memory locations in certain address spaces (global, shared, or local), but was supplied a memory address not belonging to an allowed address space. The context cannot be used, so it must be destroyed (and a new one should be created). All existing device memory allocations from this context are invalid and must be reconstructed if the program is to continue using CUDA. | +| 718 |*`CUDA_ERROR_INVALID_PC`* | | While executing a kernel, the device program counter wrapped its address space. The context cannot be used, so it must be destroyed (and a new one should be created). All existing device memory allocations from this context are invalid and must be reconstructed if the program is to continue using CUDA. | +| 719 |*`CUDA_ERROR_LAUNCH_FAILED`* | | An exception occurred on the device while executing a kernel. Common causes include dereferencing an invalid device pointer and accessing out of bounds shared memory. The context cannot be used, so it must be destroyed (and a new one should be created). All existing device memory allocations from this context are invalid and must be reconstructed if the program is to continue using CUDA. | +| 800 |*`CUDA_ERROR_NOT_PERMITTED`* | | This error indicates that the attempted operation is not permitted. | +| 801 |*`CUDA_ERROR_NOT_SUPPORTED`* | | This error indicates that the attempted operation is not supported on the current system or device. | +| 999 |*`CUDA_ERROR_UNKNOWN`* | | This indicates that an unknown internal error has occurred. | +| enum |***`CUstream_flags`*** |***`hipStreamFlags`*** | Stream creation flags | +| 0x0 |*`CU_STREAM_DEFAULT`* |*`hipStreamDefault`* | Default stream flag | +| 0x1 |*`CU_STREAM_NON_BLOCKING`* |*`hipStreamNonBlocking`* | Stream does not synchronize with stream 0 (the NULL stream) | +| typedef | `CUarray` | `hipArray *` | CUDA array | +| struct | `CUarray_st` | `hipArray` | CUDA array | +| typedef | `CUcontext` | `hipCtx_t` | CUDA context | +| typedef | `CUdevice` | `hipDevice_t` | CUDA device | +| typedef | `CUdeviceptr` | `hipDeviceptr_t` | CUDA device pointer CUdeviceptr is defined as an unsigned integer type whose size matches the size of a pointer on the target platform. | +| typedef | `CUevent` | `hipEvent_t` | CUDA event | +| typedef | `CUfunction` | `hipFunction_t` | CUDA function | +| typedef | `CUgraphicsResource` | | CUDA graphics interop resource | +| typedef | `CUmipmappedArray` | | CUDA mipmapped array | +| typedef | `CUmodule` | `hipModule_t` | CUDA module | +| typedef | `CUstream` | `hipStream_t` | CUDA module | +| typedef | `CUstreamCallback` | `hipStreamCallback_t` | CUDA stream callback | +| typedef | `CUsurfObject` | | An opaque value that represents a CUDA surface object | +| typedef | `CUsurfref` | | CUDA surface reference | +| typedef | `CUtexObject` | | An opaque value that represents a CUDA texture object | +| typedef | `CUtexref` | | CUDA texture reference | +| define |`CU_IPC_HANDLE_SIZE` | | CUDA IPC handle size. | +| define |`CU_LAUNCH_PARAM_BUFFER_POINTER` | `HIP_LAUNCH_PARAM_BUFFER_POINTER` | Indicator that the next value in the extra parameter to cuLaunchKernel will be a pointer to a buffer containing all kernel parameters used for launching kernel f. This buffer needs to honor all alignment/padding requirements of the individual parameters. If CU_LAUNCH_PARAM_BUFFER_SIZE is not also specified in the extra array, then CU_LAUNCH_PARAM_BUFFER_POINTER will have no effect. | +| define |`CU_LAUNCH_PARAM_BUFFER_SIZE` | `HIP_LAUNCH_PARAM_BUFFER_SIZE` | Indicator that the next value in the extra parameter to cuLaunchKernel will be a pointer to a size_t which contains the size of the buffer specified with CU_LAUNCH_PARAM_BUFFER_POINTER. It is required that CU_LAUNCH_PARAM_BUFFER_POINTER also be specified in the extra array if the value associated with CU_LAUNCH_PARAM_BUFFER_SIZE is not zero. | +| define |`CU_LAUNCH_PARAM_END` | `HIP_LAUNCH_PARAM_END` | End of array terminator for the extra parameter to cuLaunchKernel. | +| define |`CU_MEMHOSTALLOC_DEVICEMAP` | | If set, host memory is mapped into CUDA address space and cuMemHostGetDevicePointer() may be called on the host pointer. Flag for cuMemHostAlloc(). | +| define |`CU_MEMHOSTALLOC_PORTABLE` | | If set, host memory is portable between CUDA contexts. Flag for cuMemHostAlloc(). | +| define |`CU_MEMHOSTALLOC_WRITECOMBINED` | | If set, host memory is allocated as write-combined - fast to write, faster to DMA, slow to read except via SSE4 streaming load instruction (MOVNTDQA). Flag for cuMemHostAlloc(). | +| define |`CU_MEMHOSTREGISTER_DEVICEMAP` | | If set, host memory is mapped into CUDA address space and cuMemHostGetDevicePointer() may be called on the host pointer. Flag for cuMemHostRegister(). | +| define |`CU_MEMHOSTREGISTER_IOMEMORY` | | If set, the passed memory pointer is treated as pointing to some memory-mapped I/O space, e.g. belonging to a third-party PCIe device. On Windows the flag is a no-op. On Linux that memory is marked as non cache-coherent for the GPU and is expected to be physically contiguous. It may return CUDA_ERROR_NOT_PERMITTED if run as an unprivileged user, CUDA_ERROR_NOT_SUPPORTED on older Linux kernel versions. On all other platforms, it is not supported and CUDA_ERROR_NOT_SUPPORTED is returned. Flag for cuMemHostRegister(). | +| define |`CU_MEMHOSTREGISTER_PORTABLE` | | If set, host memory is portable between CUDA contexts. Flag for cuMemHostRegister(). | +| define |`CU_PARAM_TR_DEFAULT` | | For texture references loaded into the module, use default texunit from texture reference. | +| define |`CU_STREAM_LEGACY` | | Legacy stream handle. Stream handle that can be passed as a CUstream to use an implicit stream with legacy synchronization behavior. See details of the synchronization behavior. | +| define |`CU_STREAM_PER_THREAD` | | Per-thread stream handle. Stream handle that can be passed as a CUstream to use an implicit stream with perthread synchronization behavior. See details of the synchronization behavior. | +| define |`CU_TRSA_OVERRIDE_FORMAT` | | Override the texref format with a format inferred from the array. Flag for cuTexRefSetArray(). | +| define |`CU_TRSF_NORMALIZED_COORDINATES` | | Use normalized texture coordinates in the range [0,1) instead of [0,dim). Flag for cuTexRefSetFlags(). | +| define |`CU_TRSF_SRGB` | | Perform sRGB->linear conversion during texture read. Flag for cuTexRefSetFlags(). | +| define |`CUDA_ARRAY3D_2DARRAY` | | Deprecated, use CUDA_ARRAY3D_LAYERED. | +| define |`CUDA_ARRAY3D_CUBEMAP` | | If set, the CUDA array is a collection of six 2D arrays, representing faces of a cube. The width of such a CUDA array must be equal to its height, and Depth must be six. If CUDA_ARRAY3D_LAYERED flag is also set, then the CUDA array is a collection of cubemaps and Depth must be a multiple of six. | +| define |`CUDA_ARRAY3D_DEPTH_TEXTURE` | | This flag if set indicates that the CUDA array is a DEPTH_TEXTURE. | +| define |`CUDA_ARRAY3D_LAYERED` | | If set, the CUDA array is a collection of layers, where each layer is either a 1D or a 2D array and the Depth member of CUDA_ARRAY3D_DESCRIPTOR specifies the number of layers, not the depth of a 3D array. | +| define |`CUDA_ARRAY3D_SURFACE_LDST` | | This flag must be set in order to bind a surface reference to the CUDA array. | +| define |`CUDA_ARRAY3D_TEXTURE_GATHER` | | This flag must be set in order to perform texture gather operations on a CUDA array. | +| define |`CUDA_VERSION` | | CUDA API version number. | ## **2. Error Handling** | **CUDA** | **HIP** | **CUDA description** | |-----------------------------------------------------------|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------| - +| `cuGetErrorName` | | Gets the string representation of an error code enum name. | +| `cuGetErrorString` | | Gets the string description of an error code. | ## **3. Initialization** | **CUDA** | **HIP** | **CUDA description** | |-----------------------------------------------------------|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------| - +| `cuInit` | `hipInit` | Initialize the CUDA driver API. | ## **4. Version Management** | **CUDA** | **HIP** | **CUDA description** | |-----------------------------------------------------------|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------| - +| `cuDriverGetVersion` | `hipDriverGetVersion` | Returns the CUDA driver version. | ## **5. Device Management** | **CUDA** | **HIP** | **CUDA description** | |-----------------------------------------------------------|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------| +| `cuDriverGetVersion` | `hipGetDevice` | Returns a handle to a compute device. | +| `cuDeviceGetAttribute` | `hipDeviceGetAttribute` | Returns information about the device. | +| `cuDeviceGetCount` | `hipGetDeviceCount` | Returns the number of compute-capable devices. | +| `cuDeviceGetName` | `hipDeviceGetName` | Returns an identifer string for the device. | +| `cuDeviceTotalMem` | `hipDeviceTotalMem` | Returns the total amount of memory on the device. | ## **6. Device Management [DEPRECATED]** | **CUDA** | **HIP** | **CUDA description** | |-----------------------------------------------------------|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------| - +| `cuDeviceComputeCapability` | `hipDeviceComputeCapability` | Returns the compute capability of the device. | +| `cuDeviceGetProperties` | `hipGetDeviceProperties` | Returns properties for a selected device. | ## **7. Primary Context Management** | **CUDA** | **HIP** | **CUDA description** | |-----------------------------------------------------------|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------| - +| `cuDevicePrimaryCtxGetState` | `hipDevicePrimaryCtxGetState` | Get the state of the primary context. | +| `cuDevicePrimaryCtxRelease` | `hipDevicePrimaryCtxRelease` | Release the primary context on the GPU. | +| `cuDevicePrimaryCtxReset` | `hipDevicePrimaryCtxReset` | Destroy all allocations and reset all state on the primary context. | +| `cuDevicePrimaryCtxRetain` | `hipDevicePrimaryCtxRetain` | Retain the primary context on the GPU. | +| `cuDevicePrimaryCtxSetFlags` | `hipDevicePrimaryCtxSetFlags` | Set flags for the primary context. | ## **8. Context Management** | **CUDA** | **HIP** | **CUDA description** | |-----------------------------------------------------------|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------| - +| `cuCtxCreate` | `hipCtxCreate` | Create a CUDA context. | +| `cuCtxDestroy` | `hipCtxDestroy` | Destroy a CUDA context. | +| `cuCtxGetApiVersion` | `hipCtxGetApiVersion` | Gets the context's API version. | +| `cuCtxGetCacheConfig` | `hipCtxGetCacheConfig` | Returns the preferred cache configuration for the current context. | +| `cuCtxGetCurrent` | `hipCtxGetCurrent` | Returns the CUDA context bound to the calling CPU thread. | +| `cuCtxGetDevice` | `hipCtxGetDevice` | Returns the device ID for the current context. | +| `cuCtxGetFlags` | `hipCtxGetFlags` | Returns the flags for the current context. | +| `cuCtxGetLimit` | | Returns resource limits. | +| `cuCtxGetSharedMemConfig` | `hipCtxGetSharedMemConfig` | Returns the current shared memory configuration for the current context. | +| `cuCtxGetStreamPriorityRange` | | Returns numerical values that correspond to the least and greatest stream priorities. | +| `cuCtxPopCurrent` | `hipCtxPopCurrent` | Pops the current CUDA context from the current CPU thread. | +| `cuCtxPushCurrent` | `hipCtxPushCurrent` | Pushes a context on the current CPU thread. | +| `cuCtxSetCacheConfig` | `hipCtxSetCacheConfig` | Sets the preferred cache configuration for the current context. | +| `cuCtxSetCurrent` | `hipCtxSetCurrent` | Binds the specified CUDA context to the calling CPU thread. | +| `cuCtxSetLimit` | | Set resource limits. | +| `cuCtxSetSharedMemConfig` | `hipCtxSetSharedMemConfig` | Sets the shared memory configuration for the current context. | +| `cuCtxSynchronize` | `hipCtxSynchronize` | Block for a context's tasks to complete. | ## **9. Context Management [DEPRECATED]** | **CUDA** | **HIP** | **CUDA description** | |-----------------------------------------------------------|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------| - +| `cuCtxAttach` | | Increment a context's usage-count. | +| `cuCtxDetach` | | Decrement a context's usage-count. | ## **10. Module Management** | **CUDA** | **HIP** | **CUDA description** | |-----------------------------------------------------------|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------| - +| `cuLinkAddData` | | Add an input to a pending linker invocation. | +| `cuLinkAddFile` | | Add a file input to a pending linker invocation. | +| `cuLinkComplete` | | Complete a pending linker invocation. | +| `cuLinkCreate` | | Creates a pending JIT linker invocation. | +| `cuLinkDestroy` | | Destroys state for a JIT linker invocation. | +| `cuModuleGetFunction` | `hipModuleGetFunction` | Returns a function handle. | +| `cuModuleGetGlobal` | `hipModuleGetGlobal` | Returns a global pointer from a module. | +| `cuModuleGetSurfRef` | | Returns a handle to a surface reference. | +| `cuModuleGetTexRef` | | Returns a handle to a texture reference. | +| `cuModuleLoad` | `hipModuleLoad` | Loads a compute module. | +| `cuModuleLoadData` | `hipModuleLoadData` | Load a module's data. | +| `cuModuleLoadDataEx` | `hipModuleLoadDataEx` | Load a module's data with options. | +| `cuModuleLoadFatBinary` | | Load a module's data. | +| `cuModuleUnload` | `hipModuleUnload` | Unloads a module. | ## **11. Memory Management** | **CUDA** | **HIP** | **CUDA description** | |-----------------------------------------------------------|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------| - +| `cuArray3DCreate` | | Creates a 3D CUDA array. | +| `cuArray3DGetDescriptor` | | Get a 3D CUDA array descriptor. | +| `cuArrayCreate` | | Creates a 1D or 2D CUDA array. | +| `cuArrayDestroy` | | Destroys a CUDA array. | +| `cuArrayGetDescriptor` | | Get a 1D or 2D CUDA array descriptor. | +| `cuDeviceGetByPCIBusId` | `hipDeviceGetByPCIBusId` | Returns a handle to a compute device. | +| `cuDeviceGetPCIBusId` | `hipDeviceGetPCIBusId` | Returns a PCI Bus Id string for the device. | +| `cuIpcCloseMemHandle` | | Close memory mapped with cuIpcOpenMemHandle. | +| `cuIpcGetEventHandle` | | Gets an interprocess handle for a previously allocated event. | +| `cuIpcGetMemHandle` | | Gets an interprocess memory handle for an existing device memory allocation. | +| `cuIpcOpenEventHandle` | | Opens an interprocess event handle for use in the current process. | +| `cuIpcOpenMemHandle` | | Opens an interprocess memory handle exported from another process and returns a device pointer usable in the local process. | +| `cuMemAlloc` | `hipMalloc` | Allocates device memory. | +| `cuMemAllocHost` | | Allocates page-locked host memory. | +| `cuMemAllocManaged` | | Allocates memory that will be automatically managed by the Unified Memory system. | +| `cuMemAllocPitch` | | Allocates pitched device memory. | +| `cuMemcpy` | | Copies memory. | +| `cuMemcpy2D` | | Copies memory for 2D arrays. | +| `cuMemcpy2DAsync` | | Copies memory for 2D arrays. | +| `cuMemcpy2DUnaligned` | | Copies memory for 2D arrays. | +| `cuMemcpy3D` | | Copies memory for 3D arrays. | +| `cuMemcpy3DAsync` | | Copies memory for 3D arrays. | +| `cuMemcpy3DPeer` | | Copies memory between contexts. | +| `cuMemcpy3DPeerAsync` | | Copies memory between contexts asynchronously. | +| `cuMemcpyAsync` | | Copies memory asynchronously. | +| `cuMemcpyAtoA` | | Copies memory from Array to Array. | +| `cuMemcpyAtoD` | | Copies memory from Array to Device. | +| `cuMemcpyAtoH` | | Copies memory from Array to Host. | +| `cuMemcpyAtoHAsync` | | Copies memory from Array to Host. | +| `cuMemcpyDtoA` | | Copies memory from Device to Array. | +| `cuMemcpyDtoD` | `hipMemcpyDtoD` | Copies memory from Device to Device. | +| `cuMemcpyDtoDAsync` | `hipMemcpyDtoDAsync` | Copies memory from Device to Device. | +| `cuMemcpyDtoH` | `hipMemcpyDtoH` | Copies memory from Device to Host. | +| `cuMemcpyDtoHAsync` | `hipMemcpyDtoHAsync` | Copies memory from Device to Host. | +| `cuMemcpyHtoA` | | Copies memory from Host to Array. | +| `cuMemcpyHtoAAsync` | | Copies memory from Host to Array. | +| `cuMemcpyHtoD` | `hipMemcpyHtoD` | Copies memory from Host to Device. | +| `cuMemcpyHtoDAsync` | `hipMemcpyHtoDAsync` | Copies memory from Host to Device. | +| `cuMemcpyPeer` | | Copies device memory between two contexts. | +| `cuMemcpyPeerAsync` | | Copies device memory between two contexts asynchronously. | +| `cuMemFree` | `hipFree` | Frees device memory. | +| `cuMemFreeHost` | `hipFreeHost` | Frees page-locked host memory. | +| `cuMemGetAddressRange` | | Get information on memory allocations. | +| `cuMemGetInfo` | `hipMemGetInfo` | Gets free and total memory. | +| `cuMemHostAlloc` | `hipHostMalloc` | Allocates page-locked host memory. | +| `cuMemHostGetDevicePointer` | | Passes back device pointer of mapped pinned memory. | +| `cuMemHostGetFlags` | | Passes back flags that were used for a pinned allocation. | +| `cuMemHostRegister` | `hipHostRegister` | Registers an existing host memory range for use by CUDA. | +| `cuMemHostUnregister` | `hipHostUnregister` | Unregisters a memory range that was registered with cuMemHostRegister. | +| `cuMemsetD16` | | Initializes device memory. | +| `cuMemsetD16Async` | | Sets device memory. | +| `cuMemsetD2D16` | | Initializes device memory. | +| `cuMemsetD2D16Async` | | Sets device memory. | +| `cuMemsetD2D32` | | Initializes device memory. | +| `cuMemsetD2D32Async` | | Sets device memory. | +| `cuMemsetD2D8` | | Initializes device memory. | +| `cuMemsetD2D8Async` | | Sets device memory. | +| `cuMemsetD32` | `hipMemset` | Initializes device memory. | +| `cuMemsetD32Async` | `hipMemsetAsync` | Sets device memory. | +| `cuMemsetD2D8` | | Initializes device memory. | +| `cuMemsetD2D8Async` | | Sets device memory. | +| `cuMipmappedArrayCreate` | | Creates a CUDA mipmapped array. | +| `cuMipmappedArrayDestroy` | | Destroys a CUDA mipmapped array. | +| `cuMipmappedArrayGetLevel` | | Gets a mipmap level of a CUDA mipmapped array. | ## **12. Unified Addressing** | **CUDA** | **HIP** | **CUDA description** | |-----------------------------------------------------------|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------| - +| `cuMemAdvise` | | Advise about the usage of a given memory range. | +| `cuMemPrefetchAsync` | | Prefetches memory to the specified destination device. | +| `cuMemRangeGetAttribute` | | Query an attribute of a given memory range. | +| `cuMemRangeGetAttributes` | | Query attributes of a given memory range. | +| `cuPointerGetAttribute` | | Returns information about a pointer. | +| `cuPointerGetAttributes` | | Returns information about a pointer. | +| `cuPointerSetAttribute` | | Set attributes on a previously allocated memory region. | ## **13. Stream Management** | **CUDA** | **HIP** | **CUDA description** | |-----------------------------------------------------------|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------| - +| `cuStreamAddCallback` | | Add a callback to a compute stream. | +| `cuStreamAttachMemAsync` | | Attach memory to a stream asynchronously. | +| `cuStreamCreate` | | Create a stream. | +| `cuStreamCreateWithPriority` | | Create a stream with the given priority. | +| `cuStreamDestroy` | `hipStreamDestroy` | Destroys a stream. | +| `cuStreamGetFlags` | `hipStreamGetFlags` | Query the flags of a given stream. | +| `cuStreamGetPriority` | `hipStreamGetPriority` | Query the priority of a given stream. | +| `cuStreamQuery` | `hipStreamQuery` | Determine status of a compute stream. | +| `cuStreamSynchronize` | `hipStreamSynchronize` | Wait until a stream's tasks are completed. | +| `cuStreamWaitEvent` | `hipStreamWaitEvent` | Make a compute stream wait on an event. | +| `cuStreamBatchMemOp` | | Batch operations to synchronize the stream via memory operations. | +| `cuStreamWaitValue32` | | Wait on a memory location. | +| `cuStreamWriteValue32` | | Write a value to memory. | ## **14. Event Management** | **CUDA** | **HIP** | **CUDA description** | |-----------------------------------------------------------|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------| - +| `cuEventCreate` | `hipEventCreate` | Creates an event. | +| `cuEventDestroy` | `hipEventDestroy` | Destroys an event. | +| `cuEventElapsedTime` | `hipEventElapsedTime` | Computes the elapsed time between two events. | +| `cuEventQuery` | `hipEventQuery` | Queries an event's status. | +| `cuEventRecord` | `hipEventRecord` | Records an event. | +| `cuEventSynchronize` | `hipEventSynchronize` | Waits for an event to complete. | ## **15. Execution Control** | **CUDA** | **HIP** | **CUDA description** | |-----------------------------------------------------------|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------| +| `cuFuncGetAttribute` | | Returns information about a function. | +| `cuFuncSetCacheConfig` | `hipFuncSetCacheConfig` | Sets the preferred cache configuration for a device function. | +| `cuFuncSetSharedMemConfig` | | Sets the shared memory configuration for a device function. | +| `cuLaunchKernel` | `hipModuleLaunchKernel` | Launches a CUDA function. | ## **16. Execution Control [DEPRECATED]** diff --git a/docs/markdown/hip_bugs.md b/docs/markdown/hip_bugs.md index abb31d80e8..78f0e53467 100644 --- a/docs/markdown/hip_bugs.md +++ b/docs/markdown/hip_bugs.md @@ -1,7 +1,9 @@ -# HIP Bugs +# HIP Bugs + - [Errors related to undefined reference to `__hcLaunchKernel__***__grid_launch_parm**`](#errors-related-to-undefined-reference-to-__hclaunchkernel____grid_launch_parm) +- [Can't find kernels inside dynamic linked library](#cant-find-kernels-inside-dynamic-linked-library) - [What is the current limitation of HIP Generic Grid Launch method?](#what-is-the-current-limitation-of-hip-generic-grid-launch-method) - [Errors related to `no matching constructor`](#errors-related-to-no-matching-constructor) - [HIP is more restrictive in enforcing restrictions](#hip-is-more-restrictive-in-enforcing-restrictions) @@ -45,6 +47,8 @@ To correct, add the following flag to hcc or hipcc: $ hipcc -Wl,-Bsymbolic ... ``` +Ensure there is no space in the "Wl,-Bsymbolic" option. + ### What is the current limitation of HIP Generic Grid Launch method? 1. __global__ functions cannot be marked as static or put in an unnamed namespace i.e. they cannot be given internal linkage (this would clash with __attribute__((weak))); diff --git a/docs/markdown/hip_debugging.md b/docs/markdown/hip_debugging.md new file mode 100644 index 0000000000..e7e058d17a --- /dev/null +++ b/docs/markdown/hip_debugging.md @@ -0,0 +1,168 @@ +Table of Contents +================= + + * [Profiling HIP Code](#profiling-hip-code" aria-hidden="true">" in the printed output. +This example shows a sample GDB session where we print the memory allocated by this process and mark a specified address by using the gdb "call" function.. +The gdb syntax also supports using the variable name (in this case 'dst'): +``` +(gdb) p dst +$33 = (void *) 0x5ec7e9000 +(gdb) call hc::am_memtracker_print(dst) +TargetAddress:0x5ec7e9000 + 0x504cfc000-0x504cfc00f:: allocSeqNum:1 hostPointer:0x504cfc000 devicePointer:0x504cfc000 sizeBytes:16 isInDeviceMem:0 isAmManaged:1 appId:0 appAllocFlags:0 appPtr:(nil) +... +-->0x5ec7e9000-0x5f7e28fff:: allocSeqNum:488 hostPointer:(nil) devicePointer:0x5ec7e9000 sizeBytes:191102976 isInDeviceMem:1 isAmManaged:1 appId:0 appAllocFlags:0 appPtr:(nil) + +``` + +To debug an explicit address, cast the address to (void*) : +``` +(gdb) call hc::am_memtracker_print((void*)0x508c7f000) +``` +- Debugging GPUVM fault. +For example: +``` +Memory access fault by GPU node-1 on address 0x5924000. Reason: Page not present or supervisor privilege. + +Program received signal SIGABRT, Aborted. +[Switching to Thread 0x7fffdffb5700 (LWP 14893)] +0x00007ffff2057c37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 +56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory. +(gdb) bt +#0 0x00007ffff2057c37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 +#1 0x00007ffff205b028 in __GI_abort () at abort.c:89 +#2 0x00007ffff6f960eb in ?? () from /opt/rocm/hsa/lib/libhsa-runtime64.so.1 +#3 0x00007ffff6f99ea5 in ?? () from /opt/rocm/hsa/lib/libhsa-runtime64.so.1 +#4 0x00007ffff6f78107 in ?? () from /opt/rocm/hsa/lib/libhsa-runtime64.so.1 +#5 0x00007ffff744f184 in start_thread (arg=0x7fffdffb5700) at pthread_create.c:312 +#6 0x00007ffff211b37d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111 +(gdb) info threads + Id Target Id Frame + 4 Thread 0x7fffdd521700 (LWP 14895) "caffe" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185 + 3 Thread 0x7fffddd22700 (LWP 14894) "caffe" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185 +* 2 Thread 0x7fffdffb5700 (LWP 14893) "caffe" 0x00007ffff2057c37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 + 1 Thread 0x7ffff7fa6ac0 (LWP 14892) "caffe" 0x00007ffff6f934d5 in ?? () from /opt/rocm/hsa/lib/libhsa-runtime64.so.1 +(gdb) thread 1 +[Switching to thread 1 (Thread 0x7ffff7fa6ac0 (LWP 14892))] +#0 0x00007ffff6f934d5 in ?? () from /opt/rocm/hsa/lib/libhsa-runtime64.so.1 +(gdb) bt +#0 0x00007ffff6f934d5 in ?? () from /opt/rocm/hsa/lib/libhsa-runtime64.so.1 +#1 0x00007ffff6f929ba in ?? () from /opt/rocm/hsa/lib/libhsa-runtime64.so.1 +#2 0x00007fffe080beca in HSADispatch::waitComplete() () from /opt/rocm/hcc/lib/libmcwamp_hsa.so +#3 0x00007fffe080415f in HSADispatch::dispatchKernelAsync(Kalmar::HSAQueue*, void const*, int, bool) () from /opt/rocm/hcc/lib/libmcwamp_hsa.so +#4 0x00007fffe080238e in Kalmar::HSAQueue::dispatch_hsa_kernel(hsa_kernel_dispatch_packet_s const*, void const*, unsigned long, hc::completion_future*) () from /opt/rocm/hcc/lib/libmcwamp_hsa.so +#5 0x00007ffff7bb7559 in hipModuleLaunchKernel () from /opt/rocm/hip/lib/libhip_hcc.so +#6 0x00007ffff2e6cd2c in mlopen::HIPOCKernel::run (this=0x7fffffffb5a8, args=0x7fffffffb2a8, size=80) at /root/MIOpen/src/hipoc/hipoc_kernel.cpp:15 +... +``` + +### General Debugging Tips +- The fault will be caught by the runtime but was actually generated by an asynchronous command running on the GPU. So, the GDB backtrace will show a path in the runtime, ie inside "GI_Raise" as shown in the example above. +- To determine the true location of the fault, force the kernels to execute synchronously by seeing the environment variables HCC_SERIALIZE_KERNEL=3 HCC_SERIALIZE_COPY=3. This will force HCC to wait for the kernel to finish executing before retuning. If the fault occurs during the execution of a kernel, you can see the code which launched the kernel inside the backtrace. A bit of guesswork is required to determine which thread is actually causing the issue - typically it will the thread which is waiting inside the libhsa-runtime64.so. +- VM faults inside kernels can be caused byi: + - incorrect code (ie a for loop which extends past array boundaries), i + - memory issues - kernel arguments which are invalid (null pointers, unregistered host pointers, bad pointers). + - synchronization issues + - compiler issues (incorrect code generation from the compiler) + - runtime issues + +-- General debug tips: +- 'gdb --args' can be used to conviently pass the executable and arguments to gdb. +- From inside GDB, you can set environment variables "set env". Note the command does not use an '=' sign: +``` +(gdb) set env HIP_DB 1 +``` + +#### Print env var state +Setting HIP_PRINT_ENV=1 and then running a HIP application will print the HIP environment variables, their current values, and usage info. +Setting HCC_PRINT_ENV=1 and then running a HCC application will print the HCC environment variables, their current values, and usage info. diff --git a/docs/markdown/hip_faq.md b/docs/markdown/hip_faq.md index e316d449ef..ddf70f2875 100644 --- a/docs/markdown/hip_faq.md +++ b/docs/markdown/hip_faq.md @@ -53,7 +53,7 @@ At a high-level, the following features are not supported: - Dynamic parallelism (CUDA 5.0) - Managed memory (CUDA 6.5) - Graphics interoperability with OpenGL or Direct3D -- CUDA Driver API (Under Development) +- CUDA Driver API - CUDA IPC Functions (Under Development) - CUDA array, mipmappedArray and pitched memory - MemcpyToSymbol functions @@ -70,7 +70,6 @@ See the [API Support Table](CUDA_Runtime_API_functions_supported_by_HIP.md) for - printf - assert - `__restrict__` - - `__launch_bounds__` - `__threadfence*_`, `__syncthreads*` - Unbounded loop unroll @@ -102,7 +101,7 @@ However, we can provide a rough summary of the features included in each CUDA SD - Per-thread-streams (under development) - C++11 (HCC supports all of C++11, all of C++14 and some C++17 features) - CUDA 7.5 - - float16 (under development) + - float16 - CUDA 8.0 - TBD. diff --git a/docs/markdown/hip_kernel_language.md b/docs/markdown/hip_kernel_language.md index 3cb7b17a0c..cfa5d0f871 100644 --- a/docs/markdown/hip_kernel_language.md +++ b/docs/markdown/hip_kernel_language.md @@ -40,6 +40,10 @@ - [Printf](#printf) - [Device-Side Dynamic Global Memory Allocation](#device-side-dynamic-global-memory-allocation) - [`__launch_bounds__`](#__launch_bounds__) + * [Compiler Impact](#compiler-impact) + * [CU and EU Definitions](#cu-and-eu-definitions) + * [Porting from CUDA __launch_bounds](#porting-from-cuda-__launch_bounds) + * [maxregcount](#maxregcount) - [Register Keyword](#register-keyword) - [Pragma Unroll](#pragma-unroll) - [In-Line Assembly](#in-line-assembly) @@ -610,30 +614,59 @@ Device-side dynamic global memory allocation is under development. HIP now incl implementation of malloc and free that can be called from device functions. ## `__launch_bounds__` -GPU multiprocessors have a fixed pool of resources (primarily registers and shared memory) that are shared among the active warps. Using more resources can increase the kernel’s IPC, but it reduces the resources available for other warps and limits the number of warps that can run simultaneously. Thus, GPUs exhibit a complex relationship between resource usage and performance. `__launch_bounds__` allows the application to provide usage hints that influence the resources (primarily registers) employed by the generated code. It’s a function attribute that must be attached to a `__global__` function: + + +GPU multiprocessors have a fixed pool of resources (primarily registers and shared memory) which are shared by the actively running warps. Using more resources can increase IPC of the kernel but reduces the resources available for other warps and limits the number of warps that can be simulaneously running. Thus GPUs have a complex relationship between resource usage and performance. + +__hip_launch_bounds__ allows the application to provide usage hints that influence the resources (primarily registers) used by the generated code. +__hip_launch_bounds__ is a function attribute that must be attached to a __global__ function: ``` -__global__ void -`__launch_bounds__`(requiredMaxThreadsPerBlock, minBlocksPerMultiprocessor) +__global__ void `__launch_bounds__`(MAX_THREADS_PER_BLOCK, MIN_WARPS_PER_EU) MyKernel(...) ... MyKernel(hipGridLaunch lp, ...) ... ``` -`__launch_bounds__` supports two parameters: +__launch_bounds__ supports two parameters: +- MAX_THREADS_PER_BLOCK - The programmers guarantees that kernel will be launched with threads less than MAX_THREADS_PER_BLOCK. (On NVCC this maps to the .maxntid PTX directive). If no launch_bounds is specified, MAX_THREADS_PER_BLOCK is the maximum block size supported by the device (typically 1024 or larger). Specifying MAX_THREADS_PER_BLOCK less than the maximum effectively allows the compiler to use more resources than a default unconstrained compilation that supports all possible block sizes at launch time. +The threads-per-block is the product of (hipBlockDim_x * hipBlockDim_y * hipBlockDim_z). +- MIN_WARPS_PER_EU - directs the compiler to minimize resource usage so that the requested number of warps can be simultaneously active on a multi-processor. Since active warps compete for the same fixed pool of resources, the compiler must reduce resources required by each warp(primarily registers). MIN_WARPS_PER_EU is optional and defaults to 1 if not specified. Specifying a MIN_WARPS_PER_EU greater than the default 1 effectively constrains the compiler's resource usage. -- **requiredMaxThreadsPerBlock**---the programmer guarantees that the kernel will launch with threadsPerBlock less than requiredMaxThreadsPerBlock. (In nvcc, this parameter maps to the _.maxntid_ PTX directive; in hcc, it maps to the HSAIL _requiredworkgroupsize_ directive.) If launch_bounds is unspecified, requiredMaxThreadsPerBlock is the maximum block size that the device supports (typically 1,024 or larger). Specifying requiredMaxThreadsPerBlock less than the maximum effectively allows the compiler to use more resources than a default unconstrained compilation supporting all possible block sizes at launch time. The threadsPerBlock value is the product hipBlockDim_x * hipBlockDim_y * hipBlockDim_z. -- **minBlocksPerMultiprocessor**---directs the compiler to minimize resource usage so that the requested number of blocks can be simultaneously active on a multiprocessor. Because active blocks compete for the same fixed resource pool, the compiler must reduce the resource requirements of each block (primarily registers). minBlocksPerMultiprocessor is optional and defaults to 1 if unspecified. Selecting a minBlocksPerMultiprocessor value greater than 1 effectively constrains the compiler's resource usage. +### Compiler Impact +The compiler uses these parameters as follows: +- The compiler uses the hints only to manage register usage, and does not automatically reduce shared memory or other resources. +- Compilation fails if compiler cannot generate a kernel which meets the requirements of the specified launch bounds. +- From MAX_THREADS_PER_BLOCK, the compiler derives the maximum number of warps/block that can be used at launch time. +Values of MAX_THREADS_PER_BLOCK less than the default allows the compiler to use a larger pool of registers : each warp uses registers, and this hint constains the launch to a warps/block size which is less than maximum. +- From MIN_WARPS_PER_EU, the compiler derives a maximum number of registers that can be used by the kernel (to meet the required #simultaneous active blocks). +If MIN_WARPS_PER_EU is 1, then the kernel can use all registers supported by the multiprocessor. +- The compiler ensures that the registers used in the kernel is less than both allowed maximums, typically by spilling registers (to shared or global memory), or by using more instructions. +- The compiler may use hueristics to increase register usage, or may simply be able to avoid spilling. The MAX_THREADS_PER_BLOCK is particularly useful in this cases, since it allows the compiler to use more registers and avoid situations where the compiler constrains the register usage (potentially spilling) to meet the requirements of a large block size that is never used at launch time. -The compiler uses these two parameters as follows: -- It employs the hints only to manage register usage and does not automatically reduce shared memory or other resources. -- Compilation fails if the compiler cannot generate a kernel that meets the requirements of the specified launch bounds. -- From requiredMaxThreadsPerBlock, the compiler derives the maximum number of warps per block that are usable at launch time. Values less than the default allow the compiler to use a larger register pool: each warp uses registers, and this hint constrains the launch to a warps-per-block size less than maximum. -- From minBlocksPerMultiprocessor, the compiler derives a maximum number of registers that the kernel can use (to meet the required number of simultaneously active blocks). If the value is 1, the kernel can use all registers supported by the multiprocessor. -The compiler ensures that the kernel uses fewer registers than both allowed maxima specify, typically by spilling to shared memory or using more instructions. It may use heuristics to increase register usage or may simply be able to avoid spilling. The requiredMaxThreadsPerBlock parameter is particularly useful in this case, since it allows the compiler to use more registers---avoiding situations where the compiler constrains the register usage (potentially spilling) to meet the requirements of a large block size never sees use at launch time. +### CU and EU Definitions +A compute unit (CU) is responsible for executing the waves of a work-group. It is composed of one or more execution units (EU) which are responsible for executing waves. An EU can have enough resources to maintain the state of more than one executing wave. This allows an EU to hide latency by switching between waves in a similar way to symmetric multithreading on a CPU. In order to allow the state for multiple waves to fit on an EU, the resources used by a single wave have to be limited. Limiting such resources can allow greater latency hiding, but can result in having to spill some register state to memory. This attribute allows an advanced developer to tune the number of waves that are capable of fitting within the resources of an EU. It can be used to ensure at least a certain number will fit to help hide latency, and can also be used to ensure no more than a certain number will fit to limit cache thrashing. + +### Porting from CUDA __launch_bounds +CUDA defines a __launch_bounds which is also designed to control occupancy: +``` +__launch_bounds(MAX_THREADS_PER_BLOCK, MIN_BLOCKS_PER_MULTIPROCESSOR) +``` -HIP/hcc will parse the `launch_bounds` attribute but silently ignores the performance hint. Full support is under development. +- The second parameter __launch_bounds parameters must be converted to the format used __hip_launch_bounds, which uses warps and execution-units rather than blocks and multi-processors ( This conversion is performed automatically by the clang hipify tools.) +``` +MIN_WARPS_PER_EXECUTION_UNIT = (MIN_BLOCKS_PER_MULTIPROCESSOR * MAX_THREADS_PER_BLOCK) / 32 +``` +The key differences in the interface are: +- Warps (rather than blocks): +The developer is trying to tell the compiler to control resource utilization to guarantee some amount of active Warps/EU for latency hiding. Specifying active warps in terms of blocks appears to hide the micro-architectural details of the warp size, but makes the interface more confusing since the developer ultimately needs to compute the number of warps to obtain the desired level of control. +- Execution Units (rather than multiProcessor): +The use of execution units rather than multiprocessors provides support for architectures with multiple execution units/multi-processor. For example, the AMD GCN architecture has 4 execution units per multiProcessor. The hipDeviceProps has a field executionUnitsPerMultiprocessor. +Platform-specific coding techniques such as #ifdef can be used to specify different launch_bounds for NVCC and HCC platforms, if desired. + + +### maxregcount Unlike nvcc, hcc does not support the "--maxregcount" option. Instead, users are encouraged to use the hip_launch_bounds directive since the parameters are more intuitive and portable than micro-architecture details like registers, and also the directive allows per-kernel control rather than an entire file. hip_launch_bounds works on both hcc and nvcc targets. diff --git a/docs/markdown/hip_porting_driver_api.md b/docs/markdown/hip_porting_driver_api.md index dd3b9c3e86..0912e676cc 100644 --- a/docs/markdown/hip_porting_driver_api.md +++ b/docs/markdown/hip_porting_driver_api.md @@ -98,48 +98,57 @@ HIP/HCC will push primary context to context stack when it is empty. This can ha #### Interoperation between HIP and CUDA Driver CUDA applications may want to mix CUDA driver code with HIP code (see example below). This table shows the type equivalence to enable this interaction. -|**HIP Type** |**CU Driver Type**|**CUDA Runtime Type**| -| ---- | ---- | ---- | -| hipModule | CUmodule | | -| hipFunction | CUfunction | | -| hipCtx_t | CUcontext | | -| hipDevice_t | CUdevice | | -| hipStream_t | CUstream | cudaStream_t | -| hipEvent_t | CUevent | cudaEvent_t | -| hipArray | CUarray | cudaArray | - -#### Compilation Flags -The hipModule interface does not support the `cuModuleLoadDataEx` function, which is used to control PTX compilation options. -HCC does not use PTX and does not support the same compilation options. -In fact, HCC code objects always contain fully compiled ISA and do not require additional compilation as part of the load step. -Code which requires this functionally should use platform-specific coding, calling `cuModuleLoadDataEx` on the NVCC path and `hipModuleLoadData` on the hcc path. -For example: +|**HIP Type** |**CU Driver Type**|**CUDA Runtime Type**| +| ---- | ---- | ---- | +| hipModule_t | CUmodule | | +| hipFunction_t | CUfunction | | +| hipCtx_t | CUcontext | | +| hipDevice_t | CUdevice | | +| hipStream_t | CUstream | cudaStream_t | +| hipEvent_t | CUevent | cudaEvent_t | +| hipArray | CUarray | cudaArray | +#### Compilation Options +The `hipModule_t` interface does not support `cuModuleLoadDataEx` function, which is used to control PTX compilation options. +HCC does not use PTX and does not support these compilation options. +In fact, HCC code objects always contain fully compiled ISA and do not require additional compilation as a part of the load step. +The corresponding HIP function `hipModuleLoadDataEx` behaves as `hipModuleLoadData` on HCC path (compilation options are not used) and as `cuModuleLoadDataEx` on NVCC path. +For example (CUDA): ``` -hipModule module; -void *imagePtr = ... ; // Somehow populate data pointer with code object +CUmodule module; +void *imagePtr = ...; // Somehow populate data pointer with code object -#ifdef __HIP_PLATFORM_NVCC__ -// Use CUDA driver API but write to hipModule since they are same type: const int numOptions = 1; CUJit_option options[numOptions]; void * optionValues[numOptions]; options[0] = CU_JIT_MAX_REGISTERS; -unsigned maxRegs=15; -optionValues[0] = (void*) (&maxRegs); +unsigned maxRegs = 15; +optionValues[0] = (void*)(&maxRegs); cuModuleLoadDataEx(module, imagePtr, numOptions, options, optionValues); -#else // __HIP_PLATFORM_HCC__ +CUfunction k; +cuModuleGetFunction(&k, module, "myKernel"); +``` +HIP: +``` +hipModule_t module; +void *imagePtr = ...; // Somehow populate data pointer with code object -// HCC path does not support or require JIT options, so just load the module. -hipModuleLoadData(&module, imagePtr); +const int numOptions = 1; +hipJitOption options[numOptions]; +void * optionValues[numOptions]; -#endif +options[0] = hipJitOptionMaxRegisters; +unsigned maxRegs = 15; +optionValues[0] = (void*)(&maxRegs); -// Back to unified code - both paths above loaded the "module" variable. -hipFunction k; +// hipModuleLoadData(module, imagePtr) will be called on HCC path, JIT options will not be used, and +// cupModuleLoadDataEx(module, imagePtr, numOptions, options, optionValues) will be called on NVCC path +hipModuleLoadDataEx(module, imagePtr, numOptions, options, optionValues); + +hipFunction_t k; hipModuleGetFunction(&k, module, "myKernel"); ``` diff --git a/docs/markdown/hip_porting_guide.md b/docs/markdown/hip_porting_guide.md index 72f6384f6d..84887fd512 100644 --- a/docs/markdown/hip_porting_guide.md +++ b/docs/markdown/hip_porting_guide.md @@ -569,7 +569,6 @@ HIP_TRACE_API = 0 : Trace each HIP API call. Print function n HIP_TRACE_API_COLOR = green : Color to use for HIP_API. None/Red/Green/Yellow/Blue/Magenta/Cyan/White HIP_PROFILE_API = 0 : Add HIP function begin/end to ATP file generated with CodeXL HIP_VISIBLE_DEVICES = 0 : Only devices whose index is present in the secquence are visible to HIP applications and they are enumerated in the order of secquence -HIP_NUM_KERNELS_INFLIGHT = 128 : Number of kernels per stream ``` diff --git a/docs/markdown/hip_profiling.md b/docs/markdown/hip_profiling.md index 6e5cde700d..a659216044 100644 --- a/docs/markdown/hip_profiling.md +++ b/docs/markdown/hip_profiling.md @@ -1,4 +1,4 @@ -# Profiling and Debugging HIP Code +# Profiling HIP Code This section describes the profiling and debugging capabilities that HIP provides. Profiling information can viewed in the CodeXL visualization tool or printed directly to stderr as the application runs. @@ -23,11 +23,6 @@ This document starts with some of the general capabilities of CodeXL and then de - [Tracing and Debug](#tracing-and-debug) * [Tracing HIP APIs](#tracing-hip-apis) + [Color](#color) - * [Using HIP_DB](#using-hip_db) - * [Using ltrace](#using-ltrace) - * [Chicken bits](#chicken-bits) - * [Debugging HIP Applications](#debugging-hip-applications) - * [General Debugging Tips](#general-debugging-tips) @@ -267,6 +262,14 @@ info: check result PASSED! ``` +HIP_TRACE_API supports multiple levels of debug information: + - 0x1 = print all HIP APIs. This is the most verbose setting; the flags below allow selecting a subset. + - 0x2 = print HIP APIs which initiate GPU kernel commands. Includes hipLaunchKernel, hipLaunchModuleKernel + - 0x4 = print HIP APIs which initiate GPU memory commands. Includes hipMemcpy*, hipMemset*. + - 0x8 = print HIP APIs which allocate or free memory. Includes hipMalloc, hipHostMalloc, hipFree, hipHostFree. + +These can be combined. For example, HIP_TRACE_API=6 shows a concise view of the HIP commands (both kernel and memory) that are sent to the GPU. + #### Color Note this trace mode uses colors. "less -r" can handle raw control characters and will display the debug output in proper colors. @@ -275,161 +278,3 @@ None will disable use of color control codes for both the opening and closing an -### Using HIP_DB - -This flag is primarily targeted to assist HIP development team in the development of the HIP runtime, but in some situations may be useful to HIP application developers as well. -The HIP debug information is designed to print important information during the execution of a HIP API. HIP provides -different color-coded levels of debug information: - - api : Print the beginning and end of each HIP API, including the arguments and return codes. This is equivalent to setting HIP_TRACE_API=1. - - sync : Print multi-thread and other synchronization debug information. - - copy : Print which engine is doing the copy, which copy flavor is selected, information on source and destination memory. - - mem : Print information about memory allocation - which pointers are allocated, where they are allocated, peer mappings, and more. - -DB_MEM format is flags separated by '+' sign, or a hex code for the bitmask. Generally the + format is preferred. -For example: -``` -$ HIP_DB=api+copy+mem my-application -$ HIP_DB=0xF my-application -``` - -### Using ltrace -ltrace is a standard linux tool which provides a message to stderr on every dynamic library call. Since ROCr and the ROCt (the ROC thunk, which is the thin user-space interface to the ROC kernel driver) are both dynamic libraries, this provides an easy way to trace the activity in these libraries. Tracing can be a powerful way to quickly observe the flow of the application before diving into the details with a command-line debugger. -The trace can also show performance issues related to accidental calls to expensive API calls on the critical path. - -ltrace can be easily combined with the HIP_DB switches to visualize the runtime behavior of the entire ROCm software stack. Here's a sample command-line and output: - -``` -$ HIP_DB=api ltrace -C -e 'hsa*' - -... - -<hsa_signal_store_relaxed(0x1804000, 0, 0, 0x400000) = 0 -libmcwamp_hsa.so->hsa_signal_store_relaxed(0x1816000, 0, 0x7f777f85f2a0, 0x400000) = 0 -libmcwamp_hsa.so->hsa_amd_memory_lock(0x7f7776d3e010, 0x400000, 0x1213b70, 1 -libhsa-runtime64.so.1->hsaKmtRegisterMemoryToNodes(0x7f7776d3e010, 0x400000, 1, 0x1220c10) = 0 -libhsa-runtime64.so.1->hsaKmtMapMemoryToGPUNodes(0x7f7776d3e010, 0x400000, 0x7ffc32865400, 64) = 0 -<... hsa_amd_memory_lock resumed> ) = 0 -libmcwamp_hsa.so->hsa_signal_store_relaxed(0x1804000, 1, 0x7f777e95a770, 0x12205b0) = 0 -libmcwamp_hsa.so->hsa_amd_memory_async_copy(0x50411d010, 0x11e70d0, 0x503d1d000, 0x11e70d0) = 0 -libmcwamp_hsa.so->hsa_signal_wait_acquire(0x1804000, 2, 1, -1) = 0 -libmcwamp_hsa.so->hsa_amd_memory_unlock(0x7f7776d3e010, 0x1213c6c, 0x12c3c600000000, 0x1804000 -libhsa-runtime64.so.1->hsaKmtUnmapMemoryToGPU(0x7f7776d3e010, 0x7f7776d3e010, 0x12c3c600000000, 0x1804000) = 0 -libhsa-runtime64.so.1->hsaKmtDeregisterMemory(0x7f7776d3e010, 0x7f7776d3e010, 0x7f777f60f9e8, 0x1220580) = 0 -<... hsa_amd_memory_unlock resumed> ) = 0 - hip-api tid:1.17 hipMemcpy ret= 0 (hipSuccess)>> -``` - -Some key information from the trace above. - - Thy trace snippet shows the execution of a hipMemcpy API, bracketed by the first and last message in the trace output. The messages show the thread id and API sequence number (`1.17`). ltrace output intermixes messages from all threads, so the HIP debug information can be useful to determine which threads are executing. - - The code flows through HIP APIs into ROCr (HSA) APIs (hsa*) and into the thunk (hsaKmt*) calls. - - The HCC runtime is "libmcwamp_hsa.so" and the HSA/ROCr runtime is "libhsa-runtime64.so". - - In this particular case, the memory copy is for unpinned memory, and the selected copy algorithm is to pin the host memory "in-place" before performing the copy. The signaling APIs and calls to pin ("lock", "register") the memory are readily apparent in the trace output. - - -### Chicken bits -Chicken bits are environment variables which cause the HIP, HCC, or HSA driver to disable some feature or optimization. -These are not intended for production but can be useful diagnose synchronization problems in the application (or driver). - -Some of the most useful chicken bits are described here. These bits are supported on the ROCm path: - -HIP provides 3 environment variables in the HIP_*_BLOCKING family. These introduce additional synchronization and can be useful to isolate synchronization problems. Specifically, if the code works with this flag set, then it indicates the kernels are executing correctly, and any failures likely are causes by improper or missing synchronization. These flags will have performance impact and are not intended for production use. - -- HIP_LAUNCH_BLOCKING=1 : Waits on the host after each kernel launch. Equivalent to setting CUDA_LAUNCH_BLOCKING. -- HIP_LAUNCH_BLOCKING_KERNELS: A comma-separated list of kernel names. The HIP runtime will wait on the host after one of the named kernels executes. This provides a more targeted version of HIP_LAUNCH_BLOCKING and may be useful to isolate exactly which kernel needs further analysis if HIP_LAUNCH_BLOCKING=1 improves functionality. There is no indication if kernel names are spelled incorrectly. One mechanism to verify that the blocking is working is to run with HIP_DB=api+sync and search for debug messages with "LAUNCH_BLOCKING". -- HIP_API_BLOCKING : Forces hipMemcpyAsync and hipMemsetAsync to be host-synchronous, meaning they will wait for the requested operation to complete before returning to the caller. - -These options cause HCC to serialize. Useful if you have libraries or code which is calling HCC kernels directly rather than using HIP. -- HCC_SERIALZIE_KERNELS : 0x1=pre-serialize before each kernel launch, 0x2=post-serialize after each kernel launch., 0x3= pre- and post- serialize. -- HCC_SERIALIZE_COPY : 0x1=pre-serialize before each async copy, 0x2=post-serialize after each async copy., 0x3= pre- and post- serialize. - -- HSA_ENABLE_SDMA=0 : Causes host-to-device and device-to-host copies to use compute shader blit kernels rather than the dedicated DMA copy engines. Compute shader copies have low latency (typically < 5us) and can achieve approximately 80% of the bandwidth of the DMA copy engine. This flag is useful to isolate issues with the hardware copy engines. -- HSA_ENABLE_INTERRUPT=0 : Causes completion signals to be detected with memory-based polling rather than interrupts. Can be useful to diagnose interrupt storm issues in the driver. -- HSA_DISABLE_CACHE=1 : Disables the GPU L2 data cache. - -### Debugging HIP Applications - -- The variable "tls_tidInfo" contains the API sequence number (_apiSeqNum)- a monotonically increasing count of the HIP APIs called from this thread. This can be useful for setting conditional breakpoints. Also, each new HIP thread is mapped to monotically increasing shortTid ID. Both of these fields are displayed in the HIP debug info. -``` -(gdb) p tls_tidInfo -$32 = {_shortTid = 1, _apiSeqNum = 803} -``` - -- HCC tracks all of the application memory allocations, including those from HIP and HC's "am_alloc". -If the HCC runtime is built with debug information (HCC_RUNTIME_DEBUG=ON when building HCC), then calling the function 'hc::am_memtracker_print()' will show all memory allocations. -An optional argument specifies a void * targetPointer - the print routine will mark the allocation which contains the specified pointer with "-->" in the printed output. -This example shows a sample GDB session where we print the memory allocated by this process and mark a specified address by using the gdb "call" function.. -The gdb syntax also supports using the variable name (in this case 'dst'): -``` -(gdb) p dst -$33 = (void *) 0x5ec7e9000 -(gdb) call hc::am_memtracker_print(dst) -TargetAddress:0x5ec7e9000 - 0x504cfc000-0x504cfc00f:: allocSeqNum:1 hostPointer:0x504cfc000 devicePointer:0x504cfc000 sizeBytes:16 isInDeviceMem:0 isAmManaged:1 appId:0 appAllocFlags:0 appPtr:(nil) -... --->0x5ec7e9000-0x5f7e28fff:: allocSeqNum:488 hostPointer:(nil) devicePointer:0x5ec7e9000 sizeBytes:191102976 isInDeviceMem:1 isAmManaged:1 appId:0 appAllocFlags:0 appPtr:(nil) - -``` - -To debug an explicit address, cast the address to (void*) : -``` -(gdb) call hc::am_memtracker_print((void*)0x508c7f000) -``` -- Debugging GPUVM fault. -For example: -``` -Memory access fault by GPU node-1 on address 0x5924000. Reason: Page not present or supervisor privilege. - -Program received signal SIGABRT, Aborted. -[Switching to Thread 0x7fffdffb5700 (LWP 14893)] -0x00007ffff2057c37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 -56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory. -(gdb) bt -#0 0x00007ffff2057c37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 -#1 0x00007ffff205b028 in __GI_abort () at abort.c:89 -#2 0x00007ffff6f960eb in ?? () from /opt/rocm/hsa/lib/libhsa-runtime64.so.1 -#3 0x00007ffff6f99ea5 in ?? () from /opt/rocm/hsa/lib/libhsa-runtime64.so.1 -#4 0x00007ffff6f78107 in ?? () from /opt/rocm/hsa/lib/libhsa-runtime64.so.1 -#5 0x00007ffff744f184 in start_thread (arg=0x7fffdffb5700) at pthread_create.c:312 -#6 0x00007ffff211b37d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111 -(gdb) info threads - Id Target Id Frame - 4 Thread 0x7fffdd521700 (LWP 14895) "caffe" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185 - 3 Thread 0x7fffddd22700 (LWP 14894) "caffe" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185 -* 2 Thread 0x7fffdffb5700 (LWP 14893) "caffe" 0x00007ffff2057c37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 - 1 Thread 0x7ffff7fa6ac0 (LWP 14892) "caffe" 0x00007ffff6f934d5 in ?? () from /opt/rocm/hsa/lib/libhsa-runtime64.so.1 -(gdb) thread 1 -[Switching to thread 1 (Thread 0x7ffff7fa6ac0 (LWP 14892))] -#0 0x00007ffff6f934d5 in ?? () from /opt/rocm/hsa/lib/libhsa-runtime64.so.1 -(gdb) bt -#0 0x00007ffff6f934d5 in ?? () from /opt/rocm/hsa/lib/libhsa-runtime64.so.1 -#1 0x00007ffff6f929ba in ?? () from /opt/rocm/hsa/lib/libhsa-runtime64.so.1 -#2 0x00007fffe080beca in HSADispatch::waitComplete() () from /opt/rocm/hcc/lib/libmcwamp_hsa.so -#3 0x00007fffe080415f in HSADispatch::dispatchKernelAsync(Kalmar::HSAQueue*, void const*, int, bool) () from /opt/rocm/hcc/lib/libmcwamp_hsa.so -#4 0x00007fffe080238e in Kalmar::HSAQueue::dispatch_hsa_kernel(hsa_kernel_dispatch_packet_s const*, void const*, unsigned long, hc::completion_future*) () from /opt/rocm/hcc/lib/libmcwamp_hsa.so -#5 0x00007ffff7bb7559 in hipModuleLaunchKernel () from /opt/rocm/hip/lib/libhip_hcc.so -#6 0x00007ffff2e6cd2c in mlopen::HIPOCKernel::run (this=0x7fffffffb5a8, args=0x7fffffffb2a8, size=80) at /root/MIOpen/src/hipoc/hipoc_kernel.cpp:15 -... -``` - -### General Debugging Tips -- The fault will be caught by the runtime but was actually generated by an asynchronous command running on the GPU. So, the GDB backtrace will show a path in the runtime, ie inside "GI_Raise" as shown in the example above. -- To determine the true location of the fault, force the kernels to execute synchronously by seeing the environment variables HCC_SERIALIZE_KERNEL=3 HCC_SERIALIZE_COPY=3. This will force HCC to wait for the kernel to finish executing before retuning. If the fault occurs during the execution of a kernel, you can see the code which launched the kernel inside the backtrace. A bit of guesswork is required to determine which thread is actually causing the issue - typically it will the thread which is waiting inside the libhsa-runtime64.so. -- VM faults inside kernels can be caused byi: - - incorrect code (ie a for loop which extends past array boundaries), i - - memory issues - kernel arguments which are invalid (null pointers, unregistered host pointers, bad pointers). - - synchronization issues - - compiler issues (incorrect code generation from the compiler) - - runtime issues - --- General debug tips: -- 'gdb --args' can be used to conviently pass the executable and arguments to gdb. -- From inside GDB, you can set environment variables "set env". Note the command does not use an '=' sign: -``` -(gdb) set env HIP_DB 1 -``` -Setting HIP_PRINT_ENV=1 and then running a HIP application will print the HIP environment variables, their current values, and usage info. -Setting HCC_PRINT_ENV=1 and then running a HCC application will print the HCC environment variables, their current values, and usage info. - - - diff --git a/hipify-clang/CMakeLists.txt b/hipify-clang/CMakeLists.txt index a02b91407f..872db3defe 100644 --- a/hipify-clang/CMakeLists.txt +++ b/hipify-clang/CMakeLists.txt @@ -6,8 +6,12 @@ set(BUILD_HIPIFY_CLANG 0 PARENT_SCOPE) # Find LLVM package find_package(LLVM 3.8 QUIET PATHS ${HIPIFY_CLANG_LLVM_DIR} NO_DEFAULT_PATH) if (NOT ${LLVM_FOUND}) - message(STATUS "hipify-clang will not be built. To build it please specify absolute path to LLVM (v3.8) package using -DHIPIFY_CLANG_LLVM_DIR") -else() + find_package(LLVM 3.9 QUIET PATHS ${HIPIFY_CLANG_LLVM_DIR} NO_DEFAULT_PATH) + if (NOT ${LLVM_FOUND}) + message(STATUS "hipify-clang will not be built. To build it please specify absolute path to LLVM 3.8 or LLVM 3.9 package using -DHIPIFY_CLANG_LLVM_DIR") + endif() +endif() +if (${LLVM_FOUND}) list(APPEND CMAKE_MODULE_PATH ${LLVM_CMAKE_DIR}) include(AddLLVM) @@ -31,6 +35,7 @@ else() clangSerialization clangSema clangEdit + clangFormat clangLex clangAnalysis clangDriver diff --git a/hipify-clang/README.md b/hipify-clang/README.md index c0d74dbe48..20456f3bff 100644 --- a/hipify-clang/README.md +++ b/hipify-clang/README.md @@ -5,7 +5,7 @@ - [Using hipify-clang](#using-hipify-clang) * [Build and install](#build-and-install) * [Running and using hipify-clang](#running-and-using-hipify-clang) - + [Disclaimer](#disclaimer) +- [Disclaimer](#disclaimer) @@ -70,7 +70,7 @@ To set additional options like Language Selection (only "-x cuda" is supported), Delimiter "--" is used to separate hipify-clang options (before the delimiter) from clang options (after the delimiter). It is strongly recommended to always specify the delimiter, even if there are no clang specific options at all, in order to avoid possible errors regarding compilation database; in such case delimeter should be the last option in hipify-clang's command line. -Option "-x clang" is also worth specifying in order to convert source CUDA files with extensions other than standard extensions (*.cu, *.cuh). +Option "-x cuda" is also worth specifying in order to convert source CUDA files with extensions other than standard extensions (*.cu, *.cuh). ## Disclaimer diff --git a/hipify-clang/src/Cuda2Hip.cpp b/hipify-clang/src/Cuda2Hip.cpp index 5a2940322e..9b58173899 100644 --- a/hipify-clang/src/Cuda2Hip.cpp +++ b/hipify-clang/src/Cuda2Hip.cpp @@ -191,7 +191,7 @@ struct cuda2hipMap { // Error codes and return types cuda2hipRename["CUresult"] = {"hipError_t", CONV_TYPE, API_DRIVER}; - cuda2hipRename["cudaError_enum"] = {"hipError_t", CONV_TYPE, API_DRIVER}; +// cuda2hipRename["cudaError_enum"] = {"hipError_t", CONV_TYPE, API_DRIVER}; cuda2hipRename["cudaError_t"] = {"hipError_t", CONV_TYPE, API_RUNTIME}; cuda2hipRename["cudaError"] = {"hipError_t", CONV_TYPE, API_RUNTIME}; @@ -208,59 +208,55 @@ struct cuda2hipMap { cuda2hipRename["CUDA_ERROR_INVALID_SOURCE"] = {"hipErrorInvalidSource", CONV_ERR, API_DRIVER}; // 300 cuda2hipRename["CUDA_ERROR_FILE_NOT_FOUND"] = {"hipErrorFileNotFound", CONV_ERR, API_DRIVER}; // 301 cuda2hipRename["CUDA_ERROR_NOT_FOUND"] = {"hipErrorNotFound", CONV_ERR, API_DRIVER}; // 500 + cuda2hipRename["CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING"] = {"hipErrorLaunchIncompatibleTexturing", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // 703 + cuda2hipRename["CUDA_ERROR_PRIMARY_CONTEXT_ACTIVE"] = {"hipErrorPrimaryContextActive", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // 708 + cuda2hipRename["CUDA_ERROR_CONTEXT_IS_DESTROYED"] = {"hipErrorContextIsDestroyed", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // 709 + cuda2hipRename["CUDA_ERROR_NOT_PERMITTED"] = {"hipErrorNotPermitted", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // 800 + cuda2hipRename["CUDA_ERROR_NOT_SUPPORTED"] = {"hipErrorNotSupported", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // 801 // CUDA RT API error code only - cuda2hipRename["cudaErrorMissingConfiguration"] = {"hipErrorMissingConfiguration", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 1 - cuda2hipRename["cudaErrorPriorLaunchFailure"] = {"hipErrorPriorLaunchFailure", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 5 - cuda2hipRename["cudaErrorInvalidDeviceFunction"] = {"hipErrorInvalidDeviceFunction", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 8 - cuda2hipRename["cudaErrorInvalidConfiguration"] = {"hipErrorInvalidConfiguration", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 9 - cuda2hipRename["cudaErrorInvalidPitchValue"] = {"hipErrorInvalidPitchValue", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 12 - cuda2hipRename["cudaErrorInvalidSymbol"] = {"hipErrorInvalidSymbol", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 13 - cuda2hipRename["cudaErrorInvalidHostPointer"] = {"hipErrorInvalidHostPointer", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 16 - cuda2hipRename["cudaErrorInvalidDevicePointer"] = {"hipErrorInvalidDevicePointer", CONV_ERR, API_RUNTIME}; // 17 - cuda2hipRename["cudaErrorInvalidTexture"] = {"hipErrorInvalidTexture", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 18 - cuda2hipRename["cudaErrorInvalidTextureBinding"] = {"hipErrorInvalidTextureBinding", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 19 - cuda2hipRename["cudaErrorInvalidChannelDescriptor"] = {"hipErrorInvalidChannelDescriptor", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 20 - cuda2hipRename["cudaErrorInvalidMemcpyDirection"] = {"hipErrorInvalidMemcpyDirection", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 21 - cuda2hipRename["cudaErrorAddressOfConstant"] = {"hipErrorAddressOfConstant", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 22 - cuda2hipRename["cudaErrorTextureFetchFailed"] = {"hipErrorTextureFetchFailed", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 23 - cuda2hipRename["cudaErrorTextureNotBound"] = {"hipErrorTextureNotBound", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 24 - cuda2hipRename["cudaErrorSynchronizationError"] = {"hipErrorSynchronizationError", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 25 - cuda2hipRename["cudaErrorInvalidFilterSetting"] = {"hipErrorInvalidFilterSetting", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 26 - cuda2hipRename["cudaErrorInvalidNormSetting"] = {"hipErrorInvalidNormSetting", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 27 - cuda2hipRename["cudaErrorMixedDeviceExecution"] = {"hipErrorMixedDeviceExecution", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 28 + cuda2hipRename["cudaErrorMissingConfiguration"] = {"hipErrorMissingConfiguration", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 1 + cuda2hipRename["cudaErrorPriorLaunchFailure"] = {"hipErrorPriorLaunchFailure", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 5 + cuda2hipRename["cudaErrorInvalidDeviceFunction"] = {"hipErrorInvalidDeviceFunction", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 8 + cuda2hipRename["cudaErrorInvalidConfiguration"] = {"hipErrorInvalidConfiguration", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 9 + cuda2hipRename["cudaErrorInvalidPitchValue"] = {"hipErrorInvalidPitchValue", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 12 + cuda2hipRename["cudaErrorInvalidSymbol"] = {"hipErrorInvalidSymbol", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 13 + cuda2hipRename["cudaErrorInvalidHostPointer"] = {"hipErrorInvalidHostPointer", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 16 + cuda2hipRename["cudaErrorInvalidDevicePointer"] = {"hipErrorInvalidDevicePointer", CONV_ERR, API_RUNTIME}; // 17 + cuda2hipRename["cudaErrorInvalidTexture"] = {"hipErrorInvalidTexture", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 18 + cuda2hipRename["cudaErrorInvalidTextureBinding"] = {"hipErrorInvalidTextureBinding", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 19 + cuda2hipRename["cudaErrorInvalidChannelDescriptor"] = {"hipErrorInvalidChannelDescriptor", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 20 + cuda2hipRename["cudaErrorInvalidMemcpyDirection"] = {"hipErrorInvalidMemcpyDirection", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 21 + cuda2hipRename["cudaErrorAddressOfConstant"] = {"hipErrorAddressOfConstant", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 22 + cuda2hipRename["cudaErrorTextureFetchFailed"] = {"hipErrorTextureFetchFailed", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 23 + cuda2hipRename["cudaErrorTextureNotBound"] = {"hipErrorTextureNotBound", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 24 + cuda2hipRename["cudaErrorSynchronizationError"] = {"hipErrorSynchronizationError", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 25 + cuda2hipRename["cudaErrorInvalidFilterSetting"] = {"hipErrorInvalidFilterSetting", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 26 + cuda2hipRename["cudaErrorInvalidNormSetting"] = {"hipErrorInvalidNormSetting", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 27 + cuda2hipRename["cudaErrorMixedDeviceExecution"] = {"hipErrorMixedDeviceExecution", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 28 // Deprecated as of CUDA 4.1 - cuda2hipRename["cudaErrorNotYetImplemented"] = {"hipErrorNotYetImplemented", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 31 + cuda2hipRename["cudaErrorNotYetImplemented"] = {"hipErrorNotYetImplemented", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 31 // Deprecated as of CUDA 3.1 - cuda2hipRename["cudaErrorMemoryValueTooLarge"] = {"hipErrorMemoryValueTooLarge", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 32 - cuda2hipRename["cudaErrorInsufficientDriver"] = {"hipErrorInsufficientDriver", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 35 - cuda2hipRename["cudaErrorSetOnActiveProcess"] = {"hipErrorSetOnActiveProcess", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 36 - cuda2hipRename["cudaErrorInvalidSurface"] = {"hipErrorInvalidSurface", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 37 - cuda2hipRename["cudaErrorDuplicateVariableName"] = {"hipErrorDuplicateVariableName", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 43 - cuda2hipRename["cudaErrorDuplicateTextureName"] = {"hipErrorDuplicateTextureName", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 44 - cuda2hipRename["cudaErrorDuplicateSurfaceName"] = {"hipErrorDuplicateSurfaceName", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 45 - cuda2hipRename["cudaErrorDevicesUnavailable"] = {"hipErrorDevicesUnavailable", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 46 - cuda2hipRename["cudaErrorIncompatibleDriverContext"] = {"hipErrorIncompatibleDriverContext", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 49 - cuda2hipRename["cudaErrorDeviceAlreadyInUse"] = {"hipErrorDeviceAlreadyInUse", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 54 - cuda2hipRename["cudaErrorAssert"] = {"hipErrorAssert", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 59 - cuda2hipRename["cudaErrorTooManyPeers"] = {"hipErrorTooManyPeers", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 60 - cuda2hipRename["cudaErrorLaunchMaxDepthExceeded"] = {"hipErrorLaunchMaxDepthExceeded", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 65 - cuda2hipRename["cudaErrorLaunchFileScopedTex"] = {"hipErrorLaunchFileScopedTex", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 66 - cuda2hipRename["cudaErrorLaunchFileScopedSurf"] = {"hipErrorLaunchFileScopedSurf", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 67 - cuda2hipRename["cudaErrorSyncDepthExceeded"] = {"hipErrorSyncDepthExceeded", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 68 - cuda2hipRename["cudaErrorLaunchPendingCountExceeded"] = {"hipErrorLaunchPendingCountExceeded", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 69 - cuda2hipRename["cudaErrorNotPermitted"] = {"hipErrorNotPermitted", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 70 - cuda2hipRename["cudaErrorNotSupported"] = {"hipErrorNotSupported", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 71 - cuda2hipRename["cudaErrorHardwareStackError"] = {"hipErrorHardwareStackError", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 72 - cuda2hipRename["cudaErrorIllegalInstruction"] = {"hipErrorIllegalInstruction", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 73 - cuda2hipRename["cudaErrorMisalignedAddress"] = {"hipErrorMisalignedAddress", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 74 - cuda2hipRename["cudaErrorInvalidAddressSpace"] = {"hipErrorInvalidAddressSpace", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 75 - cuda2hipRename["cudaErrorInvalidPc"] = {"hipErrorInvalidPc", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 76 - cuda2hipRename["cudaErrorStartupFailure"] = {"hipErrorStartupFailure", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 0x7f + cuda2hipRename["cudaErrorMemoryValueTooLarge"] = {"hipErrorMemoryValueTooLarge", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 32 + cuda2hipRename["cudaErrorInsufficientDriver"] = {"hipErrorInsufficientDriver", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 35 + cuda2hipRename["cudaErrorSetOnActiveProcess"] = {"hipErrorSetOnActiveProcess", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 36 + cuda2hipRename["cudaErrorInvalidSurface"] = {"hipErrorInvalidSurface", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 37 + cuda2hipRename["cudaErrorDuplicateVariableName"] = {"hipErrorDuplicateVariableName", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 43 + cuda2hipRename["cudaErrorDuplicateTextureName"] = {"hipErrorDuplicateTextureName", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 44 + cuda2hipRename["cudaErrorDuplicateSurfaceName"] = {"hipErrorDuplicateSurfaceName", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 45 + cuda2hipRename["cudaErrorDevicesUnavailable"] = {"hipErrorDevicesUnavailable", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 46 + cuda2hipRename["cudaErrorIncompatibleDriverContext"] = {"hipErrorIncompatibleDriverContext", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 49 + cuda2hipRename["cudaErrorDeviceAlreadyInUse"] = {"hipErrorDeviceAlreadyInUse", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 54 + cuda2hipRename["cudaErrorLaunchMaxDepthExceeded"] = {"hipErrorLaunchMaxDepthExceeded", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 65 + cuda2hipRename["cudaErrorLaunchFileScopedTex"] = {"hipErrorLaunchFileScopedTex", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 66 + cuda2hipRename["cudaErrorLaunchFileScopedSurf"] = {"hipErrorLaunchFileScopedSurf", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 67 + cuda2hipRename["cudaErrorSyncDepthExceeded"] = {"hipErrorSyncDepthExceeded", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 68 + cuda2hipRename["cudaErrorLaunchPendingCountExceeded"] = {"hipErrorLaunchPendingCountExceeded", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 69 + cuda2hipRename["cudaErrorNotPermitted"] = {"hipErrorNotPermitted", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 70 + cuda2hipRename["cudaErrorNotSupported"] = {"hipErrorNotSupported", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 71 + cuda2hipRename["cudaErrorStartupFailure"] = {"hipErrorStartupFailure", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 0x7f // Deprecated as of CUDA 4.1 - cuda2hipRename["cudaErrorApiFailureBase"] = {"hipErrorApiFailureBase", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 10000 - - + cuda2hipRename["cudaErrorApiFailureBase"] = {"hipErrorApiFailureBase", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 10000 cuda2hipRename["CUDA_SUCCESS"] = {"hipSuccess", CONV_ERR, API_DRIVER}; // 0 cuda2hipRename["cudaSuccess"] = {"hipSuccess", CONV_ERR, API_RUNTIME}; // 0 @@ -328,6 +324,9 @@ struct cuda2hipMap { cuda2hipRename["CUDA_ERROR_INVALID_GRAPHICS_CONTEXT"] = {"hipErrorInvalidGraphicsContext", CONV_ERR, API_DRIVER}; // 219 cuda2hipRename["cudaErrorInvalidGraphicsContext"] = {"hipErrorInvalidGraphicsContext", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 79 + cuda2hipRename["CUDA_ERROR_NVLINK_UNCORRECTABLE"] = {"hipErrorNvlinkUncorrectable", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // 220 [CUDA 8.0.44] + cuda2hipRename["cudaErrorNvlinkUncorrectable"] = {"hipErrorNvlinkUncorrectable", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 80 [CUDA 8.0.44] + cuda2hipRename["CUDA_ERROR_SHARED_OBJECT_SYMBOL_NOT_FOUND"] = {"hipErrorSharedObjectSymbolNotFound", CONV_ERR, API_DRIVER}; // 302 cuda2hipRename["cudaErrorSharedObjectSymbolNotFound"] = {"hipErrorSharedObjectSymbolNotFound", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 40 @@ -346,37 +345,53 @@ struct cuda2hipMap { cuda2hipRename["CUDA_ERROR_ILLEGAL_ADDRESS"] = {"hipErrorIllegalAddress", CONV_ERR, API_DRIVER}; // 700 cuda2hipRename["cudaErrorIllegalAddress"] = {"hipErrorIllegalAddress", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 77 - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + cuda2hipRename["CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES"] = {"hipErrorLaunchOutOfResources", CONV_ERR, API_DRIVER}; // 701 + cuda2hipRename["cudaErrorLaunchOutOfResources"] = {"hipErrorLaunchOutOfResources", CONV_ERR, API_RUNTIME}; // 7 - cuda2hipRename["CUDA_ERROR_LAUNCH_FAILED"] = {"hipErrorLaunchFailure", CONV_ERR, API_DRIVER}; // 719 + cuda2hipRename["CUDA_ERROR_LAUNCH_TIMEOUT"] = {"hipErrorLaunchTimeOut", CONV_ERR, API_DRIVER}; // 702 + cuda2hipRename["cudaErrorLaunchTimeout"] = {"hipErrorLaunchTimeOut", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 6 + + cuda2hipRename["CUDA_ERROR_PEER_ACCESS_ALREADY_ENABLED"] = {"hipErrorPeerAccessAlreadyEnabled", CONV_ERR, API_DRIVER}; // 704 + cuda2hipRename["cudaErrorPeerAccessAlreadyEnabled"] = {"hipErrorPeerAccessAlreadyEnabled", CONV_ERR, API_RUNTIME}; // 50 + + cuda2hipRename["CUDA_ERROR_PEER_ACCESS_NOT_ENABLED"] = {"hipErrorPeerAccessNotEnabled", CONV_ERR, API_DRIVER}; // 705 + cuda2hipRename["cudaErrorPeerAccessNotEnabled"] = {"hipErrorPeerAccessNotEnabled", CONV_ERR, API_RUNTIME}; // 51 + + cuda2hipRename["CUDA_ERROR_ASSERT"] = {"hipErrorAssert", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // 710 + cuda2hipRename["cudaErrorAssert"] = {"hipErrorAssert", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 59 + + cuda2hipRename["CUDA_ERROR_TOO_MANY_PEERS"] = {"hipErrorTooManyPeers", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // 711 + cuda2hipRename["cudaErrorTooManyPeers"] = {"hipErrorTooManyPeers", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 60 + + cuda2hipRename["CUDA_ERROR_HOST_MEMORY_ALREADY_REGISTERED"] = {"hipErrorHostMemoryAlreadyRegistered", CONV_ERR, API_DRIVER}; // 712 + cuda2hipRename["cudaErrorHostMemoryAlreadyRegistered"] = {"hipErrorHostMemoryAlreadyRegistered", CONV_ERR, API_RUNTIME}; // 61 + + cuda2hipRename["CUDA_ERROR_HOST_MEMORY_NOT_REGISTERED"] = {"hipErrorHostMemoryNotRegistered", CONV_ERR, API_DRIVER}; // 713 + cuda2hipRename["cudaErrorHostMemoryNotRegistered"] = {"hipErrorHostMemoryNotRegistered", CONV_ERR, API_RUNTIME}; // 62 + + cuda2hipRename["CUDA_ERROR_HARDWARE_STACK_ERROR"] = {"hipErrorHardwareStackError", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // 714 + cuda2hipRename["cudaErrorHardwareStackError"] = {"hipErrorHardwareStackError", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 72 + + cuda2hipRename["CUDA_ERROR_ILLEGAL_INSTRUCTION"] = {"hipErrorIllegalInstruction", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // 715 + cuda2hipRename["cudaErrorIllegalInstruction"] = {"hipErrorIllegalInstruction", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 73 + + cuda2hipRename["CUDA_ERROR_MISALIGNED_ADDRESS"] = {"hipErrorMisalignedAddress", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // 716 + cuda2hipRename["cudaErrorMisalignedAddress"] = {"hipErrorMisalignedAddress", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 74 + + cuda2hipRename["CUDA_ERROR_INVALID_ADDRESS_SPACE"] = {"hipErrorInvalidAddressSpace", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // 717 + cuda2hipRename["cudaErrorInvalidAddressSpace"] = {"hipErrorInvalidAddressSpace", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 75 + + cuda2hipRename["CUDA_ERROR_INVALID_PC"] = {"hipErrorInvalidPc", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // 718 + cuda2hipRename["cudaErrorInvalidPc"] = {"hipErrorInvalidPc", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 76 + + cuda2hipRename["CUDA_ERROR_LAUNCH_FAILED"] = {"hipErrorLaunchFailure", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // 719 cuda2hipRename["cudaErrorLaunchFailure"] = {"hipErrorLaunchFailure", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 4 - cuda2hipRename["CUDA_ERROR_LAUNCH_TIMEOUT"] = {"hipErrorLaunchTimeOut", CONV_ERR, API_DRIVER}; - cuda2hipRename["cudaErrorLaunchTimeout"] = {"hipErrorLaunchTimeOut", CONV_ERR, API_RUNTIME, HIP_UNSUPPORTED}; // 6 - - cuda2hipRename["CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES"] = {"hipErrorLaunchOutOfResources", CONV_ERR, API_DRIVER}; - cuda2hipRename["cudaErrorLaunchOutOfResources"] = {"hipErrorLaunchOutOfResources", CONV_ERR, API_RUNTIME}; // 7 - - cuda2hipRename["CUDA_ERROR_UNKNOWN"] = {"hipErrorUnknown", CONV_ERR, API_DRIVER}; - cuda2hipRename["cudaErrorUnknown"] = {"hipErrorUnknown", CONV_ERR, API_RUNTIME}; // 30 - -// cuda2hipRename["CUDA_ERROR_NOT_INITIALIZED"] = {"hipErrorInitializationError", CONV_ERR, API_DRIVER}; -// cuda2hipRename["cudaErrorInitializationError"] = {"hipErrorInitializationError", CONV_ERR, API_RUNTIME}; - - cuda2hipRename["CUDA_ERROR_PEER_ACCESS_ALREADY_ENABLED"] = {"hipErrorPeerAccessAlreadyEnabled", CONV_ERR, API_DRIVER}; - cuda2hipRename["cudaErrorPeerAccessAlreadyEnabled"] = {"hipErrorPeerAccessAlreadyEnabled", CONV_ERR, API_RUNTIME}; // 50 - - cuda2hipRename["CUDA_ERROR_PEER_ACCESS_NOT_ENABLED"] = {"hipErrorPeerAccessNotEnabled", CONV_ERR, API_DRIVER}; - cuda2hipRename["cudaErrorPeerAccessNotEnabled"] = {"hipErrorPeerAccessNotEnabled", CONV_ERR, API_RUNTIME}; // 51 - - cuda2hipRename["CUDA_ERROR_HOST_MEMORY_ALREADY_REGISTERED"] = {"hipErrorHostMemoryAlreadyRegistered", CONV_ERR, API_DRIVER}; - cuda2hipRename["cudaErrorHostMemoryAlreadyRegistered"] = {"hipErrorHostMemoryAlreadyRegistered", CONV_ERR, API_RUNTIME}; // 61 - - cuda2hipRename["CUDA_ERROR_HOST_MEMORY_NOT_REGISTERED"] = {"hipErrorHostMemoryNotRegistered", CONV_ERR, API_DRIVER}; - cuda2hipRename["cudaErrorHostMemoryNotRegistered"] = {"hipErrorHostMemoryNotRegistered", CONV_ERR, API_RUNTIME}; // 62 + cuda2hipRename["CUDA_ERROR_UNKNOWN"] = {"hipErrorUnknown", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // 999 + cuda2hipRename["cudaErrorUnknown"] = {"hipErrorUnknown", CONV_ERR, API_RUNTIME}; // 30 ///////////////////////////// CUDA DRIVER API ///////////////////////////// - // enums + // structs cuda2hipRename["CUDA_ARRAY3D_DESCRIPTOR"] = {"HIP_ARRAY3D_DESCRIPTOR", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["CUDA_ARRAY_DESCRIPTOR"] = {"HIP_ARRAY_DESCRIPTOR", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["CUDA_MEMCPY2D"] = {"HIP_MEMCPY2D", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; @@ -389,173 +404,219 @@ struct cuda2hipMap { cuda2hipRename["CUipcEventHandle"] = {"hipIpcEventHandle", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["CUipcMemHandle"] = {"hipIpcMemHandle", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; - - cuda2hipRename["CUaddress_mode"] = {"hipAddress_mode", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_TR_ADDRESS_MODE_WRAP"] = {"HIP_TR_ADDRESS_MODE_WRAP", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0 - cuda2hipRename["CU_TR_ADDRESS_MODE_CLAMP"] = {"HIP_TR_ADDRESS_MODE_CLAMP", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 1 - cuda2hipRename["CU_TR_ADDRESS_MODE_MIRROR"] = {"HIP_TR_ADDRESS_MODE_MIRROR", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 2 - cuda2hipRename["CU_TR_ADDRESS_MODE_BORDER"] = {"HIP_TR_ADDRESS_MODE_BORDER", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 3 + cuda2hipRename["CU_TR_ADDRESS_MODE_WRAP"] = {"HIP_TR_ADDRESS_MODE_WRAP", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0 + cuda2hipRename["CU_TR_ADDRESS_MODE_CLAMP"] = {"HIP_TR_ADDRESS_MODE_CLAMP", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 1 + cuda2hipRename["CU_TR_ADDRESS_MODE_MIRROR"] = {"HIP_TR_ADDRESS_MODE_MIRROR", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 2 + cuda2hipRename["CU_TR_ADDRESS_MODE_BORDER"] = {"HIP_TR_ADDRESS_MODE_BORDER", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 3 cuda2hipRename["CUarray_cubemap_face"] = {"hipArray_cubemap_face", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_CUBEMAP_FACE_POSITIVE_X"] = {"HIP_CUBEMAP_FACE_POSITIVE_X", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x00 - cuda2hipRename["CU_CUBEMAP_FACE_NEGATIVE_X"] = {"HIP_CUBEMAP_FACE_NEGATIVE_X", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x01 - cuda2hipRename["CU_CUBEMAP_FACE_POSITIVE_Y"] = {"HIP_CUBEMAP_FACE_POSITIVE_Y", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x02 - cuda2hipRename["CU_CUBEMAP_FACE_NEGATIVE_Y"] = {"HIP_CUBEMAP_FACE_NEGATIVE_Y", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x03 - cuda2hipRename["CU_CUBEMAP_FACE_POSITIVE_Z"] = {"HIP_CUBEMAP_FACE_POSITIVE_Z", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x04 - cuda2hipRename["CU_CUBEMAP_FACE_NEGATIVE_Z"] = {"HIP_CUBEMAP_FACE_NEGATIVE_Z", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x05 + cuda2hipRename["CU_CUBEMAP_FACE_POSITIVE_X"] = {"HIP_CUBEMAP_FACE_POSITIVE_X", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x00 + cuda2hipRename["CU_CUBEMAP_FACE_NEGATIVE_X"] = {"HIP_CUBEMAP_FACE_NEGATIVE_X", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x01 + cuda2hipRename["CU_CUBEMAP_FACE_POSITIVE_Y"] = {"HIP_CUBEMAP_FACE_POSITIVE_Y", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x02 + cuda2hipRename["CU_CUBEMAP_FACE_NEGATIVE_Y"] = {"HIP_CUBEMAP_FACE_NEGATIVE_Y", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x03 + cuda2hipRename["CU_CUBEMAP_FACE_POSITIVE_Z"] = {"HIP_CUBEMAP_FACE_POSITIVE_Z", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x04 + cuda2hipRename["CU_CUBEMAP_FACE_NEGATIVE_Z"] = {"HIP_CUBEMAP_FACE_NEGATIVE_Z", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x05 cuda2hipRename["CUarray_format"] = {"hipArray_format", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_AD_FORMAT_UNSIGNED_INT8"] = {"HIP_AD_FORMAT_UNSIGNED_INT8", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x01 - cuda2hipRename["CU_AD_FORMAT_UNSIGNED_INT16"] = {"HIP_AD_FORMAT_UNSIGNED_INT16", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x02 - cuda2hipRename["CU_AD_FORMAT_UNSIGNED_INT32"] = {"HIP_AD_FORMAT_UNSIGNED_INT32", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x03 - cuda2hipRename["CU_AD_FORMAT_SIGNED_INT8"] = {"HIP_AD_FORMAT_SIGNED_INT8", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x08 - cuda2hipRename["CU_AD_FORMAT_SIGNED_INT16"] = {"HIP_AD_FORMAT_SIGNED_INT16", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x09 - cuda2hipRename["CU_AD_FORMAT_SIGNED_INT32"] = {"HIP_AD_FORMAT_SIGNED_INT32", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x0a - cuda2hipRename["CU_AD_FORMAT_HALF"] = {"HIP_AD_FORMAT_HALF", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x10 - cuda2hipRename["CU_AD_FORMAT_FLOAT"] = {"HIP_AD_FORMAT_FLOAT", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x20 + cuda2hipRename["CU_AD_FORMAT_UNSIGNED_INT8"] = {"HIP_AD_FORMAT_UNSIGNED_INT8", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x01 + cuda2hipRename["CU_AD_FORMAT_UNSIGNED_INT16"] = {"HIP_AD_FORMAT_UNSIGNED_INT16", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x02 + cuda2hipRename["CU_AD_FORMAT_UNSIGNED_INT32"] = {"HIP_AD_FORMAT_UNSIGNED_INT32", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x03 + cuda2hipRename["CU_AD_FORMAT_SIGNED_INT8"] = {"HIP_AD_FORMAT_SIGNED_INT8", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x08 + cuda2hipRename["CU_AD_FORMAT_SIGNED_INT16"] = {"HIP_AD_FORMAT_SIGNED_INT16", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x09 + cuda2hipRename["CU_AD_FORMAT_SIGNED_INT32"] = {"HIP_AD_FORMAT_SIGNED_INT32", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x0a + cuda2hipRename["CU_AD_FORMAT_HALF"] = {"HIP_AD_FORMAT_HALF", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x10 + cuda2hipRename["CU_AD_FORMAT_FLOAT"] = {"HIP_AD_FORMAT_FLOAT", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x20 // Compute mode - cuda2hipRename["CUcomputemode"] = {"hipComputemode", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // API_RUNTIME ANALOGUE (cudaComputeMode) - cuda2hipRename["CU_COMPUTEMODE_DEFAULT"] = {"hipComputeModeDefault", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0 - cuda2hipRename["CU_COMPUTEMODE_EXCLUSIVE"] = {"hipComputeModeExclusive", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 1 - cuda2hipRename["CU_COMPUTEMODE_PROHIBITED"] = {"hipComputeModeProhibited", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 2 - cuda2hipRename["CU_COMPUTEMODE_EXCLUSIVE_PROCESS"] = {"hipComputeModeExclusiveProcess", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 3 + cuda2hipRename["CUcomputemode"] = {"hipComputemode", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // API_RUNTIME ANALOGUE (cudaComputeMode) + cuda2hipRename["CU_COMPUTEMODE_DEFAULT"] = {"hipComputeModeDefault", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0 // API_RUNTIME ANALOGUE (cudaComputeModeDefault = 0) + cuda2hipRename["CU_COMPUTEMODE_EXCLUSIVE"] = {"hipComputeModeExclusive", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 1 // API_RUNTIME ANALOGUE (cudaComputeModeExclusive = 1) + cuda2hipRename["CU_COMPUTEMODE_PROHIBITED"] = {"hipComputeModeProhibited", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 2 // API_RUNTIME ANALOGUE (cudaComputeModeProhibited = 2) + cuda2hipRename["CU_COMPUTEMODE_EXCLUSIVE_PROCESS"] = {"hipComputeModeExclusiveProcess", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 3 // API_RUNTIME ANALOGUE (cudaComputeModeExclusiveProcess = 3) + + // unsupported yet by HIP [CUDA 8.0.44] + // Memory advise values + cuda2hipRename["CUmem_advise"] = {"hipMemAdvise", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // API_RUNTIME ANALOGUE (cudaComputeMode) + // cuda2hipRename["CUmem_advise_enum"] = {"hipMemAdvise", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["CU_MEM_ADVISE_SET_READ_MOSTLY"] = {"hipMemAdviseSetReadMostly", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 1 // API_RUNTIME ANALOGUE (cudaMemAdviseSetReadMostly = 1) + cuda2hipRename["CU_MEM_ADVISE_UNSET_READ_MOSTLY"] = {"hipMemAdviseUnsetReadMostly", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 2 // API_RUNTIME ANALOGUE (cudaMemAdviseUnsetReadMostly = 2) + cuda2hipRename["CU_MEM_ADVISE_SET_PREFERRED_LOCATION"] = {"hipMemAdviseSetPreferredLocation", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 3 // API_RUNTIME ANALOGUE (cudaMemAdviseSetPreferredLocation = 3) + cuda2hipRename["CU_MEM_ADVISE_UNSET_PREFERRED_LOCATION"] = {"hipMemAdviseUnsetPreferredLocation", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 4 // API_RUNTIME ANALOGUE (cudaMemAdviseUnsetPreferredLocation = 4) + cuda2hipRename["CU_MEM_ADVISE_SET_ACCESSED_BY"] = {"hipMemAdviseSetAccessedBy", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 5 // API_RUNTIME ANALOGUE (cudaMemAdviseSetAccessedBy = 5) + cuda2hipRename["CU_MEM_ADVISE_UNSET_ACCESSED_BY"] = {"hipMemAdviseUnsetAccessedBy", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 6 // API_RUNTIME ANALOGUE (cudaMemAdviseUnsetAccessedBy = 6) + // CUmem_range_attribute + cuda2hipRename["CUmem_range_attribute"] = {"hipMemRangeAttribute", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // API_RUNTIME ANALOGUE (cudaMemRangeAttribute) + // cuda2hipRename["CUmem_range_attribute_enum"] = {"hipMemRangeAttribute", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["CU_MEM_RANGE_ATTRIBUTE_READ_MOSTLY"] = {"hipMemRangeAttributeReadMostly", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 1 // API_RUNTIME ANALOGUE (cudaMemRangeAttributeReadMostly = 1) + cuda2hipRename["CU_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION"] = {"hipMemRangeAttributePreferredLocation", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 2 // API_RUNTIME ANALOGUE (cudaMemRangeAttributePreferredLocation = 2) + cuda2hipRename["CU_MEM_RANGE_ATTRIBUTE_ACCESSED_BY"] = {"hipMemRangeAttributeAccessedBy", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 3 // API_RUNTIME ANALOGUE (cudaMemRangeAttributeAccessedBy = 3) + cuda2hipRename["CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION"] = {"hipMemRangeAttributeLastPrefetchLocation", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 4 // API_RUNTIME ANALOGUE (cudaMemRangeAttributeLastPrefetchLocation = 4) + // Context flags cuda2hipRename["CUctx_flags"] = {"hipCctx_flags", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_CTX_SCHED_AUTO"] = {"HIP_CTX_SCHED_AUTO", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x00 - cuda2hipRename["CU_CTX_SCHED_SPIN"] = {"HIP_CTX_SCHED_SPIN", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x01 - cuda2hipRename["CU_CTX_SCHED_YIELD"] = {"HIP_CTX_SCHED_YIELD", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x02 - cuda2hipRename["CU_CTX_SCHED_BLOCKING_SYNC"] = {"HIP_CTX_SCHED_BLOCKING_SYNC", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x04 - cuda2hipRename["CU_CTX_BLOCKING_SYNC"] = {"HIP_CTX_BLOCKING_SYNC", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x04 - cuda2hipRename["CU_CTX_SCHED_MASK"] = {"HIP_CTX_SCHED_MASK", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x07 - cuda2hipRename["CU_CTX_MAP_HOST"] = {"HIP_CTX_MAP_HOST", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x08 - cuda2hipRename["CU_CTX_LMEM_RESIZE_TO_MAX"] = {"HIP_CTX_LMEM_RESIZE_TO_MAX", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x10 - cuda2hipRename["CU_CTX_FLAGS_MASK"] = {"HIP_CTX_FLAGS_MASK", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x1f + cuda2hipRename["CU_CTX_SCHED_AUTO"] = {"HIP_CTX_SCHED_AUTO", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x00 + cuda2hipRename["CU_CTX_SCHED_SPIN"] = {"HIP_CTX_SCHED_SPIN", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x01 + cuda2hipRename["CU_CTX_SCHED_YIELD"] = {"HIP_CTX_SCHED_YIELD", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x02 + cuda2hipRename["CU_CTX_SCHED_BLOCKING_SYNC"] = {"HIP_CTX_SCHED_BLOCKING_SYNC", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x04 + cuda2hipRename["CU_CTX_BLOCKING_SYNC"] = {"HIP_CTX_BLOCKING_SYNC", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x04 + cuda2hipRename["CU_CTX_SCHED_MASK"] = {"HIP_CTX_SCHED_MASK", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x07 + cuda2hipRename["CU_CTX_MAP_HOST"] = {"HIP_CTX_MAP_HOST", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x08 + cuda2hipRename["CU_CTX_LMEM_RESIZE_TO_MAX"] = {"HIP_CTX_LMEM_RESIZE_TO_MAX", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x10 + cuda2hipRename["CU_CTX_FLAGS_MASK"] = {"HIP_CTX_FLAGS_MASK", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x1f // Defines - cuda2hipRename["CU_LAUNCH_PARAM_BUFFER_POINTER"] = {"HIP_LAUNCH_PARAM_BUFFER_POINTER", CONV_DEV, API_DRIVER}; - cuda2hipRename["CU_LAUNCH_PARAM_BUFFER_SIZE"] = {"HIP_LAUNCH_PARAM_BUFFER_SIZE", CONV_DEV, API_DRIVER}; - cuda2hipRename["CU_LAUNCH_PARAM_END"] = {"HIP_LAUNCH_PARAM_END", CONV_DEV, API_DRIVER}; + cuda2hipRename["CU_LAUNCH_PARAM_BUFFER_POINTER"] = {"HIP_LAUNCH_PARAM_BUFFER_POINTER", CONV_DEV, API_DRIVER}; // ((void*)0x01) + cuda2hipRename["CU_LAUNCH_PARAM_BUFFER_SIZE"] = {"HIP_LAUNCH_PARAM_BUFFER_SIZE", CONV_DEV, API_DRIVER}; // ((void*)0x02) + cuda2hipRename["CU_LAUNCH_PARAM_END"] = {"HIP_LAUNCH_PARAM_END", CONV_DEV, API_DRIVER}; // ((void*)0x00) + cuda2hipRename["CU_IPC_HANDLE_SIZE"] = {"HIP_LAUNCH_PARAM_END", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 64 + cuda2hipRename["CU_MEMHOSTALLOC_DEVICEMAP"] = {"HIP_MEMHOSTALLOC_DEVICEMAP", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x02 + cuda2hipRename["CU_MEMHOSTALLOC_PORTABLE"] = {"HIP_MEMHOSTALLOC_PORTABLE", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x01 + cuda2hipRename["CU_MEMHOSTALLOC_WRITECOMBINED"] = {"HIP_MEMHOSTALLOC_WRITECOMBINED", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x04 + cuda2hipRename["CU_MEMHOSTREGISTER_DEVICEMAP"] = {"HIP_MEMHOSTREGISTER_DEVICEMAP", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x02 + cuda2hipRename["CU_MEMHOSTREGISTER_IOMEMORY"] = {"HIP_MEMHOSTREGISTER_IOMEMORY", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x04 + cuda2hipRename["CU_MEMHOSTREGISTER_PORTABLE"] = {"HIP_MEMHOSTREGISTER_PORTABLE", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x01 + cuda2hipRename["CU_PARAM_TR_DEFAULT"] = {"HIP_PARAM_TR_DEFAULT", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // -1 + cuda2hipRename["CU_STREAM_LEGACY"] = {"HIP_STREAM_LEGACY", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // ((CUstream)0x1) + cuda2hipRename["CU_STREAM_PER_THREAD"] = {"HIP_STREAM_PER_THREAD", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // ((CUstream)0x2) + cuda2hipRename["CU_TRSA_OVERRIDE_FORMAT"] = {"HIP_TRSA_OVERRIDE_FORMAT", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x01 + cuda2hipRename["CU_TRSF_NORMALIZED_COORDINATES"] = {"HIP_TRSF_NORMALIZED_COORDINATES", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED};// 0x02 + cuda2hipRename["CU_TRSF_READ_AS_INTEGER"] = {"HIP_TRSF_READ_AS_INTEGER", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x01 + cuda2hipRename["CU_TRSF_SRGB"] = {"HIP_TRSF_SRGB", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x10 + // Deprecated, use CUDA_ARRAY3D_LAYERED + cuda2hipRename["CUDA_ARRAY3D_2DARRAY"] = {"HIP_ARRAY3D_LAYERED", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x01 + cuda2hipRename["CUDA_ARRAY3D_CUBEMAP"] = {"HIP_ARRAY3D_CUBEMAP", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x04 + cuda2hipRename["CUDA_ARRAY3D_DEPTH_TEXTURE"] = {"HIP_ARRAY3D_DEPTH_TEXTURE", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x10 + cuda2hipRename["CUDA_ARRAY3D_LAYERED"] = {"HIP_ARRAY3D_LAYERED", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x01 + cuda2hipRename["CUDA_ARRAY3D_SURFACE_LDST"] = {"HIP_ARRAY3D_SURFACE_LDST", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x02 + cuda2hipRename["CUDA_ARRAY3D_TEXTURE_GATHER"] = {"HIP_ARRAY3D_TEXTURE_GATHER", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x08 + cuda2hipRename["CUDA_VERSION"] = {"HIP_VERSION", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 7050 // Types // NOTE: CUdevice might be changed to typedef int in the future. cuda2hipRename["CUdevice"] = {"hipDevice_t", CONV_TYPE, API_DRIVER}; - cuda2hipRename["CUdevice_attribute_enum"] = {"hipDeviceAttribute_t", CONV_TYPE, API_DRIVER}; // API_Runtime ANALOGUE (cudaDeviceAttr) - cuda2hipRename["CUdevice_attribute"] = {"hipDeviceAttribute_t", CONV_TYPE, API_DRIVER}; // API_Runtime ANALOGUE (cudaDeviceAttr) - // unsupported yet by HIP - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK"] = {"hipDeviceAttributeMaxThreadsPerBlock", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 1 // API_Runtime ANALOGUE (cudaDevAttrMaxThreadsPerBlock = 1) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X"] = {"hipDeviceAttributeMaxBlockDimX", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 2 // API_Runtime ANALOGUE (cudaDevAttrMaxBlockDimX = 2) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Y"] = {"hipDeviceAttributeMaxBlockDimY", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 3 // API_Runtime ANALOGUE (cudaDevAttrMaxBlockDimY = 3) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Z"] = {"hipDeviceAttributeMaxBlockDimZ", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 4 // API_Runtime ANALOGUE (cudaDevAttrMaxBlockDimZ = 4) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X"] = {"hipDeviceAttributeMaxGridDimX", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 5 // API_Runtime ANALOGUE (cudaDevAttrMaxGridDimX =5) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Y"] = {"hipDeviceAttributeMaxGridDimY", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 6 // API_Runtime ANALOGUE (cudaDevAttrMaxGridDimY = 6) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Z"] = {"hipDeviceAttributeMaxGridDimZ", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 7 // API_Runtime ANALOGUE (cudaDevAttrMaxGridDimZ - 7) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK"] = {"hipDeviceAttributeMaxSharedMemoryPerBlock", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 8 // API_Runtime ANALOGUE (cudaDevAttrMaxSharedMemoryPerBlock = 8) - // Deprecated, use CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK - cuda2hipRename["CU_DEVICE_ATTRIBUTE_SHARED_MEMORY_PER_BLOCK"] = {"hipDeviceAttributeMaxSharedMemoryPerBlock", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 8 - cuda2hipRename["CU_DEVICE_ATTRIBUTE_TOTAL_CONSTANT_MEMORY"] = {"hipDeviceAttributeTotalConstantMemory", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 9 // API_Runtime ANALOGUE (cudaDevAttrTotalConstantMemory = 9) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_WARP_SIZE"] = {"hipDeviceAttributeWarpSize", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 10 // API_Runtime ANALOGUE (cudaDevAttrWarpSize = 10) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_PITCH"] = {"hipDeviceAttributeMaxPitch", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 11 // API_Runtime ANALOGUE (cudaDevAttrMaxPitch = 11) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK"] = {"hipDeviceAttributeMaxRegistersPerBlock", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 12 // API_Runtime ANALOGUE (cudaDevAttrMaxRegistersPerBlock = 12) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_REGISTERS_PER_BLOCK"] = {"hipDeviceAttributeMaxRegistersPerBlock", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 12 - cuda2hipRename["CU_DEVICE_ATTRIBUTE_CLOCK_RATE"] = {"hipDeviceAttributeClockRate", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 13 // API_Runtime ANALOGUE (cudaDevAttrMaxRegistersPerBlock = 13) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT"] = {"hipDeviceAttributeTextureAlignment", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 14 // API_Runtime ANALOGUE (cudaDevAttrTextureAlignment = 14) - // Deprecated. Use instead CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT - cuda2hipRename["CU_DEVICE_ATTRIBUTE_GPU_OVERLAP"] = {"hipDeviceAttributeAsyncEngineCount", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 15 // API_Runtime ANALOGUE (cudaDevAttrGpuOverlap = 15) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT"] = {"hipDeviceAttributeMultiprocessorCount", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 16 // API_Runtime ANALOGUE (cudaDevAttrMultiProcessorCount = 16) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT"] = {"hipDeviceAttributeKernelExecTimeout", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 17 // API_Runtime ANALOGUE (cudaDevAttrKernelExecTimeout = 17) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_INTEGRATED"] = {"hipDeviceAttributeIntegrated", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 18 // API_Runtime ANALOGUE (cudaDevAttrIntegrated = 18) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY"] = {"hipDeviceAttributeCanMapHostMemory", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 19 // API_Runtime ANALOGUE (cudaDevAttrCanMapHostMemory = 19) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_COMPUTE_MODE"] = {"hipDeviceAttributeComputeMode", CONV_DEV, API_DRIVER}; // 20 // API_Runtime ANALOGUE (cudaDevAttrComputeMode = 20) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_WIDTH"] = {"hipDeviceAttributeMaxTexture1DWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 21 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture1DWidth = 21) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_WIDTH"] = {"hipDeviceAttributeMaxTexture2DWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 22 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DWidth = 22) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_HEIGHT"] = {"hipDeviceAttributeMaxTexture2DHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 23 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DHeight = 23) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH"] = {"hipDeviceAttributeMaxTexture3DWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 24 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture3DWidth = 24) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT"] = {"hipDeviceAttributeMaxTexture3DHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 25 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture3DHeight = 25) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH"] = {"hipDeviceAttributeMaxTexture3DDepth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 26 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture3DDepth = 26) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH"] = {"hipDeviceAttributeMaxTexture2DLayeredWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 27 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLayeredWidth = 27) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT"] = {"hipDeviceAttributeMaxTexture2DLayeredHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 28 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLayeredHeight = 28) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS"] = {"hipDeviceAttributeMaxTexture2DLayeredLayers", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 29 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLayeredLayers = 29) - // Deprecated, use CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_WIDTH"] = {"hipDeviceAttributeMaxTexture2DLayeredWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 27 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLayeredWidth = 27) - // Deprecated, use CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_HEIGHT"] = {"hipDeviceAttributeMaxTexture2DLayeredHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 28 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLayeredHeight = 28) - // Deprecated, use CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_NUMSLICES"] = {"hipDeviceAttributeMaxTexture2DLayeredLayers", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 29 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLayeredLayers = 29) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_SURFACE_ALIGNMENT"] = {"hipDeviceAttributeSurfaceAlignment", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 30 // API_Runtime ANALOGUE (cudaDevAttrSurfaceAlignment = 30) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS"] = {"hipDeviceAttributeConcurrentKernels", CONV_DEV, API_DRIVER}; // 31 // API_Runtime ANALOGUE (cudaDevAttrConcurrentKernels = 31) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_ECC_ENABLED"] = {"hipDeviceAttributeEccEnabled", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 32 // API_Runtime ANALOGUE (cudaDevAttrEccEnabled = 32) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_PCI_BUS_ID"] = {"hipDeviceAttributePciBusId", CONV_DEV, API_DRIVER}; // 33 // API_Runtime ANALOGUE (cudaDevAttrPciBusId = 33) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID"] = {"hipDeviceAttributePciDeviceId", CONV_DEV, API_DRIVER}; // 34 // API_Runtime ANALOGUE (cudaDevAttrPciDeviceId = 34) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_TCC_DRIVER"] = {"hipDeviceAttributeTccDriver", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 35 // API_Runtime ANALOGUE (cudaDevAttrTccDriver = 35) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MEMORY_CLOCK_RATE"] = {"hipDeviceAttributeMemoryClockRate", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 36 // API_Runtime ANALOGUE (cudaDevAttrMemoryClockRate = 36) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_GLOBAL_MEMORY_BUS_WIDTH"] = {"hipDeviceAttributeMemoryBusWidth", CONV_DEV, API_DRIVER}; // 37 // API_Runtime ANALOGUE (cudaDevAttrGlobalMemoryBusWidth = 37) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_L2_CACHE_SIZE"] = {"hipDeviceAttributeL2CacheSize", CONV_DEV, API_DRIVER}; // 38 // API_Runtime ANALOGUE (cudaDevAttrL2CacheSize = 38) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_MULTIPROCESSOR"] = {"hipDeviceAttributeMaxThreadsPerMultiProcessor", CONV_DEV, API_DRIVER}; // 39 // API_Runtime ANALOGUE (cudaDevAttrMaxThreadsPerMultiProcessor = 39) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT"] = {"hipDeviceAttributeAsyncEngineCount", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 40 // API_Runtime ANALOGUE (cudaDevAttrAsyncEngineCount = 40) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING"] = {"hipDeviceAttributeUnifiedAddressing", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 41 // API_Runtime ANALOGUE (cudaDevAttrUnifiedAddressing = 41) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_WIDTH"] = {"hipDeviceAttributeMaxTexture1DLayeredWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 42 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture1DLayeredWidth = 42) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_LAYERS"] = {"hipDeviceAttributeMaxTexture1DLayeredLayers", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 43 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture1DLayeredLayers = 43) - // deprecated, do not use - cuda2hipRename["CU_DEVICE_ATTRIBUTE_CAN_TEX2D_GATHER"] = {"hipDeviceAttributeCanTex2DGather", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 44 // API_Runtime ANALOGUE (no) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_WIDTH"] = {"hipDeviceAttributeMaxTexture2DGatherWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 45 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DGatherWidth = 45) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_HEIGHT"] = {"hipDeviceAttributeMaxTexture2DGatherHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 46 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DGatherHeight = 46) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH_ALTERNATE"] = {"hipDeviceAttributeMaxTexture3DWidthAlternate", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 47 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture3DWidthAlt = 47) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT_ALTERNATE"] = {"hipDeviceAttributeMaxTexture3DHeightAlternate", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 48 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture3DHeightAlt = 48) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH_ALTERNATE"] = {"hipDeviceAttributeMaxTexture3DDepthAlternate", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 49 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture3DDepthAlt = 49) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID"] = {"hipDeviceAttributePciDomainId", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 50 // API_Runtime ANALOGUE (cudaDevAttrPciDomainId = 50) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_TEXTURE_PITCH_ALIGNMENT"] = {"hipDeviceAttributeTexturePitchAlignment", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 51 // API_Runtime ANALOGUE (cudaDevAttrTexturePitchAlignment = 51) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_WIDTH"] = {"hipDeviceAttributeMaxTextureCubemapWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 52 // API_Runtime ANALOGUE (cudaDevAttrMaxTextureCubemapWidth = 52) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_WIDTH"] = {"hipDeviceAttributeMaxTextureCubemapLayeredWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 53 // API_Runtime ANALOGUE (cudaDevAttrMaxTextureCubemapLayeredWidth = 53) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_LAYERS"] = {"hipDeviceAttributeMaxTextureCubemapLayeredLayers", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 54 // API_Runtime ANALOGUE (cudaDevAttrMaxTextureCubemapLayeredLayers = 54) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_WIDTH"] = {"hipDeviceAttributeMaxSurface1DWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 55 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface1DWidth = 55) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_WIDTH"] = {"hipDeviceAttributeMaxSurface2DWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 56 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface2DWidth = 56) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_HEIGHT"] = {"hipDeviceAttributeMaxSurface2DHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 57 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface2DHeight = 57) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_WIDTH"] = {"hipDeviceAttributeMaxSurface3DWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 58 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface3DWidth = 58) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_HEIGHT"] = {"hipDeviceAttributeMaxSurface3DHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 59 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface3DHeight = 59) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_DEPTH"] = {"hipDeviceAttributeMaxSurface3DDepth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 60 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface3DDepth = 60) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_WIDTH"] = {"hipDeviceAttributeMaxSurface1DLayeredWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 61 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface1DLayeredWidth = 61) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_LAYERS"] = {"hipDeviceAttributeMaxSurface1DLayeredLayers", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 62 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface1DLayeredLayers = 62) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_WIDTH"] = {"hipDeviceAttributeMaxSurface2DLayeredWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 63 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface2DLayeredWidth = 63) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_HEIGHT"] = {"hipDeviceAttributeMaxSurface2DLayeredHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 64 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface2DLayeredHeight = 64) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_LAYERS"] = {"hipDeviceAttributeMaxSurface2DLayeredLayers", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 65 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface2DLayeredLayers = 65) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_WIDTH"] = {"hipDeviceAttributeMaxSurfaceCubemapWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 66 // API_Runtime ANALOGUE (cudaDevAttrMaxSurfaceCubemapWidth = 66) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_WIDTH"] = {"hipDeviceAttributeMaxSurfaceCubemapLayeredWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 67 // API_Runtime ANALOGUE (cudaDevAttrMaxSurfaceCubemapLayeredWidth = 67) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_LAYERS"] = {"hipDeviceAttributeMaxSurfaceCubemapLayeredLayers", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 68 // API_Runtime ANALOGUE (cudaDevAttrMaxSurfaceCubemapLayeredLayers = 68) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LINEAR_WIDTH"] = {"hipDeviceAttributeMaxTexture1DLinearWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 69 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture1DLinearWidth = 69) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_WIDTH"] = {"hipDeviceAttributeMaxTexture2DLinearWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 70 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLinearWidth = 70) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_HEIGHT"] = {"hipDeviceAttributeMaxTexture2DLinearHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 71 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLinearHeight = 71) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_PITCH"] = {"hipDeviceAttributeMaxTexture2DLinearPitch", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 72 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLinearPitch = 72) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_WIDTH"] = {"hipDeviceAttributeMaxTexture2DMipmappedWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 73 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DMipmappedWidth = 73) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_HEIGHT"] = {"hipDeviceAttributeMaxTexture2DMipmappedHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 74 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DMipmappedHeight = 74) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR"] = {"hipDeviceAttributeComputeCapabilityMajor", CONV_DEV, API_DRIVER}; // 75 // API_Runtime ANALOGUE (cudaDevAttrComputeCapabilityMajor = 75) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR"] = {"hipDeviceAttributeComputeCapabilityMinor", CONV_DEV, API_DRIVER}; // 76 // API_Runtime ANALOGUE (cudaDevAttrComputeCapabilityMinor = 76) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_MIPMAPPED_WIDTH"] = {"hipDeviceAttributeMaxTexture1DMipmappedWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 77 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture1DMipmappedWidth = 77) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_STREAM_PRIORITIES_SUPPORTED"] = {"hipDeviceAttributeStreamPrioritiesSupported", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 78 // API_Runtime ANALOGUE (cudaDevAttrStreamPrioritiesSupported = 78) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_GLOBAL_L1_CACHE_SUPPORTED"] = {"hipDeviceAttributeGlobalL1CacheSupported", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 79 // API_Runtime ANALOGUE (cudaDevAttrGlobalL1CacheSupported = 79) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_LOCAL_L1_CACHE_SUPPORTED"] = {"hipDeviceAttributeLocalL1CacheSupported", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 80 // API_Runtime ANALOGUE (cudaDevAttrLocalL1CacheSupported = 80) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_MULTIPROCESSOR"] = {"hipDeviceAttributeMaxSharedMemoryPerMultiprocessor", CONV_DEV, API_DRIVER}; // 81 // API_Runtime ANALOGUE (cudaDevAttrMaxSharedMemoryPerMultiprocessor = 81) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR"] = {"hipDeviceAttributeMaxRegistersPerMultiprocessor", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 82 // API_Runtime ANALOGUE (cudaDevAttrMaxRegistersPerMultiprocessor = 82) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MANAGED_MEMORY"] = {"hipDeviceAttributeManagedMemory", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 83 // API_Runtime ANALOGUE (cudaDevAttrManagedMemory = 83) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD"] = {"hipDeviceAttributeIsMultiGpuBoard", CONV_DEV, API_DRIVER}; // 84 // API_Runtime ANALOGUE (cudaDevAttrIsMultiGpuBoard = 84) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD_GROUP_ID"] = {"hipDeviceAttributeMultiGpuBoardGroupId", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 85 // API_Runtime ANALOGUE (cudaDevAttrMultiGpuBoardGroupID = 85) - cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX"] = {"hipDeviceAttributeMax", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 86 // API_Runtime ANALOGUE (no) + cuda2hipRename["CUdevice_attribute_enum"] = {"hipDeviceAttribute_t", CONV_TYPE, API_DRIVER}; // API_Runtime ANALOGUE (cudaDeviceAttr) + cuda2hipRename["CUdevice_attribute"] = {"hipDeviceAttribute_t", CONV_TYPE, API_DRIVER}; // API_Runtime ANALOGUE (cudaDeviceAttr) + cuda2hipRename["CUdeviceptr"] = {"hipDeviceptr_t", CONV_TYPE, API_DRIVER}; + // CUDA: "The types::CUarray and struct ::cudaArray * represent the same data type and may be used interchangeably by casting the two types between each other." + // typedef struct cudaArray *cudaArray_t; + // typedef struct CUarray_st *CUarray; + cuda2hipRename["CUarray_st"] = {"hipArray", CONV_MEM, API_RUNTIME}; // API_Runtime ANALOGUE (cudaArray) + cuda2hipRename["CUarray"] = {"hipArray *", CONV_TYPE, API_DRIVER}; // API_Runtime ANALOGUE (cudaArray_t) + // unsupported yet by HIP + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK"] = {"hipDeviceAttributeMaxThreadsPerBlock", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 1 // API_Runtime ANALOGUE (cudaDevAttrMaxThreadsPerBlock = 1) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X"] = {"hipDeviceAttributeMaxBlockDimX", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 2 // API_Runtime ANALOGUE (cudaDevAttrMaxBlockDimX = 2) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Y"] = {"hipDeviceAttributeMaxBlockDimY", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 3 // API_Runtime ANALOGUE (cudaDevAttrMaxBlockDimY = 3) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Z"] = {"hipDeviceAttributeMaxBlockDimZ", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 4 // API_Runtime ANALOGUE (cudaDevAttrMaxBlockDimZ = 4) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X"] = {"hipDeviceAttributeMaxGridDimX", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 5 // API_Runtime ANALOGUE (cudaDevAttrMaxGridDimX =5) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Y"] = {"hipDeviceAttributeMaxGridDimY", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 6 // API_Runtime ANALOGUE (cudaDevAttrMaxGridDimY = 6) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Z"] = {"hipDeviceAttributeMaxGridDimZ", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 7 // API_Runtime ANALOGUE (cudaDevAttrMaxGridDimZ - 7) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK"] = {"hipDeviceAttributeMaxSharedMemoryPerBlock", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 8 // API_Runtime ANALOGUE (cudaDevAttrMaxSharedMemoryPerBlock = 8) + // Deprecated, use CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK + cuda2hipRename["CU_DEVICE_ATTRIBUTE_SHARED_MEMORY_PER_BLOCK"] = {"hipDeviceAttributeMaxSharedMemoryPerBlock", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 8 + cuda2hipRename["CU_DEVICE_ATTRIBUTE_TOTAL_CONSTANT_MEMORY"] = {"hipDeviceAttributeTotalConstantMemory", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 9 // API_Runtime ANALOGUE (cudaDevAttrTotalConstantMemory = 9) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_WARP_SIZE"] = {"hipDeviceAttributeWarpSize", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 10 // API_Runtime ANALOGUE (cudaDevAttrWarpSize = 10) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_PITCH"] = {"hipDeviceAttributeMaxPitch", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 11 // API_Runtime ANALOGUE (cudaDevAttrMaxPitch = 11) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK"] = {"hipDeviceAttributeMaxRegistersPerBlock", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 12 // API_Runtime ANALOGUE (cudaDevAttrMaxRegistersPerBlock = 12) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_REGISTERS_PER_BLOCK"] = {"hipDeviceAttributeMaxRegistersPerBlock", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 12 + cuda2hipRename["CU_DEVICE_ATTRIBUTE_CLOCK_RATE"] = {"hipDeviceAttributeClockRate", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 13 // API_Runtime ANALOGUE (cudaDevAttrMaxRegistersPerBlock = 13) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT"] = {"hipDeviceAttributeTextureAlignment", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 14 // API_Runtime ANALOGUE (cudaDevAttrTextureAlignment = 14) + // Deprecated. Use instead CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT + cuda2hipRename["CU_DEVICE_ATTRIBUTE_GPU_OVERLAP"] = {"hipDeviceAttributeAsyncEngineCount", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 15 // API_Runtime ANALOGUE (cudaDevAttrGpuOverlap = 15) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT"] = {"hipDeviceAttributeMultiprocessorCount", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 16 // API_Runtime ANALOGUE (cudaDevAttrMultiProcessorCount = 16) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT"] = {"hipDeviceAttributeKernelExecTimeout", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 17 // API_Runtime ANALOGUE (cudaDevAttrKernelExecTimeout = 17) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_INTEGRATED"] = {"hipDeviceAttributeIntegrated", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 18 // API_Runtime ANALOGUE (cudaDevAttrIntegrated = 18) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY"] = {"hipDeviceAttributeCanMapHostMemory", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 19 // API_Runtime ANALOGUE (cudaDevAttrCanMapHostMemory = 19) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_COMPUTE_MODE"] = {"hipDeviceAttributeComputeMode", CONV_DEV, API_DRIVER}; // 20 // API_Runtime ANALOGUE (cudaDevAttrComputeMode = 20) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_WIDTH"] = {"hipDeviceAttributeMaxTexture1DWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 21 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture1DWidth = 21) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_WIDTH"] = {"hipDeviceAttributeMaxTexture2DWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 22 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DWidth = 22) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_HEIGHT"] = {"hipDeviceAttributeMaxTexture2DHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 23 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DHeight = 23) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH"] = {"hipDeviceAttributeMaxTexture3DWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 24 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture3DWidth = 24) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT"] = {"hipDeviceAttributeMaxTexture3DHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 25 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture3DHeight = 25) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH"] = {"hipDeviceAttributeMaxTexture3DDepth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 26 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture3DDepth = 26) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH"] = {"hipDeviceAttributeMaxTexture2DLayeredWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 27 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLayeredWidth = 27) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT"] = {"hipDeviceAttributeMaxTexture2DLayeredHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 28 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLayeredHeight = 28) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS"] = {"hipDeviceAttributeMaxTexture2DLayeredLayers", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 29 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLayeredLayers = 29) + // Deprecated, use CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_WIDTH"] = {"hipDeviceAttributeMaxTexture2DLayeredWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 27 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLayeredWidth = 27) + // Deprecated, use CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_HEIGHT"] = {"hipDeviceAttributeMaxTexture2DLayeredHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 28 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLayeredHeight = 28) + // Deprecated, use CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_NUMSLICES"] = {"hipDeviceAttributeMaxTexture2DLayeredLayers", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 29 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLayeredLayers = 29) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_SURFACE_ALIGNMENT"] = {"hipDeviceAttributeSurfaceAlignment", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 30 // API_Runtime ANALOGUE (cudaDevAttrSurfaceAlignment = 30) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS"] = {"hipDeviceAttributeConcurrentKernels", CONV_DEV, API_DRIVER}; // 31 // API_Runtime ANALOGUE (cudaDevAttrConcurrentKernels = 31) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_ECC_ENABLED"] = {"hipDeviceAttributeEccEnabled", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 32 // API_Runtime ANALOGUE (cudaDevAttrEccEnabled = 32) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_PCI_BUS_ID"] = {"hipDeviceAttributePciBusId", CONV_DEV, API_DRIVER}; // 33 // API_Runtime ANALOGUE (cudaDevAttrPciBusId = 33) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID"] = {"hipDeviceAttributePciDeviceId", CONV_DEV, API_DRIVER}; // 34 // API_Runtime ANALOGUE (cudaDevAttrPciDeviceId = 34) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_TCC_DRIVER"] = {"hipDeviceAttributeTccDriver", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 35 // API_Runtime ANALOGUE (cudaDevAttrTccDriver = 35) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MEMORY_CLOCK_RATE"] = {"hipDeviceAttributeMemoryClockRate", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 36 // API_Runtime ANALOGUE (cudaDevAttrMemoryClockRate = 36) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_GLOBAL_MEMORY_BUS_WIDTH"] = {"hipDeviceAttributeMemoryBusWidth", CONV_DEV, API_DRIVER}; // 37 // API_Runtime ANALOGUE (cudaDevAttrGlobalMemoryBusWidth = 37) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_L2_CACHE_SIZE"] = {"hipDeviceAttributeL2CacheSize", CONV_DEV, API_DRIVER}; // 38 // API_Runtime ANALOGUE (cudaDevAttrL2CacheSize = 38) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_MULTIPROCESSOR"] = {"hipDeviceAttributeMaxThreadsPerMultiProcessor", CONV_DEV, API_DRIVER}; // 39 // API_Runtime ANALOGUE (cudaDevAttrMaxThreadsPerMultiProcessor = 39) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT"] = {"hipDeviceAttributeAsyncEngineCount", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 40 // API_Runtime ANALOGUE (cudaDevAttrAsyncEngineCount = 40) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING"] = {"hipDeviceAttributeUnifiedAddressing", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 41 // API_Runtime ANALOGUE (cudaDevAttrUnifiedAddressing = 41) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_WIDTH"] = {"hipDeviceAttributeMaxTexture1DLayeredWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 42 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture1DLayeredWidth = 42) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_LAYERS"] = {"hipDeviceAttributeMaxTexture1DLayeredLayers", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 43 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture1DLayeredLayers = 43) + // deprecated, do not use + cuda2hipRename["CU_DEVICE_ATTRIBUTE_CAN_TEX2D_GATHER"] = {"hipDeviceAttributeCanTex2DGather", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 44 // API_Runtime ANALOGUE (no) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_WIDTH"] = {"hipDeviceAttributeMaxTexture2DGatherWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 45 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DGatherWidth = 45) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_HEIGHT"] = {"hipDeviceAttributeMaxTexture2DGatherHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 46 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DGatherHeight = 46) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH_ALTERNATE"] = {"hipDeviceAttributeMaxTexture3DWidthAlternate", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 47 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture3DWidthAlt = 47) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT_ALTERNATE"] = {"hipDeviceAttributeMaxTexture3DHeightAlternate", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 48 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture3DHeightAlt = 48) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH_ALTERNATE"] = {"hipDeviceAttributeMaxTexture3DDepthAlternate", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 49 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture3DDepthAlt = 49) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID"] = {"hipDeviceAttributePciDomainId", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 50 // API_Runtime ANALOGUE (cudaDevAttrPciDomainId = 50) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_TEXTURE_PITCH_ALIGNMENT"] = {"hipDeviceAttributeTexturePitchAlignment", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 51 // API_Runtime ANALOGUE (cudaDevAttrTexturePitchAlignment = 51) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_WIDTH"] = {"hipDeviceAttributeMaxTextureCubemapWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 52 // API_Runtime ANALOGUE (cudaDevAttrMaxTextureCubemapWidth = 52) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_WIDTH"] = {"hipDeviceAttributeMaxTextureCubemapLayeredWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 53 // API_Runtime ANALOGUE (cudaDevAttrMaxTextureCubemapLayeredWidth = 53) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_LAYERS"] = {"hipDeviceAttributeMaxTextureCubemapLayeredLayers", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 54 // API_Runtime ANALOGUE (cudaDevAttrMaxTextureCubemapLayeredLayers = 54) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_WIDTH"] = {"hipDeviceAttributeMaxSurface1DWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 55 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface1DWidth = 55) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_WIDTH"] = {"hipDeviceAttributeMaxSurface2DWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 56 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface2DWidth = 56) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_HEIGHT"] = {"hipDeviceAttributeMaxSurface2DHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 57 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface2DHeight = 57) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_WIDTH"] = {"hipDeviceAttributeMaxSurface3DWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 58 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface3DWidth = 58) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_HEIGHT"] = {"hipDeviceAttributeMaxSurface3DHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 59 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface3DHeight = 59) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_DEPTH"] = {"hipDeviceAttributeMaxSurface3DDepth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 60 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface3DDepth = 60) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_WIDTH"] = {"hipDeviceAttributeMaxSurface1DLayeredWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 61 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface1DLayeredWidth = 61) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_LAYERS"] = {"hipDeviceAttributeMaxSurface1DLayeredLayers", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 62 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface1DLayeredLayers = 62) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_WIDTH"] = {"hipDeviceAttributeMaxSurface2DLayeredWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 63 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface2DLayeredWidth = 63) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_HEIGHT"] = {"hipDeviceAttributeMaxSurface2DLayeredHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 64 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface2DLayeredHeight = 64) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_LAYERS"] = {"hipDeviceAttributeMaxSurface2DLayeredLayers", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 65 // API_Runtime ANALOGUE (cudaDevAttrMaxSurface2DLayeredLayers = 65) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_WIDTH"] = {"hipDeviceAttributeMaxSurfaceCubemapWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 66 // API_Runtime ANALOGUE (cudaDevAttrMaxSurfaceCubemapWidth = 66) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_WIDTH"] = {"hipDeviceAttributeMaxSurfaceCubemapLayeredWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 67 // API_Runtime ANALOGUE (cudaDevAttrMaxSurfaceCubemapLayeredWidth = 67) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_LAYERS"] = {"hipDeviceAttributeMaxSurfaceCubemapLayeredLayers", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 68 // API_Runtime ANALOGUE (cudaDevAttrMaxSurfaceCubemapLayeredLayers = 68) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LINEAR_WIDTH"] = {"hipDeviceAttributeMaxTexture1DLinearWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 69 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture1DLinearWidth = 69) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_WIDTH"] = {"hipDeviceAttributeMaxTexture2DLinearWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 70 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLinearWidth = 70) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_HEIGHT"] = {"hipDeviceAttributeMaxTexture2DLinearHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 71 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLinearHeight = 71) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_PITCH"] = {"hipDeviceAttributeMaxTexture2DLinearPitch", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 72 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DLinearPitch = 72) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_WIDTH"] = {"hipDeviceAttributeMaxTexture2DMipmappedWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 73 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DMipmappedWidth = 73) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_HEIGHT"] = {"hipDeviceAttributeMaxTexture2DMipmappedHeight", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 74 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture2DMipmappedHeight = 74) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR"] = {"hipDeviceAttributeComputeCapabilityMajor", CONV_DEV, API_DRIVER}; // 75 // API_Runtime ANALOGUE (cudaDevAttrComputeCapabilityMajor = 75) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR"] = {"hipDeviceAttributeComputeCapabilityMinor", CONV_DEV, API_DRIVER}; // 76 // API_Runtime ANALOGUE (cudaDevAttrComputeCapabilityMinor = 76) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_MIPMAPPED_WIDTH"] = {"hipDeviceAttributeMaxTexture1DMipmappedWidth", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 77 // API_Runtime ANALOGUE (cudaDevAttrMaxTexture1DMipmappedWidth = 77) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_STREAM_PRIORITIES_SUPPORTED"] = {"hipDeviceAttributeStreamPrioritiesSupported", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 78 // API_Runtime ANALOGUE (cudaDevAttrStreamPrioritiesSupported = 78) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_GLOBAL_L1_CACHE_SUPPORTED"] = {"hipDeviceAttributeGlobalL1CacheSupported", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 79 // API_Runtime ANALOGUE (cudaDevAttrGlobalL1CacheSupported = 79) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_LOCAL_L1_CACHE_SUPPORTED"] = {"hipDeviceAttributeLocalL1CacheSupported", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 80 // API_Runtime ANALOGUE (cudaDevAttrLocalL1CacheSupported = 80) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_MULTIPROCESSOR"] = {"hipDeviceAttributeMaxSharedMemoryPerMultiprocessor", CONV_DEV, API_DRIVER}; // 81 // API_Runtime ANALOGUE (cudaDevAttrMaxSharedMemoryPerMultiprocessor = 81) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR"] = {"hipDeviceAttributeMaxRegistersPerMultiprocessor", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 82 // API_Runtime ANALOGUE (cudaDevAttrMaxRegistersPerMultiprocessor = 82) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MANAGED_MEMORY"] = {"hipDeviceAttributeManagedMemory", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 83 // API_Runtime ANALOGUE (cudaDevAttrManagedMemory = 83) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD"] = {"hipDeviceAttributeIsMultiGpuBoard", CONV_DEV, API_DRIVER}; // 84 // API_Runtime ANALOGUE (cudaDevAttrIsMultiGpuBoard = 84) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD_GROUP_ID"] = {"hipDeviceAttributeMultiGpuBoardGroupId", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 85 // API_Runtime ANALOGUE (cudaDevAttrMultiGpuBoardGroupID = 85) // unsupported yet by HIP [CUDA 8.0.44] - cuda2hipRename["CU_DEVICE_ATTRIBUTE_HOST_NATIVE_ATOMIC_SUPPORTED"] = {"hipDeviceAttributeHostNativeAtomicSupported", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_DEVICE_ATTRIBUTE_SINGLE_TO_DOUBLE_PRECISION_PERF_RATIO"] = {"hipDeviceAttributeSingleToDoublePrecisionPerfRatio", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS"] = {"hipDeviceAttributePageableMemoryAccess", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_DEVICE_ATTRIBUTE_CONCURRENT_MANAGED_ACCESS"] = {"hipDeviceAttributeConcurrentManagedAccess", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_DEVICE_ATTRIBUTE_COMPUTE_PREEMPTION_SUPPORTED"] = {"hipDeviceAttributeComputePreemptionSupported", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_DEVICE_ATTRIBUTE_CAN_USE_HOST_POINTER_FOR_REGISTERED_MEM"] = {"hipDeviceAttributeCanUseHostPointerForRegisteredMem", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["CU_DEVICE_ATTRIBUTE_HOST_NATIVE_ATOMIC_SUPPORTED"] = {"hipDeviceAttributeHostNativeAtomicSupported", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 86 // API_Runtime ANALOGUE (cudaDevAttrHostNativeAtomicSupported = 86) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_SINGLE_TO_DOUBLE_PRECISION_PERF_RATIO"] = {"hipDeviceAttributeSingleToDoublePrecisionPerfRatio", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 87 // API_Runtime ANALOGUE (cudaDevAttrSingleToDoublePrecisionPerfRatio = 87) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS"] = {"hipDeviceAttributePageableMemoryAccess", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 88 // API_Runtime ANALOGUE (cudaDevAttrPageableMemoryAccess = 88) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_CONCURRENT_MANAGED_ACCESS"] = {"hipDeviceAttributeConcurrentManagedAccess", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 89 // API_Runtime ANALOGUE (cudaDevAttrConcurrentManagedAccess = 89) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_COMPUTE_PREEMPTION_SUPPORTED"] = {"hipDeviceAttributeComputePreemptionSupported", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 90 // API_Runtime ANALOGUE (cudaDevAttrComputePreemptionSupported = 90) + cuda2hipRename["CU_DEVICE_ATTRIBUTE_CAN_USE_HOST_POINTER_FOR_REGISTERED_MEM"] = {"hipDeviceAttributeCanUseHostPointerForRegisteredMem", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 91 // API_Runtime ANALOGUE (cudaDevAttrCanUseHostPointerForRegisteredMem = 91) + + cuda2hipRename["CU_DEVICE_ATTRIBUTE_MAX"] = {"hipDeviceAttributeMax", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 92 // API_Runtime ANALOGUE (no) cuda2hipRename["CUdevprop_st"] = {"hipDeviceProp_t", CONV_TYPE, API_DRIVER}; cuda2hipRename["CUdevprop"] = {"hipDeviceProp_t", CONV_TYPE, API_DRIVER}; // TODO: Analogues enum is needed in HIP. Couldn't map enum to struct hipPointerAttribute_t. // TODO: Do for Pointer Attributes the same as for Device Attributes. - // cuda2hipRename["CUpointer_attribute_enum"] = {"hipPointerAttribute", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // API_Runtime ANALOGUE (no) - // cuda2hipRename["CUpointer_attribute"] = {"hipPointerAttribute", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // API_Runtime ANALOGUE (no) + // cuda2hipRename["CUpointer_attribute_enum"] = {"hipPointerAttribute_t", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // API_Runtime ANALOGUE (no) + // cuda2hipRename["CUpointer_attribute"] = {"hipPointerAttribute_t", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // API_Runtime ANALOGUE (no) cuda2hipRename["CU_POINTER_ATTRIBUTE_CONTEXT"] = {"hipPointerAttributeContext", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 1 // API_Runtime ANALOGUE (no) cuda2hipRename["CU_POINTER_ATTRIBUTE_MEMORY_TYPE"] = {"hipPointerAttributeMemoryType", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 2 // API_Runtime ANALOGUE (no) cuda2hipRename["CU_POINTER_ATTRIBUTE_DEVICE_POINTER"] = {"hipPointerAttributeDevicePointer", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 3 // API_Runtime ANALOGUE (no) @@ -565,13 +626,17 @@ struct cuda2hipMap { cuda2hipRename["CU_POINTER_ATTRIBUTE_BUFFER_ID"] = {"hipPointerAttributeBufferId", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 7 // API_Runtime ANALOGUE (no) cuda2hipRename["CU_POINTER_ATTRIBUTE_IS_MANAGED"] = {"hipPointerAttributeIsManaged", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 8 // API_Runtime ANALOGUE (no) - // pointer to CUfunc_st cuda2hipRename["CUfunction"] = {"hipFunction_t", CONV_TYPE, API_DRIVER}; - // TODO: in HIP ihipModuleSymbol_t should be declared in hip_runtime_api.h, not in hcc_detail/hip_runtime_api.h, as it's analogue CUfunc_st is declared also in cuda.h - // ToDO: examples are needed with CUfunc_st + // TODO: move "typedef struct ihipModuleSymbol_t *hipFunction_t;" from hcc_details to HIP + // typedef struct CUfunc_st *CUfunction; // cuda2hipRename["CUfunc_st"] = {"ihipModuleSymbol_t", CONV_TYPE, API_DRIVER}; + // typedef struct CUgraphicsResource_st *CUgraphicsResource; + cuda2hipRename["CUgraphicsResource"] = {"hipGraphicsResource_t", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; + // typedef struct CUmipmappedArray_st *CUmipmappedArray; + cuda2hipRename["CUmipmappedArray"] = {"hipMipmappedArray_t", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; + // unsupported yet by HIP cuda2hipRename["CUfunction_attribute"] = {"hipFuncAttribute_t", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["CUfunction_attribute_enum"] = {"hipFuncAttribute_t", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; @@ -607,8 +672,6 @@ struct cuda2hipMap { cuda2hipRename["CU_OCCUPANCY_DEFAULT"] = {"hipOccupancyDefault", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x00 // API_Runtime ANALOGUE (cudaOccupancyDefault = 0x0) cuda2hipRename["CU_OCCUPANCY_DISABLE_CACHING_OVERRIDE"] = {"hipOccupancyDisableCachingOverride", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; // 0x01 // API_Runtime ANALOGUE (cudaOccupancyDisableCachingOverride = 0x1) - - cuda2hipRename["CUfunc_cache_enum"] = {"hipFuncCache", CONV_TYPE, API_DRIVER}; // API_Runtime ANALOGUE (cudaFuncCache) cuda2hipRename["CUfunc_cache"] = {"hipFuncCache", CONV_TYPE, API_DRIVER}; // API_Runtime ANALOGUE (cudaFuncCache) cuda2hipRename["CU_FUNC_CACHE_PREFER_NONE"] = {"hipFuncCachePreferNone", CONV_CACHE, API_DRIVER}; // 0x00 // API_Runtime ANALOGUE (cudaFilterModePoint = 0) @@ -637,24 +700,28 @@ struct cuda2hipMap { cuda2hipRename["CU_PREFER_PTX"] = {"hipJitFallbackPreferPtx", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["CU_PREFER_BINARY"] = {"hipJitFallbackPreferBinary", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; // enum CUjit_option/CUjit_option_enum - cuda2hipRename["CUjit_option"] = {"hipJitOption", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; // API_Runtime ANALOGUE (no) - cuda2hipRename["CUjit_option_enum"] = {"hipJitOption", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_MAX_REGISTERS"] = {"hipJitOptionMaxRegisters", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_THREADS_PER_BLOCK"] = {"hipJitOptionThreadsPerBlock", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_WALL_TIME"] = {"hipJitOptionWallTime", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_INFO_LOG_BUFFER"] = {"hipJitOptionInfoLogBuffer", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_INFO_LOG_BUFFER_SIZE_BYTES"] = {"hipJitOptionInfoLogBufferSizeBytes", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_ERROR_LOG_BUFFER"] = {"hipJitOptionErrorLogBuffer", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_ERROR_LOG_BUFFER_SIZE_BYTES"] = {"hipJitOptionErrorLogBufferSizeBytes", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_OPTIMIZATION_LEVEL"] = {"hipJitOptionOptimizationLevel", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_TARGET_FROM_CUCONTEXT"] = {"hipJitOptionTargetFromContext", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_TARGET"] = {"hipJitOptionTarget", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_FALLBACK_STRATEGY"] = {"hipJitOptionFallbackStrategy", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_GENERATE_DEBUG_INFO"] = {"hipJitOptionGenerateDebugInfo", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_LOG_VERBOSE"] = {"hipJitOptionLogVerbose", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_GENERATE_LINE_INFO"] = {"hipJitOptionLogVerbose", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_CACHE_MODE"] = {"hipJitOptionCacheMode", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["CU_JIT_NUM_OPTIONS"] = {"hipJitOptionNumOptions", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["CUjit_option"] = {"hipJitOption", CONV_JIT, API_DRIVER}; // API_Runtime ANALOGUE (no) + cuda2hipRename["CUjit_option_enum"] = {"hipJitOption", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_MAX_REGISTERS"] = {"hipJitOptionMaxRegisters", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_THREADS_PER_BLOCK"] = {"hipJitOptionThreadsPerBlock", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_WALL_TIME"] = {"hipJitOptionWallTime", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_INFO_LOG_BUFFER"] = {"hipJitOptionInfoLogBuffer", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_INFO_LOG_BUFFER_SIZE_BYTES"] = {"hipJitOptionInfoLogBufferSizeBytes", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_ERROR_LOG_BUFFER"] = {"hipJitOptionErrorLogBuffer", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_ERROR_LOG_BUFFER_SIZE_BYTES"] = {"hipJitOptionErrorLogBufferSizeBytes", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_OPTIMIZATION_LEVEL"] = {"hipJitOptionOptimizationLevel", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_TARGET_FROM_CUCONTEXT"] = {"hipJitOptionTargetFromContext", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_TARGET"] = {"hipJitOptionTarget", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_FALLBACK_STRATEGY"] = {"hipJitOptionFallbackStrategy", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_GENERATE_DEBUG_INFO"] = {"hipJitOptionGenerateDebugInfo", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_LOG_VERBOSE"] = {"hipJitOptionLogVerbose", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_GENERATE_LINE_INFO"] = {"hipJitOptionGenerateLineInfo", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_CACHE_MODE"] = {"hipJitOptionCacheMode", CONV_JIT, API_DRIVER}; + // unsupported yet by HIP [CUDA 8.0.44] + cuda2hipRename["CU_JIT_NEW_SM3X_OPT"] = {"hipJitOptionSm3xOpt", CONV_JIT, API_DRIVER}; + cuda2hipRename["CU_JIT_FAST_COMPILE"] = {"hipJitOptionFastCompile", CONV_JIT, API_DRIVER}; + + cuda2hipRename["CU_JIT_NUM_OPTIONS"] = {"hipJitOptionNumOptions", CONV_JIT, API_DRIVER}; // enum CUjit_target/CUjit_target_enum cuda2hipRename["CUjit_target"] = {"hipJitTarget", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; // API_Runtime ANALOGUE (no) cuda2hipRename["CUjit_target_enum"] = {"hipJitTarget", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; @@ -670,6 +737,11 @@ struct cuda2hipMap { cuda2hipRename["CU_TARGET_COMPUTE_37"] = {"hipJitTargetCompute37", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["CU_TARGET_COMPUTE_50"] = {"hipJitTargetCompute50", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["CU_TARGET_COMPUTE_52"] = {"hipJitTargetCompute52", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; + // unsupported yet by HIP [CUDA 8.0.44] + cuda2hipRename["CU_TARGET_COMPUTE_53"] = {"hipJitTargetCompute53", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["CU_TARGET_COMPUTE_60"] = {"hipJitTargetCompute60", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["CU_TARGET_COMPUTE_61"] = {"hipJitTargetCompute61", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["CU_TARGET_COMPUTE_62"] = {"hipJitTargetCompute62", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; // enum CUjitInputType/CUjitInputType_enum cuda2hipRename["CUjitInputType"] = {"hipJitInputType", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; // API_Runtime ANALOGUE (no) cuda2hipRename["CUjitInputType_enum"] = {"hipJitInputType", CONV_JIT, API_DRIVER, HIP_UNSUPPORTED}; @@ -752,66 +824,147 @@ struct cuda2hipMap { cuda2hipRename["CU_RES_VIEW_FORMAT_SIGNED_BC6H"] = {"hipResViewFormatSignedBlockCompressed6H", CONV_TEX, API_DRIVER, HIP_UNSUPPORTED}; // 0x21 // API_Runtime ANALOGUE (cudaResViewFormatSignedBlockCompressed6H = 0x21) cuda2hipRename["CU_RES_VIEW_FORMAT_UNSIGNED_BC7"] = {"hipResViewFormatUnsignedBlockCompressed7", CONV_TEX, API_DRIVER, HIP_UNSUPPORTED}; // 0x22 // API_Runtime ANALOGUE (cudaResViewFormatUnsignedBlockCompressed7 = 0x22) - - - cuda2hipRename["CUsharedconfig_enum"] = {"hipSharedMemConfig", CONV_TYPE, API_DRIVER}; cuda2hipRename["CUsharedconfig"] = {"hipSharedMemConfig", CONV_TYPE, API_DRIVER}; + cuda2hipRename["CUsharedconfig_enum"] = {"hipSharedMemConfig", CONV_TYPE, API_DRIVER}; cuda2hipRename["CU_SHARED_MEM_CONFIG_DEFAULT_BANK_SIZE"] = {"hipSharedMemBankSizeDefault", CONV_DEV, API_DRIVER}; cuda2hipRename["CU_SHARED_MEM_CONFIG_FOUR_BYTE_BANK_SIZE"] = {"hipSharedMemBankSizeFourByte", CONV_DEV, API_DRIVER}; cuda2hipRename["CU_SHARED_MEM_CONFIG_EIGHT_BYTE_BANK_SIZE"] = {"hipSharedMemBankSizeEightByte", CONV_DEV, API_DRIVER}; cuda2hipRename["CUcontext"] = {"hipCtx_t", CONV_TYPE, API_DRIVER}; - // TODO: - // cuda2hipRename["CUctx_st"] = {"XXXX", CONV_TYPE, API_DRIVER}; + // TODO: move "typedef struct ihipCtx_t *hipCtx_t;" from hcc_details to HIP + // typedef struct CUctx_st *CUcontext; + // cuda2hipRename["CUctx_st"] = {"ihipCtx_t", CONV_TYPE, API_DRIVER}; cuda2hipRename["CUmodule"] = {"hipModule_t", CONV_TYPE, API_DRIVER}; - // TODO: - // cuda2hipRename["CUmod_st"] = {"XXXX", CONV_TYPE, API_DRIVER}; + // TODO: move "typedef struct ihipModule_t *hipModule_t;" from hcc_details to HIP + // typedef struct CUmod_st *CUmodule; + // cuda2hipRename["CUmod_st"] = {"ihipModule_t", CONV_TYPE, API_DRIVER}; cuda2hipRename["CUstream"] = {"hipStream_t", CONV_TYPE, API_DRIVER}; - // TODO: - // cuda2hipRename["CUstream_st"] = {"XXXX", CONV_TYPE, API_DRIVER}; - // Stream Flags + // TODO: move "typedef struct ihipStream_t *hipStream_t;" from hcc_details to HIP + // typedef struct CUstream_st *CUstream; + // cuda2hipRename["CUstream_st"] = {"ihipStream_t", CONV_TYPE, API_DRIVER}; + + // typedef void (*hipStreamCallback_t) (hipStream_t stream, hipError_t status, void* userData); + // typedef void (CUDA_CB *CUstreamCallback) (CUstream hStream, CUresult status, void* userData) + cuda2hipRename["CUstreamCallback"] = {"hipStreamCallback_t", CONV_TYPE, API_DRIVER}; + + cuda2hipRename["CUsurfObject"] = {"hipSurfaceObject", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; + // typedef struct CUsurfref_st *CUsurfref; + cuda2hipRename["CUsurfref"] = {"hipSurfaceReference_t", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; + // cuda2hipRename["CUsurfref_st"] = {"ihipSurfaceReference_t", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["CUtexObject"] = {"hipTextureObject", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; + // typedef struct CUtexref_st *CUtexref; + cuda2hipRename["CUtexref"] = {"hipTextureReference_t", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; + // cuda2hipRename["CUtexref_st"] = {"ihipTextureReference_t", CONV_TYPE, API_DRIVER, HIP_UNSUPPORTED}; + + // Stream Flags enum + cuda2hipRename["CUstream_flags"] = {"hipStreamFlags", CONV_STREAM, API_DRIVER}; + // cuda2hipRename["CUstream_flags_enum"] = {"hipStreamFlags", CONV_STREAM, API_DRIVER}; cuda2hipRename["CU_STREAM_DEFAULT"] = {"hipStreamDefault", CONV_STREAM, API_DRIVER}; cuda2hipRename["CU_STREAM_NON_BLOCKING"] = {"hipStreamNonBlocking", CONV_STREAM, API_DRIVER}; + // unsupported yet by HIP [CUDA 8.0.44] + // Flags for ::cuStreamWaitValue32 + cuda2hipRename["CUstreamWaitValue_flags"] = {"hipStreamWaitValueFlags", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; + // cuda2hipRename["CUstreamWaitValue_flags_enum"] = {"hipStreamWaitValueFlags", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["CU_STREAM_WAIT_VALUE_GEQ"] = {"hipStreamWaitValueGeq", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; // 0x0 + cuda2hipRename["CU_STREAM_WAIT_VALUE_EQ"] = {"hipStreamWaitValueEq", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; // 0x1 + cuda2hipRename["CU_STREAM_WAIT_VALUE_AND"] = {"hipStreamWaitValueAnd", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; // 0x2 + cuda2hipRename["CU_STREAM_WAIT_VALUE_FLUSH"] = {"hipStreamWaitValueFlush", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; // 1<<30 + // Flags for ::cuStreamWriteValue32 + cuda2hipRename["CUstreamWriteValue_flags"] = {"hipStreamWriteValueFlags", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; + // cuda2hipRename["CUstreamWriteValue_flags"] = {"hipStreamWriteValueFlags", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["CU_STREAM_WRITE_VALUE_DEFAULT"] = {"hipStreamWriteValueDefault", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; // 0x0 + cuda2hipRename["CU_STREAM_WRITE_VALUE_NO_MEMORY_BARRIER"] = {"hipStreamWriteValueNoMemoryBarrier", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; // 0x1 + // Flags for ::cuStreamBatchMemOp + cuda2hipRename["CUstreamBatchMemOpType"] = {"hipStreamBatchMemOpType", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; + // cuda2hipRename["CUstreamBatchMemOpType_enum"] = {"hipStreamBatchMemOpType", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["CU_STREAM_MEM_OP_WAIT_VALUE_32"] = {"hipStreamBatchMemOpWaitValue32", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; // 1 + cuda2hipRename["CU_STREAM_MEM_OP_WRITE_VALUE_32"] = {"hipStreamBatchMemOpWriteValue32", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; // 2 + cuda2hipRename["CU_STREAM_MEM_OP_FLUSH_REMOTE_WRITES"] = {"hipStreamBatchMemOpFlushRemoteWrites", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; // 3 + + // Error Handling + cuda2hipRename["cuGetErrorName"] = {"hipGetErrorName___", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // cudaGetErrorName (hipGetErrorName) has different signature + cuda2hipRename["cuGetErrorString"] = {"hipGetErrorString___", CONV_ERR, API_DRIVER, HIP_UNSUPPORTED}; // cudaGetErrorString (hipGetErrorString) has different signature + // Init cuda2hipRename["cuInit"] = {"hipInit", CONV_DRIVER, API_DRIVER}; // Driver - cuda2hipRename["cuDriverGetVersion"] = {"hipDriverGetVersion", CONV_DRIVER, API_DRIVER}; + cuda2hipRename["cuDriverGetVersion"] = {"hipDriverGetVersion", CONV_DRIVER, API_DRIVER}; - // Context + // Context Management cuda2hipRename["cuCtxCreate_v2"] = {"hipCtxCreate", CONV_CONTEXT, API_DRIVER}; cuda2hipRename["cuCtxDestroy_v2"] = {"hipCtxDestroy", CONV_CONTEXT, API_DRIVER}; - cuda2hipRename["cuCtxPopCurrent_v2"] = {"hipCtxPopCurrent", CONV_CONTEXT, API_DRIVER}; - cuda2hipRename["cuCtxPushCurrent_v2"] = {"hipCtxPushCurrent", CONV_CONTEXT, API_DRIVER}; - cuda2hipRename["cuCtxSetCurrent"] = {"hipCtxSetCurrent", CONV_CONTEXT, API_DRIVER}; - cuda2hipRename["cuCtxGetCurrent"] = {"hipCtxGetCurrent", CONV_CONTEXT, API_DRIVER}; - cuda2hipRename["cuCtxGetDevice"] = {"hipCtxGetDevice", CONV_CONTEXT, API_DRIVER}; cuda2hipRename["cuCtxGetApiVersion"] = {"hipCtxGetApiVersion", CONV_CONTEXT, API_DRIVER}; cuda2hipRename["cuCtxGetCacheConfig"] = {"hipCtxGetCacheConfig", CONV_CONTEXT, API_DRIVER}; - cuda2hipRename["cuCtxSetCacheConfig"] = {"hipCtxSetCacheConfig", CONV_CONTEXT, API_DRIVER}; - cuda2hipRename["cuCtxSetSharedMemConfig"] = {"hipCtxSetSharedMemConfig", CONV_CONTEXT, API_DRIVER}; - cuda2hipRename["cuCtxGetSharedMemConfig"] = {"hipCtxGetSharedMemConfig", CONV_CONTEXT, API_DRIVER}; - cuda2hipRename["cuCtxSynchronize"] = {"hipCtxSynchronize", CONV_CONTEXT, API_DRIVER}; + cuda2hipRename["cuCtxGetCurrent"] = {"hipCtxGetCurrent", CONV_CONTEXT, API_DRIVER}; + cuda2hipRename["cuCtxGetDevice"] = {"hipCtxGetDevice", CONV_CONTEXT, API_DRIVER}; cuda2hipRename["cuCtxGetFlags"] = {"hipCtxGetFlags", CONV_CONTEXT, API_DRIVER}; + cuda2hipRename["cuCtxGetLimit"] = {"hipCtxGetLimit", CONV_CONTEXT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuCtxGetSharedMemConfig"] = {"hipCtxGetSharedMemConfig", CONV_CONTEXT, API_DRIVER}; + cuda2hipRename["cuCtxGetStreamPriorityRange"] = {"hipCtxGetStreamPriorityRange", CONV_CONTEXT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuCtxPopCurrent_v2"] = {"hipCtxPopCurrent", CONV_CONTEXT, API_DRIVER}; + cuda2hipRename["cuCtxPushCurrent_v2"] = {"hipCtxPushCurrent", CONV_CONTEXT, API_DRIVER}; + cuda2hipRename["cuCtxSetCacheConfig"] = {"hipCtxSetCacheConfig", CONV_CONTEXT, API_DRIVER}; + cuda2hipRename["cuCtxSetCurrent"] = {"hipCtxSetCurrent", CONV_CONTEXT, API_DRIVER}; + cuda2hipRename["cuCtxSetLimit"] = {"hipCtxSetLimit", CONV_CONTEXT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuCtxSetSharedMemConfig"] = {"hipCtxSetSharedMemConfig", CONV_CONTEXT, API_DRIVER}; + cuda2hipRename["cuCtxSynchronize"] = {"hipCtxSynchronize", CONV_CONTEXT, API_DRIVER}; + // Context Management [DEPRECATED] + cuda2hipRename["cuCtxAttach"] = {"hipCtxAttach", CONV_CONTEXT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuCtxDetach"] = {"hipCtxDetach", CONV_CONTEXT, API_DRIVER, HIP_UNSUPPORTED}; + + // Peer Context Memory Access cuda2hipRename["cuCtxEnablePeerAccess"] = {"hipCtxEnablePeerAccess", CONV_CONTEXT, API_DRIVER}; cuda2hipRename["cuCtxDisablePeerAccess"] = {"hipCtxDisablePeerAccess", CONV_CONTEXT, API_DRIVER}; - // unsupported yet by HIP - cuda2hipRename["cuCtxSetLimit"] = {"hipCtxSetLimit", CONV_CONTEXT, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["cuCtxGetLimit"] = {"hipCtxGetLimit", CONV_CONTEXT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuDeviceCanAccessPeer"] = {"hipDeviceCanAccessPeer", CONV_DEV, API_DRIVER}; - // Device + + // Primary Context Management + cuda2hipRename["cuDevicePrimaryCtxGetState"] = {"hipDevicePrimaryCtxGetState", CONV_CONTEXT, API_DRIVER}; + cuda2hipRename["cuDevicePrimaryCtxRelease"] = {"hipDevicePrimaryCtxRelease", CONV_CONTEXT, API_DRIVER}; + cuda2hipRename["cuDevicePrimaryCtxReset"] = {"hipDevicePrimaryCtxReset", CONV_CONTEXT, API_DRIVER}; + cuda2hipRename["cuDevicePrimaryCtxRetain"] = {"hipDevicePrimaryCtxRetain", CONV_CONTEXT, API_DRIVER}; + cuda2hipRename["cuDevicePrimaryCtxSetFlags"] = {"hipDevicePrimaryCtxSetFlags", CONV_CONTEXT, API_DRIVER}; + + // Device Management cuda2hipRename["cuDeviceGet"] = {"hipGetDevice", CONV_DEV, API_DRIVER}; cuda2hipRename["cuDeviceGetName"] = {"hipDeviceGetName", CONV_DEV, API_DRIVER}; cuda2hipRename["cuDeviceGetCount"] = {"hipGetDeviceCount", CONV_DEV, API_DRIVER}; cuda2hipRename["cuDeviceGetAttribute"] = {"hipDeviceGetAttribute", CONV_DEV, API_DRIVER}; - cuda2hipRename["cuDeviceGetProperties"] = {"hipGetDeviceProperties", CONV_DEV, API_DRIVER}; cuda2hipRename["cuDeviceGetPCIBusId"] = {"hipDeviceGetPCIBusId", CONV_DEV, API_DRIVER}; cuda2hipRename["cuDeviceGetByPCIBusId"] = {"hipDeviceGetByPCIBusId", CONV_DEV, API_DRIVER}; - cuda2hipRename["cuDeviceTotalMem_v2"] = {"hipDeviceTotalMem", CONV_DEV, API_DRIVER}; + + // Device Management [DEPRECATED] cuda2hipRename["cuDeviceComputeCapability"] = {"hipDeviceComputeCapability", CONV_DEV, API_DRIVER}; - cuda2hipRename["cuDeviceCanAccessPeer"] = {"hipDeviceCanAccessPeer", CONV_DEV, API_DRIVER}; + cuda2hipRename["cuDeviceGetProperties"] = {"hipGetDeviceProperties", CONV_DEV, API_DRIVER}; + + // Module Management + cuda2hipRename["cuLinkAddData"] = {"hipLinkAddData", CONV_EVENT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuLinkAddFile"] = {"hipLinkAddFile", CONV_EVENT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuLinkComplete"] = {"hipLinkComplete", CONV_EVENT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuLinkCreate"] = {"hipLinkCreate", CONV_EVENT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuLinkDestroy"] = {"hipLinkDestroy", CONV_EVENT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuModuleGetFunction"] = {"hipModuleGetFunction", CONV_MODULE, API_DRIVER}; + cuda2hipRename["cuModuleGetGlobal_v2"] = {"hipModuleGetGlobal", CONV_MODULE, API_DRIVER}; + cuda2hipRename["cuModuleGetSurfRef"] = {"hipModuleGetSurfRef", CONV_EVENT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuModuleGetTexRef"] = {"hipModuleGetTexRef", CONV_EVENT, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuModuleLoad"] = {"hipModuleLoad", CONV_MODULE, API_DRIVER}; + cuda2hipRename["cuModuleLoadData"] = {"hipModuleLoadData", CONV_MODULE, API_DRIVER}; + cuda2hipRename["cuModuleLoadDataEx"] = {"hipModuleLoadDataEx", CONV_MODULE, API_DRIVER}; + cuda2hipRename["cuModuleLoadFatBinary"] = {"hipModuleLoadFatBinary", CONV_MODULE, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuModuleUnload"] = {"hipModuleUnload", CONV_MODULE, API_DRIVER}; + + // unsupported yet by HIP [CUDA 8.0.44] + // P2P Attributes + cuda2hipRename["CUdevice_P2PAttribute"] = {"hipDeviceP2PAttribute", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // API_Runtime ANALOGUE (cudaDeviceP2PAttr) + // cuda2hipRename["CUdevice_P2PAttribute_enum"] = {"hipDeviceP2PAttribute", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["CU_DEVICE_P2P_ATTRIBUTE_PERFORMANCE_RANK"] = {"hipDeviceP2PAttributePerformanceRank", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x01 // API_Runtime ANALOGUE (cudaDevP2PAttrPerformanceRank = 0x01) + cuda2hipRename["CU_DEVICE_P2P_ATTRIBUTE_ACCESS_SUPPORTED"] = {"hipDeviceP2PAttributeAccessSupported", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x02 // API_Runtime ANALOGUE (cudaDevP2PAttrAccessSupported = 0x02) + cuda2hipRename["CU_DEVICE_P2P_ATTRIBUTE_NATIVE_ATOMIC_SUPPORTED"] = {"hipDeviceP2PAttributeNativeAtomicSupported", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // 0x03 // API_Runtime ANALOGUE (cudaDevP2PAttrNativeAtomicSupported = 0x03) + + cuda2hipRename["cuDeviceGetP2PAttribute"] = {"hipDeviceGetP2PAttribute", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED}; // API_Runtime ANALOGUE (cudaDeviceGetP2PAttribute) // Events // pointer to CUevent_st @@ -834,61 +987,99 @@ struct cuda2hipMap { cuda2hipRename["cuEventRecord"] = {"hipEventRecord", CONV_EVENT, API_DRIVER}; cuda2hipRename["cuEventSynchronize"] = {"hipEventSynchronize", CONV_EVENT, API_DRIVER}; - // Module - cuda2hipRename["cuModuleGetFunction"] = {"hipModuleGetFunction", CONV_MODULE, API_DRIVER}; - cuda2hipRename["cuModuleGetGlobal_v2"] = {"hipModuleGetGlobal", CONV_MODULE, API_DRIVER}; - cuda2hipRename["cuModuleLoad"] = {"hipModuleLoad", CONV_MODULE, API_DRIVER}; - cuda2hipRename["cuModuleLoadData"] = {"hipModuleLoadData", CONV_MODULE, API_DRIVER}; - // unsupported yet by HIP - cuda2hipRename["cuModuleLoadDataEx"] = {"hipModuleLoadDataEx", CONV_MODULE, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["cuModuleLoadFatBinary"] = {"hipModuleLoadFatBinary", CONV_MODULE, API_DRIVER, HIP_UNSUPPORTED}; - - cuda2hipRename["cuModuleUnload"] = {"hipModuleUnload", CONV_MODULE, API_DRIVER}; + // Execution Control + cuda2hipRename["cuFuncGetAttribute"] = {"hipFuncGetAttribute", CONV_MODULE, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuFuncSetCacheConfig"] = {"hipFuncSetCacheConfig", CONV_MODULE, API_DRIVER}; + cuda2hipRename["cuFuncSetSharedMemConfig"] = {"hipFuncSetSharedMemConfig", CONV_MODULE, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["cuLaunchKernel"] = {"hipModuleLaunchKernel", CONV_MODULE, API_DRIVER}; // Streams - // unsupported yet by HIP cuda2hipRename["cuStreamAddCallback"] = {"hipStreamAddCallback", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; - - cuda2hipRename["cuStreamCreate"] = {"hipStreamCreate", CONV_STREAM, API_DRIVER}; + cuda2hipRename["cuStreamAttachMemAsync"] = {"hipStreamAttachMemAsync", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuStreamCreate"] = {"hipStreamCreate__", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; // Not equal to cudaStreamCreate due to different signatures + cuda2hipRename["cuStreamCreateWithPriority"] = {"hipStreamCreateWithPriority", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["cuStreamDestroy_v2"] = {"hipStreamDestroy", CONV_STREAM, API_DRIVER}; + cuda2hipRename["cuStreamGetFlags"] = {"hipStreamGetFlags", CONV_STREAM, API_DRIVER}; + cuda2hipRename["cuStreamGetPriority"] = {"hipStreamGetPriority", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["cuStreamQuery"] = {"hipStreamQuery", CONV_STREAM, API_DRIVER}; cuda2hipRename["cuStreamSynchronize"] = {"hipStreamSynchronize", CONV_STREAM, API_DRIVER}; cuda2hipRename["cuStreamWaitEvent"] = {"hipStreamWaitEvent", CONV_STREAM, API_DRIVER}; + cuda2hipRename["cuStreamWaitValue32"] = {"hipStreamWaitValue32", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; // [CUDA 8.0.44] // no API_Runtime ANALOGUE + cuda2hipRename["cuStreamWriteValue32"] = {"hipStreamWriteValue32", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; // [CUDA 8.0.44] // no API_Runtime ANALOGUE + cuda2hipRename["cuStreamBatchMemOp"] = {"hipStreamBatchMemOp", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; // [CUDA 8.0.44] // no API_Runtime ANALOGUE // Memory management + cuda2hipRename["cuArray3DCreate"] = {"hipArray3DCreate", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuArray3DGetDescriptor"] = {"hipArray3DGetDescriptor", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuArrayCreate"] = {"hipArrayCreate", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuArrayDestroy"] = {"hipArrayDestroy", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuArrayGetDescriptor"] = {"hipArrayGetDescriptor", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuIpcCloseMemHandle"] = {"hipIpcCloseMemHandle", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuIpcGetEventHandle"] = {"hipIpcGetEventHandle", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuIpcGetMemHandle"] = {"hipIpcGetMemHandle", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuIpcOpenEventHandle"] = {"hipIpcOpenEventHandle", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuIpcOpenMemHandle"] = {"hipIpcOpenMemHandle", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["cuMemAlloc_v2"] = {"hipMalloc", CONV_MEM, API_DRIVER}; - cuda2hipRename["cuMemFree_v2"] = {"hipFree", CONV_MEM, API_DRIVER}; - - cuda2hipRename["cuMemHostAlloc"] = {"hipHostMalloc", CONV_MEM, API_DRIVER}; - cuda2hipRename["cuMemFreeHost"] = {"hipHostFree", CONV_MEM, API_DRIVER}; - + cuda2hipRename["cuMemAllocHost"] = {"hipMemAllocHost", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemAllocManaged"] = {"hipMemAllocManaged", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemAllocPitch"] = {"hipMemAllocPitch__", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; // Not equal to cudaMemAllocPitch due to different signatures + cuda2hipRename["cuMemcpy"] = {"hipMemcpy__", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; // Not equal to cudaMemcpy due to different signatures + cuda2hipRename["cuMemcpy2D"] = {"hipMemcpy2D__", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; // Not equal to cudaMemcpy2D due to different signatures + cuda2hipRename["cuMemcpy2DAsync"] = {"hipMemcpy2DAsync__", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; // Not equal to cudaMemcpy2DAsync due to different signatures + cuda2hipRename["cuMemcpy2DUnaligned"] = {"hipMemcpy2DUnaligned", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemcpy3D"] = {"hipMemcpy3D__", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; // Not equal to cudaMemcpy3D due to different signatures + cuda2hipRename["cuMemcpy3DAsync"] = {"hipMemcpy3DAsync__", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; // Not equal to cudaMemcpy3DAsync due to different signatures + cuda2hipRename["cuMemcpy3DPeer"] = {"hipMemcpy3DPeer__", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; // Not equal to cudaMemcpy3DPeer due to different signatures + cuda2hipRename["cuMemcpy3DPeerAsync"] = {"hipMemcpy3DPeerAsync__", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; // Not equal to cudaMemcpy3DPeerAsync due to different signatures + cuda2hipRename["cuMemcpyAsync"] = {"hipMemcpyAsync__", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; // Not equal to cudaMemcpyAsync due to different signatures + cuda2hipRename["cuMemcpyAtoA"] = {"hipMemcpyAtoA", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemcpyAtoD"] = {"hipMemcpyAtoD", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemcpyAtoH"] = {"hipMemcpyAtoH", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemcpyAtoHAsync"] = {"hipMemcpyAtoHAsync", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemcpyDtoA"] = {"hipMemcpyDtoA", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["cuMemcpyDtoD_v2"] = {"hipMemcpyDtoD", CONV_MEM, API_DRIVER}; cuda2hipRename["cuMemcpyDtoDAsync_v2"] = {"hipMemcpyDtoDAsync", CONV_MEM, API_DRIVER}; cuda2hipRename["cuMemcpyDtoH_v2"] = {"hipMemcpyDtoH", CONV_MEM, API_DRIVER}; cuda2hipRename["cuMemcpyDtoHAsync_v2"] = {"hipMemcpyDtoHAsync", CONV_MEM, API_DRIVER}; + cuda2hipRename["cuMemcpyHtoA"] = {"hipMemcpyHtoA", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemcpyHtoAAsync"] = {"hipMemcpyHtoAAsync", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["cuMemcpyHtoD_v2"] = {"hipMemcpyHtoD", CONV_MEM, API_DRIVER}; cuda2hipRename["cuMemcpyHtoDAsync_v2"] = {"hipMemcpyHtoDAsync", CONV_MEM, API_DRIVER}; - - // unsupported yet by HIP - cuda2hipRename["cuMemsetD8_v2"] = {"hipMemsetD8", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["cuMemsetD8Async"] = {"hipMemsetD8Async", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["cuMemsetD2D8_v2"] = {"hipMemsetD2D8", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["cuMemsetD2D8Async"] = {"hipMemsetD2D8Async", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemcpyPeerAsync"] = {"hipMemcpyPeerAsync__", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; // Not equal to cudaMemcpyPeerAsync due to different signatures + cuda2hipRename["cuMemcpyPeer"] = {"hipMemcpyPeer__", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; // Not equal to cudaMemcpyPeer due to different signatures + cuda2hipRename["cuMemFree_v2"] = {"hipFree", CONV_MEM, API_DRIVER}; + cuda2hipRename["cuMemFreeHost"] = {"hipHostFree", CONV_MEM, API_DRIVER}; + cuda2hipRename["cuMemGetAddressRange"] = {"hipMemGetAddressRange", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemGetInfo_v2"] = {"hipMemGetInfo", CONV_MEM, API_DRIVER}; + cuda2hipRename["cuMemHostAlloc"] = {"hipHostMalloc", CONV_MEM, API_DRIVER}; // API_Runtime ANALOGUE (cudaHostAlloc) + cuda2hipRename["cuMemHostGetDevicePointer"] = {"hipMemHostGetDevicePointer", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemHostGetFlags"] = {"hipMemHostGetFlags", CONV_MEM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemHostRegister_v2"] = {"hipHostRegister", CONV_MEM, API_DRIVER}; // API_Runtime ANALOGUE (cudaHostAlloc) + cuda2hipRename["cuMemHostUnregister"] = {"hipHostUnregister", CONV_MEM, API_DRIVER}; // API_Runtime ANALOGUE (cudaHostUnregister) cuda2hipRename["cuMemsetD16_v2"] = {"hipMemsetD16", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["cuMemsetD16Async"] = {"hipMemsetD16Async", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["cuMemsetD2D16_v2"] = {"hipMemsetD2D16", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["cuMemsetD2D16Async"] = {"hipMemsetD2D16Async", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; - - cuda2hipRename["cuMemsetD32_v2"] = {"hipMemset", CONV_MEM, API_DRIVER}; - cuda2hipRename["cuMemsetD32Async"] = {"hipMemsetAsync", CONV_MEM, API_DRIVER}; - // unsupported yet by HIP cuda2hipRename["cuMemsetD2D32_v2"] = {"hipMemsetD2D32", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; cuda2hipRename["cuMemsetD2D32Async"] = {"hipMemsetD2D32Async", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemsetD2D8_v2"] = {"hipMemsetD2D8", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemsetD2D8Async"] = {"hipMemsetD2D8Async", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemsetD32_v2"] = {"hipMemset", CONV_MEM, API_DRIVER}; // API_Runtime ANALOGUE (cudaMemset) + cuda2hipRename["cuMemsetD32Async"] = {"hipMemsetAsync", CONV_MEM, API_DRIVER}; // API_Runtime ANALOGUE (cudaMemsetAsync) + cuda2hipRename["cuMemsetD8_v2"] = {"hipMemsetD8", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMemsetD8Async"] = {"hipMemsetD8Async", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMipmappedArrayCreate"] = {"hipMipmappedArrayCreate", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMipmappedArrayDestroy"] = {"hipMipmappedArrayDestroy", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; + cuda2hipRename["cuMipmappedArrayGetLevel"] = {"hipMipmappedArrayGetLevel", CONV_STREAM, API_DRIVER, HIP_UNSUPPORTED}; - cuda2hipRename["cuMemGetInfo_v2"] = {"hipMemGetInfo", CONV_MEM, API_DRIVER}; - cuda2hipRename["cuMemHostRegister_v2"] = {"hipHostRegister", CONV_MEM, API_DRIVER}; - cuda2hipRename["cuMemHostUnregister"] = {"hipHostUnregister", CONV_MEM, API_DRIVER}; + // Unified Addressing + cuda2hipRename["cuMemPrefetchAsync"] = {"hipMemPrefetchAsync__", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; // [CUDA 8.0.44] // no API_Runtime ANALOGUE (cudaMemPrefetchAsync has different signature) + cuda2hipRename["cuMemAdvise"] = {"hipMemAdvise", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; // [CUDA 8.0.44] // API_Runtime ANALOGUE (cudaMemAdvise) + cuda2hipRename["cuMemRangeGetAttribute"] = {"hipMemRangeGetAttribute", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; // [CUDA 8.0.44] // API_Runtime ANALOGUE (cudaMemRangeGetAttribute) + cuda2hipRename["cuMemRangeGetAttributes"] = {"hipMemRangeGetAttributes", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; // [CUDA 8.0.44] // API_Runtime ANALOGUE (cudaMemRangeGetAttributes) + cuda2hipRename["cuPointerGetAttribute"] = {"hipPointerGetAttribute", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; + cuda2hipRename["cuPointerGetAttributes"] = {"hipPointerGetAttributes", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; + cuda2hipRename["cuPointerSetAttribute"] = {"hipPointerSetAttribute", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; // Texture Reference Mngmnt // Texture reference filtering modes @@ -898,6 +1089,9 @@ struct cuda2hipMap { cuda2hipRename["CU_TR_FILTER_MODE_POINT"] = {"hipFilterModePoint", CONV_TEX, API_DRIVER}; // 0 // API_Runtime ANALOGUE (cudaFilterModePoint = 0) cuda2hipRename["CU_TR_FILTER_MODE_LINEAR"] = {"hipFilterModeLinear", CONV_TEX, API_DRIVER, HIP_UNSUPPORTED}; // 1 // API_Runtime ANALOGUE (cudaFilterModeLinear = 1) + cuda2hipRename["cuTexRefSetBorderColor"] = {"hipTexRefSetBorderColor", CONV_TEX, API_RUNTIME, HIP_UNSUPPORTED}; // [CUDA 8.0.44] // no API_Runtime ANALOGUE + cuda2hipRename["cuTexRefGetBorderColor"] = {"hipTexRefGetBorderColor", CONV_TEX, API_RUNTIME, HIP_UNSUPPORTED}; // [CUDA 8.0.44] // no API_Runtime ANALOGUE + // Profiler // unsupported yet by HIP cuda2hipRename["cuProfilerInitialize"] = {"hipProfilerInitialize", CONV_OTHER, API_DRIVER, HIP_UNSUPPORTED}; @@ -972,10 +1166,10 @@ struct cuda2hipMap { cuda2hipRename["cudaMemcpyToSymbolAsync"] = {"hipMemcpyToSymbolAsync", CONV_MEM, API_RUNTIME}; cuda2hipRename["cudaMemcpyAsync"] = {"hipMemcpyAsync", CONV_MEM, API_RUNTIME}; cuda2hipRename["cudaMemcpy2D"] = {"hipMemcpy2D", CONV_MEM, API_RUNTIME}; + cuda2hipRename["cudaMemcpy2DAsync"] = {"hipMemcpy2DAsync", CONV_MEM, API_RUNTIME}; cuda2hipRename["cudaMemcpy2DToArray"] = {"hipMemcpy2DToArray", CONV_MEM, API_RUNTIME}; // unsupported yet by HIP cuda2hipRename["cudaMemcpy2DArrayToArray"] = {"hipMemcpy2DArrayToArray", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; - cuda2hipRename["cudaMemcpy2DAsync"] = {"hipMemcpy2DAsync", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; cuda2hipRename["cudaMemcpy2DFromArray"] = {"hipMemcpy2DFromArray", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; cuda2hipRename["cudaMemcpy2DFromArrayAsync"] = {"hipMemcpy2DFromArrayAsync", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; cuda2hipRename["cudaMemcpy2DToArrayAsync"] = {"hipMemcpy2DToArrayAsync", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; @@ -985,7 +1179,27 @@ struct cuda2hipMap { cuda2hipRename["cudaMemcpy3DPeerAsync"] = {"hipMemcpy3DPeerAsync", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; cuda2hipRename["cudaMemcpyArrayToArray"] = {"hipMemcpyArrayToArray", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; cuda2hipRename["cudaMemcpyFromArrayAsync"] = {"hipMemcpyFromArrayAsync", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; - cuda2hipRename["cudaMemcpyFromSymbolAsync"] = {"hipMemcpyFromSymbolAsync", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; + cuda2hipRename["cudaMemcpyFromSymbol"] = {"hipMemcpyFromSymbol", CONV_MEM, API_RUNTIME}; + cuda2hipRename["cudaMemcpyFromSymbolAsync"] = {"hipMemcpyFromSymbolAsync", CONV_MEM, API_RUNTIME}; + cuda2hipRename["cudaMemAdvise"] = {"hipMemAdvise", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; // [CUDA 8.0.44] + cuda2hipRename["cudaMemRangeGetAttribute"] = {"hipMemRangeGetAttribute", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; // [CUDA 8.0.44] + cuda2hipRename["cudaMemRangeGetAttributes"] = {"hipMemRangeGetAttributes", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; // [CUDA 8.0.44] + + // unsupported yet by HIP [CUDA 8.0.44] + // Memory advise values + cuda2hipRename["cudaMemoryAdvise"] = {"hipMemAdvise", CONV_TYPE, API_RUNTIME, HIP_UNSUPPORTED}; // API_Driver ANALOGUE (CUmem_advise) + cuda2hipRename["cudaMemAdviseSetReadMostly"] = {"hipMemAdviseSetReadMostly", CONV_TYPE, API_RUNTIME, HIP_UNSUPPORTED}; // 1 // API_Driver ANALOGUE (CU_MEM_ADVISE_SET_READ_MOSTLY = 1) + cuda2hipRename["cudaMemAdviseUnsetReadMostly"] = {"hipMemAdviseUnsetReadMostly", CONV_TYPE, API_RUNTIME, HIP_UNSUPPORTED}; // 2 // API_Driver ANALOGUE (CU_MEM_ADVISE_UNSET_READ_MOSTLY = 2) + cuda2hipRename["cudaMemAdviseSetPreferredLocation"] = {"hipMemAdviseSetPreferredLocation", CONV_TYPE, API_RUNTIME, HIP_UNSUPPORTED}; // 3 // API_Driver ANALOGUE (CU_MEM_ADVISE_SET_PREFERRED_LOCATION = 3) + cuda2hipRename["cudaMemAdviseUnsetPreferredLocation"] = {"hipMemAdviseUnsetPreferredLocation", CONV_TYPE, API_RUNTIME, HIP_UNSUPPORTED}; // 4 // API_Driver ANALOGUE (CU_MEM_ADVISE_UNSET_PREFERRED_LOCATION = 4) + cuda2hipRename["cudaMemAdviseSetAccessedBy"] = {"hipMemAdviseSetAccessedBy", CONV_TYPE, API_RUNTIME, HIP_UNSUPPORTED}; // 5 // API_Driver ANALOGUE (CU_MEM_ADVISE_SET_ACCESSED_BY = 5) + cuda2hipRename["cudaMemAdviseUnsetAccessedBy"] = {"hipMemAdviseUnsetAccessedBy", CONV_TYPE, API_RUNTIME, HIP_UNSUPPORTED}; // 6 // API_Driver ANALOGUE (CU_MEM_ADVISE_UNSET_ACCESSED_BY = 6) + // CUmem_range_attribute + cuda2hipRename["cudaMemRangeAttribute"] = {"hipMemRangeAttribute", CONV_TYPE, API_RUNTIME, HIP_UNSUPPORTED}; // API_Driver ANALOGUE (CUmem_range_attribute) + cuda2hipRename["cudaMemRangeAttributeReadMostly"] = {"hipMemRangeAttributeReadMostly", CONV_TYPE, API_RUNTIME, HIP_UNSUPPORTED}; // 1 // API_Driver ANALOGUE (CU_MEM_RANGE_ATTRIBUTE_READ_MOSTLY = 1) + cuda2hipRename["cudaMemRangeAttributePreferredLocation"] = {"hipMemRangeAttributePreferredLocation", CONV_TYPE, API_RUNTIME, HIP_UNSUPPORTED}; // 2 // API_Driver ANALOGUE (CU_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION = 2) + cuda2hipRename["cudaMemRangeAttributeAccessedBy"] = {"hipMemRangeAttributeAccessedBy", CONV_TYPE, API_RUNTIME, HIP_UNSUPPORTED}; // 3 // API_Driver ANALOGUE (CU_MEM_RANGE_ATTRIBUTE_ACCESSED_BY = 3) + cuda2hipRename["cudaMemRangeAttributeLastPrefetchLocation"] = {"hipMemRangeAttributeLastPrefetchLocation", CONV_TYPE, API_RUNTIME, HIP_UNSUPPORTED}; // 4 // API_Driver ANALOGUE (CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION = 4) // memcpy kind cuda2hipRename["cudaMemcpyKind"] = {"hipMemcpyKind", CONV_MEM, API_RUNTIME}; @@ -1012,6 +1226,7 @@ struct cuda2hipMap { cuda2hipRename["cudaGetMipmappedArrayLevel"] = {"hipGetMipmappedArrayLevel", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; cuda2hipRename["cudaGetSymbolAddress"] = {"hipGetSymbolAddress", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; cuda2hipRename["cudaGetSymbolSize"] = {"hipGetSymbolSize", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; + cuda2hipRename["cudaMemPrefetchAsync"] = {"hipMemPrefetchAsync", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; // [CUDA 8.0.44] // API_Driver ANALOGUE (cuMemPrefetchAsync) // malloc cuda2hipRename["cudaMalloc"] = {"hipMalloc", CONV_MEM, API_RUNTIME}; @@ -1022,7 +1237,7 @@ struct cuda2hipMap { cuda2hipRename["cudaMalloc3DArray"] = {"hipMalloc3DArray", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; cuda2hipRename["cudaMallocManaged"] = {"hipMallocManaged", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; cuda2hipRename["cudaMallocMipmappedArray"] = {"hipMallocMipmappedArray", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; - cuda2hipRename["cudaMallocPitch"] = {"hipMallocPitch", CONV_MEM, API_RUNTIME, HIP_UNSUPPORTED}; + cuda2hipRename["cudaMallocPitch"] = {"hipMallocPitch", CONV_MEM, API_RUNTIME}; cuda2hipRename["cudaFree"] = {"hipFree", CONV_MEM, API_RUNTIME}; cuda2hipRename["cudaFreeHost"] = {"hipHostFree", CONV_MEM, API_RUNTIME}; @@ -1140,7 +1355,7 @@ struct cuda2hipMap { // Attributes cuda2hipRename["cudaDeviceGetAttribute"] = {"hipDeviceGetAttribute", CONV_DEV, API_RUNTIME}; - cuda2hipRename["cudaDeviceAttr"] = {"hipDeviceAttribute_t", CONV_TYPE, API_RUNTIME}; // API_DRIVER ANALOGUE (CUdevice_attribute) + cuda2hipRename["cudaDeviceAttr"] = {"hipDeviceAttribute_t", CONV_TYPE, API_RUNTIME}; // API_DRIVER ANALOGUE (CUdevice_attribute) cuda2hipRename["cudaDevAttrMaxThreadsPerBlock"] = {"hipDeviceAttributeMaxThreadsPerBlock", CONV_DEV, API_RUNTIME}; // 1 // API_DRIVER ANALOGUE (CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK = 1) cuda2hipRename["cudaDevAttrMaxBlockDimX"] = {"hipDeviceAttributeMaxBlockDimX", CONV_DEV, API_RUNTIME}; // 2 // API_DRIVER ANALOGUE (CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X = 2) cuda2hipRename["cudaDevAttrMaxBlockDimY"] = {"hipDeviceAttributeMaxBlockDimY", CONV_DEV, API_RUNTIME}; // 3 // API_DRIVER ANALOGUE (CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Y = 3) @@ -1229,12 +1444,12 @@ struct cuda2hipMap { cuda2hipRename["cudaDevAttrMultiGpuBoardGroupID"] = {"hipDeviceAttributeMultiGpuBoardGroupID", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 85 // API_DRIVER ANALOGUE (CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD_GROUP_ID = 85) // unsupported yet by HIP [CUDA 8.0.44] - cuda2hipRename["cudaDevAttrHostNativeAtomicSupported"] = {"hipDeviceAttributeHostNativeAtomicSupported", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; - cuda2hipRename["cudaDevAttrSingleToDoublePrecisionPerfRatio"] = {"hipDeviceAttributeSingleToDoublePrecisionPerfRatio", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; - cuda2hipRename["cudaDevAttrPageableMemoryAccess"] = {"hipDeviceAttributePageableMemoryAccess", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; - cuda2hipRename["cudaDevAttrConcurrentManagedAccess"] = {"hipDeviceAttributeConcurrentManagedAccess", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; - cuda2hipRename["cudaDevAttrComputePreemptionSupported"] = {"hipDeviceAttributeComputePreemptionSupported", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; - cuda2hipRename["cudaDevAttrCanUseHostPointerForRegisteredMem"] = {"hipDeviceAttributeCanUseHostPointerForRegisteredMem", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; + cuda2hipRename["cudaDevAttrHostNativeAtomicSupported"] = {"hipDeviceAttributeHostNativeAtomicSupported", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 86 // API_DRIVER ANALOGUE (CU_DEVICE_ATTRIBUTE_HOST_NATIVE_ATOMIC_SUPPORTED = 86) + cuda2hipRename["cudaDevAttrSingleToDoublePrecisionPerfRatio"] = {"hipDeviceAttributeSingleToDoublePrecisionPerfRatio", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 87 // API_DRIVER ANALOGUE (CU_DEVICE_ATTRIBUTE_SINGLE_TO_DOUBLE_PRECISION_PERF_RATIO = 87) + cuda2hipRename["cudaDevAttrPageableMemoryAccess"] = {"hipDeviceAttributePageableMemoryAccess", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 88 // API_DRIVER ANALOGUE (CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS = 88) + cuda2hipRename["cudaDevAttrConcurrentManagedAccess"] = {"hipDeviceAttributeConcurrentManagedAccess", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 89 // API_DRIVER ANALOGUE (CU_DEVICE_ATTRIBUTE_CONCURRENT_MANAGED_ACCESS = 89) + cuda2hipRename["cudaDevAttrComputePreemptionSupported"] = {"hipDeviceAttributeComputePreemptionSupported", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 90 // API_DRIVER ANALOGUE (CU_DEVICE_ATTRIBUTE_COMPUTE_PREEMPTION_SUPPORTED = 90) + cuda2hipRename["cudaDevAttrCanUseHostPointerForRegisteredMem"] = {"hipDeviceAttributeCanUseHostPointerForRegisteredMem", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 91 // API_DRIVER ANALOGUE (CU_DEVICE_ATTRIBUTE_CAN_USE_HOST_POINTER_FOR_REGISTERED_MEM = 91) // Pointer Attributes // struct cudaPointerAttributes @@ -1252,12 +1467,21 @@ struct cuda2hipMap { cuda2hipRename["cudaDeviceGetStreamPriorityRange"] = {"hipDeviceGetStreamPriorityRange", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; cuda2hipRename["cudaSetValidDevices"] = {"hipSetValidDevices", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; + // unsupported yet by HIP [CUDA 8.0.44] + // P2P Attributes + cuda2hipRename["cudaDeviceP2PAttr"] = {"hipDeviceP2PAttribute", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // API_DRIVER ANALOGUE (CUdevice_P2PAttribute) + cuda2hipRename["cudaDevP2PAttrPerformanceRank"] = {"hipDeviceP2PAttributePerformanceRank", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 0x01 // API_DRIVER ANALOGUE (CU_DEVICE_P2P_ATTRIBUTE_PERFORMANCE_RANK = 0x01) + cuda2hipRename["cudaDevP2PAttrAccessSupported"] = {"hipDeviceP2PAttributeAccessSupported", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 0x02 // API_DRIVER ANALOGUE (CU_DEVICE_P2P_ATTRIBUTE_ACCESS_SUPPORTED = 0x02) + cuda2hipRename["cudaDevP2PAttrNativeAtomicSupported"] = {"hipDeviceP2PAttributeNativeAtomicSupported", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 0x03 // API_DRIVER ANALOGUE (CU_DEVICE_P2P_ATTRIBUTE_NATIVE_ATOMIC_SUPPORTED = 0x03) + // [CUDA 8.0.44] + cuda2hipRename["cudaDeviceGetP2PAttribute"] = {"hipDeviceGetP2PAttribute", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // API_DRIVER ANALOGUE (cuDeviceGetP2PAttribute) + // Compute mode cuda2hipRename["cudaComputeMode"] = {"hipComputeMode", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // API_DRIVER ANALOGUE (CUcomputemode) - cuda2hipRename["cudaComputeModeDefault"] = {"hipComputeModeDefault", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 0 - cuda2hipRename["cudaComputeModeExclusive"] = {"hipComputeModeExclusive", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 1 - cuda2hipRename["cudaComputeModeProhibited"] = {"hipComputeModeProhibited", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 2 - cuda2hipRename["cudaComputeModeExclusiveProcess"] = {"hipComputeModeExclusiveProcess", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 3 + cuda2hipRename["cudaComputeModeDefault"] = {"hipComputeModeDefault", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 0 // API_DRIVER ANALOGUE (CU_COMPUTEMODE_DEFAULT = 0) + cuda2hipRename["cudaComputeModeExclusive"] = {"hipComputeModeExclusive", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 1 // API_DRIVER ANALOGUE (CU_COMPUTEMODE_EXCLUSIVE = 1) + cuda2hipRename["cudaComputeModeProhibited"] = {"hipComputeModeProhibited", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 2 // API_DRIVER ANALOGUE (CU_COMPUTEMODE_PROHIBITED = 2) + cuda2hipRename["cudaComputeModeExclusiveProcess"] = {"hipComputeModeExclusiveProcess", CONV_DEV, API_RUNTIME, HIP_UNSUPPORTED}; // 3 // API_DRIVER ANALOGUE (CU_COMPUTEMODE_EXCLUSIVE_PROCESS = 3) // Device Flags // unsupported yet by HIP @@ -1415,7 +1639,7 @@ struct cuda2hipMap { cuda2hipRename["cudaResourceTypeLinear"] = {"hipResourceTypeLinear", CONV_TEX, API_RUNTIME, HIP_UNSUPPORTED}; // 0x02 // API_Driver ANALOGUE (CU_RESOURCE_TYPE_LINEAR = 0x02) cuda2hipRename["cudaResourceTypePitch2D"] = {"hipResourceTypePitch2D", CONV_TEX, API_RUNTIME, HIP_UNSUPPORTED}; // 0x03 // API_Driver ANALOGUE (CU_RESOURCE_TYPE_PITCH2D = 0x03) - + // enum cudaResourceViewFormat cuda2hipRename["cudaResourceViewFormat"] = {"hipResourceViewFormat", CONV_TEX, API_RUNTIME, HIP_UNSUPPORTED}; // API_Driver ANALOGUE (CUresourceViewFormat) cuda2hipRename["cudaResViewFormatNone"] = {"hipResViewFormatNone", CONV_TEX, API_RUNTIME, HIP_UNSUPPORTED}; // 0x00 // API_Driver ANALOGUE (CU_RES_VIEW_FORMAT_NONE = 0x00) cuda2hipRename["cudaResViewFormatUnsignedChar1"] = {"hipResViewFormatUnsignedChar1", CONV_TEX, API_RUNTIME, HIP_UNSUPPORTED}; // 0x01 // API_Driver ANALOGUE (CU_RES_VIEW_FORMAT_UINT_1X8 = 0x01) @@ -1543,7 +1767,7 @@ struct cuda2hipMap { // Blas types cuda2hipRename["cublasHandle_t"] = {"hipblasHandle_t", CONV_TYPE, API_BLAS}; // TODO: dereferencing: typedef struct cublasContext *cublasHandle_t; - cuda2hipRename["cublasContext"] = {"hipblasHandle_t", CONV_TYPE, API_BLAS}; + // cuda2hipRename["cublasContext"] = {"hipblasHandle_t", CONV_TYPE, API_BLAS}; // Blas management functions // unsupported yet by hipblas/hcblas cuda2hipRename["cublasInit"] = {"hipblasInit", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; @@ -1651,10 +1875,9 @@ struct cuda2hipMap { // AXPY cuda2hipRename["cublasSaxpy"] = {"hipblasSaxpy", CONV_MATH_FUNC, API_BLAS}; - // there is no such a function in CUDA cuda2hipRename["cublasSaxpyBatched"] = {"hipblasSaxpyBatched", CONV_MATH_FUNC, API_BLAS}; // unsupported yet by hipblas/hcblas - cuda2hipRename["cublasDaxpy"] = {"hipblasDaxpy", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; + cuda2hipRename["cublasDaxpy"] = {"hipblasDaxpy", CONV_MATH_FUNC, API_BLAS}; cuda2hipRename["cublasCaxpy"] = {"hipblasCaxpy", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; cuda2hipRename["cublasZaxpy"] = {"hipblasZaxpy", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; @@ -1731,8 +1954,8 @@ struct cuda2hipMap { cuda2hipRename["cublasSgemv"] = {"hipblasSgemv", CONV_MATH_FUNC, API_BLAS}; // there is no such a function in CUDA cuda2hipRename["cublasSgemvBatched"] = {"hipblasSgemvBatched", CONV_MATH_FUNC, API_BLAS}; + cuda2hipRename["cublasDgemv"] = {"hipblasDgemv", CONV_MATH_FUNC, API_BLAS}; // unsupported yet by hipblas/hcblas - cuda2hipRename["cublasDgemv"] = {"hipblasDgemv", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; cuda2hipRename["cublasCgemv"] = {"hipblasCgemv", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; cuda2hipRename["cublasZgemv"] = {"hipblasZgemv", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; @@ -1810,8 +2033,8 @@ struct cuda2hipMap { // GER cuda2hipRename["cublasSger"] = {"hipblasSger", CONV_MATH_FUNC, API_BLAS}; + cuda2hipRename["cublasDger"] = {"hipblasDger", CONV_MATH_FUNC, API_BLAS}; // unsupported yet by hipblas/hcblas - cuda2hipRename["cublasDger"] = {"hipblasDger", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; cuda2hipRename["cublasCgeru"] = {"hipblasCgeru", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; cuda2hipRename["cublasCgerc"] = {"hipblasCgerc", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; cuda2hipRename["cublasZgeru"] = {"hipblasZgeru", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; @@ -1848,8 +2071,7 @@ struct cuda2hipMap { // Blas3 (v1) Routines // GEMM cuda2hipRename["cublasSgemm"] = {"hipblasSgemm", CONV_MATH_FUNC, API_BLAS}; - // unsupported yet by hipblas/hcblas - cuda2hipRename["cublasDgemm"] = {"hipblasDgemm", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; + cuda2hipRename["cublasDgemm"] = {"hipblasDgemm", CONV_MATH_FUNC, API_BLAS}; cuda2hipRename["cublasCgemm"] = {"hipblasCgemm", CONV_MATH_FUNC, API_BLAS}; // unsupported yet by hipblas/hcblas @@ -1857,8 +2079,7 @@ struct cuda2hipMap { // BATCH GEMM cuda2hipRename["cublasSgemmBatched"] = {"hipblasSgemmBatched", CONV_MATH_FUNC, API_BLAS}; - // unsupported yet by hipblas/hcblas - cuda2hipRename["cublasDgemmBatched"] = {"hipblasDgemmBatched", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; + cuda2hipRename["cublasDgemmBatched"] = {"hipblasDgemmBatched", CONV_MATH_FUNC, API_BLAS}; cuda2hipRename["cublasCgemmBatched"] = {"hipblasCgemmBatched", CONV_MATH_FUNC, API_BLAS}; // unsupported yet by hipblas/hcblas @@ -2016,10 +2237,9 @@ struct cuda2hipMap { cuda2hipRename["cublasCreate_v2"] = {"hipblasCreate", CONV_MATH_FUNC, API_BLAS}; cuda2hipRename["cublasDestroy_v2"] = {"hipblasDestroy", CONV_MATH_FUNC, API_BLAS}; - // unsupported yet by hipblas/hcblas cuda2hipRename["cublasGetVersion_v2"] = {"hipblasGetVersion", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; - cuda2hipRename["cublasSetStream_v2"] = {"hipblasSetStream", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; - cuda2hipRename["cublasGetStream_v2"] = {"hipblasGetStream", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; + cuda2hipRename["cublasSetStream_v2"] = {"hipblasSetStream", CONV_MATH_FUNC, API_BLAS}; + cuda2hipRename["cublasGetStream_v2"] = {"hipblasGetStream", CONV_MATH_FUNC, API_BLAS}; cuda2hipRename["cublasGetPointerMode_v2"] = {"hipblasGetPointerMode", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; cuda2hipRename["cublasSetPointerMode_v2"] = {"hipblasSetPointerMode", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; @@ -2236,7 +2456,7 @@ struct cuda2hipMap { // AXPY cuda2hipRename["cublasSaxpy_v2"] = {"hipblasSaxpy", CONV_MATH_FUNC, API_BLAS}; // unsupported yet by hipblas/hcblas - cuda2hipRename["cublasDaxpy_v2"] = {"hipblasDaxpy", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; + cuda2hipRename["cublasDaxpy_v2"] = {"hipblasDaxpy", CONV_MATH_FUNC, API_BLAS}; cuda2hipRename["cublasCaxpy_v2"] = {"hipblasCaxpy", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; cuda2hipRename["cublasZaxpy_v2"] = {"hipblasZaxpy", CONV_MATH_FUNC, API_BLAS, HIP_UNSUPPORTED}; @@ -2635,7 +2855,7 @@ private: bool cudaCall(const MatchFinder::MatchResult &Result) { if (const CallExpr *call = Result.Nodes.getNodeAs("cudaCall")) { const FunctionDecl *funcDcl = call->getDirectCallee(); - StringRef name = funcDcl->getDeclName().getAsString(); + std::string name = funcDcl->getDeclName().getAsString(); SourceManager *SM = Result.SourceManager; SourceLocation sl = call->getLocStart(); const auto found = N.cuda2hipRename.find(name); @@ -2659,16 +2879,16 @@ private: } } if (bReplace) { - updateCounters(found->second, name.str()); + updateCounters(found->second, name); Replacement Rep(*SM, sl, length, repName); FullSourceLoc fullSL(sl, *SM); insertReplacement(Rep, fullSL); } } else { - updateCounters(found->second, name.str()); + updateCounters(found->second, name); } } else { - std::string msg = "the following reference is not handled: '" + name.str() + "' [function call]."; + std::string msg = "the following reference is not handled: '" + name + "' [function call]."; printHipifyMessage(*SM, sl, msg); } return true; @@ -2783,7 +3003,7 @@ private: bool cudaEnumConstantRef(const MatchFinder::MatchResult &Result) { if (const DeclRefExpr *enumConstantRef = Result.Nodes.getNodeAs("cudaEnumConstantRef")) { - StringRef name = enumConstantRef->getDecl()->getNameAsString(); + StringRef name = enumConstantRef->getDecl()->getName(); SourceLocation sl = enumConstantRef->getLocStart(); SourceManager *SM = Result.SourceManager; const auto found = N.cuda2hipRename.find(name); @@ -2804,20 +3024,30 @@ private: return false; } - bool cudaEnumConstantDecl(const MatchFinder::MatchResult &Result) { - if (const VarDecl *enumConstantDecl = Result.Nodes.getNodeAs("cudaEnumConstantDecl")) { - StringRef name = - enumConstantDecl->getType()->getAsTagDecl()->getNameAsString(); - // anonymous typedef enum - if (name.empty()) { - QualType QT = enumConstantDecl->getType().getUnqualifiedType(); - name = QT.getAsString(); + bool cudaEnumDecl(const MatchFinder::MatchResult &Result) { + if (const VarDecl *enumDecl = Result.Nodes.getNodeAs("cudaEnumDecl")) { + std::string name = enumDecl->getType()->getAsTagDecl()->getNameAsString(); + QualType QT = enumDecl->getType().getUnqualifiedType(); + std::string name_unqualified = QT.getAsString(); + if ((name_unqualified.find(' ') == std::string::npos && name.find(' ') == std::string::npos) || name.empty()) { + name = name_unqualified; } - SourceLocation sl = enumConstantDecl->getLocStart(); + // Workaround for enum VarDecl as param decl, declared with enum type specifier + // Example: void func(enum cudaMemcpyKind kind); + //------------------------------------------------- SourceManager *SM = Result.SourceManager; + SourceLocation sl(enumDecl->getLocStart()); + SourceLocation end(enumDecl->getLocEnd()); + size_t repLength = SM->getCharacterData(end) - SM->getCharacterData(sl); + StringRef sfull = StringRef(SM->getCharacterData(sl), repLength); + size_t offset = sfull.find(name); + if (offset > 0) { + sl = sl.getLocWithOffset(offset); + } + //------------------------------------------------- const auto found = N.cuda2hipRename.find(name); if (found != N.cuda2hipRename.end()) { - updateCounters(found->second, name.str()); + updateCounters(found->second, name); if (!found->second.unsupported) { StringRef repName = found->second.hipName; Replacement Rep(*SM, sl, name.size(), repName); @@ -2825,7 +3055,7 @@ private: insertReplacement(Rep, fullSL); } } else { - std::string msg = "the following reference is not handled: '" + name.str() + "' [enum constant decl]."; + std::string msg = "the following reference is not handled: '" + name + "' [enum constant decl]."; printHipifyMessage(*SM, sl, msg); } return true; @@ -2833,6 +3063,51 @@ private: return false; } + bool cudaEnumVarPtr(const MatchFinder::MatchResult &Result) { + if (const VarDecl *enumVarPtr = Result.Nodes.getNodeAs("cudaEnumVarPtr")) { + const Type *t = enumVarPtr->getType().getTypePtrOrNull(); + if (t) { + QualType QT = t->getPointeeType(); + std::string name = QT.getAsString(); + QT = enumVarPtr->getType().getUnqualifiedType(); + std::string name_unqualified = QT.getAsString(); + if ((name_unqualified.find(' ') == std::string::npos && name.find(' ') == std::string::npos) || name.empty()) { + name = name_unqualified; + } + // Workaround for enum VarDecl as param decl, declared with enum type specifier + // Example: void func(enum cudaMemcpyKind kind); + //------------------------------------------------- + SourceManager *SM = Result.SourceManager; + TypeLoc TL = enumVarPtr->getTypeSourceInfo()->getTypeLoc(); + SourceLocation sl(TL.getUnqualifiedLoc().getLocStart()); + SourceLocation end(TL.getUnqualifiedLoc().getLocEnd()); + size_t repLength = SM->getCharacterData(end) - SM->getCharacterData(sl); + StringRef sfull = StringRef(SM->getCharacterData(sl), repLength); + size_t offset = sfull.find(name); + if (offset > 0) { + sl = sl.getLocWithOffset(offset); + } + //------------------------------------------------- + const auto found = N.cuda2hipRename.find(name); + if (found != N.cuda2hipRename.end()) { + updateCounters(found->second, name); + if (!found->second.unsupported) { + StringRef repName = found->second.hipName; + Replacement Rep(*SM, sl, name.size(), repName); + FullSourceLoc fullSL(sl, *SM); + insertReplacement(Rep, fullSL); + } + } + else { + std::string msg = "the following reference is not handled: '" + name + "' [enum var ptr]."; + printHipifyMessage(*SM, sl, msg); + } + } + return true; + } + return false; + } + bool cudaTypedefVar(const MatchFinder::MatchResult &Result) { if (const VarDecl *typedefVar = Result.Nodes.getNodeAs("cudaTypedefVar")) { QualType QT = typedefVar->getType(); @@ -2840,12 +3115,12 @@ private: QT = QT.getTypePtr()->getAsArrayTypeUnsafe()->getElementType(); } QT = QT.getUnqualifiedType(); - StringRef name = QT.getAsString(); + std::string name = QT.getAsString(); SourceLocation sl = typedefVar->getLocStart(); SourceManager *SM = Result.SourceManager; const auto found = N.cuda2hipRename.find(name); if (found != N.cuda2hipRename.end()) { - updateCounters(found->second, name.str()); + updateCounters(found->second, name); if (!found->second.unsupported) { StringRef repName = found->second.hipName; Replacement Rep(*SM, sl, name.size(), repName); @@ -2853,7 +3128,7 @@ private: insertReplacement(Rep, fullSL); } } else { - std::string msg = "the following reference is not handled: '" + name.str() + "' [typedef var]."; + std::string msg = "the following reference is not handled: '" + name + "' [typedef var]."; printHipifyMessage(*SM, sl, msg); } return true; @@ -2870,10 +3145,10 @@ private: SourceLocation sl = TL.getUnqualifiedLoc().getLocStart(); QualType QT = t->getPointeeType(); QT = QT.getUnqualifiedType(); - StringRef name = QT.getAsString(); + std::string name = QT.getAsString(); const auto found = N.cuda2hipRename.find(name); if (found != N.cuda2hipRename.end()) { - updateCounters(found->second, name.str()); + updateCounters(found->second, name); if (!found->second.unsupported) { StringRef repName = found->second.hipName; Replacement Rep(*SM, sl, name.size(), repName); @@ -2882,7 +3157,7 @@ private: } } else { - std::string msg = "the following reference is not handled: '" + name.str() + "' [typedef var ptr]."; + std::string msg = "the following reference is not handled: '" + name + "' [typedef var ptr]."; printHipifyMessage(*SM, sl, msg); } } @@ -2896,13 +3171,13 @@ private: QualType QT = structVar->getType(); // ToDo: find case-studies with types other than Struct. if (QT->isStructureType()) { - StringRef name = QT.getTypePtr()->getAsStructureType()->getDecl()->getNameAsString(); + std::string name = QT.getTypePtr()->getAsStructureType()->getDecl()->getNameAsString(); TypeLoc TL = structVar->getTypeSourceInfo()->getTypeLoc(); SourceLocation sl = TL.getUnqualifiedLoc().getLocStart(); SourceManager *SM = Result.SourceManager; const auto found = N.cuda2hipRename.find(name); if (found != N.cuda2hipRename.end()) { - updateCounters(found->second, name.str()); + updateCounters(found->second, name); if (!found->second.unsupported) { StringRef repName = found->second.hipName; Replacement Rep(*SM, sl, name.size(), repName); @@ -2911,7 +3186,7 @@ private: } } else { - std::string msg = "the following reference is not handled: '" + name.str() + "' [struct var]."; + std::string msg = "the following reference is not handled: '" + name + "' [struct var]."; printHipifyMessage(*SM, sl, msg); } } @@ -2978,13 +3253,69 @@ private: return false; } + bool cudaNewOperatorDecl(const MatchFinder::MatchResult &Result) { + if (const auto *newOperator = Result.Nodes.getNodeAs("cudaNewOperatorDecl")) { + const Type *t = newOperator->getType().getTypePtrOrNull(); + if (t) { + SourceManager *SM = Result.SourceManager; + TypeLoc TL = newOperator->getAllocatedTypeSourceInfo()->getTypeLoc(); + SourceLocation sl = TL.getUnqualifiedLoc().getLocStart(); + QualType QT = t->getPointeeType(); + std::string name = QT.getAsString(); + const auto found = N.cuda2hipRename.find(name); + if (found != N.cuda2hipRename.end()) { + updateCounters(found->second, name); + if (!found->second.unsupported) { + StringRef repName = found->second.hipName; + Replacement Rep(*SM, sl, name.size(), repName); + FullSourceLoc fullSL(sl, *SM); + insertReplacement(Rep, fullSL); + } + } + else { + std::string msg = "the following reference is not handled: '" + name + "' [new operator]."; + printHipifyMessage(*SM, sl, msg); + } + } + } + return false; + } + + bool cudaFunctionReturn(const MatchFinder::MatchResult &Result) { + if (const auto *ret = Result.Nodes.getNodeAs("cudaFunctionReturn")) { + QualType QT = ret->getReturnType(); + SourceManager *SM = Result.SourceManager; + SourceRange sr = ret->getReturnTypeSourceRange(); + SourceLocation sl = sr.getBegin(); + std::string name = QT.getAsString(); + if (QT.getTypePtr()->isEnumeralType()) { + name = QT.getTypePtr()->getAs()->getDecl()->getNameAsString(); + } + const auto found = N.cuda2hipRename.find(name); + if (found != N.cuda2hipRename.end()) { + updateCounters(found->second, name); + if (!found->second.unsupported) { + StringRef repName = found->second.hipName; + Replacement Rep(*SM, sl, name.size(), repName); + FullSourceLoc fullSL(sl, *SM); + insertReplacement(Rep, fullSL); + } + } + else { + std::string msg = "the following reference is not handled: '" + name + "' [function return]."; + printHipifyMessage(*SM, sl, msg); + } + } + return false; + } + bool cudaSharedIncompleteArrayVar(const MatchFinder::MatchResult &Result) { StringRef refName = "cudaSharedIncompleteArrayVar"; if (const VarDecl *sharedVar = Result.Nodes.getNodeAs(refName)) { // Example: extern __shared__ uint sRadix1[]; if (sharedVar->hasExternalFormalLinkage()) { QualType QT = sharedVar->getType(); - StringRef typeName; + std::string typeName; if (QT->isIncompleteArrayType()) { const ArrayType *AT = QT.getTypePtr()->getAsArrayTypeUnsafe(); QT = AT->getElementType(); @@ -3006,9 +3337,8 @@ private: SourceLocation slEnd = sharedVar->getLocEnd(); SourceManager *SM = Result.SourceManager; size_t repLength = SM->getCharacterData(slEnd) - SM->getCharacterData(slStart) + 1; - SmallString<128> tmpData; - StringRef varName = sharedVar->getNameAsString(); - StringRef repName = Twine("HIP_DYNAMIC_SHARED(" + typeName + ", " + varName + ")").toStringRef(tmpData); + std::string varName = sharedVar->getNameAsString(); + std::string repName = "HIP_DYNAMIC_SHARED(" + typeName + ", " + varName + ")"; Replacement Rep(*SM, slStart, repLength, repName); FullSourceLoc fullSL(slStart, *SM); insertReplacement(Rep, fullSL); @@ -3024,7 +3354,7 @@ private: bool cudaParamDecl(const MatchFinder::MatchResult &Result) { if (const ParmVarDecl *paramDecl = Result.Nodes.getNodeAs("cudaParamDecl")) { QualType QT = paramDecl->getOriginalType().getUnqualifiedType(); - StringRef name = QT.getAsString(); + std::string name = QT.getAsString(); const Type *t = QT.getTypePtr(); if (t->isStructureOrClassType()) { name = t->getAsCXXRecordDecl()->getName(); @@ -3034,7 +3364,7 @@ private: SourceManager *SM = Result.SourceManager; const auto found = N.cuda2hipRename.find(name); if (found != N.cuda2hipRename.end()) { - updateCounters(found->second, name.str()); + updateCounters(found->second, name); if (!found->second.unsupported) { StringRef repName = found->second.hipName; Replacement Rep(*SM, sl, name.size(), repName); @@ -3042,7 +3372,7 @@ private: insertReplacement(Rep, fullSL); } } else { - std::string msg = "the following reference is not handled: '" + name.str() + "' [param decl]."; + std::string msg = "the following reference is not handled: '" + name + "' [param decl]."; printHipifyMessage(*SM, sl, msg); } return true; @@ -3113,7 +3443,8 @@ public: if (cudaCall(Result)) break; if (cudaBuiltin(Result)) break; if (cudaEnumConstantRef(Result)) break; - if (cudaEnumConstantDecl(Result)) break; + if (cudaEnumDecl(Result)) break; + if (cudaEnumVarPtr(Result)) break; if (cudaTypedefVar(Result)) break; if (cudaTypedefVarPtr(Result)) break; if (cudaStructVar(Result)) break; @@ -3122,6 +3453,8 @@ public: if (cudaParamDecl(Result)) break; if (cudaParamDeclPtr(Result)) break; if (cudaLaunchKernel(Result)) break; + if (cudaNewOperatorDecl(Result)) break; + if (cudaFunctionReturn(Result)) break; if (cudaSharedIncompleteArrayVar(Result)) break; if (stringLiteral(Result)) break; if (unresolvedTemplateName(Result)) break; @@ -3159,7 +3492,12 @@ void addAllMatchers(ast_matchers::MatchFinder &Finder, Cuda2HipCallback *Callbac Callback); Finder.addMatcher(varDecl(isExpansionInMainFile(), hasType(enumDecl())) - .bind("cudaEnumConstantDecl"), + .bind("cudaEnumDecl"), + Callback); + Finder.addMatcher(varDecl(isExpansionInMainFile(), + hasType(pointsTo(enumDecl( + matchesName("cu.*|CU.*"))))) + .bind("cudaEnumVarPtr"), Callback); Finder.addMatcher(varDecl(isExpansionInMainFile(), hasType(typedefDecl(matchesName("cu.*|CU.*")))) @@ -3214,6 +3552,23 @@ void addAllMatchers(ast_matchers::MatchFinder &Finder, Cuda2HipCallback *Callbac hasType(incompleteArrayType()))) .bind("cudaSharedIncompleteArrayVar"), Callback); + // Example: + // CUjit_option *jitOptions = new CUjit_option[jitNumOptions]; + // hipJitOption *jitOptions = new hipJitOption[jitNumOptions]; + Finder.addMatcher(cxxNewExpr(isExpansionInMainFile(), + hasType(pointsTo(namedDecl(matchesName("cu.*|CU.*"))))) + .bind("cudaNewOperatorDecl"), + Callback); + // Examples: + // 1. + // cudaStream_t cuda_memcpy_stream(...) + // 2. + // template cudaMemcpyKind cuda_memcpy_kind(...) + Finder.addMatcher(functionDecl(isExpansionInMainFile(), + returns(hasDeclaration(namedDecl(matchesName("cu.*|CU.*"))))) + .bind("cudaFunctionReturn"), + Callback); + } int64_t printStats(const std::string &csvFile, const std::string &srcFile, @@ -3468,7 +3823,11 @@ void printAllStats(const std::string &csvFile, int64_t totalFiles, int64_t conve int main(int argc, const char **argv) { auto start = std::chrono::steady_clock::now(); auto begin = start; +#if (LLVM_VERSION_MAJOR >= 3) && (LLVM_VERSION_MINOR >= 9) + llvm::sys::PrintStackTraceOnErrorSignal(StringRef()); +#else llvm::sys::PrintStackTraceOnErrorSignal(); +#endif CommonOptionsParser OptionsParser(argc, argv, ToolTemplateCategory, llvm::cl::OneOrMore); std::vector fileSources = OptionsParser.getSourcePathList(); std::string dst = OutputFilename; diff --git a/include/hip/hcc_detail/grid_launch_GGL.hpp b/include/hip/hcc_detail/grid_launch_GGL.hpp index 2dd9a95bc6..eac48b595e 100644 --- a/include/hip/hcc_detail/grid_launch_GGL.hpp +++ b/include/hip/hcc_detail/grid_launch_GGL.hpp @@ -89,8 +89,7 @@ namespace hip_impl dim3 dim_blocks, int group_mem_bytes, const hc::accelerator_view& acc_v, - K k, - Ts&&... args) + K k) { const auto d = hc::extent<3>{ num_blocks.z * dim_blocks.z, @@ -102,16 +101,11 @@ namespace hip_impl group_mem_bytes); try { - hc::parallel_for_each( - acc_v, - d, - [=](const hc::tiled_index<3>& idx) [[hc]] { - k(args...); - }); + hc::parallel_for_each(acc_v, d, k); } catch (std::exception& ex) { - std::cerr << "Failed in " << __FUNCTION__ << ", with exception: " - << ex.what() << std::endl; + std::cerr << "Failed in " << __func__ << ", with exception: " + << ex.what() << std::endl; throw; } } @@ -133,8 +127,7 @@ namespace hip_impl int group_mem_bytes, hipStream_t stream, const char* kernel_name, - K k, - Ts&&... args) + K k) { void* lck_stream = nullptr; auto acc_v = lock_stream_hip_(stream, lck_stream); @@ -156,12 +149,11 @@ namespace hip_impl std::move(dim_blocks), group_mem_bytes, acc_v, - std::move(k), - std::forward(args)...); + std::move(k)); } catch (std::exception& ex) { - std::cerr << "Failed in " << __FUNCTION__ << ", with exception: " - << ex.what() << std::endl; + std::cerr << "Failed in " << __func__ << ", with exception: " + << ex.what() << std::endl; throw; } } @@ -175,8 +167,7 @@ namespace hip_impl dim3 dim_blocks, int group_mem_bytes, hipStream_t stream, - K k, - Ts&&... args) + K k) { grid_launch_hip_impl_( New_grid_launch_tag{}, @@ -184,9 +175,7 @@ namespace hip_impl std::move(dim_blocks), group_mem_bytes, std::move(stream), - std::move(k), - hipLaunchParm{}, - std::forward(args)...); + std::move(k)); } template @@ -199,8 +188,7 @@ namespace hip_impl int group_mem_bytes, hipStream_t stream, const char* kernel_name, - K k, - Ts&&... args) + K k) { grid_launch_hip_impl_( New_grid_launch_tag{}, @@ -209,9 +197,7 @@ namespace hip_impl group_mem_bytes, std::move(stream), kernel_name, - std::move(k), - hipLaunchParm{}, - std::forward(args)...); + std::move(k)); } template @@ -223,8 +209,7 @@ namespace hip_impl int group_mem_bytes, hipStream_t stream, const char* kernel_name, - K k, - Ts&& ... args) + K k) { grid_launch_hip_impl_( is_new_grid_launch_t{}, @@ -233,8 +218,7 @@ namespace hip_impl group_mem_bytes, std::move(stream), kernel_name, - std::move(k), - std::forward(args)...); + std::move(k)); } template @@ -245,8 +229,7 @@ namespace hip_impl dim3 dim_blocks, int group_mem_bytes, hipStream_t stream, - K k, - Ts&& ... args) + K k) { grid_launch_hip_impl_( is_new_grid_launch_t{}, @@ -254,610 +237,771 @@ namespace hip_impl std::move(dim_blocks), group_mem_bytes, std::move(stream), - std::move(k), - std::forward(args)...); + std::move(k)); } - namespace - { - template - constexpr - inline - T&& forward_(std::remove_reference_t& x) [[hc]] - { - return static_cast(x); - } + // TODO: these are temporary and purposefully noisy and disruptive. + #define make_kernel_name_hip(k, n)\ + HIP_kernel_functor_name_begin ## _ ## k ## _ ## \ + HIP_kernel_functor_name_end ## _ ## n - template - struct Forwarder { - template - void operator()(Ts&&...args) const [[hc]] - { - k(forward_(args)...); - } - }; - } + #define make_kernel_functor_hip_30(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23,\ + p24, p25, p26, p27)\ + struct make_kernel_name_hip(function_name, 28) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + std::decay_t _p13_;\ + std::decay_t _p14_;\ + std::decay_t _p15_;\ + std::decay_t _p16_;\ + std::decay_t _p17_;\ + std::decay_t _p18_;\ + std::decay_t _p19_;\ + std::decay_t _p20_;\ + std::decay_t _p21_;\ + std::decay_t _p22_;\ + std::decay_t _p23_;\ + std::decay_t _p24_;\ + std::decay_t _p25_;\ + std::decay_t _p26_;\ + std::decay_t _p27_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ + _p18_, _p19_, _p20_, _p21_, _p22_, _p23_, _p24_, _p25_,\ + _p26_, _p27_);\ + }\ + } + #define make_kernel_functor_hip_29(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23,\ + p24, p25, p26)\ + struct make_kernel_name_hip(function_name, 27) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + std::decay_t _p13_;\ + std::decay_t _p14_;\ + std::decay_t _p15_;\ + std::decay_t _p16_;\ + std::decay_t _p17_;\ + std::decay_t _p18_;\ + std::decay_t _p19_;\ + std::decay_t _p20_;\ + std::decay_t _p21_;\ + std::decay_t _p22_;\ + std::decay_t _p23_;\ + std::decay_t _p24_;\ + std::decay_t _p25_;\ + std::decay_t _p26_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ + _p18_, _p19_, _p20_, _p21_, _p22_, _p23_, _p24_, _p25_,\ + _p26_);\ + }\ + } + #define make_kernel_functor_hip_28(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23,\ + p24, p25)\ + struct make_kernel_name_hip(function_name, 26) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + std::decay_t _p13_;\ + std::decay_t _p14_;\ + std::decay_t _p15_;\ + std::decay_t _p16_;\ + std::decay_t _p17_;\ + std::decay_t _p18_;\ + std::decay_t _p19_;\ + std::decay_t _p20_;\ + std::decay_t _p21_;\ + std::decay_t _p22_;\ + std::decay_t _p23_;\ + std::decay_t _p24_;\ + std::decay_t _p25_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ + _p18_, _p19_, _p20_, _p21_, _p22_, _p23_, _p24_, _p25_);\ + }\ + } + #define make_kernel_functor_hip_27(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23,\ + p24)\ + struct make_kernel_name_hip(function_name, 25) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + std::decay_t _p13_;\ + std::decay_t _p14_;\ + std::decay_t _p15_;\ + std::decay_t _p16_;\ + std::decay_t _p17_;\ + std::decay_t _p18_;\ + std::decay_t _p19_;\ + std::decay_t _p20_;\ + std::decay_t _p21_;\ + std::decay_t _p22_;\ + std::decay_t _p23_;\ + std::decay_t _p24_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ + _p18_, _p19_, _p20_, _p21_, _p22_, _p23_, _p24_);\ + }\ + } + #define make_kernel_functor_hip_26(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23)\ + struct make_kernel_name_hip(function_name, 24) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + std::decay_t _p13_;\ + std::decay_t _p14_;\ + std::decay_t _p15_;\ + std::decay_t _p16_;\ + std::decay_t _p17_;\ + std::decay_t _p18_;\ + std::decay_t _p19_;\ + std::decay_t _p20_;\ + std::decay_t _p21_;\ + std::decay_t _p22_;\ + std::decay_t _p23_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ + _p18_, _p19_, _p20_, _p21_, _p22_, _p23_);\ + }\ + } + #define make_kernel_functor_hip_25(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22)\ + struct make_kernel_name_hip(function_name, 23) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + std::decay_t _p13_;\ + std::decay_t _p14_;\ + std::decay_t _p15_;\ + std::decay_t _p16_;\ + std::decay_t _p17_;\ + std::decay_t _p18_;\ + std::decay_t _p19_;\ + std::decay_t _p20_;\ + std::decay_t _p21_;\ + std::decay_t _p22_;\ + __attribute__((used, flatten))\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ + _p18_, _p19_, _p20_, _p21_, _p22_);\ + }\ + } + #define make_kernel_functor_hip_24(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21)\ + struct make_kernel_name_hip(function_name, 22) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + std::decay_t _p13_;\ + std::decay_t _p14_;\ + std::decay_t _p15_;\ + std::decay_t _p16_;\ + std::decay_t _p17_;\ + std::decay_t _p18_;\ + std::decay_t _p19_;\ + std::decay_t _p20_;\ + std::decay_t _p21_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ + _p18_, _p19_, _p20_, _p21_);\ + }\ + } + #define make_kernel_functor_hip_23(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20)\ + struct make_kernel_name_hip(function_name, 21) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + std::decay_t _p13_;\ + std::decay_t _p14_;\ + std::decay_t _p15_;\ + std::decay_t _p16_;\ + std::decay_t _p17_;\ + std::decay_t _p18_;\ + std::decay_t _p19_;\ + std::decay_t _p20_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ + _p18_, _p19_, _p20_);\ + }\ + } + #define make_kernel_functor_hip_22(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12, p13, p14, p15, p16, p17, p18, p19)\ + struct make_kernel_name_hip(function_name, 20) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + std::decay_t _p13_;\ + std::decay_t _p14_;\ + std::decay_t _p15_;\ + std::decay_t _p16_;\ + std::decay_t _p17_;\ + std::decay_t _p18_;\ + std::decay_t _p19_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ + _p18_, _p19_);\ + }\ + } + #define make_kernel_functor_hip_21(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12, p13, p14, p15, p16, p17, p18)\ + struct make_kernel_name_hip(function_name, 19) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + std::decay_t _p13_;\ + std::decay_t _p14_;\ + std::decay_t _p15_;\ + std::decay_t _p16_;\ + std::decay_t _p17_;\ + std::decay_t _p18_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ + _p18_);\ + }\ + } + #define make_kernel_functor_hip_20(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12, p13, p14, p15, p16, p17)\ + struct make_kernel_name_hip(function_name, 18) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + std::decay_t _p13_;\ + std::decay_t _p14_;\ + std::decay_t _p15_;\ + std::decay_t _p16_;\ + std::decay_t _p17_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_);\ + }\ + } + #define make_kernel_functor_hip_19(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12, p13, p14, p15, p16)\ + struct make_kernel_name_hip(function_name, 17) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + std::decay_t _p13_;\ + std::decay_t _p14_;\ + std::decay_t _p15_;\ + std::decay_t _p16_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_);\ + }\ + } + #define make_kernel_functor_hip_18(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12, p13, p14, p15)\ + struct make_kernel_name_hip(function_name, 16) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + std::decay_t _p13_;\ + std::decay_t _p14_;\ + std::decay_t _p15_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_, _p13_, _p14_, _p15_);\ + }\ + } + #define make_kernel_functor_hip_17(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12, p13, p14)\ + struct make_kernel_name_hip(function_name, 15) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + std::decay_t _p13_;\ + std::decay_t _p14_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_, _p13_, _p14_);\ + }\ + } + #define make_kernel_functor_hip_16(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12, p13)\ + struct make_kernel_name_hip(function_name, 14) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + std::decay_t _p13_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_, _p13_);\ + }\ + } + #define make_kernel_functor_hip_15(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11, p12)\ + struct make_kernel_name_hip(function_name, 13) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + std::decay_t _p12_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_, _p12_);\ + }\ + } + #define make_kernel_functor_hip_14(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,\ + p10, p11)\ + struct make_kernel_name_hip(function_name, 12) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + std::decay_t _p11_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_, _p11_);\ + }\ + } + #define make_kernel_functor_hip_13(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10)\ + struct make_kernel_name_hip(function_name, 11) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + std::decay_t _p10_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ + _p10_);\ + }\ + } + #define make_kernel_functor_hip_12(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)\ + struct make_kernel_name_hip(function_name, 10) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + std::decay_t _p9_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_,\ + _p9_);\ + }\ + } + #define make_kernel_functor_hip_11(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8)\ + struct make_kernel_name_hip(function_name, 9) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + std::decay_t _p8_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(\ + _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_);\ + }\ + } + #define make_kernel_functor_hip_10(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7)\ + struct make_kernel_name_hip(function_name, 8) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + std::decay_t _p7_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_);\ + }\ + } + #define make_kernel_functor_hip_9(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6)\ + struct make_kernel_name_hip(function_name, 7) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + std::decay_t _p6_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_);\ + }\ + } + #define make_kernel_functor_hip_8(\ + function_name, kernel_name, p0, p1, p2, p3, p4, p5)\ + struct make_kernel_name_hip(function_name, 6) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + std::decay_t _p5_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_);\ + }\ + } + #define make_kernel_functor_hip_7(\ + function_name, kernel_name, p0, p1, p2, p3, p4)\ + struct make_kernel_name_hip(function_name, 5) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + std::decay_t _p4_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_);\ + }\ + } + #define make_kernel_functor_hip_6(function_name, kernel_name, p0, p1, p2, p3)\ + struct make_kernel_name_hip(function_name, 4) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + std::decay_t _p3_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(_p0_, _p1_, _p2_, _p3_);\ + }\ + } + #define make_kernel_functor_hip_5(function_name, kernel_name, p0, p1, p2)\ + struct make_kernel_name_hip(function_name, 3) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + std::decay_t _p2_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(_p0_, _p1_, _p2_);\ + }\ + } + #define make_kernel_functor_hip_4(function_name, kernel_name, p0, p1)\ + struct make_kernel_name_hip(function_name, 2) {\ + std::decay_t _p0_;\ + std::decay_t _p1_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(_p0_, _p1_);\ + }\ + } + #define fofo(f, n) kernel_prefix_hip ## f ## kernel_suffix_hip ## n + #define make_kernel_functor_hip_3(function_name, kernel_name, p0)\ + struct make_kernel_name_hip(function_name, 1) {\ + std::decay_t _p0_;\ + void operator()(const hc::tiled_index<3>&) const [[hc]]\ + {\ + kernel_name(_p0_);\ + }\ + } + #define make_kernel_functor_hip_2(function_name, kernel_name)\ + struct make_kernel_name_hip(function_name, 0) {\ + void operator()(const hc::tiled_index<3>&) [[hc]]\ + {\ + return kernel_name(hipLaunchParm{});\ + }\ + } + #define make_kernel_functor_hip_1(...) + #define make_kernel_functor_hip_0(...) + #define make_kernel_functor_hip_(...)\ + overload_macro_hip_(make_kernel_functor_hip_, __VA_ARGS__) - template - requires(Domain == {Ts...}) - inline - void grid_launch( - New_grid_launch_tag, - dim3 num_blocks, - dim3 dim_blocks, - int group_mem_bytes, - hipStream_t stream, - Ts&&... args) - { - grid_launch_hip_impl_( - New_grid_launch_tag{}, - std::move(num_blocks), - std::move(dim_blocks), - group_mem_bytes, - std::move(stream), - Forwarder{}, - std::forward(args)...); - } - template - requires(Domain == {Ts...}) - inline - void grid_launch( - Old_grid_launch_tag, - dim3 num_blocks, - dim3 dim_blocks, - int group_mem_bytes, - hipStream_t stream, - Ts&&... args) - { - grid_launch_hip_( - New_grid_launch_tag{}, - std::move(num_blocks), - std::move(dim_blocks), - group_mem_bytes, - std::move(stream), - hipLaunchParm{}, - std::forward(args)...); - } - - template - requires(Domain == {Ts...}) - inline - std::enable_if_t::value> grid_launch_hip_( - dim3 num_blocks, - dim3 dim_blocks, - int group_mem_bytes, - hipStream_t stream, - Ts&&... args) - { - grid_launch_hip_( - is_new_grid_launch_t{}, - std::move(num_blocks), - std::move(dim_blocks), - group_mem_bytes, - std::move(stream), - std::forward(args)...); - } - - // TODO: these are temporary, they need to be completely removed once we - // enable C++14 support and can have proper generic, variadic lambdas. - #define make_kernel_lambda_hip_26(\ - kernel_name,\ - p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15,\ - p16, p17, p18, p19, p20, p21, p22, p23, p24)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_,\ - const std::decay_t& _p10_,\ - const std::decay_t& _p11_,\ - const std::decay_t& _p12_,\ - const std::decay_t& _p13_,\ - const std::decay_t& _p14_,\ - const std::decay_t& _p15_,\ - const std::decay_t& _p16_,\ - const std::decay_t& _p17_,\ - const std::decay_t& _p18_,\ - const std::decay_t& _p19_,\ - const std::decay_t& _p20_,\ - const std::decay_t& _p21_,\ - const std::decay_t& _p22_,\ - const std::decay_t& _p23_,\ - const std::decay_t& _p24_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_,\ - _p9_, _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ - _p18_, _p19_, _p20_, _p21_, _p22_, _p23_, _p24_);\ - } - #define make_kernel_lambda_hip_25(\ - kernel_name,\ - p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15,\ - p16, p17, p18, p19, p20, p21, p22, p23)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_,\ - const std::decay_t& _p10_,\ - const std::decay_t& _p11_,\ - const std::decay_t& _p12_,\ - const std::decay_t& _p13_,\ - const std::decay_t& _p14_,\ - const std::decay_t& _p15_,\ - const std::decay_t& _p16_,\ - const std::decay_t& _p17_,\ - const std::decay_t& _p18_,\ - const std::decay_t& _p19_,\ - const std::decay_t& _p20_,\ - const std::decay_t& _p21_,\ - const std::decay_t& _p22_,\ - const std::decay_t& _p23_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_,\ - _p9_, _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ - _p18_, _p19_, _p20_, _p21_, _p22_, _p23_);\ - } - #define make_kernel_lambda_hip_24(\ - kernel_name,\ - p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15,\ - p16, p17, p18, p19, p20, p21, p22)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_,\ - const std::decay_t& _p10_,\ - const std::decay_t& _p11_,\ - const std::decay_t& _p12_,\ - const std::decay_t& _p13_,\ - const std::decay_t& _p14_,\ - const std::decay_t& _p15_,\ - const std::decay_t& _p16_,\ - const std::decay_t& _p17_,\ - const std::decay_t& _p18_,\ - const std::decay_t& _p19_,\ - const std::decay_t& _p20_,\ - const std::decay_t& _p21_,\ - const std::decay_t& _p22_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_,\ - _p9_, _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ - _p18_, _p19_, _p20_, _p21_, _p22_);\ - } - #define make_kernel_lambda_hip_23(\ - kernel_name,\ - p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15,\ - p16, p17, p18, p19, p20, p21)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_,\ - const std::decay_t& _p10_,\ - const std::decay_t& _p11_,\ - const std::decay_t& _p12_,\ - const std::decay_t& _p13_,\ - const std::decay_t& _p14_,\ - const std::decay_t& _p15_,\ - const std::decay_t& _p16_,\ - const std::decay_t& _p17_,\ - const std::decay_t& _p18_,\ - const std::decay_t& _p19_,\ - const std::decay_t& _p20_,\ - const std::decay_t& _p21_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_,\ - _p9_, _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ - _p18_, _p19_, _p20_, _p21_);\ - } - #define make_kernel_lambda_hip_22(\ - kernel_name,\ - p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15,\ - p16, p17, p18, p19, p20)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_,\ - const std::decay_t& _p10_,\ - const std::decay_t& _p11_,\ - const std::decay_t& _p12_,\ - const std::decay_t& _p13_,\ - const std::decay_t& _p14_,\ - const std::decay_t& _p15_,\ - const std::decay_t& _p16_,\ - const std::decay_t& _p17_,\ - const std::decay_t& _p18_,\ - const std::decay_t& _p19_,\ - const std::decay_t& _p20_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_,\ - _p9_, _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ - _p18_, _p19_, _p20_);\ - } - #define make_kernel_lambda_hip_21(\ - kernel_name,\ - p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15,\ - p16, p17, p18, p19)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_,\ - const std::decay_t& _p10_,\ - const std::decay_t& _p11_,\ - const std::decay_t& _p12_,\ - const std::decay_t& _p13_,\ - const std::decay_t& _p14_,\ - const std::decay_t& _p15_,\ - const std::decay_t& _p16_,\ - const std::decay_t& _p17_,\ - const std::decay_t& _p18_,\ - const std::decay_t& _p19_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_,\ - _p9_, _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ - _p18_, _p19_);\ - } - #define make_kernel_lambda_hip_20(\ - kernel_name,\ - p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15,\ - p16, p17, p18)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_,\ - const std::decay_t& _p10_,\ - const std::decay_t& _p11_,\ - const std::decay_t& _p12_,\ - const std::decay_t& _p13_,\ - const std::decay_t& _p14_,\ - const std::decay_t& _p15_,\ - const std::decay_t& _p16_,\ - const std::decay_t& _p17_,\ - const std::decay_t& _p18_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_,\ - _p9_, _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_,\ - _p18_);\ - } - #define make_kernel_lambda_hip_19(\ - kernel_name,\ - p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15,\ - p16, p17)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_,\ - const std::decay_t& _p10_,\ - const std::decay_t& _p11_,\ - const std::decay_t& _p12_,\ - const std::decay_t& _p13_,\ - const std::decay_t& _p14_,\ - const std::decay_t& _p15_,\ - const std::decay_t& _p16_,\ - const std::decay_t& _p17_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_,\ - _p9_, _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_, _p17_);\ - } - #define make_kernel_lambda_hip_18(\ - kernel_name,\ - p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15,\ - p16)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_,\ - const std::decay_t& _p10_,\ - const std::decay_t& _p11_,\ - const std::decay_t& _p12_,\ - const std::decay_t& _p13_,\ - const std::decay_t& _p14_,\ - const std::decay_t& _p15_,\ - const std::decay_t& _p16_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_,\ - _p9_, _p10_, _p11_, _p12_, _p13_, _p14_, _p15_, _p16_);\ - } - #define make_kernel_lambda_hip_17(\ - kernel_name,\ - p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_,\ - const std::decay_t& _p10_,\ - const std::decay_t& _p11_,\ - const std::decay_t& _p12_,\ - const std::decay_t& _p13_,\ - const std::decay_t& _p14_,\ - const std::decay_t& _p15_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_,\ - _p9_, _p10_, _p11_, _p12_, _p13_, _p14_, _p15_);\ - } - #define make_kernel_lambda_hip_16(\ - kernel_name,\ - p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_,\ - const std::decay_t& _p10_,\ - const std::decay_t& _p11_,\ - const std::decay_t& _p12_,\ - const std::decay_t& _p13_,\ - const std::decay_t& _p14_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_,\ - _p9_, _p10_, _p11_, _p12_, _p13_, _p14_);\ - } - #define make_kernel_lambda_hip_15(\ - kernel_name,\ - p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_,\ - const std::decay_t& _p10_,\ - const std::decay_t& _p11_,\ - const std::decay_t& _p12_,\ - const std::decay_t& _p13_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_,\ - _p9_, _p10_, _p11_, _p12_, _p13_);\ - } - #define make_kernel_lambda_hip_14(\ - kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_,\ - const std::decay_t& _p10_,\ - const std::decay_t& _p11_,\ - const std::decay_t& _p12_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_,\ - _p9_, _p10_, _p11_, _p12_);\ - } - #define make_kernel_lambda_hip_13(\ - kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_,\ - const std::decay_t& _p10_,\ - const std::decay_t& _p11_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_,\ - _p9_, _p10_, _p11_);\ - } - #define make_kernel_lambda_hip_12(\ - kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_,\ - const std::decay_t& _p10_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_,\ - _p10_);\ - } - #define make_kernel_lambda_hip_11(\ - kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_,\ - const std::decay_t& _p9_) [[hc]] {\ - kernel_name(\ - _p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_);\ - } - #define make_kernel_lambda_hip_10(\ - kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_,\ - const std::decay_t& _p8_) [[hc]] {\ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_);\ - } - #define make_kernel_lambda_hip_9(\ - kernel_name, p0, p1, p2, p3, p4, p5, p6, p7)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_,\ - const std::decay_t& _p7_) [[hc]] {\ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_);\ - } - #define make_kernel_lambda_hip_8(kernel_name, p0, p1, p2, p3, p4, p5, p6)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_,\ - const std::decay_t& _p6_) [[hc]] {\ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_);\ - } - #define make_kernel_lambda_hip_7(kernel_name, p0, p1, p2, p3, p4, p5)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_,\ - const std::decay_t& _p5_) [[hc]] {\ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_);\ - } - #define make_kernel_lambda_hip_6(kernel_name, p0, p1, p2, p3, p4)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_,\ - const std::decay_t& _p4_) [[hc]] {\ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_);\ - } - #define make_kernel_lambda_hip_5(kernel_name, p0, p1, p2, p3)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_,\ - const std::decay_t& _p3_) [[hc]] {\ - kernel_name(_p0_, _p1_, _p2_, _p3_);\ - } - #define make_kernel_lambda_hip_4(kernel_name, p0, p1, p2)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_,\ - const std::decay_t& _p2_) [[hc]] {\ - kernel_name(_p0_, _p1_, _p2_);\ - } - #define make_kernel_lambda_hip_3(kernel_name, p0, p1)\ - [](const std::decay_t& _p0_,\ - const std::decay_t& _p1_) [[hc]] {\ - kernel_name(_p0_, _p1_);\ - } - #define make_kernel_lambda_hip_2(kernel_name, p0)\ - [](const std::decay_t& _p0_) [[hc]] {\ - kernel_name(_p0_);\ - } - #define make_kernel_lambda_hip_1(kernel_name)\ - []() [[hc]] { return kernel_name(hipLaunchParm{}); } - - #define make_kernel_lambda_hip_(...)\ - overload_macro_hip_(make_kernel_lambda_hip_, __VA_ARGS__) + #define hipLaunchNamedKernelGGL(\ + function_name,\ + kernel_name,\ + num_blocks,\ + dim_blocks,\ + group_mem_bytes,\ + stream,\ + ...)\ + do {\ + make_kernel_functor_hip_(function_name, kernel_name, __VA_ARGS__)\ + hip_kernel_functor_impl_{__VA_ARGS__};\ + hip_impl::grid_launch_hip_(\ + num_blocks,\ + dim_blocks,\ + group_mem_bytes,\ + stream,\ + #kernel_name,\ + hip_kernel_functor_impl_);\ + } while(0) #define hipLaunchKernelGGL(\ - kernel_name,\ - num_blocks,\ - dim_blocks,\ - group_mem_bytes,\ - stream,\ - ...)\ - do {\ - hip_impl::grid_launch_hip_(\ - num_blocks,\ - dim_blocks,\ - group_mem_bytes,\ - stream,\ - #kernel_name,\ - make_kernel_lambda_hip_(kernel_name, __VA_ARGS__),\ - ##__VA_ARGS__);\ - } while(0) + kernel_name, num_blocks, dim_blocks, group_mem_bytes, stream, ...)\ + do {\ + hipLaunchNamedKernelGGL(\ + unnamed,\ + kernel_name,\ + num_blocks,\ + dim_blocks,\ + group_mem_bytes,\ + stream,\ + ##__VA_ARGS__);\ + } while (0) #define hipLaunchKernel(\ - kernel_name,\ - num_blocks,\ - dim_blocks,\ - group_mem_bytes,\ - stream,\ - ...)\ - do {\ - hipLaunchKernelGGL(\ - kernel_name,\ - num_blocks,\ - dim_blocks,\ - group_mem_bytes,\ - stream,\ - hipLaunchParm{},\ - ##__VA_ARGS__);\ - } while(0) + kernel_name, num_blocks, dim_blocks, group_mem_bytes, stream, ...)\ + do {\ + hipLaunchKernelGGL(\ + kernel_name,\ + num_blocks,\ + dim_blocks,\ + group_mem_bytes,\ + stream,\ + hipLaunchParm{},\ + ##__VA_ARGS__);\ + } while(0) } #endif //GENERIC_GRID_LAUNCH diff --git a/include/hip/hcc_detail/helpers.hpp b/include/hip/hcc_detail/helpers.hpp index 611929766b..b5502c1efb 100644 --- a/include/hip/hcc_detail/helpers.hpp +++ b/include/hip/hcc_detail/helpers.hpp @@ -102,9 +102,6 @@ namespace hip_impl // Not callable. template struct is_callable_impl : std::false_type {}; - - template - struct is_callable : is_callable_impl {}; #else template struct is_callable_impl : std::false_type {}; @@ -114,6 +111,8 @@ namespace hip_impl F(Ts...), void_t_>> : std::true_type {}; #endif + template + struct is_callable : is_callable_impl {}; #define count_macro_args_impl_hip_(\ _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15,\ diff --git a/include/hip/hcc_detail/hip_fp16.h b/include/hip/hcc_detail/hip_fp16.h index 0a861b64af..4d90ec82b2 100644 --- a/include/hip/hcc_detail/hip_fp16.h +++ b/include/hip/hcc_detail/hip_fp16.h @@ -24,20 +24,11 @@ THE SOFTWARE. #define HIP_INCLUDE_HIP_HCC_DETAIL_HIP_FP16_H #include "hip/hcc_detail/hip_vector_types.h" - -#if __clang_major__ > 3 - +#if ( __clang_major__ > 3) typedef __fp16 __half; - -typedef struct __attribute__((aligned(4))){ - union { - __half p[2]; - unsigned int q; - }; -} __half2; - -typedef __half half; -typedef __half2 half2; +typedef __fp16 __half1 __attribute__((ext_vector_type(1))); +typedef __fp16 __half2 __attribute__((ext_vector_type(2))); +typedef __fp16 half; /* Half Arithmetic Functions @@ -214,10 +205,10 @@ __device__ __half __ushort2half_ru(unsigned short int i); __device__ __half __ushort2half_rz(unsigned short int i); __device__ __half __ushort_as_half(const unsigned short int i); -extern "C" int __hip_hc_ir_hadd2_int(int, int); -extern "C" int __hip_hc_ir_hfma2_int(int, int, int); -extern "C" int __hip_hc_ir_hmul2_int(int, int); -extern "C" int __hip_hc_ir_hsub2_int(int, int); +extern "C" __half2 __hip_hc_ir_hadd2_int(__half2, __half2); +extern "C" __half2 __hip_hc_ir_hfma2_int(__half2, __half2, __half2); +extern "C" __half2 __hip_hc_ir_hmul2_int(__half2, __half2); +extern "C" __half2 __hip_hc_ir_hsub2_int(__half2, __half2); extern "C" __half __hip_hc_ir_hceil_half(__half) __asm("llvm.ceil.f16"); extern "C" __half __hip_hc_ir_hcos_half(__half) __asm("llvm.cos.f16"); @@ -231,16 +222,16 @@ extern "C" __half __hip_hc_ir_hsin_half(__half) __asm("llvm.sin.f16"); extern "C" __half __hip_hc_ir_hsqrt_half(__half) __asm("llvm.sqrt.f16"); extern "C" __half __hip_hc_ir_htrunc_half(__half) __asm("llvm.trunc.f16"); -extern "C" int __hip_hc_ir_h2ceil_int(int); -extern "C" int __hip_hc_ir_h2cos_int(int); -extern "C" int __hip_hc_ir_h2exp2_int(int); -extern "C" int __hip_hc_ir_h2floor_int(int); -extern "C" int __hip_hc_ir_h2log2_int(int); -extern "C" int __hip_hc_ir_h2rcp_int(int); -extern "C" int __hip_hc_ir_h2rsqrt_int(int); -extern "C" int __hip_hc_ir_h2sin_int(int); -extern "C" int __hip_hc_ir_h2sqrt_int(int); -extern "C" int __hip_hc_ir_h2trunc_int(int); +extern "C" __half2 __hip_hc_ir_h2ceil_int(__half2); +extern "C" __half2 __hip_hc_ir_h2cos_int(__half2); +extern "C" __half2 __hip_hc_ir_h2exp2_int(__half2); +extern "C" __half2 __hip_hc_ir_h2floor_int(__half2); +extern "C" __half2 __hip_hc_ir_h2log2_int(__half2); +extern "C" __half2 __hip_hc_ir_h2rcp_int(__half2); +extern "C" __half2 __hip_hc_ir_h2rsqrt_int(__half2); +extern "C" __half2 __hip_hc_ir_h2sin_int(__half2); +extern "C" __half2 __hip_hc_ir_h2sqrt_int(__half2); +extern "C" __half2 __hip_hc_ir_h2trunc_int(__half2); /* Half2 Arithmetic Functions @@ -248,63 +239,63 @@ extern "C" int __hip_hc_ir_h2trunc_int(int); __device__ static inline __half2 __hadd2(__half2 a, __half2 b) { __half2 c; - c.q = __hip_hc_ir_hadd2_int(a.q, b.q); + c.xy = __hip_hc_ir_hadd2_int(a.xy, b.xy); return c; } __device__ static inline __half2 __hadd2_sat(__half2 a, __half2 b) { __half2 c; - c.q = __hip_hc_ir_hadd2_int(a.q, b.q); + c.xy = __hip_hc_ir_hadd2_int(a.xy, b.xy); return c; } __device__ static inline __half2 __hfma2(__half2 a, __half2 b, __half2 c) { __half2 d; - d.q = __hip_hc_ir_hfma2_int(a.q, b.q, c.q); + d.xy = __hip_hc_ir_hfma2_int(a.xy, b.xy, c.xy); return d; } __device__ static inline __half2 __hfma2_sat(__half2 a, __half2 b, __half2 c) { __half2 d; - d.q = __hip_hc_ir_hfma2_int(a.q, b.q, c.q); + d.xy = __hip_hc_ir_hfma2_int(a.xy, b.xy, c.xy); return d; } __device__ static inline __half2 __hmul2(__half2 a, __half2 b) { __half2 c; - c.q = __hip_hc_ir_hmul2_int(a.q, b.q); + c.xy = __hip_hc_ir_hmul2_int(a.xy, b.xy); return c; } __device__ static inline __half2 __hmul2_sat(__half2 a, __half2 b) { __half2 c; - c.q = __hip_hc_ir_hmul2_int(a.q, b.q); + c.xy = __hip_hc_ir_hmul2_int(a.xy, b.xy); return c; } __device__ static inline __half2 __hsub2(__half2 a, __half2 b) { __half2 c; - c.q = __hip_hc_ir_hsub2_int(a.q, b.q); + c.xy = __hip_hc_ir_hsub2_int(a.xy, b.xy); return c; } __device__ static inline __half2 __hneg2(__half2 a) { __half2 c; - c.p[0] = - a.p[0]; - c.p[1] = - a.p[1]; + c.x = - a.x; + c.y = - a.y; return c; } __device__ static inline __half2 __hsub2_sat(__half2 a, __half2 b) { __half2 c; - c.q = __hip_hc_ir_hsub2_int(a.q, b.q); + c.xy = __hip_hc_ir_hsub2_int(a.xy, b.xy); return c; } __device__ static inline __half2 h2div(__half2 a, __half2 b) { __half2 c; - c.p[0] = a.p[0] / b.p[0]; - c.p[1] = a.p[1] / b.p[1]; + c.x = a.x / b.x; + c.y = a.y / b.y; return c; } @@ -375,112 +366,94 @@ Half2 Math Operations __device__ static inline __half2 h2ceil(const __half2 h) { __half2 a; - a.q = __hip_hc_ir_h2ceil_int(h.q); + a.xy = __hip_hc_ir_h2ceil_int(h.xy); return a; } __device__ static inline __half2 h2cos(const __half2 h) { __half2 a; - a.q = __hip_hc_ir_h2cos_int(h.q); + a.xy = __hip_hc_ir_h2cos_int(h.xy); return a; } __device__ static inline __half2 h2exp(const __half2 h) { __half2 factor; - factor.p[0] = 1.442694; - factor.p[1] = 1.442694; - factor.q = __hip_hc_ir_h2exp2_int(__hip_hc_ir_hmul2_int(h.q, factor.q)); + factor.x = 1.442694; + factor.y = 1.442694; + factor.xy = __hip_hc_ir_h2exp2_int(__hip_hc_ir_hmul2_int(h.xy, factor.xy)); return factor; } __device__ static inline __half2 h2exp10(const __half2 h) { __half2 factor; - factor.p[0] = 3.3219281; - factor.p[1] = 3.3219281; - factor.q = __hip_hc_ir_h2exp2_int(__hip_hc_ir_hmul2_int(h.q, factor.q)); + factor.x = 3.3219281; + factor.y = 3.3219281; + factor.xy = __hip_hc_ir_h2exp2_int(__hip_hc_ir_hmul2_int(h.xy, factor.xy)); return factor; } __device__ static inline __half2 h2exp2(const __half2 h) { __half2 a; - a.q = __hip_hc_ir_h2exp2_int(h.q); + a.xy = __hip_hc_ir_h2exp2_int(h.xy); return a; } __device__ static inline __half2 h2floor(const __half2 h) { __half2 a; - a.q = __hip_hc_ir_h2floor_int(h.q); + a.xy = __hip_hc_ir_h2floor_int(h.xy); return a; } __device__ static inline __half2 h2log(const __half2 h) { __half2 factor; - factor.p[0] = 0.693147; - factor.p[1] = 0.693147; - factor. q = __hip_hc_ir_hmul2_int(__hip_hc_ir_h2log2_int(h.q), factor.q); + factor.x = 0.693147; + factor.y = 0.693147; + factor.xy = __hip_hc_ir_hmul2_int(__hip_hc_ir_h2log2_int(h.xy), factor.xy); return factor; } __device__ static inline __half2 h2log10(const __half2 h) { __half2 factor; - factor.p[0] = 0.301029; - factor.p[1] = 0.301029; - factor.q = __hip_hc_ir_hmul2_int(__hip_hc_ir_h2log2_int(h.q), factor.q); + factor.x = 0.301029; + factor.y = 0.301029; + factor.xy = __hip_hc_ir_hmul2_int(__hip_hc_ir_h2log2_int(h.xy), factor.xy); return factor; } __device__ static inline __half2 h2log2(const __half2 h) { __half2 a; - a.q = __hip_hc_ir_h2log2_int(h.q); + a.xy = __hip_hc_ir_h2log2_int(h.xy); return a; } __device__ static inline __half2 h2rcp(const __half2 h) { __half2 a; - a.q = __hip_hc_ir_h2rcp_int(h.q); + a.xy = __hip_hc_ir_h2rcp_int(h.xy); return a; } __device__ static inline __half2 h2rsqrt(const __half2 h) { __half2 a; - a.q = __hip_hc_ir_h2rsqrt_int(h.q); + a.xy = __hip_hc_ir_h2rsqrt_int(h.xy); return a; } __device__ static inline __half2 h2sin(const __half2 h) { __half2 a; - a.q = __hip_hc_ir_h2sin_int(h.q); + a.xy = __hip_hc_ir_h2sin_int(h.xy); return a; } __device__ static inline __half2 h2sqrt(const __half2 h) { __half2 a; - a.q = __hip_hc_ir_h2sqrt_int(h.q); + a.xy = __hip_hc_ir_h2sqrt_int(h.xy); return a; } __device__ static inline __half2 h2trunc(const __half2 h) { __half2 a; - a.q = __hip_hc_ir_h2trunc_int(h.q); + a.xy = __hip_hc_ir_h2trunc_int(h.xy); return a; } - -#endif - -#if __clang_major__ == 3 - -typedef struct { - unsigned x: 16; -} __half; - -typedef struct __attribute__((aligned(4))){ - union { - __half p[2]; - unsigned int q; - }; -} __half2; - - -#endif - +#endif //clang_major > 3 #endif diff --git a/include/hip/hcc_detail/hip_runtime.h b/include/hip/hcc_detail/hip_runtime.h index 06ce65bc9a..da3b7ba50e 100644 --- a/include/hip/hcc_detail/hip_runtime.h +++ b/include/hip/hcc_detail/hip_runtime.h @@ -41,6 +41,8 @@ THE SOFTWARE. #include #endif//__cplusplus +#if __HCC__ + // Define NVCC_COMPAT for CUDA compatibility #define NVCC_COMPAT #define CUDA_SUCCESS hipSuccess @@ -147,8 +149,15 @@ extern int HIP_TRACE_API; #endif /* Device feature flags */ -//TODO-HCC this is currently ignored by HCC target of HIP -#define __launch_bounds__(requiredMaxThreadsPerBlock, minBlocksPerMultiprocessor) +#define launch_bounds_impl0(requiredMaxThreadsPerBlock)\ + __attribute__((amdgpu_flat_work_group_size(1, requiredMaxThreadsPerBlock))) +#define launch_bounds_impl1(\ + requiredMaxThreadsPerBlock, minBlocksPerMultiprocessor)\ + __attribute__((amdgpu_flat_work_group_size(1, requiredMaxThreadsPerBlock),\ + amdgpu_waves_per_eu(minBlocksPerMultiprocessor))) +#define select_impl_(_1, _2, impl_, ...) impl_ +#define __launch_bounds__(...) select_impl_(\ + __VA_ARGS__, launch_bounds_impl1, launch_bounds_impl0)(__VA_ARGS__) // Detect if we are compiling C++ mode or C mode #if defined(__cplusplus) @@ -165,6 +174,9 @@ static constexpr int warpSize = 64; __device__ long long int clock64(); __device__ clock_t clock(); +//abort +__device__ void abort(); + //atomicAdd() __device__ int atomicAdd(int* address, int val); __device__ unsigned int atomicAdd(unsigned int* address, @@ -296,7 +308,7 @@ __device__ int __hip_move_dpp(int src, int dpp_ctrl, int row_mask, int bank_mask __host__ __device__ int min(int arg1, int arg2); __host__ __device__ int max(int arg1, int arg2); -__device__ ADDRESS_SPACE_3 void* __get_dynamicgroupbaseptr(); +__device__ void* __get_dynamicgroupbaseptr(); /** @@ -455,10 +467,10 @@ do {\ // Macro to replace extern __shared__ declarations // to local variable definitions #define HIP_DYNAMIC_SHARED(type, var) \ - ADDRESS_SPACE_3 type* var = \ - (ADDRESS_SPACE_3 type*)__get_dynamicgroupbaseptr(); \ + type* var = \ + (type*)__get_dynamicgroupbaseptr(); \ -#define HIP_DYNAMIC_SHARED_ATTRIBUTE ADDRESS_SPACE_3 +#define HIP_DYNAMIC_SHARED_ATTRIBUTE @@ -481,6 +493,6 @@ do {\ */ - +#endif #endif//HIP_HCC_DETAIL_RUNTIME_H diff --git a/include/hip/hcc_detail/hip_runtime_api.h b/include/hip/hcc_detail/hip_runtime_api.h index 7a99ff0810..724bf09b21 100644 --- a/include/hip/hcc_detail/hip_runtime_api.h +++ b/include/hip/hcc_detail/hip_runtime_api.h @@ -106,21 +106,27 @@ enum hipLimit_t #define hipEventBlockingSync 0x1 ///< Waiting will yield CPU. Power-friendly and usage-friendly but may increase latency. #define hipEventDisableTiming 0x2 ///< Disable event's capability to record timing information. May improve performance. #define hipEventInterprocess 0x4 ///< Event can support IPC. @warning - not supported in HIP. +#define hipEventReleaseToDevice 0x40000000 /// < Use a device-scope release when recording this event. This flag is useful to obtain more precise timings of commands between events. The flag is a no-op on CUDA platforms. +#define hipEventReleaseToSystem 0x80000000 /// < Use a system-scope release that when recording this event. This flag is useful to make non-coherent host memory visible to the host. The flag is a no-op on CUDA platforms. //! Flags that can be used with hipHostMalloc #define hipHostMallocDefault 0x0 -#define hipHostMallocPortable 0x1 -#define hipHostMallocMapped 0x2 +#define hipHostMallocPortable 0x1 ///< Memory is considered allocated by all contexts. +#define hipHostMallocMapped 0x2 ///< Map the allocation into the address space for the current device. The device pointer can be obtained with #hipHostGetDevicePointer. #define hipHostMallocWriteCombined 0x4 +#define hipHostMallocCoherent 0x40000000 ///< Allocate coherent memory. Overrides HIP_COHERENT_HOST_ALLOC for specific allocation. +#define hipHostMallocNonCoherent 0x80000000 ///< Allocate non-coherent memory. Overrides HIP_COHERENT_HOST_ALLOC for specific allocation. + //! Flags that can be used with hipHostRegister #define hipHostRegisterDefault 0x0 ///< Memory is Mapped and Portable -#define hipHostRegisterPortable 0x1 ///< Memory is considered registered by all contexts. HIP only supports one context so this is always assumed true. +#define hipHostRegisterPortable 0x1 ///< Memory is considered registered by all contexts. #define hipHostRegisterMapped 0x2 ///< Map the allocation into the address space for the current device. The device pointer can be obtained with #hipHostGetDevicePointer. #define hipHostRegisterIoMemory 0x4 ///< Not supported. + #define hipDeviceScheduleAuto 0x0 ///< Automatically select between Spin and Yield #define hipDeviceScheduleSpin 0x1 ///< Dedicate a CPU core to spin-wait. Provides lowest latency, but burns a CPU core and may consume more power. #define hipDeviceScheduleYield 0x2 ///< Yield the CPU to the operating system when waiting. May increase latency, but lowers power and is friendlier to other threads in the system. @@ -131,6 +137,33 @@ enum hipLimit_t #define hipDeviceLmemResizeToMax 0x16 +/* +* @brief hipJitOption +* @enum +* @ingroup Enumerations +*/ +typedef enum hipJitOption { + hipJitOptionMaxRegisters = 0, + hipJitOptionThreadsPerBlock, + hipJitOptionWallTime, + hipJitOptionInfoLogBuffer, + hipJitOptionInfoLogBufferSizeBytes, + hipJitOptionErrorLogBuffer, + hipJitOptionErrorLogBufferSizeBytes, + hipJitOptionOptimizationLevel, + hipJitOptionTargetFromContext, + hipJitOptionTarget, + hipJitOptionFallbackStrategy, + hipJitOptionGenerateDebugInfo, + hipJitOptionLogVerbose, + hipJitOptionGenerateLineInfo, + hipJitOptionCacheMode, + hipJitOptionSm3xOpt, + hipJitOptionFastCompile, + hipJitOptionNumOptions +} hipJitOption; + + /** * @warning On AMD devices and recent Nvidia devices, these hints and controls are ignored. */ @@ -385,7 +418,7 @@ hipError_t hipDeviceGetLimit(size_t *pValue, enum hipLimit_t limit); * Note: AMD devices and recent Nvidia GPUS do not support reconfigurable cache. This hint is ignored on those architectures. * */ -hipError_t hipFuncSetCacheConfig ( hipFuncCache_t config ); +hipError_t hipFuncSetCacheConfig (const void* func, hipFuncCache_t config ); /** * @brief Returns bank width of shared memory for current device @@ -601,9 +634,12 @@ hipError_t hipStreamQuery(hipStream_t stream); * * @return #hipSuccess, #hipErrorInvalidResourceHandle * - * If the null stream is specified, this command blocks until all + * This command is host-synchronous : the host will block until the specified stream is empty. + * + * This command follows standard null-stream semantics. Specifically, specifying the null stream will cause the + * command to wait for other streams on the same device to complete all pending operations. + * * This command honors the hipDeviceLaunchBlocking flag, which controls whether the wait is active or blocking. - * This command is host-synchronous : the host will block until the stream is empty. * * @see hipStreamCreate, hipStreamCreateWithFlags, hipStreamWaitEvent, hipStreamDestroy * @@ -622,10 +658,12 @@ hipError_t hipStreamSynchronize(hipStream_t stream); * * This function inserts a wait operation into the specified stream. * All future work submitted to @p stream will wait until @p event reports completion before beginning execution. - * This function is host-asynchronous and the function may return before the wait has completed. + * + * This function only waits for commands in the current stream to complete. Notably,, this function does + * not impliciy wait for commands in the default stream to complete, even if the specified stream is + * created with hipStreamNonBlocking = 0. * * @see hipStreamCreate, hipStreamCreateWithFlags, hipStreamSynchronize, hipStreamDestroy - * */ hipError_t hipStreamWaitEvent(hipStream_t stream, hipEvent_t event, unsigned int flags); @@ -730,10 +768,10 @@ hipError_t hipEventCreate(hipEvent_t* event); * the specified stream, after all previous * commands in that stream have completed executing. * - * If hipEventRecord() has been previously called aon event, then this call will overwrite any existing state in event. + * If hipEventRecord() has been previously called on this event, then this call will overwrite any existing state in event. * * If this function is called on a an event that is currently being recorded, results are undefined - either - * outstanding recording may save state into the event, and the order is not guaranteed. This shoul be avoided. + * outstanding recording may save state into the event, and the order is not guaranteed. * * @see hipEventCreate, hipEventCreateWithFlags, hipEventQuery, hipEventSynchronize, hipEventDestroy, hipEventElapsedTime * @@ -1156,7 +1194,7 @@ hipError_t hipMemcpyDtoDAsync(hipDeviceptr_t dst, hipDeviceptr_t src, size_t siz * * @see hipMemcpy, hipMemcpy2D, hipMemcpyToArray, hipMemcpy2DToArray, hipMemcpyFromArray, hipMemcpy2DFromArray, hipMemcpyArrayToArray, hipMemcpy2DArrayToArray, hipMemcpyFromSymbol, hipMemcpyAsync, hipMemcpy2DAsync, hipMemcpyToArrayAsync, hipMemcpy2DToArrayAsync, hipMemcpyFromArrayAsync, hipMemcpy2DFromArrayAsync, hipMemcpyToSymbolAsync, hipMemcpyFromSymbolAsync */ -hipError_t hipMemcpyToSymbol(const void* symbolName, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind); +hipError_t hipMemcpyToSymbol(const void* symbolName, const void *src, size_t sizeBytes, size_t offset = 0, hipMemcpyKind kind = hipMemcpyHostToDevice); /** @@ -1176,11 +1214,11 @@ hipError_t hipMemcpyToSymbol(const void* symbolName, const void *src, size_t siz * * @see hipMemcpy, hipMemcpy2D, hipMemcpyToArray, hipMemcpy2DToArray, hipMemcpyFromArray, hipMemcpy2DFromArray, hipMemcpyArrayToArray, hipMemcpy2DArrayToArray, hipMemcpyFromSymbol, hipMemcpyAsync, hipMemcpy2DAsync, hipMemcpyToArrayAsync, hipMemcpy2DToArrayAsync, hipMemcpyFromArrayAsync, hipMemcpy2DFromArrayAsync, hipMemcpyToSymbolAsync, hipMemcpyFromSymbolAsync */ -hipError_t hipMemcpyToSymbolAsync(const void* symbolName, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind, hipStream_t stream); +hipError_t hipMemcpyToSymbolAsync(const void* symbolName, const void *src, size_t sizeBytes, size_t offset, hipMemcpyKind kind, hipStream_t stream = 0); -hipError_t hipMemcpyFromSymbol(void *dst, const void* symbolName, size_t sizeBytes, size_t offset, hipMemcpyKind kind); +hipError_t hipMemcpyFromSymbol(void *dst, const void* symbolName, size_t sizeBytes, size_t offset = 0, hipMemcpyKind kind = hipMemcpyDeviceToHost); -hipError_t hipMemcpyFromSymbolAsync(void *dst, const void* symbolName, size_t sizeBytes, size_t offset, hipMemcpyKind kind, hipStream_t stream); +hipError_t hipMemcpyFromSymbolAsync(void *dst, const void* symbolName, size_t sizeBytes, size_t offset, hipMemcpyKind kind, hipStream_t stream = 0); /** * @brief Copy data from src to dst asynchronously. @@ -1308,6 +1346,27 @@ hipError_t hipFreeArray(hipArray* array); */ hipError_t hipMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind); +/** + * @brief Copies data between host and device. + * + * @param[in] dst Destination memory address + * @param[in] dpitch Pitch of destination memory + * @param[in] src Source memory address + * @param[in] spitch Pitch of source memory + * @param[in] width Width of matrix transfer (columns in bytes) + * @param[in] height Height of matrix transfer (rows) + * @param[in] kind Type of transfer + * @param[in] stream Stream to use + * @return #hipSuccess, #hipErrorInvalidValue, #hipErrorInvalidPitchValue, #hipErrorInvalidDevicePointer, #hipErrorInvalidMemcpyDirection + * + * @see hipMemcpy, hipMemcpyToArray, hipMemcpy2DToArray, hipMemcpyFromArray, hipMemcpyToSymbol, hipMemcpyAsync + */ +#if __cplusplus +hipError_t hipMemcpy2DAsync(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind, hipStream_t stream = 0); +#else +hipError_t hipMemcpy2DAsync(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind, hipStream_t stream); +#endif + /** * @brief Copies data between host and device. * @@ -1890,7 +1949,7 @@ hipError_t hipModuleGetFunction(hipFunction_t *function, hipModule_t module, con * @brief returns device memory pointer and size of the kernel present in the module with symbol @p name * * @param [out] dptr - * @param [out[ bytes + * @param [out] bytes * @param [in] hmod * @param [in] name * @@ -1898,7 +1957,6 @@ hipError_t hipModuleGetFunction(hipFunction_t *function, hipModule_t module, con */ hipError_t hipModuleGetGlobal(hipDeviceptr_t *dptr, size_t *bytes, hipModule_t hmod, const char *name); - /** * @brief builds module from code object which resides in host memory. Image is pointer to that location. * @@ -1909,11 +1967,23 @@ hipError_t hipModuleGetGlobal(hipDeviceptr_t *dptr, size_t *bytes, hipModule_t h */ hipError_t hipModuleLoadData(hipModule_t *module, const void *image); +/** +* @brief builds module from code object which resides in host memory. Image is pointer to that location. Options are not used. hipModuleLoadData is called. +* +* @param [in] image +* @param [out] module +* @param [in] number of options +* @param [in] options for JIT +* @param [in] option values for JIT +* +* @returns hipSuccess, hipErrorNotInitialized, hipErrorOutOfMemory, hipErrorNotInitialized +*/ +hipError_t hipModuleLoadDataEx(hipModule_t *module, const void *image, unsigned int numOptions, hipJitOption *options, void **optionValues); /** * @brief launches kernel f with launch parameters and shared memory on stream with arguments passed to kernelparams or extra * - * @param [in[ f Kernel to launch. + * @param [in] f Kernel to launch. * @param [in] gridDimX X grid dimension specified as multiple of blockDimX. * @param [in] gridDimY Y grid dimension specified as multiple of blockDimY. * @param [in] gridDimZ Z grid dimension specified as multiple of blockDimZ. @@ -1921,7 +1991,7 @@ hipError_t hipModuleLoadData(hipModule_t *module, const void *image); * @param [in] blockDimY Y grid dimension specified in work-items * @param [in] blockDimZ Z grid dimension specified in work-items * @param [in] sharedMemBytes Amount of dynamic shared memory to allocate for this kernel. The kernel can access this with HIP_DYNAMIC_SHARED. - * @param [in] stream Stream where the kernel should be dispatched. May be 0, in which case th default stream is used with associated synchronization rules. + * @param [in] stream Stream where the kernel should be dispatched. May be 0, in which case th default stream is used with associated synchronization rules. * @param [in] kernelParams * @param [in] extra Pointer to kernel arguments. These are passed directly to the kernel and must be in the memory layout and alignment expected by the kernel. * diff --git a/include/hip/hcc_detail/hip_vector_types.h b/include/hip/hcc_detail/hip_vector_types.h index 35c6c23548..93c82cc0cb 100644 --- a/include/hip/hcc_detail/hip_vector_types.h +++ b/include/hip/hcc_detail/hip_vector_types.h @@ -36,39 +36,38 @@ THE SOFTWARE. #define MAKE_DEFAULT_CONSTRUCTOR_ONE_COMPONENT(type) \ __device__ __host__ type() {} \ -__device__ __host__ type(type& val) : x(val.x) { } \ -__device__ __host__ type(const type& val) : x(val.x) { } +__device__ __host__ type(const type& val) : x(val.x) { } \ +__device__ __host__ ~type() {} #define MAKE_DEFAULT_CONSTRUCTOR_TWO_COMPONENT(type) \ __device__ __host__ type() {} \ -__device__ __host__ type(type& val) : x(val.x), y(val.y) { } \ -__device__ __host__ type(const type& val) : x(val.x), y(val.y) { } +__device__ __host__ type(const type& val) : x(val.x), y(val.y) { } \ +__device__ __host__ ~type() {} #define MAKE_DEFAULT_CONSTRUCTOR_THREE_COMPONENT(type) \ __device__ __host__ type() {} \ -__device__ __host__ type(type& val) : x(val.x), y(val.y), z(val.z) { } \ -__device__ __host__ type(const type& val) : x(val.x), y(val.y), z(val.z) { } +__device__ __host__ type(const type& val) : x(val.x), y(val.y), z(val.z) { } \ +__device__ __host__ ~type() {} #define MAKE_DEFAULT_CONSTRUCTOR_FOUR_COMPONENT(type) \ __device__ __host__ type() {} \ -__device__ __host__ type(type& val) : x(val.x), y(val.y), z(val.z), w(val.w) { } \ -__device__ __host__ type(const type& val) : x(val.x), y(val.y), z(val.z), w(val.w) { } - +__device__ __host__ type(const type& val) : x(val.x), y(val.y), z(val.z), w(val.w) { } \ +__device__ __host__ ~type() {} #define MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(type, type1) \ __device__ __host__ type(type1 val) : x(val) {} \ #define MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(type, type1) \ __device__ __host__ type(type1 val) : x(val), y(val) {} \ -__device__ __host__ type(type1 val1, type1 val2) : x(val1), y(val2) {} +__device__ __host__ type(type1 val1, type1 val2) : x(val1), y(val2) {} \ #define MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(type, type1) \ __device__ __host__ type(type1 val) : x(val), y(val), z(val) {} \ -__device__ __host__ type(type1 val1, type1 val2, type1 val3) : x(val1), y(val2), z(val3) {} +__device__ __host__ type(type1 val1, type1 val2, type1 val3) : x(val1), y(val2), z(val3) {} \ #define MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(type, type1) \ __device__ __host__ type(type1 val) : x(val), y(val), z(val), w(val) {} \ -__device__ __host__ type(type1 val1, type1 val2, type1 val3, type1 val4) : x(val1), y(val2), z(val3), w(val4) {} +__device__ __host__ type(type1 val1, type1 val2, type1 val3, type1 val4) : x(val1), y(val2), z(val3), w(val4) {} \ struct uchar1 { #ifdef __cplusplus @@ -4115,4 +4114,5 @@ DECLOP_4VAR_SCALE_PRODUCT(longlong4, signed long long) #endif + #endif diff --git a/include/hip/hcc_detail/host_defines.h b/include/hip/hcc_detail/host_defines.h index 5864cfa0e7..b2e7ac2617 100644 --- a/include/hip/hcc_detail/host_defines.h +++ b/include/hip/hcc_detail/host_defines.h @@ -28,7 +28,6 @@ THE SOFTWARE. #ifndef HIP_INCLUDE_HIP_HCC_DETAIL_HOST_DEFINES_H #define HIP_INCLUDE_HIP_HCC_DETAIL_HOST_DEFINES_H -#define USE_PROMOTE_FREE_HCC 1 // Add guard to Generic Grid Launch method #ifndef GENERIC_GRID_LAUNCH @@ -42,13 +41,10 @@ THE SOFTWARE. #define __host__ __attribute__((cpu)) #define __device__ __attribute__((hc)) -//#warning "HOST DEFINE header included" #if GENERIC_GRID_LAUNCH == 0 -//#warning "original global define reached" #define __global__ __attribute__((hc_grid_launch)) __attribute__((used)) #else -//#warning "GGL global define reached" -#define __global__ __attribute__((hc, weak)) +#define __global__ __attribute__((annotate("hip__global__"), hc, used, weak)) #endif //GENERIC_GRID_LAUNCH #define __noinline__ __attribute__((noinline)) @@ -61,11 +57,7 @@ THE SOFTWARE. */ // _restrict is supported by the compiler #define __shared__ tile_static -#if USE_PROMOTE_FREE_HCC==1 #define __constant__ __attribute__((hc)) -#else -#define __constant__ ADDRESS_SPACE_1 -#endif #else // Non-HCC compiler diff --git a/include/hip/hip_runtime_api.h b/include/hip/hip_runtime_api.h index 8eae1d6a3a..dc163d5c25 100644 --- a/include/hip/hip_runtime_api.h +++ b/include/hip/hip_runtime_api.h @@ -250,6 +250,7 @@ typedef enum hipDeviceAttribute_t { hipDeviceAttributeIsMultiGpuBoard, ///< Multiple GPU devices. } hipDeviceAttribute_t; + /** * @} */ diff --git a/include/hip/nvcc_detail/hip_runtime.h b/include/hip/nvcc_detail/hip_runtime.h index 80da388007..8c08f3d151 100644 --- a/include/hip/nvcc_detail/hip_runtime.h +++ b/include/hip/nvcc_detail/hip_runtime.h @@ -109,6 +109,10 @@ kernelName<<>>(__VA_ARGS__);\ #define HIP_DYNAMIC_SHARED_ATTRIBUTE +#ifdef __HIP_DEVICE_COMPILE__ +#define abort() {asm("trap;");} +#endif + #endif #endif diff --git a/include/hip/nvcc_detail/hip_runtime_api.h b/include/hip/nvcc_detail/hip_runtime_api.h index 0cc40f32af..b1011aac6c 100644 --- a/include/hip/nvcc_detail/hip_runtime_api.h +++ b/include/hip/nvcc_detail/hip_runtime_api.h @@ -54,24 +54,49 @@ hipMemcpyHostToHost #define hipFilterModePoint cudaFilterModePoint //! Flags that can be used with hipEventCreateWithFlags: -#define hipEventDefault cudaEventDefault -#define hipEventBlockingSync cudaEventBlockingSync -#define hipEventDisableTiming cudaEventDisableTiming -#define hipEventInterprocess cudaEventInterprocess +#define hipEventDefault cudaEventDefault +#define hipEventBlockingSync cudaEventBlockingSync +#define hipEventDisableTiming cudaEventDisableTiming +#define hipEventInterprocess cudaEventInterprocess +#define hipEventReleaseToDevice 0 /* no-op on CUDA platform */ +#define hipEventReleaseToSystem 0 /* no-op on CUDA platform */ -#define hipHostMallocDefault cudaHostAllocDefault -#define hipHostMallocPortable cudaHostAllocPortable -#define hipHostMallocMapped cudaHostAllocMapped + +#define hipHostMallocDefault cudaHostAllocDefault +#define hipHostMallocPortable cudaHostAllocPortable +#define hipHostMallocMapped cudaHostAllocMapped #define hipHostMallocWriteCombined cudaHostAllocWriteCombined +#define hipHostMallocCoherent 0x0 +#define hipHostMallocNonCoherent 0x0 #define hipHostRegisterPortable cudaHostRegisterPortable -#define hipHostRegisterMapped cudaHostRegisterMapped +#define hipHostRegisterMapped cudaHostRegisterMapped #define HIP_LAUNCH_PARAM_BUFFER_POINTER CU_LAUNCH_PARAM_BUFFER_POINTER -#define HIP_LAUNCH_PARAM_BUFFER_SIZE CU_LAUNCH_PARAM_BUFFER_SIZE +#define HIP_LAUNCH_PARAM_BUFFER_SIZE CU_LAUNCH_PARAM_BUFFER_SIZE #define HIP_LAUNCH_PARAM_END CU_LAUNCH_PARAM_END #define hipLimitMallocHeapSize cudaLimitMallocHeapSize -#define hipIpcMemLazyEnablePeerAccess cudaIpcMemLazyEnablePeerAccess +#define hipIpcMemLazyEnablePeerAccess cudaIpcMemLazyEnablePeerAccess + +// enum CUjit_option redefines +#define hipJitOptionMaxRegisters CU_JIT_MAX_REGISTERS +#define hipJitOptionThreadsPerBlock CU_JIT_THREADS_PER_BLOCK +#define hipJitOptionWallTime CU_JIT_WALL_TIME +#define hipJitOptionInfoLogBuffer CU_JIT_INFO_LOG_BUFFER +#define hipJitOptionInfoLogBufferSizeBytes CU_JIT_INFO_LOG_BUFFER_SIZE_BYTES +#define hipJitOptionErrorLogBuffer CU_JIT_ERROR_LOG_BUFFER +#define hipJitOptionErrorLogBufferSizeBytes CU_JIT_ERROR_LOG_BUFFER_SIZE_BYTES +#define hipJitOptionOptimizationLevel CU_JIT_OPTIMIZATION_LEVEL +#define hipJitOptionTargetFromContext CU_JIT_TARGET_FROM_CUCONTEXT +#define hipJitOptionTarget CU_JIT_TARGET +#define hipJitOptionFallbackStrategy CU_JIT_FALLBACK_STRATEGY +#define hipJitOptionGenerateDebugInfo CU_JIT_GENERATE_DEBUG_INFO +#define hipJitOptionLogVerbose CU_JIT_LOG_VERBOSE +#define hipJitOptionGenerateLineInfo CU_JIT_GENERATE_LINE_INFO +#define hipJitOptionCacheMode CU_JIT_CACHE_MODE +#define hipJitOptionSm3xOpt CU_JIT_NEW_SM3X_OPT +#define hipJitOptionFastCompile CU_JIT_FAST_COMPILE +#define hipJitOptionNumOptions CU_JIT_NUM_OPTIONS typedef cudaEvent_t hipEvent_t; typedef cudaStream_t hipStream_t; @@ -82,6 +107,7 @@ typedef cudaFuncCache hipFuncCache_t; typedef CUcontext hipCtx_t; typedef CUsharedconfig hipSharedMemConfig; typedef CUfunc_cache hipFuncCache; +typedef CUjit_option hipJitOption; typedef CUdevice hipDevice_t; typedef CUmodule hipModule_t; typedef CUfunction hipFunction_t; @@ -202,6 +228,10 @@ inline static hipError_t hipMalloc(void** ptr, size_t size) { return hipCUDAErrorTohipError(cudaMalloc(ptr, size)); } +inline static hipError_t hipMallocPitch(void** ptr, size_t* pitch, size_t width, size_t height) { + return hipCUDAErrorTohipError(cudaMallocPitch(ptr, pitch, width, height)); +} + inline static hipError_t hipFree(void* ptr) { return hipCUDAErrorTohipError(cudaFree(ptr)); } @@ -330,22 +360,26 @@ inline static hipError_t hipMemcpyToSymbol(const void* symbol, const void* src, return hipCUDAErrorTohipError(cudaMemcpyToSymbol(symbol, src, sizeBytes, offset, hipMemcpyKindToCudaMemcpyKind(copyType))); } -inline static hipError_t hipMemcpyToSymbolAsync(const void* symbol, const void* src, size_t sizeBytes, size_t offset, hipMemcpyKind copyType, hipStream_t stream) { - return hipCUDAErrorTohipError(cudaMemcpyToSymbolAsync(symbol, src, sizeBytes, offset, hipMemcpyKindToCudaMemcpyKind(copyType))); +inline static hipError_t hipMemcpyToSymbolAsync(const void* symbol, const void* src, size_t sizeBytes, size_t offset, hipMemcpyKind copyType, hipStream_t stream = 0) { + return hipCUDAErrorTohipError(cudaMemcpyToSymbolAsync(symbol, src, sizeBytes, offset, hipMemcpyKindToCudaMemcpyKind(copyType), stream)); } -inline static hipError_t hipMemcpyFromSymbol(void *dst, const void* symbolName, size_t sizeBytes, size_t offset, hipMemcpyKind kind) +inline static hipError_t hipMemcpyFromSymbol(void *dst, const void* symbolName, size_t sizeBytes, size_t offset = 0, hipMemcpyKind kind = hipMemcpyDeviceToHost) { return hipCUDAErrorTohipError(cudaMemcpyFromSymbol(dst, symbolName, sizeBytes, offset, hipMemcpyKindToCudaMemcpyKind(kind))); } -inline static hipError_t hipMemcpyFromSymbolAsync(void *dst, const void* symbolName, size_t sizeBytes, size_t offset, hipMemcpyKind kind, hipStream_t stream) +inline static hipError_t hipMemcpyFromSymbolAsync(void *dst, const void* symbolName, size_t sizeBytes, size_t offset, hipMemcpyKind kind, hipStream_t stream = 0) { return hipCUDAErrorTohipError(cudaMemcpyFromSymbolAsync(dst, symbolName, sizeBytes, offset, hipMemcpyKindToCudaMemcpyKind(kind), stream)); } inline static hipError_t hipMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind){ - return hipCUDAErrorTohipError(cudaMemcpy2D(dst, dpitch, src, spitch, width, height, hipMemcpyKindToCudaMemcpyKind(kind))); + return hipCUDAErrorTohipError(cudaMemcpy2D(dst, dpitch, src, spitch, width, height, hipMemcpyKindToCudaMemcpyKind(kind))); +} + +inline static hipError_t hipMemcpy2DAsync(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind, hipStream_t stream) { + return hipCUDAErrorTohipError(cudaMemcpy2DAsync(dst, dpitch, src, spitch, width, height, hipMemcpyKindToCudaMemcpyKind(kind),stream)); } inline static hipError_t hipMemcpy2DToArray(hipArray *dst, size_t wOffset, size_t hOffset, const void* src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind){ @@ -884,6 +918,11 @@ inline static hipError_t hipModuleLoadData(hipModule_t *module, const void *imag return hipCUResultTohipError(cuModuleLoadData(module, image)); } +inline static hipError_t hipModuleLoadDataEx(hipModule_t *module, const void *image, unsigned int numOptions, hipJitOption *options, void **optionValues) +{ + return hipCUResultTohipError(cuModuleLoadDataEx(module, image, numOptions, options, optionValues)); +} + inline static hipError_t hipModuleLaunchKernel(hipFunction_t f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, @@ -897,6 +936,10 @@ inline static hipError_t hipModuleLaunchKernel(hipFunction_t f, } +inline static hipError_t hipFuncSetCacheConfig(const void* func, hipFuncCache_t cacheConfig) +{ + return hipCUDAErrorTohipError(cudaFuncSetCacheConfig(func, cacheConfig)); +} #ifdef __cplusplus } diff --git a/packaging/hip_hcc.txt b/packaging/hip_hcc.txt index b0808aa0bc..284d97e2e5 100644 --- a/packaging/hip_hcc.txt +++ b/packaging/hip_hcc.txt @@ -42,9 +42,9 @@ set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${PROJECT_BINARY_DIR}/postinst") set(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${PROJECT_BINARY_DIR}/prerm") set(CPACK_RPM_PACKAGE_AUTOREQPROV " no") if(@COMPILE_HIP_ATP_MARKER@) - set(CPACK_RPM_PACKAGE_REQUIRES "hip_base = ${CPACK_PACKAGE_VERSION}, ${HCC_PACKAGE_NAME} = @HCC_PACKAGE_VERSION@, rocm-profiler") + set(CPACK_RPM_PACKAGE_REQUIRES "hip_base = ${CPACK_PACKAGE_VERSION}, ${HCC_PACKAGE_NAME} = @HCC_PACKAGE_VERSION@, rocm-profiler, libstdc++-static") else() - set(CPACK_RPM_PACKAGE_REQUIRES "hip_base = ${CPACK_PACKAGE_VERSION}, ${HCC_PACKAGE_NAME} = @HCC_PACKAGE_VERSION@") + set(CPACK_RPM_PACKAGE_REQUIRES "hip_base = ${CPACK_PACKAGE_VERSION}, ${HCC_PACKAGE_NAME} = @HCC_PACKAGE_VERSION@, libstdc++-static") endif() set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/opt") set(CPACK_SOURCE_GENERATOR "TGZ") diff --git a/samples/1_Utils/hipBusBandwidth/hipBusBandwidth.cpp b/samples/1_Utils/hipBusBandwidth/hipBusBandwidth.cpp index 09f78543c9..b3b0b3e4a6 100644 --- a/samples/1_Utils/hipBusBandwidth/hipBusBandwidth.cpp +++ b/samples/1_Utils/hipBusBandwidth/hipBusBandwidth.cpp @@ -16,13 +16,15 @@ int p_iterations = 10; int p_beatsperiteration=1; int p_device = 0; int p_detailed = 0; -bool p_async = 0; +bool p_async = 0; int p_alignedhost = 0; // align host allocs to this granularity, in bytes. 64 or 4096 are good values to try. -int p_onesize = 0; +int p_onesize = 0; bool p_h2d = true; bool p_d2h = true; bool p_bidir = true; +bool p_p2p = false; + //#define NO_CHECK @@ -70,7 +72,7 @@ std::string sizeToString(int size) // **************************************************************************** -hipError_t memcopy(void * dst, const void *src, size_t sizeBytes, enum hipMemcpyKind kind) +hipError_t memcopy(void * dst, const void *src, size_t sizeBytes, enum hipMemcpyKind kind ) { if (p_async) { return hipMemcpyAsync(dst, src, sizeBytes, kind, NULL); @@ -632,6 +634,9 @@ void RunBenchmark_Bidir(ResultDatabase &resultDB) } + + + #define failed(...) \ printf ("error: ");\ printf (__VA_ARGS__);\ @@ -646,6 +651,326 @@ int parseInt(const char *str, int *output) } +void checkPeer2PeerSupport() +{ + int deviceCnt; + hipGetDeviceCount(&deviceCnt); + std::cout << "Total no. of available gpu #" << deviceCnt << "\n" << std::endl; + + for(int deviceId=0; deviceIdhost then host-->GPU2)\n\n" << std::endl; +} + +void enablePeer2Peer(int currentGpu, int peerGpu) +{ + int canAccessPeer; + + hipSetDevice(currentGpu); + hipDeviceCanAccessPeer(&canAccessPeer, currentGpu, peerGpu); + + if(canAccessPeer==1){ + hipDeviceEnablePeerAccess(peerGpu, 0); + } +} + +void disablePeer2Peer(int currentGpu, int peerGpu) +{ + int canAccessPeer; + + hipSetDevice(currentGpu); + hipDeviceCanAccessPeer(&canAccessPeer, currentGpu, peerGpu); + + if(canAccessPeer==1){ + hipDeviceDisablePeerAccess(peerGpu); + } +} + +std::string gpuIDToString(int gpuID) +{ + using namespace std; + stringstream ss; + ss << gpuID; + return ss.str(); +} + +void RunBenchmark_P2P_Unidir(ResultDatabase &resultDB) +{ + int gpuCount; + hipGetDeviceCount(&gpuCount); + + int currentGpu, peerGpu; + + long long numMaxFloats = 1024 * (sizes[nSizes-1]) / 4; + + for (currentGpu=0; currentGpu1) { + sprintf(sizeStr, "%9sx%d", sizeToString(thisSize).c_str(), p_beatsperiteration); + } else { + sprintf(sizeStr, "%9s", sizeToString(thisSize).c_str()); + } + + string cGpu, pGpu; + cGpu = gpuIDToString(currentGpu); + pGpu = gpuIDToString(peerGpu); + + resultDB.AddResult(std::string("p2p_uni") + "_gpu" + std::string(cGpu)+ "_gpu" + std::string(pGpu), sizeStr, "GB/sec", speed); + resultDB.AddResult(std::string("P2P_uni") + "_gpu" + std::string(cGpu)+ "_gpu" + std::string(pGpu), sizeStr, "ms", t); + + if (p_onesize) { + break; + } + } + + } + + if (p_onesize) { + numMaxFloats = sizeToBytes(p_onesize) / sizeof(float); + } + + disablePeer2Peer(currentGpu, peerGpu); + + hipEventDestroy(start); + hipEventDestroy(stop); + + // Cleanup + hipFree((void*)currentGpuMem); + hipFree((void*)peerGpuMem); + CHECK_HIP_ERROR(); + + hipSetDevice(peerGpu); + hipDeviceReset(); + + hipSetDevice(currentGpu); + hipDeviceReset(); + } + + } + +} + +void RunBenchmark_P2P_Bidir(ResultDatabase &resultDB) { + + int gpuCount; + hipGetDeviceCount(&gpuCount); + + hipStream_t stream[2]; + + int currentGpu, peerGpu; + + long long numMaxFloats = 1024 * (sizes[nSizes-1]) / 4; + + for (currentGpu=0; currentGpu1) { + sprintf(sizeStr, "%9sx%d", sizeToString(thisSize).c_str(), p_beatsperiteration); + } else { + sprintf(sizeStr, "%9s", sizeToString(thisSize).c_str()); + } + + string cGpu, pGpu; + cGpu = gpuIDToString(currentGpu); + pGpu = gpuIDToString(peerGpu); + + resultDB.AddResult(std::string("p2p_bi") + "_gpu" + std::string(cGpu)+ "_gpu" + std::string(pGpu), sizeStr, "GB/sec", speed); + resultDB.AddResult(std::string("P2P_bi") + "_gpu" + std::string(cGpu)+ "_gpu" + std::string(pGpu), sizeStr, "ms", t); + + if (p_onesize) { + break; + } + } + + } + + if (p_onesize) { + numMaxFloats = sizeToBytes(p_onesize) / sizeof(float); + } + + disablePeer2Peer(currentGpu, peerGpu); + + hipEventDestroy(start); + hipEventDestroy(stop); + + for (int i=0; i<2; i++) { + hipStreamDestroy(stream[i]); + + hipFree((void*)currentGpuMem[i]); + hipFree((void*)peerGpuMem[i]); + CHECK_HIP_ERROR(); + } + + hipSetDevice(peerGpu); + hipDeviceReset(); + + hipSetDevice(currentGpu); + hipDeviceReset(); + } + } +} + + void printConfig() { hipDeviceProp_t props; hipGetDeviceProperties(&props, p_device); @@ -662,9 +987,9 @@ void help() { printf (" --d2h : Run only device-to-host test.\n"); printf (" --h2d : Run only host-to-device test.\n"); printf (" --bidir : Run only bidir copy test.\n"); + printf (" --p2p : Run only peer2peer unidir and bidir copy tests.\n"); printf (" --verbose : Print verbose status messages as test is run.\n"); printf (" --detailed : Print detailed report (including all trials).\n"); - printf (" --async : Use hipMemcpyAsync(with NULL stream) for H2D/D2H. Default uses hipMemcpy.\n"); printf (" --onesize, -o : Only run one measurement, at specified size (in KB, or if negative in bytes)\n"); @@ -712,6 +1037,12 @@ int parseStandardArguments(int argc, char *argv[]) p_d2h = false; p_bidir = true; + } else if (!strcmp(arg, "--p2p")) { + p_h2d = false; + p_d2h = false; + p_bidir = false; + p_p2p = true; + } else if (!strcmp(arg, "--help") || (!strcmp(arg, "-h"))) { help(); exit(EXIT_SUCCESS); @@ -737,39 +1068,57 @@ int main(int argc, char *argv[]) { parseStandardArguments(argc, argv); - printConfig(); + if (p_p2p) { + checkPeer2PeerSupport(); - if (p_h2d) { - ResultDatabase resultDB; - RunBenchmark_H2D(resultDB); + ResultDatabase resultDB_Unidir, resultDB_Bidir; - resultDB.DumpSummary(std::cout); + RunBenchmark_P2P_Unidir(resultDB_Unidir); + RunBenchmark_P2P_Bidir(resultDB_Bidir); + + resultDB_Unidir.DumpSummary(std::cout); + resultDB_Bidir.DumpSummary(std::cout); if (p_detailed) { - resultDB.DumpDetailed(std::cout); + resultDB_Unidir.DumpDetailed(std::cout); + resultDB_Bidir.DumpDetailed(std::cout); } } + else { + printConfig(); - if (p_d2h) { - ResultDatabase resultDB; - RunBenchmark_D2H(resultDB); + if (p_h2d) { + ResultDatabase resultDB; + RunBenchmark_H2D(resultDB); - resultDB.DumpSummary(std::cout); + resultDB.DumpSummary(std::cout); - if (p_detailed) { - resultDB.DumpDetailed(std::cout); + if (p_detailed) { + resultDB.DumpDetailed(std::cout); + } + } + + if (p_d2h) { + ResultDatabase resultDB; + RunBenchmark_D2H(resultDB); + + resultDB.DumpSummary(std::cout); + + if (p_detailed) { + resultDB.DumpDetailed(std::cout); + } } - } - if (p_bidir) { - ResultDatabase resultDB; - RunBenchmark_Bidir(resultDB); + if (p_bidir) { + ResultDatabase resultDB; + RunBenchmark_Bidir(resultDB); - resultDB.DumpSummary(std::cout); + resultDB.DumpSummary(std::cout); - if (p_detailed) { - resultDB.DumpDetailed(std::cout); + if (p_detailed) { + resultDB.DumpDetailed(std::cout); + } } } } diff --git a/samples/2_Cookbook/10_inline_asm/Makefile b/samples/2_Cookbook/10_inline_asm/Makefile new file mode 100644 index 0000000000..6ad3c201bd --- /dev/null +++ b/samples/2_Cookbook/10_inline_asm/Makefile @@ -0,0 +1,35 @@ +HIP_PATH?= $(wildcard /opt/rocm/hip) +ifeq (,$(HIP_PATH)) + HIP_PATH=../../.. +endif + +HIPCC=$(HIP_PATH)/bin/hipcc + +TARGET=hcc + +SOURCES = inline_asm.cpp +OBJECTS = $(SOURCES:.cpp=.o) + +EXECUTABLE=./inline_asm + +.PHONY: test + + +all: $(EXECUTABLE) test + +CXXFLAGS =-g +CXX=$(HIPCC) + + +$(EXECUTABLE): $(OBJECTS) + $(HIPCC) $(OBJECTS) -o $@ + + +test: $(EXECUTABLE) + $(EXECUTABLE) + + +clean: + rm -f $(EXECUTABLE) + rm -f $(OBJECTS) + diff --git a/samples/2_Cookbook/10_inline_asm/Readme.md b/samples/2_Cookbook/10_inline_asm/Readme.md new file mode 100644 index 0000000000..8c98547220 --- /dev/null +++ b/samples/2_Cookbook/10_inline_asm/Readme.md @@ -0,0 +1,47 @@ +## inline asm ### + +This tutorial is about how to use inline GCN asm in kernel. In this tutorial, we'll explain how to by using the simple Matrix Transpose. + +## Introduction: + +If you want to take advantage of the extra performance benefits of writing in assembly as well as take advantage of special GPU hardware features that were only available through assemby, then this tutorial is for you. In this tutorial we'll be explaining how to start writing inline asm in kernel. + +For more insight Please read the following blogs by Ben Sander +[The Art of AMDGCN Assembly: How to Bend the Machine to Your Will](gpuopen.com/amdgcn-assembly) +[AMD GCN Assembly: Cross-Lane Operations](http://gpuopen.com/amd-gcn-assembly-cross-lane-operations/) + +For more information: +[AMD GCN3 ISA Architecture Manual](http://gpuopen.com/compute-product/amd-gcn3-isa-architecture-manual/) +[User Guide for AMDGPU Back-end](llvm.org/docs/AMDGPUUsage.html) + +## Requirement: +For hardware requirement and software installation [Installation](https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/INSTALL.md) + +## prerequiste knowledge: + +Programmers familiar with CUDA, OpenCL will be able to quickly learn and start coding with the HIP API. In case you are not, don't worry. You choose to start with the best one. We'll be explaining everything assuming you are completely new to gpgpu programming. + +## Simple Matrix Transpose + +We will be using the Simple Matrix Transpose application from the our very first tutorial. + +## asm() Assembler statement + +We insert the GCN isa into the kernel using asm() Assembler statement. In the same sourcecode, we used for MatrixTranspose. We'll add the following: + +` asm volatile ("v_mov_b32_e32 %0, %1" : "=v" (out[x*width + y]) : "v" (in[y*width + x])); ` + +## How to build and run: +Use the make command and execute it using ./exe +Use hipcc to build the application, which is using hcc on AMD and nvcc on nvidia. + + +## More Info: +- [HIP FAQ](https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/docs/markdown/hip_faq.md) +- [HIP Kernel Language](https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/docs/markdown/hip_kernel_language.md) +- [HIP Runtime API (Doxygen)](http://gpuopen-professionalcompute-tools.github.io/HIP) +- [HIP Porting Guide](https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/docs/markdown/hip_porting_guide.md) +- [HIP Terminology](https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/docs/markdown/hip_terms.md) (including Rosetta Stone of GPU computing terms across CUDA/HIP/HC/AMP/OpenL) +- [clang-hipify](https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/clang-hipify/README.md) +- [Developer/CONTRIBUTING Info](https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/CONTRIBUTING.md) +- [Release Notes](https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/RELEASE.md) diff --git a/samples/2_Cookbook/10_inline_asm/inline_asm.cpp b/samples/2_Cookbook/10_inline_asm/inline_asm.cpp new file mode 100644 index 0000000000..2b4fc3de90 --- /dev/null +++ b/samples/2_Cookbook/10_inline_asm/inline_asm.cpp @@ -0,0 +1,174 @@ +/* +Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#include + +// hip header file +#include "hip/hip_runtime.h" + +#define WIDTH 1024 + +#define NUM (WIDTH*WIDTH) + +#define THREADS_PER_BLOCK_X 4 +#define THREADS_PER_BLOCK_Y 4 +#define THREADS_PER_BLOCK_Z 1 + +// Device (Kernel) function, it must be void +// hipLaunchParm provides the execution configuration +__global__ void matrixTranspose(hipLaunchParm lp, + float *out, + float *in, + const int width) +{ + + int x = hipBlockDim_x * hipBlockIdx_x + hipThreadIdx_x; + int y = hipBlockDim_y * hipBlockIdx_y + hipThreadIdx_y; + + asm volatile ("v_mov_b32_e32 %0, %1" : "=v" (out[x*width + y]) : "v" (in[y*width + x])); +} + +// CPU implementation of matrix transpose +void matrixTransposeCPUReference( + float * output, + float * input, + const unsigned int width) +{ + for(unsigned int j=0; j < width; j++) + { + for(unsigned int i=0; i < width; i++) + { + output[i*width + j] = input[j*width + i]; + } + } +} + +int main() { + + float* Matrix; + float* TransposeMatrix; + float* cpuTransposeMatrix; + + float* gpuMatrix; + float* gpuTransposeMatrix; + + hipDeviceProp_t devProp; + hipGetDeviceProperties(&devProp, 0); + + std::cout << "Device name " << devProp.name << std::endl; + + hipEvent_t start, stop; + hipEventCreate(&start); + hipEventCreate(&stop); + float eventMs = 1.0f; + + int i; + int errors; + + Matrix = (float*)malloc(NUM * sizeof(float)); + TransposeMatrix = (float*)malloc(NUM * sizeof(float)); + cpuTransposeMatrix = (float*)malloc(NUM * sizeof(float)); + + // initialize the input data + for (i = 0; i < NUM; i++) { + Matrix[i] = (float)i*10.0f; + } + + // allocate the memory on the device side + hipMalloc((void**)&gpuMatrix, NUM * sizeof(float)); + hipMalloc((void**)&gpuTransposeMatrix, NUM * sizeof(float)); + + // Record the start event + hipEventRecord(start, NULL); + + // Memory transfer from host to device + hipMemcpy(gpuMatrix, Matrix, NUM*sizeof(float), hipMemcpyHostToDevice); + + // Record the stop event + hipEventRecord(stop, NULL); + hipEventSynchronize(stop); + + hipEventElapsedTime(&eventMs, start, stop); + + printf ("hipMemcpyHostToDevice time taken = %6.3fms\n", eventMs); + + // Record the start event + hipEventRecord(start, NULL); + + // Lauching kernel from host + hipLaunchKernel(matrixTranspose, + dim3(WIDTH/THREADS_PER_BLOCK_X, WIDTH/THREADS_PER_BLOCK_Y), + dim3(THREADS_PER_BLOCK_X, THREADS_PER_BLOCK_Y), + 0, 0, + gpuTransposeMatrix , gpuMatrix, WIDTH); + + // Record the stop event + hipEventRecord(stop, NULL); + hipEventSynchronize(stop); + + hipEventElapsedTime(&eventMs, start, stop); + + printf ("kernel Execution time = %6.3fms\n", eventMs); + + // Record the start event + hipEventRecord(start, NULL); + + // Memory transfer from device to host + hipMemcpy(TransposeMatrix, gpuTransposeMatrix, NUM*sizeof(float), hipMemcpyDeviceToHost); + + // Record the stop event + hipEventRecord(stop, NULL); + hipEventSynchronize(stop); + + hipEventElapsedTime(&eventMs, start, stop); + + printf ("hipMemcpyDeviceToHost time taken = %6.3fms\n", eventMs); + + // CPU MatrixTranspose computation + matrixTransposeCPUReference(cpuTransposeMatrix, Matrix, WIDTH); + + // verify the results + errors = 0; + double eps = 1.0E-6; + for (i = 0; i < NUM; i++) { + if (std::abs(TransposeMatrix[i] - cpuTransposeMatrix[i]) > eps ) { + printf("gpu%f cpu %f \n",TransposeMatrix[i],cpuTransposeMatrix[i]); + errors++; + } + } + if (errors!=0) { + printf("FAILED: %d errors\n",errors); + } else { + printf ("PASSED!\n"); + } + + //free the resources on device side + hipFree(gpuMatrix); + hipFree(gpuTransposeMatrix); + + //free the resources on host side + free(Matrix); + free(TransposeMatrix); + free(cpuTransposeMatrix); + + return errors; +} diff --git a/samples/2_Cookbook/8_peer2peer/peer2peer.cpp b/samples/2_Cookbook/8_peer2peer/peer2peer.cpp index 990599e1cb..0f532a2f0a 100644 --- a/samples/2_Cookbook/8_peer2peer/peer2peer.cpp +++ b/samples/2_Cookbook/8_peer2peer/peer2peer.cpp @@ -55,13 +55,9 @@ void checkPeer2PeerSupport() { int gpuCount; int canAccessPeer; - int p2pCapableDeviceCount=0; HIPCHECK(hipGetDeviceCount(&gpuCount)); - if (gpuCount < 2) - printf("Peer2Peer application requires atleast 2 gpu devices"); - for (int currentGpu=0; currentGpu + +// hip header file +#include "hip/hip_runtime.h" + + +#define WIDTH 4 + +#define NUM (WIDTH*WIDTH) + +#define THREADS_PER_BLOCK_X 4 +#define THREADS_PER_BLOCK_Y 4 +#define THREADS_PER_BLOCK_Z 1 + +// Device (Kernel) function, it must be void +// hipLaunchParm provides the execution configuration +__global__ void matrixTranspose(hipLaunchParm lp, + float *out, + float *in, + const int width) +{ + int x = hipBlockDim_x * hipBlockIdx_x + hipThreadIdx_x; + float val = in[x]; + +#pragma unroll + for(int i=0;i eps ) { + printf("%d cpu: %f gpu %f\n",i,cpuTransposeMatrix[i],TransposeMatrix[i]); + errors++; + } + } + if (errors!=0) { + printf("FAILED: %d errors\n",errors); + } else { + printf ("PASSED!\n"); + } + + //free the resources on device side + hipFree(gpuMatrix); + hipFree(gpuTransposeMatrix); + + //free the resources on host side + free(Matrix); + free(TransposeMatrix); + free(cpuTransposeMatrix); + + return errors; +} diff --git a/src/device_functions.cpp b/src/device_functions.cpp index 10d8d3ab89..615ae4d0b7 100644 --- a/src/device_functions.cpp +++ b/src/device_functions.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2015-2017 Advanced Micro Devices, Inc. All rights reserved. +Copyright (c) 2015 - present Advanced Micro Devices, Inc. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights @@ -149,19 +149,19 @@ __device__ long long int __double_as_longlong(double x) return hold64.sli; } -__device__ int float2int_rd(float x) +__device__ int __float2int_rd(float x) { return (int)x; } -__device__ int float2int_rn(float x) +__device__ int __float2int_rn(float x) { return (int)x; } -__device__ int float2int_ru(float x) +__device__ int __float2int_ru(float x) { return (int)x; } -__device__ int float2int_rz(float x) +__device__ int __float2int_rz(float x) { return (int)x; } diff --git a/src/device_util.cpp b/src/device_util.cpp index 8ce53765b5..1efda02933 100644 --- a/src/device_util.cpp +++ b/src/device_util.cpp @@ -26,6 +26,7 @@ THE SOFTWARE. #include "device_util.h" #include "hip/hcc_detail/device_functions.h" #include "hip/hip_runtime.h" +#include //================================================================================================= /* @@ -838,6 +839,11 @@ __device__ float __hip_ynf(int n, float x) __device__ long long int clock64() { return (long long int)hc::__cycle_u64(); }; __device__ clock_t clock() { return (clock_t)hc::__cycle_u64(); }; +//abort +__device__ void abort() +{ + return hc::abort(); +} //atomicAdd() __device__ int atomicAdd(int* address, int val) @@ -923,24 +929,45 @@ __device__ unsigned long long int atomicMax(unsigned long long int* address, } //atomicCAS() +template +__device__ T atomicCAS_impl(T* address, T compare, T val) +{ + // the implementation assumes the atomic is lock-free and + // has the same size as the non-atmoic equivalent type + static_assert(sizeof(T) == sizeof(std::atomic) + , "size mismatch between atomic and non-atomic types"); + + union { + T* address; + std::atomic* atomic_address; + } u; + u.address = address; + + T expected = compare; + + // hcc should generate a system scope atomic CAS + std::atomic_compare_exchange_weak_explicit(u.atomic_address + , &expected, val + , std::memory_order_acq_rel + , std::memory_order_relaxed); + return expected; +} + __device__ int atomicCAS(int* address, int compare, int val) { - hc::atomic_compare_exchange(address,&compare,val); - return *address; + return atomicCAS_impl(address, compare, val); } __device__ unsigned int atomicCAS(unsigned int* address, unsigned int compare, unsigned int val) { - hc::atomic_compare_exchange(address,&compare,val); - return *address; + return atomicCAS_impl(address, compare, val); } __device__ unsigned long long int atomicCAS(unsigned long long int* address, unsigned long long int compare, unsigned long long int val) { - hc::atomic_compare_exchange((uint64_t*)address,(uint64_t*)&compare,(uint64_t)val); - return *address; + return atomicCAS_impl(address, compare, val); } //atomicAnd() @@ -1079,11 +1106,13 @@ __host__ __device__ int max(int arg1, int arg2) return (int)(hc::precise_math::fmax((float)arg1, (float)arg2)); } -__device__ ADDRESS_SPACE_3 void* __get_dynamicgroupbaseptr() -{ +__device__ void* __get_dynamicgroupbaseptr() { return hc::get_dynamic_group_segment_base_pointer(); } +__host__ void* __get_dynamicgroupbaseptr() { + return nullptr; +} // Precise Math Functions __device__ float __hip_precise_cosf(float x) { @@ -1163,18 +1192,18 @@ __device__ double __hip_precise_dsqrt_rz(double x) { return hc::precise_math::sqrt(x); } -#define LOG_BASE2_E_DIV_2 0.4426950408894701 -#define LOG_BASE2_5 2.321928094887362 +#define LOG_BASE2_E 1.4426950408889634 +#define LOG_BASE2_10 3.32192809488736 #define ONE_DIV_LOG_BASE2_E 0.69314718056 #define ONE_DIV_LOG_BASE2_10 0.30102999566 // Fast Math Intrinsics __device__ float __hip_fast_exp10f(float x) { - return __hip_fast_exp2f(x*LOG_BASE2_E_DIV_2); + return __hip_fast_exp2f(x*LOG_BASE2_E); } __device__ float __hip_fast_expf(float x) { - return __hip_fast_expf(x*LOG_BASE2_5); + return __hip_fast_exp2f(x*LOG_BASE2_10); } __device__ float __hip_fast_frsqrt_rn(float x) { @@ -1215,20 +1244,23 @@ __device__ float __hip_fast_tanf(float x) { } // Double Precision Math +// FIXME - HCC doesn't have a fast_math version double FP sqrt +// Another issue is that these intrinsics call for a specific rounding mode; +// however, their implementation all map to the same sqrt builtin __device__ double __hip_fast_dsqrt_rd(double x) { - return hc::fast_math::sqrt(x); + return hc::precise_math::sqrt(x); } __device__ double __hip_fast_dsqrt_rn(double x) { - return hc::fast_math::sqrt(x); + return hc::precise_math::sqrt(x); } __device__ double __hip_fast_dsqrt_ru(double x) { - return hc::fast_math::sqrt(x); + return hc::precise_math::sqrt(x); } __device__ double __hip_fast_dsqrt_rz(double x) { - return hc::fast_math::sqrt(x); + return hc::precise_math::sqrt(x); } __device__ void __threadfence_system(void){ diff --git a/src/grid_launch.cpp b/src/grid_launch.cpp index cac01df7dc..f3b28c5f60 100644 --- a/src/grid_launch.cpp +++ b/src/grid_launch.cpp @@ -52,9 +52,9 @@ namespace hip_impl int group_mem_bytes, hipStream_t stream) { - if ((HIP_TRACE_API & (1 << TRACE_CMD)) || + if ((HIP_TRACE_API & (1 << TRACE_KCMD)) || HIP_PROFILE_API || - (COMPILE_HIP_DB && HIP_TRACE_API)) { + (COMPILE_HIP_DB && (HIP_TRACE_API & (1< deviceCount) || (device < 0)) { + e = hipErrorInvalidDevice; + } else { + if((pciBusId != nullptr) && (len > 0)) { + int tempPciBusId = 0; + e = ihipDeviceGetAttribute( &tempPciBusId, hipDeviceAttributePciBusId, device); + if( e == hipSuccess) { + std::string tempPciStr = std::to_string(tempPciBusId); + if( len < tempPciStr.length()){ + e = hipErrorInvalidValue; + } else { + memcpy( pciBusId , tempPciStr.c_str() , tempPciStr.length() ); + } + } + } } return ihipLogStatus(e); } @@ -415,72 +427,78 @@ hipError_t hipChooseDevice( int* device, const hipDeviceProp_t* prop ) int inPropCount = 0; int matchedPropCount = 0; hipError_t e = hipSuccess; - ihipGetDeviceCount( &deviceCount ); - *device = 0; - for (int i = 0; i < deviceCount; i++) { - ihipGetDeviceProperties( &tempProp, i ); - if(prop->major != 0) { - inPropCount++; - if(tempProp.major >= prop->major) { - matchedPropCount++; - } - if(prop->minor != 0) { + if((device == NULL) || (prop == NULL)) { + e = hipErrorInvalidValue; + } + if(e == hipSuccess) { + ihipGetDeviceCount( &deviceCount ); + *device = 0; + for (int i = 0; i < deviceCount; i++) { + ihipGetDeviceProperties( &tempProp, i ); + if(prop->major != 0) { inPropCount++; - if(tempProp.minor >= prop->minor) { - matchedPropCount++; - } + if(tempProp.major >= prop->major) { + matchedPropCount++; + } + if(prop->minor != 0) { + inPropCount++; + if(tempProp.minor >= prop->minor) { + matchedPropCount++; + } + } } - } - if(prop->totalGlobalMem != 0) { - inPropCount++; - if(tempProp.totalGlobalMem >= prop->totalGlobalMem) { - matchedPropCount++; + if(prop->totalGlobalMem != 0) { + inPropCount++; + if(tempProp.totalGlobalMem >= prop->totalGlobalMem) { + matchedPropCount++; + } } - } - if(prop->sharedMemPerBlock != 0) { - inPropCount++; - if(tempProp.sharedMemPerBlock >= prop->sharedMemPerBlock) { - matchedPropCount++; + if(prop->sharedMemPerBlock != 0) { + inPropCount++; + if(tempProp.sharedMemPerBlock >= prop->sharedMemPerBlock) { + matchedPropCount++; + } } - } - if(prop->maxThreadsPerBlock != 0) { - inPropCount++; - if(tempProp.maxThreadsPerBlock >= prop->maxThreadsPerBlock ) { - matchedPropCount++; + if(prop->maxThreadsPerBlock != 0) { + inPropCount++; + if(tempProp.maxThreadsPerBlock >= prop->maxThreadsPerBlock ) { + matchedPropCount++; + } } - } - if(prop->totalConstMem != 0) { - inPropCount++; - if(tempProp.totalConstMem >= prop->totalConstMem ) { - matchedPropCount++; + if(prop->totalConstMem != 0) { + inPropCount++; + if(tempProp.totalConstMem >= prop->totalConstMem ) { + matchedPropCount++; + } } - } - if(prop->multiProcessorCount != 0) { - inPropCount++; - if(tempProp.multiProcessorCount >= prop->multiProcessorCount ) { - matchedPropCount++; + if(prop->multiProcessorCount != 0) { + inPropCount++; + if(tempProp.multiProcessorCount >= prop->multiProcessorCount ) { + matchedPropCount++; + } } - } - if(prop->maxThreadsPerMultiProcessor != 0) { - inPropCount++; - if(tempProp.maxThreadsPerMultiProcessor >= prop->maxThreadsPerMultiProcessor ) { - matchedPropCount++; + if(prop->maxThreadsPerMultiProcessor != 0) { + inPropCount++; + if(tempProp.maxThreadsPerMultiProcessor >= prop->maxThreadsPerMultiProcessor ) { + matchedPropCount++; + } } - } - if(prop->memoryClockRate != 0) { - inPropCount++; - if(tempProp.memoryClockRate >= prop->memoryClockRate ) { - matchedPropCount++; + if(prop->memoryClockRate != 0) { + inPropCount++; + if(tempProp.memoryClockRate >= prop->memoryClockRate ) { + matchedPropCount++; + } + } + if(inPropCount == matchedPropCount) { + *device = i; } - } - if(inPropCount == matchedPropCount) { - *device = i; - } #if 0 else{ e= hipErrorInvalidValue; } #endif + } } return ihipLogStatus(e); } + diff --git a/src/hip_event.cpp b/src/hip_event.cpp index 61ac5cd3ab..ab1c43a00b 100644 --- a/src/hip_event.cpp +++ b/src/hip_event.cpp @@ -42,25 +42,29 @@ ihipEvent_t::ihipEvent_t(unsigned flags) // Attach to an existing completion future: -void ihipEvent_t::attachToCompletionFuture(const hc::completion_future *cf, ihipEventType_t eventType) +void ihipEvent_t::attachToCompletionFuture(const hc::completion_future *cf, + hipStream_t stream, ihipEventType_t eventType) { _state = hipEventStatusRecording; _marker = *cf; _type = eventType; + _stream = stream; } -void ihipEvent_t::setTimestamp() +void ihipEvent_t::refereshEventStatus() { - if (_state == hipEventStatusRecorded) { - // already recorded, done: - return; - } else { + bool isReady0 = _marker.is_ready(); + bool isReady1; + int val = 0; + if (_state == hipEventStatusRecording) { // TODO - use completion-future functions to obtain ticks and timestamps: hsa_signal_t *sig = static_cast (_marker.get_native_handle()); + isReady1 = _marker.is_ready(); if (sig) { - if (hsa_signal_load_acquire(*sig) == 0) { + val = hsa_signal_load_acquire(*sig); + if (val == 0) { if ((_type == hipEventTypeIndependent) || (_type == hipEventTypeStopCommand)) { _timestamp = _marker.get_end_tick(); @@ -71,10 +75,14 @@ void ihipEvent_t::setTimestamp() _timestamp = 0; } - _state = hipEventStatusRecorded; + _state = hipEventStatusComplete; } } } + + if (_state != hipEventStatusComplete) { + //printf (" not ready isReady0=%d val=%d isReady1=%d\n", isReady0, val, isReady1); + } } @@ -83,11 +91,19 @@ hipError_t ihipEventCreate(hipEvent_t* event, unsigned flags) hipError_t e = hipSuccess; // TODO-IPC - support hipEventInterprocess. - unsigned supportedFlags = hipEventDefault | hipEventBlockingSync | hipEventDisableTiming; - if ((flags & ~supportedFlags) == 0) { - ihipEvent_t *eh = new ihipEvent_t(flags); + unsigned supportedFlags = hipEventDefault + | hipEventBlockingSync + | hipEventDisableTiming + | hipEventReleaseToDevice + | hipEventReleaseToSystem + ; + const unsigned releaseFlags = (hipEventReleaseToDevice | hipEventReleaseToSystem); - *event = eh; + const bool illegalFlags = (flags & ~supportedFlags) || // can't set any unsupported flags. + (flags & releaseFlags) == releaseFlags; // can't set both release flags + + if (!illegalFlags) { + *event = new ihipEvent_t(flags); } else { e = hipErrorInvalidValue; } @@ -114,17 +130,20 @@ hipError_t hipEventRecord(hipEvent_t event, hipStream_t stream) HIP_INIT_API(event, stream); if (event && event->_state != hipEventStatusUnitialized) { + stream = ihipSyncAndResolveStream(stream); + event->_stream = stream; - if (stream == NULL) { - // If stream == NULL, wait on all queues. - // TODO-HCC fix this - is this conservative or still uses device timestamps? - // TODO-HCC can we use barrier or event marker to implement better solution? + if (HIP_SYNC_NULL_STREAM && stream->isDefaultStream()) { + + // TODO-HIP_SYNC_NULL_STREAM : can remove this code when HIP_SYNC_NULL_STREAM = 0 + + // If default stream , then wait on all queues. ihipCtx_t *ctx = ihipGetTlsDefaultCtx(); - ctx->locked_syncDefaultStream(true); + ctx->locked_syncDefaultStream(true, true); event->_timestamp = hc::get_system_ticks(); - event->_state = hipEventStatusRecorded; + event->_state = hipEventStatusComplete; return ihipLogStatus(hipSuccess); } else { event->_state = hipEventStatusRecording; @@ -164,13 +183,16 @@ hipError_t hipEventSynchronize(hipEvent_t event) } else if (event->_state == hipEventStatusCreated ) { // Created but not actually recorded on any device: return ihipLogStatus(hipSuccess); - } else if (event->_stream == NULL) { + } else if (HIP_SYNC_NULL_STREAM && (event->_stream->isDefaultStream() )) { auto *ctx = ihipGetTlsDefaultCtx(); - ctx->locked_syncDefaultStream(true); + // TODO-HIP_SYNC_NULL_STREAM - can remove this code + ctx->locked_syncDefaultStream(true, true); return ihipLogStatus(hipSuccess); } else { event->_marker.wait((event->_flags & hipEventBlockingSync) ? hc::hcWaitModeBlocked : hc::hcWaitModeActive); + assert (event->_marker.is_ready()); + return ihipLogStatus(hipSuccess); } } else { @@ -182,40 +204,50 @@ hipError_t hipEventElapsedTime(float *ms, hipEvent_t start, hipEvent_t stop) { HIP_INIT_API(ms, start, stop); - ihipEvent_t *start_eh = start; - ihipEvent_t *stop_eh = stop; - - start->setTimestamp(); - stop->setTimestamp(); - hipError_t status = hipSuccess; + *ms = 0.0f; - if (start_eh && stop_eh) { - if ((start_eh->_state == hipEventStatusRecorded) && (stop_eh->_state == hipEventStatusRecorded)) { - // Common case, we have good information for both events. + if ((start == nullptr) || + (start->_flags & hipEventDisableTiming) || + (start->_state == hipEventStatusUnitialized) || (start->_state == hipEventStatusCreated) || + (stop == nullptr) || + (stop->_flags & hipEventDisableTiming) || + ( stop->_state == hipEventStatusUnitialized) || ( stop->_state == hipEventStatusCreated)) { - int64_t tickDiff = (stop_eh->timestamp() - start_eh->timestamp()); + // Both events must be at least recorded else return hipErrorInvalidResourceHandle - uint64_t freqHz; - hsa_system_get_info(HSA_SYSTEM_INFO_TIMESTAMP_FREQUENCY, &freqHz); - if (freqHz) { - *ms = ((double)(tickDiff) / (double)(freqHz)) * 1000.0f; - status = hipSuccess; - } else { - * ms = 0.0f; - status = hipErrorInvalidValue; - } + status = hipErrorInvalidResourceHandle; + } else { + // Refresh status, if still recording... + start->refereshEventStatus(); + stop->refereshEventStatus(); - } else if ((start_eh->_state == hipEventStatusRecording) || - (stop_eh->_state == hipEventStatusRecording)) { - status = hipErrorNotReady; - } else if ((start_eh->_state == hipEventStatusUnitialized) || - (stop_eh->_state == hipEventStatusUnitialized)) { - status = hipErrorInvalidResourceHandle; + if ((start->_state == hipEventStatusComplete) && (stop->_state == hipEventStatusComplete)) { + // Common case, we have good information for both events. + + int64_t tickDiff = (stop->timestamp() - start->timestamp()); + + uint64_t freqHz; + hsa_system_get_info(HSA_SYSTEM_INFO_TIMESTAMP_FREQUENCY, &freqHz); + if (freqHz) { + *ms = ((double)(tickDiff) / (double)(freqHz)) * 1000.0f; + status = hipSuccess; + } else { + * ms = 0.0f; + status = hipErrorInvalidValue; } - } + + + } else if ((start->_state == hipEventStatusRecording) || + (stop->_state == hipEventStatusRecording)) { + + status = hipErrorNotReady; + } else { + assert(0); + } + } return ihipLogStatus(status); } diff --git a/src/hip_fp16.cpp b/src/hip_fp16.cpp index c2b7b47597..8e8f003f56 100644 --- a/src/hip_fp16.cpp +++ b/src/hip_fp16.cpp @@ -90,11 +90,11 @@ __device__ bool __hgt(__half a, __half b) { } __device__ bool __hisinf(__half a) { - return a == __hInfValue.h ? true : false; + return a == HINF ? true : false; } __device__ bool __hisnan(__half a) { - return a > __hInfValue.h ? true : false; + return a > HINF ? true : false; } __device__ bool __hle(__half a, __half b) { @@ -114,75 +114,75 @@ Half2 Comparision Functions */ __device__ bool __hbeq2(__half2 a, __half2 b) { - return (a.p[0] == b.p[0] ? true : false) && (a.p[1] == b.p[1] ? true : false); + return (a.x == b.x ? true : false) && (a.y == b.y ? true : false); } __device__ bool __hbge2(__half2 a, __half2 b) { - return (a.p[0] >= b.p[0] ? true : false) && (a.p[1] >= b.p[1] ? true : false); + return (a.x >= b.x ? true : false) && (a.y >= b.y ? true : false); } __device__ bool __hbgt2(__half2 a, __half2 b) { - return (a.p[0] > b.p[0] ? true : false) && (a.p[1] > b.p[1] ? true : false); + return (a.x > b.x ? true : false) && (a.y > b.y ? true : false); } __device__ bool __hble2(__half2 a, __half2 b) { - return (a.p[0] <= b.p[0] ? true : false) && (a.p[1] <= b.p[1] ? true : false); + return (a.x <= b.x ? true : false) && (a.y <= b.y ? true : false); } __device__ bool __hblt2(__half2 a, __half2 b) { - return (a.p[0] < b.p[0] ? true : false) && (a.p[1] < b.p[1] ? true : false); + return (a.x < b.x ? true : false) && (a.y < b.y ? true : false); } __device__ bool __hbne2(__half2 a, __half2 b) { - return (a.p[0] != b.p[0] ? true : false) && (a.p[1] != b.p[1] ? true : false); + return (a.x != b.x ? true : false) && (a.y != b.y ? true : false); } __device__ __half2 __heq2(__half2 a, __half2 b) { __half2 c; - c.p[0] = (a.p[0] == b.p[0]) ? (__half)1 : (__half)0; - c.p[1] = (a.p[1] == b.p[1]) ? (__half)1 : (__half)0; + c.x = (a.x == b.x) ? (__half)1 : (__half)0; + c.y = (a.y == b.y) ? (__half)1 : (__half)0; return c; } __device__ __half2 __hge2(__half2 a, __half2 b) { __half2 c; - c.p[0] = (a.p[0] >= b.p[0]) ? (__half)1 : (__half)0; - c.p[1] = (a.p[1] >= b.p[1]) ? (__half)1 : (__half)0; + c.x = (a.x >= b.x) ? (__half)1 : (__half)0; + c.y = (a.y >= b.y) ? (__half)1 : (__half)0; return c; } __device__ __half2 __hgt2(__half2 a, __half2 b) { __half2 c; - c.p[0] = (a.p[0] > b.p[0]) ? (__half)1 : (__half)0; - c.p[1] = (a.p[1] > b.p[1]) ? (__half)1 : (__half)0; + c.x = (a.x > b.x) ? (__half)1 : (__half)0; + c.y = (a.y > b.y) ? (__half)1 : (__half)0; return c; } __device__ __half2 __hisnan2(__half2 a) { __half2 c; - c.p[0] = (a.p[0] > __hInfValue.h) ? (__half)1 : (__half)0; - c.p[1] = (a.p[1] > __hInfValue.h) ? (__half)1 : (__half)0; + c.x = (a.x > HINF) ? (__half)1 : (__half)0; + c.y = (a.y > HINF) ? (__half)1 : (__half)0; return c; } __device__ __half2 __hle2(__half2 a, __half2 b) { __half2 c; - c.p[0] = (a.p[0] <= b.p[0]) ? (__half)1 : (__half)0; - c.p[1] = (a.p[1] <= b.p[1]) ? (__half)1 : (__half)0; + c.x = (a.x <= b.x) ? (__half)1 : (__half)0; + c.y = (a.y <= b.y) ? (__half)1 : (__half)0; return c; } __device__ __half2 __hlt2(__half2 a, __half2 b) { __half2 c; - c.p[0] = (a.p[0] < b.p[0]) ? (__half)1 : (__half)0; - c.p[1] = (a.p[1] < b.p[1]) ? (__half)1 : (__half)0; + c.x = (a.x < b.x) ? (__half)1 : (__half)0; + c.y = (a.y < b.y) ? (__half)1 : (__half)0; return c; } __device__ __half2 __hne2(__half2 a, __half2 b) { __half2 c; - c.p[0] = (a.p[0] != b.p[0]) ? (__half)1 : (__half)0; - c.p[1] = (a.p[1] != b.p[1]) ? (__half)1 : (__half)0; + c.x = (a.x != b.x) ? (__half)1 : (__half)0; + c.y = (a.y != b.y) ? (__half)1 : (__half)0; return c; } @@ -191,8 +191,8 @@ Conversion instructions */ __device__ __half2 __float22half2_rn(const float2 a) { __half2 b; - b.p[0] = (__half)a.x; - b.p[1] = (__half)a.y; + b.x = (__half)a.x; + b.y = (__half)a.y; return b; } @@ -202,8 +202,8 @@ __device__ __half __float2half(const float a) { __device__ __half2 __float2half2_rn(const float a) { __half2 b; - b.p[0] = (__half)a; - b.p[1] = (__half)a; + b.x = (__half)a; + b.y = (__half)a; return b; } @@ -225,15 +225,15 @@ __device__ __half __float2half_rz(const float a) { __device__ __half2 __floats2half2_rn(const float a, const float b) { __half2 c; - c.p[0] = (__half)a; - c.p[1] = (__half)b; + c.x = (__half)a; + c.y = (__half)b; return c; } __device__ float2 __half22float2(const __half2 a) { float2 b; - b.x = (float)a.p[0]; - b.y = (float)a.p[1]; + b.x = (float)a.x; + b.y = (float)a.y; return b; } @@ -243,8 +243,8 @@ __device__ float __half2float(const __half a) { __device__ __half2 half2half2(const __half a) { __half2 b; - b.p[0] = a; - b.p[1] = a; + b.x = a; + b.y = a; return b; } @@ -358,30 +358,30 @@ __device__ unsigned short int __half_as_ushort(const __half h) { __device__ __half2 __halves2half2(const __half a, const __half b) { __half2 c; - c.p[0] = a; - c.p[1] = b; + c.x = a; + c.y = b; return c; } __device__ float __high2float(const __half2 a) { - return (float)a.p[1]; + return (float)a.y; } __device__ __half __high2half(const __half2 a) { - return a.p[1]; + return a.y; } __device__ __half2 __high2half2(const __half2 a) { __half2 b; - b.p[0] = a.p[1]; - b.p[1] = a.p[1]; + b.x = a.y; + b.y = a.y; return b; } __device__ __half2 __highs2half2(const __half2 a, const __half2 b) { __half2 c; - c.p[0] = a.p[1]; - c.p[1] = b.p[1]; + c.x = a.y; + c.y = b.y; return c; } @@ -418,38 +418,38 @@ __device__ __half __ll2half_rz(long long int i){ } __device__ float __low2float(const __half2 a) { - return (float)a.p[0]; + return (float)a.x; } __device__ __half __low2half(const __half2 a) { - return a.p[0]; + return a.x; } __device__ __half2 __low2half2(const __half2 a, const __half2 b) { __half2 c; - c.p[0] = a.p[0]; - c.p[1] = b.p[0]; + c.x = a.x; + c.y = b.x; return c; } __device__ __half2 __low2half2(const __half2 a) { __half2 b; - b.p[0] = a.p[0]; - b.p[1] = a.p[0]; + b.x = a.x; + b.y = a.x; return b; } __device__ __half2 __lowhigh2highlow(const __half2 a) { __half2 b; - b.p[0] = a.p[1]; - b.p[1] = a.p[0]; + b.x = a.y; + b.y = a.x; return b; } __device__ __half2 __lows2half2(const __half2 a, const __half2 b) { __half2 c; - c.p[0] = a.p[0]; - c.p[1] = b.p[0]; + c.y = a.x; + c.y = b.x; return c; } @@ -542,346 +542,4 @@ typedef struct{ }; } struct_float; -#if __clang_major__ == 3 -static __device__ float cvt_half_to_float(__half a){ - struct_float ret = {0}; - if(a.x == 0){ - return 0.0f; - } - if(a.x == 0x8000){ - return -0.0f; - } - ret.u = ((a.x&0x8000)<<16) | (((a.x&0x7c00)+0x1C000)<<13) | ((a.x&0x03FF)<<13); - return ret.f; -} - -static __device__ __half cvt_float_to_half(float b){ - struct_float f = {0}; - __half ret = {0}; - f.f = b; - if(f.f == 0.0f){ - ret.x = 0; - return ret; - } - if(f.f == -0.0f){ - ret.x = 0x8000; - return ret; - } - ret.x = ((f.u>>16)&0x8000)|((((f.u&0x7f800000)-0x38000000)>>13)&0x7c00)|((f.u>>13)&0x03ff); - return ret; -} - - -__device__ __half __soft_hadd(const __half a, const __half b){ - return cvt_float_to_half(cvt_half_to_float(a)+cvt_half_to_float(b)); -} - -__device__ __half __soft_hadd_sat(const __half a, const __half b){ - float f = cvt_half_to_float(a) + cvt_half_to_float(b); - return (f < 0.0f ? __half_value_zero_float : (f > 1.0f ? __half_value_one_float: cvt_float_to_half(f))); -} - -__device__ __half __soft_hfma(const __half a, const __half b, const __half c){ - return cvt_float_to_half(fmaf(cvt_half_to_float(a), cvt_half_to_float(b), cvt_half_to_float(c))); -} - -__device__ __half __soft_hfma_sat(const __half a, const __half b, const __half c){ - float f = fmaf(cvt_half_to_float(a), cvt_half_to_float(b), cvt_half_to_float(c)); - return (f < 0.0f ? __half_value_zero_float : (f > 1.0f ? __half_value_one_float: cvt_float_to_half(f))); -} - -__device__ __half __soft_hmul(const __half a, const __half b){ - return cvt_float_to_half(cvt_half_to_float(a)*cvt_half_to_float(b)); -} - -__device__ __half __soft_hmul_sat(const __half a, const __half b){ - float f = cvt_half_to_float(a) * cvt_half_to_float(b); - return (f < 0.0f ? __half_value_zero_float : (f > 1.0f ? __half_value_one_float: cvt_float_to_half(f))); -} - -__device__ __half __soft_hneq(const __half a){ - __half ret = {a.x}; - ret.x ^= 1 << 15; - return ret; -} - -__device__ __half __soft_hsub(const __half a, const __half b){ - return cvt_float_to_half(cvt_half_to_float(a)-cvt_half_to_float(b)); -} - -__device__ __half __soft_hsub_sat(const __half a, const __half b){ - float f = cvt_half_to_float(a) - cvt_half_to_float(b); - return (f < 0.0f ? __half_value_zero_float : (f > 1.0f ? __half_value_one_float: cvt_float_to_half(f))); -} - - -/* -Half2 Arithmetic Instructions -*/ - -__device__ __half2 __soft_hadd2(const __half2 a, const __half2 b){ - __half2 ret; - ret.p[1] = __soft_hadd(a.p[1], b.p[1]); - ret.p[0] = __soft_hadd(a.p[0], b.p[0]); - return ret; -} - -__device__ __half2 __soft_hadd2_sat(const __half2 a, const __half2 b){ - __half2 ret; - ret.p[1] = __soft_hadd_sat(a.p[1], b.p[1]); - ret.p[0] = __soft_hadd_sat(a.p[0], b.p[0]); - return ret; -} - -__device__ __half2 __soft_hfma2(const __half2 a, const __half2 b, const __half2 c){ - __half2 ret; - ret.p[1] = __soft_hfma(a.p[1], b.p[1], c.p[1]); - ret.p[0] = __soft_hfma(a.p[0], b.p[0], c.p[0]); - return ret; -} - -__device__ __half2 __soft_hfma2_sat(const __half2 a, const __half2 b, const __half2 c){ - __half2 ret; - ret.p[1] = __soft_hfma_sat(a.p[1], b.p[1], c.p[1]); - ret.p[0] = __soft_hfma_sat(a.p[0], b.p[0], c.p[0]); - return ret; -} - -__device__ __half2 __soft_hmul2(const __half2 a, const __half2 b){ - __half2 ret; - ret.p[1] = __soft_hmul(a.p[1], b.p[1]); - ret.p[0] = __soft_hmul(a.p[0], b.p[0]); - return ret; -} - -__device__ __half2 __soft_hmul2_sat(const __half2 a, const __half2 b){ - __half2 ret; - ret.p[1] = __soft_hmul_sat(a.p[1], b.p[1]); - ret.p[0] = __soft_hmul_sat(a.p[0], b.p[0]); - return ret; -} - -__device__ __half2 __soft_hneq2(const __half2 a){ - __half2 ret; - ret.p[1] = __soft_hneq(a.p[1]); - ret.p[0] = __soft_hneq(a.p[0]); - return ret; -} - -__device__ __half2 __soft_hsub2(const __half2 a, const __half2 b){ - __half2 ret; - ret.p[1] = __soft_hsub(a.p[1], b.p[1]); - ret.p[0] = __soft_hsub(a.p[0], b.p[0]); - return ret; -} - -__device__ __half2 __soft_hsub2_sat(const __half2 a, const __half2 b){ - __half2 ret; - ret.p[1] = __soft_hsub_sat(a.p[1], b.p[1]); - ret.p[0] = __soft_hsub_sat(a.p[0], b.p[0]); - return ret; -} - -/* -Half Cmps -*/ - -__device__ bool __soft_heq(const __half a, const __half b){ - return (a.x == b.x ? true:false); -} - -__device__ bool __soft_hge(const __half a, const __half b){ - return (cvt_half_to_float(a) >= cvt_half_to_float(b)); -} - -__device__ bool __soft_hgt(const __half a, const __half b){ - return (cvt_half_to_float(a) > cvt_half_to_float(b)); -} - -__device__ bool __soft_hisinf(const __half a){ - return ((a.x == __half_neg_inf) ? -1 : (a.x == __half_pos_inf) ? 1 : 0); -} - -__device__ bool __soft_hisnan(const __half a){ - if(((a.x & __half_pos_inf) == a.x) || ((a.x & __half_neg_inf) == a.x)){ - return true; - }else{ - return false; - } -} - -__device__ bool __soft_hle(const __half a, const __half b){ - return (cvt_half_to_float(a) <= cvt_half_to_float(b)); -} - -__device__ bool __soft_hlt(const __half a, const __half b){ - return (cvt_half_to_float(a) < cvt_half_to_float(b)); -} - -__device__ bool __soft_hne(const __half a, const __half b){ - return a.x == b.x ? false : true; -} - -/* -Half2 Cmps -*/ - -__device__ bool __soft_hbeq2(const __half2 a, const __half2 b){ - return __soft_heq(a.p[1], b.p[1]) && __soft_heq(a.p[0], b.p[0]); -} - -__device__ bool __soft_hbge2(const __half2 a, const __half2 b){ - return __soft_hge(a.p[1], b.p[1]) && __soft_hge(a.p[0], b.p[0]); -} - -__device__ bool __soft_hbgt2(const __half2 a, const __half2 b){ - return __soft_hgt(a.p[1], b.p[1]) && __soft_hgt(a.p[0], b.p[0]); -} - -__device__ bool __soft_hble2(const __half2 a, const __half2 b){ - return __soft_hle(a.p[1], b.p[1]) && __soft_hle(a.p[0], b.p[0]); -} - -__device__ bool __soft_hblt2(const __half2 a, const __half2 b){ - return __soft_hlt(a.p[1], b.p[1]) && __soft_hlt(a.p[0], b.p[0]); -} - -__device__ bool __soft_hbne2(const __half2 a, const __half2 b){ - return __soft_hne(a.p[1], b.p[1]) && __soft_hne(a.p[0], b.p[0]); -} - - - -__device__ __half2 __soft_heq2(const __half2 a, const __half2 b){ - __half2 ret = {0}; - ret.p[1] = (__soft_heq(a.p[1], b.p[1])) ? __half_value_one_float : __half_value_zero_float; - ret.p[0] = (__soft_heq(a.p[0], b.p[0])) ? __half_value_one_float : __half_value_zero_float; - return ret; -} - -__device__ __half2 __soft_hge2(const __half2 a, const __half2 b){ - __half2 ret = {0}; - ret.p[1] = (__soft_hge(a.p[1], b.p[1])) ? __half_value_one_float : __half_value_zero_float; - ret.p[0] = (__soft_hge(a.p[0], b.p[0])) ? __half_value_one_float : __half_value_zero_float; - return ret; -} - -__device__ __half2 __soft_hgt2(const __half2 a, const __half2 b){ - __half2 ret = {0}; - ret.p[1] = (__soft_hgt(a.p[1], b.p[1])) ? __half_value_one_float : __half_value_zero_float; - ret.p[0] = (__soft_hgt(a.p[0], b.p[0])) ? __half_value_one_float : __half_value_zero_float; - return ret; -} - -__device__ __half2 __soft_hisnan2(const __half2 a){ - __half2 ret = {0}; - ret.p[1] = __soft_hisnan(a.p[1]) ? __half_value_one_float : __half_value_zero_float; - ret.p[0] = __soft_hisnan(a.p[0]) ? __half_value_one_float : __half_value_zero_float; - return ret; -} - -__device__ __half2 __soft_hle2(const __half2 a, const __half2 b){ - __half2 ret = {0}; - ret.p[1] = (__soft_hle(a.p[1], b.p[1])) ? __half_value_one_float : __half_value_zero_float; - ret.p[0] = (__soft_hle(a.p[0], b.p[0])) ? __half_value_one_float : __half_value_zero_float; - return ret; -} - -__device__ __half2 __soft_hlt2(const __half2 a, const __half2 b){ - __half2 ret = {0}; - ret.p[1] = (__soft_hlt(a.p[1], b.p[1])) ? __half_value_one_float : __half_value_zero_float; - ret.p[0] = (__soft_hlt(a.p[0], b.p[0])) ? __half_value_one_float : __half_value_zero_float; - return ret; -} - -__device__ __half2 __soft_hne2(const __half2 a, const __half2 b){ - __half2 ret = {0}; - ret.p[1] = (__soft_hne(a.p[1], b.p[1])) ? __half_value_one_float : __half_value_zero_float; - ret.p[0] = (__soft_hne(a.p[0], b.p[0])) ? __half_value_one_float : __half_value_zero_float; - return ret; -} - -/* -Half Cnvs and Data Mvmnt -*/ - -__device__ __half2 __soft_float22half2_rn(const float2 a){ - __half2 ret = {0}; - ret.p[1] = cvt_float_to_half(a.x); - ret.p[0] = cvt_float_to_half(a.y); - return ret; -} - -__device__ __half __soft_float2half(const float a){ - return cvt_float_to_half(a); -} - -__device__ __half2 __soft_float2half2_rn(const float a){ - __half ret = cvt_float_to_half(a); - return {ret, ret}; -} - -__device__ __half2 __soft_floats2half2_rn(const float a, const float b){ - return {cvt_float_to_half(a), cvt_float_to_half(b)}; -} - -__device__ float2 __soft_half22float2(const __half2 a){ - return {cvt_half_to_float(a.p[1]), cvt_half_to_float(a.p[0])}; -} - -__device__ float __soft_half2float(const __half a){ - return cvt_half_to_float(a); -} - -__device__ __half2 __soft_half2half2(const __half a){ - return {a,a}; -} - -__device__ __half2 __soft_halves2half2(const __half a, const __half b){ - return {a,b}; -} - -__device__ float __soft_high2float(const __half2 a){ - return cvt_half_to_float(a.p[1]); -} - -__device__ __half __soft_high2half(const __half2 a){ - return a.p[1]; -} - -__device__ __half2 __soft_high2half2(const __half2 a){ - return {a.p[1], a.p[1]}; -} - -__device__ __half2 __soft_highs2half2(const __half2 a, const __half2 b){ - return {a.p[1], b.p[1]}; -} - -__device__ float __soft_low2float(const __half2 a){ - return cvt_half_to_float(a.p[0]); -} - -__device__ __half __soft_low2half(const __half2 a){ - return a.p[0]; -} - -__device__ __half2 __soft_low2half2(const __half2 a){ - return {a.p[0], a.p[0]}; -} - -__device__ __half2 __soft_lows2half2(const __half2 a, const __half2 b){ - return {a.p[0], b.p[0]}; -} - -__device__ __half2 __soft_lowhigh2highlow(const __half2 a){ - return {a.p[0], a.p[1]}; -} - -__device__ __half2 __soft_low2half2(const __half2 a, const __half2 b){ - return {a.p[0], b.p[0]}; -} - - - -#endif diff --git a/src/hip_hc_gfx803.ll b/src/hip_hc_gfx803.ll index 0080fc7d81..7e3d0e37dd 100644 --- a/src/hip_hc_gfx803.ll +++ b/src/hip_hc_gfx803.ll @@ -2,89 +2,122 @@ target datalayout = "e-p:32:32-p1:64:64-p2:64:64-p3:32:32-p4:64:64-p5:32:32-i64: target triple = "amdgcn--amdhsa" -define i32 @__hip_hc_ir_hadd2_int(i32 %a, i32 %b) #1 { - %1 = tail call i32 asm sideeffect "v_add_f16 $0, $1, $2","=v,v,v"(i32 %a, i32 %b) - tail call void asm sideeffect "v_add_f16_sdwa $0, $1, $2 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 src1_sel:WORD_1","v,v,v"(i32 %1, i32 %a, i32 %b) - ret i32 %1 +define <2 x half> @__hip_hc_ir_hadd2_int(<2 x half> %a, <2 x half> %b) #1 { + %1 = bitcast <2 x half> %a to i32 + %2 = bitcast <2 x half> %b to i32 + %3 = tail call i32 asm sideeffect "v_add_f16 $0, $1, $2","=v,v,v"(i32 %1, i32 %2) + tail call void asm sideeffect "v_add_f16_sdwa $0, $1, $2 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 src1_sel:WORD_1","v,v,v"(i32 %3, i32 %1, i32 %2) + %4 = bitcast i32 %3 to <2 x half> + ret <2 x half> %4 } -define i32 @__hip_hc_ir_hfma2_int(i32 %a, i32 %b, i32 %c) #1 { - %1 = tail call i32 asm sideeffect "v_mad_f16 $0, $1, $2, $3","=v,v,v,v"(i32 %a, i32 %b, i32 %c) - tail call void asm sideeffect "v_mul_f16_sdwa $0, $1, $2 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 src1_sel:WORD_1","v,v,v"(i32 %1, i32 %a, i32 %b) - tail call void asm sideeffect "v_add_f16_sdwa $0, $1, $2 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 src1_sel:WORD_1","v,v,v"(i32 %1, i32 %1, i32 %c) - ret i32 %1 +define <2 x half> @__hip_hc_ir_hfma2_int(<2 x half> %a, <2 x half> %b, <2 x half> %c) #1 { + %1 = bitcast <2 x half> %a to i32 + %2 = bitcast <2 x half> %b to i32 + %3 = bitcast <2 x half> %c to i32 + %4 = tail call i32 asm sideeffect "v_mad_f16 $0, $1, $2, $3","=v,v,v,v"(i32 %1, i32 %2, i32 %3) + tail call void asm sideeffect "v_mul_f16_sdwa $0, $1, $2 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 src1_sel:WORD_1","v,v,v"(i32 %4, i32 %1, i32 %2) + tail call void asm sideeffect "v_add_f16_sdwa $0, $1, $2 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 src1_sel:WORD_1","v,v,v"(i32 %4, i32 %4, i32 %3) + %5 = bitcast i32 %4 to <2 x half> + ret <2 x half> %5 } -define i32 @__hip_hc_ir_hmul2_int(i32 %a, i32 %b) #1 { - %1 = tail call i32 asm sideeffect "v_mul_f16 $0, $1, $2","=v,v,v"(i32 %a, i32 %b) - tail call void asm sideeffect "v_mul_f16_sdwa $0, $1, $2 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 src1_sel:WORD_1","v,v,v"(i32 %1, i32 %a, i32 %b) - ret i32 %1 +define <2 x half> @__hip_hc_ir_hmul2_int(<2 x half> %a, <2 x half> %b) #1 { + %1 = bitcast <2 x half> %a to i32 + %2 = bitcast <2 x half> %b to i32 + %3 = tail call i32 asm sideeffect "v_mul_f16 $0, $1, $2","=v,v,v"(i32 %1, i32 %2) + tail call void asm sideeffect "v_mul_f16_sdwa $0, $1, $2 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 src1_sel:WORD_1","v,v,v"(i32 %3, i32 %1, i32 %2) + %4 = bitcast i32 %3 to <2 x half> + ret <2 x half> %4 } -define i32 @__hip_hc_ir_hsub2_int(i32 %a, i32 %b) #1 { - %1 = tail call i32 asm sideeffect "v_sub_f16 $0, $1, $2","=v,v,v"(i32 %a, i32 %b) - tail call void asm sideeffect "v_sub_f16_sdwa $0, $1, $2 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 src1_sel:WORD_1","v,v,v"(i32 %1, i32 %a, i32 %b) - ret i32 %1 +define <2 x half> @__hip_hc_ir_hsub2_int(<2 x half> %a, <2 x half> %b) #1 { + %1 = bitcast <2 x half> %a to i32 + %2 = bitcast <2 x half> %b to i32 + %3 = tail call i32 asm sideeffect "v_sub_f16 $0, $1, $2","=v,v,v"(i32 %1, i32 %2) + tail call void asm sideeffect "v_sub_f16_sdwa $0, $1, $2 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 src1_sel:WORD_1","v,v,v"(i32 %3, i32 %1, i32 %2) + %4 = bitcast i32 %3 to <2 x half> + ret <2 x half> %4 } -define i32 @__hip_hc_ir_h2ceil_int(i32 %a) #1 { - %1 = tail call i32 asm sideeffect "v_ceil_f16 $0, $1","=v,v"(i32 %a) - tail call void asm sideeffect "v_ceil_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %1, i32 %a) - ret i32 %1 +define <2 x half> @__hip_hc_ir_h2ceil_int(<2 x half> %a) #1 { + %1 = bitcast <2 x half> %a to i32 + %2 = tail call i32 asm sideeffect "v_ceil_f16 $0, $1","=v,v"(i32 %1) + tail call void asm sideeffect "v_ceil_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %2, i32 %1) + %3 = bitcast i32 %2 to <2 x half> + ret <2 x half> %3 } -define i32 @__hip_hc_ir_h2cos_int(i32 %a) #1 { - %1 = tail call i32 asm sideeffect "v_cos_f16 $0, $1","=v,v"(i32 %a) - tail call void asm sideeffect "v_cos_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %1, i32 %a) - ret i32 %1 +define <2 x half> @__hip_hc_ir_h2cos_int(<2 x half> %a) #1 { + %1 = bitcast <2 x half> %a to i32 + %2 = tail call i32 asm sideeffect "v_cos_f16 $0, $1","=v,v"(i32 %1) + tail call void asm sideeffect "v_cos_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %2, i32 %1) + %3 = bitcast i32 %2 to <2 x half> + ret <2 x half> %3 } -define i32 @__hip_hc_ir_h2exp2_int(i32 %a) #1 { - %1 = tail call i32 asm sideeffect "v_exp_f16 $0, $1","=v,v"(i32 %a) - tail call void asm sideeffect "v_exp_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %1, i32 %a) - ret i32 %1 +define <2 x half> @__hip_hc_ir_h2exp2_int(<2 x half> %a) #1 { + %1 = bitcast <2 x half> %a to i32 + %2 = tail call i32 asm sideeffect "v_exp_f16 $0, $1","=v,v"(i32 %1) + tail call void asm sideeffect "v_exp_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %2, i32 %1) + %3 = bitcast i32 %2 to <2 x half> + ret <2 x half> %3 } -define i32 @__hip_hc_ir_h2floor_int(i32 %a) #1 { - %1 = tail call i32 asm sideeffect "v_floor_f16 $0, $1","=v,v"(i32 %a) - tail call void asm sideeffect "v_floor_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %1, i32 %a) - ret i32 %1 +define <2 x half> @__hip_hc_ir_h2floor_int(<2 x half> %a) #1 { + %1 = bitcast <2 x half> %a to i32 + %2 = tail call i32 asm sideeffect "v_floor_f16 $0, $1","=v,v"(i32 %1) + tail call void asm sideeffect "v_floor_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %2, i32 %1) + %3 = bitcast i32 %2 to <2 x half> + ret <2 x half> %3 } -define i32 @__hip_hc_ir_h2log2_int(i32 %a) #1 { - %1 = tail call i32 asm sideeffect "v_log_f16 $0, $1","=v,v"(i32 %a) - tail call void asm sideeffect "v_log_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %1, i32 %a) - ret i32 %1 +define <2 x half> @__hip_hc_ir_h2log2_int(<2 x half> %a) #1 { + %1 = bitcast <2 x half> %a to i32 + %2 = tail call i32 asm sideeffect "v_log_f16 $0, $1","=v,v"(i32 %1) + tail call void asm sideeffect "v_log_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %2, i32 %1) + %3 = bitcast i32 %2 to <2 x half> + ret <2 x half> %3 } -define i32 @__hip_hc_ir_h2rcp_int(i32 %a) #1 { - %1 = tail call i32 asm sideeffect "v_rcp_f16 $0, $1","=v,v"(i32 %a) - tail call void asm sideeffect "v_rcp_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %1, i32 %a) - ret i32 %1 +define <2 x half> @__hip_hc_ir_h2rcp_int(<2 x half> %a) #1 { + %1 = bitcast <2 x half> %a to i32 + %2 = tail call i32 asm sideeffect "v_rcp_f16 $0, $1","=v,v"(i32 %1) + tail call void asm sideeffect "v_rcp_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %2, i32 %1) + %3 = bitcast i32 %2 to <2 x half> + ret <2 x half> %3 } -define i32 @__hip_hc_ir_h2rsqrt_int(i32 %a) #1 { - %1 = tail call i32 asm sideeffect "v_rsq_f16 $0, $1","=v,v"(i32 %a) - tail call void asm sideeffect "v_rsq_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %1, i32 %a) - ret i32 %1 +define <2 x half> @__hip_hc_ir_h2rsqrt_int(<2 x half> %a) #1 { + %1 = bitcast <2 x half> %a to i32 + %2 = tail call i32 asm sideeffect "v_rsq_f16 $0, $1","=v,v"(i32 %1) + tail call void asm sideeffect "v_rsq_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %2, i32 %1) + %3 = bitcast i32 %2 to <2 x half> + ret <2 x half> %3 } -define i32 @__hip_hc_ir_h2sin_int(i32 %a) #1 { - %1 = tail call i32 asm sideeffect "v_sin_f16 $0, $1","=v,v"(i32 %a) - tail call void asm sideeffect "v_sin_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %1, i32 %a) - ret i32 %1 +define <2 x half> @__hip_hc_ir_h2sin_int(<2 x half> %a) #1 { + %1 = bitcast <2 x half> %a to i32 + %2 = tail call i32 asm sideeffect "v_sin_f16 $0, $1","=v,v"(i32 %1) + tail call void asm sideeffect "v_sin_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %2, i32 %1) + %3 = bitcast i32 %2 to <2 x half> + ret <2 x half> %3 } -define i32 @__hip_hc_ir_h2sqrt_int(i32 %a) #1 { - %1 = tail call i32 asm sideeffect "v_sqrt_f16 $0, $1","=v,v"(i32 %a) - tail call void asm sideeffect "v_sqrt_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %1, i32 %a) - ret i32 %1 +define <2 x half> @__hip_hc_ir_h2sqrt_int(<2 x half> %a) #1 { + %1 = bitcast <2 x half> %a to i32 + %2 = tail call i32 asm sideeffect "v_sqrt_f16 $0, $1","=v,v"(i32 %1) + tail call void asm sideeffect "v_sqrt_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %2, i32 %1) + %3 = bitcast i32 %2 to <2 x half> + ret <2 x half> %3 } -define i32 @__hip_hc_ir_h2trunc_int(i32 %a) #1 { - %1 = tail call i32 asm sideeffect "v_trunc_f16 $0, $1","=v,v"(i32 %a) - tail call void asm sideeffect "v_trunc_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %1, i32 %a) - ret i32 %1 +define <2 x half> @__hip_hc_ir_h2trunc_int(<2 x half> %a) #1 { + %1 = bitcast <2 x half> %a to i32 + %2 = tail call i32 asm sideeffect "v_trunc_f16 $0, $1","=v,v"(i32 %1) + tail call void asm sideeffect "v_trunc_f16_sdwa $0, $1 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1","v,v"(i32 %2, i32 %1) + %3 = bitcast i32 %2 to <2 x half> + ret <2 x half> %3 } attributes #1 = { alwaysinline nounwind } diff --git a/src/hip_hcc.cpp b/src/hip_hcc.cpp index 71d947488d..be591f2f04 100644 --- a/src/hip_hcc.cpp +++ b/src/hip_hcc.cpp @@ -48,14 +48,6 @@ THE SOFTWARE. #include "env.h" -#ifndef USE_COPY_EXT_V2 -#define USE_COPY_EXT_V2 1 -#endif - -#ifndef USE_ROCR_1_4 -#define USE_ROCR_1_4 1 -#endif - //================================================================================================= //Global variables: //================================================================================================= @@ -69,7 +61,6 @@ std::string HIP_LAUNCH_BLOCKING_KERNELS; std::vector g_hipLaunchBlockingKernels; int HIP_API_BLOCKING = 0; -int HIP_MAX_QUEUES = 0; int HIP_PRINT_ENV = 0; int HIP_TRACE_API= 0; @@ -80,33 +71,38 @@ int HIP_PROFILE_API= 0; std::string HIP_DB_START_API; std::string HIP_DB_STOP_API; int HIP_DB= 0; -int HIP_VISIBLE_DEVICES = 0; /* Contains a comma-separated sequence of GPU identifiers */ -int HIP_NUM_KERNELS_INFLIGHT = 128; +int HIP_VISIBLE_DEVICES = 0; int HIP_WAIT_MODE = 0; int HIP_FORCE_P2P_HOST = 0; int HIP_FAIL_SOC = 0; int HIP_DENY_PEER_ACCESS = 0; +int HIP_HIDDEN_FREE_MEM = 256; // Force async copies to actually use the synchronous copy interface. int HIP_FORCE_SYNC_COPY = 0; +// TODO - set these to 0 and 1 +int HIP_EVENT_SYS_RELEASE=1; int HIP_COHERENT_HOST_ALLOC = 0; // TODO - set to 0 once we resolve stability. // USE_ HIP_SYNC_HOST_ALLOC int HIP_SYNC_HOST_ALLOC = 1; -int HCC_OPT_FLUSH = 0; +// Chicken bit to sync on host to implement null stream. +// If 0, null stream synchronization is performed on the GPU +int HIP_SYNC_NULL_STREAM = 0; + +// HIP needs to change some behavior based on HCC_OPT_FLUSH : +// TODO - set this to 1 +int HCC_OPT_FLUSH = 1; -#define HIP_USE_PRODUCT_NAME 1 -//#define DISABLE_COPY_EXT 1 - std::once_flag hip_initialized; @@ -118,6 +114,7 @@ bool g_visible_device = false; unsigned g_deviceCnt; std::vector g_hip_visible_devices; hsa_agent_t g_cpu_agent; +hsa_agent_t *g_allAgents; // CPU agents + all the visible GPU agents. unsigned g_numLogicalThreads; std::atomic g_lastShortTid(1); @@ -272,64 +269,40 @@ ihipStream_t::~ihipStream_t() } -inline void ihipStream_t::ensureHaveQueue(LockedAccessor_StreamCrit_t &streamCrit) +hc::hcWaitMode ihipStream_t::waitMode() const { - if (HIP_MAX_QUEUES && !streamCrit->_hasQueue) { + hc::hcWaitMode waitMode = hc::hcWaitModeActive; - // To avoid deadlock, we have to release the stream lock before acquiring context lock. - // Else we can get hung if another thread has the context lock is trying to get lock for this stream. - // We lock it again below. - streamCrit->munlock(); - - // Obtain mutex access to the device critical data, release by destructor - LockedAccessor_CtxCrit_t ctxCrit(this->_ctx->criticalData()); - // TODO - auto needyCritPtr = this->_criticalData.mlock(); - - // Second test to ensure we still need to steal the queue - another thread may have - // snuck in here and already solved the issue. - if (!needyCritPtr->_hasQueue) { - needyCritPtr->_av = this->_ctx->stealActiveQueue(ctxCrit, this); + if (_scheduleMode == Auto) { + if (g_deviceCnt > g_numLogicalThreads) { + waitMode = hc::hcWaitModeActive; + } else { + waitMode = hc::hcWaitModeBlocked; } - - streamCrit->_hasQueue = true; + } else if (_scheduleMode == Spin) { + waitMode = hc::hcWaitModeActive; + } else if (_scheduleMode == Yield) { + waitMode = hc::hcWaitModeBlocked; + } else { + assert(0); // bad wait mode. } - assert(streamCrit->_hasQueue); -} + if (HIP_WAIT_MODE == 1) { + waitMode = hc::hcWaitModeBlocked; + } else if (HIP_WAIT_MODE == 2) { + waitMode = hc::hcWaitModeActive; + } + + return waitMode; +} //Wait for all kernel and data copy commands in this stream to complete. //This signature should be used in routines that already have locked the stream mutex void ihipStream_t::wait(LockedAccessor_StreamCrit_t &crit) { - if (crit->_hasQueue) { - tprintf (DB_SYNC, "%s wait for queue-empty..\n", ToString(this).c_str()); - hc::hcWaitMode waitMode = hc::hcWaitModeActive; + tprintf (DB_SYNC, "%s wait for queue-empty..\n", ToString(this).c_str()); - if (_scheduleMode == Auto) { - if (g_deviceCnt > g_numLogicalThreads) { - waitMode = hc::hcWaitModeActive; - } else { - waitMode = hc::hcWaitModeBlocked; - } - } else if (_scheduleMode == Spin) { - waitMode = hc::hcWaitModeActive; - } else if (_scheduleMode == Yield) { - waitMode = hc::hcWaitModeBlocked; - } else { - assert(0); // bad wait mode. - } - - if (HIP_WAIT_MODE == 1) { - waitMode = hc::hcWaitModeBlocked; - } else if (HIP_WAIT_MODE == 2) { - waitMode = hc::hcWaitModeActive; - } - - crit->_av.wait(waitMode); - } else { - tprintf (DB_SYNC, "%s wait for queue empty (done since stream has no physical queue).\n", ToString(this).c_str()); - } + crit->_av.wait(waitMode()); crit->_kernelCnt = 0; } @@ -345,14 +318,13 @@ void ihipStream_t::locked_wait() }; // Causes current stream to wait for specified event to complete: -// Note this does not require any kind of host serialization. +// Note this does not provide any kind of host serialization. void ihipStream_t::locked_waitEvent(hipEvent_t event) { LockedAccessor_StreamCrit_t crit(_criticalData); - this->ensureHaveQueue(crit); - crit->_av.create_blocking_marker(event->_marker); + crit->_av.create_blocking_marker(event->_marker, hc::accelerator_scope); } // Create a marker in this stream. @@ -362,9 +334,19 @@ void ihipStream_t::locked_recordEvent(hipEvent_t event) // Lock the stream to prevent simultaneous access LockedAccessor_StreamCrit_t crit(_criticalData); - this->ensureHaveQueue(crit); - event->_marker = crit->_av.create_marker(); -} + auto scopeFlag = hc::accelerator_scope; + // The env var HIP_EVENT_SYS_RELEASE sets the default, + // The explicit flags override the env var (if specified) + if (event->_flags & hipEventReleaseToSystem) { + scopeFlag = hc::system_scope; + } else if (event->_flags & hipEventReleaseToDevice) { + scopeFlag = hc::accelerator_scope; + } else { + scopeFlag = HIP_EVENT_SYS_RELEASE ? hc::system_scope : hc::accelerator_scope; + } + + event->_marker = crit->_av.create_marker(scopeFlag); +}; //============================================================================= @@ -396,14 +378,6 @@ LockedAccessor_StreamCrit_t ihipStream_t::lockopen_preKernelCommand() LockedAccessor_StreamCrit_t crit(_criticalData, false/*no unlock at destruction*/); - if(crit->_kernelCnt > HIP_NUM_KERNELS_INFLIGHT){ - this->wait(crit); - crit->_kernelCnt = 0; - } - - this->ensureHaveQueue(crit); - - return crit; } @@ -775,6 +749,9 @@ hipError_t ihipDevice_t::initProperties(hipDeviceProp_t* prop) if(strcmp(archName,"gfx803")==0){ prop->gcnArch = 803; } + if(strcmp(archName,"gfx900")==0){ + prop->gcnArch = 900; + } DeviceErrorCheck(err); @@ -848,11 +825,7 @@ hipError_t ihipDevice_t::initProperties(hipDeviceProp_t* prop) // Get Max Threads Per Multiprocessor uint32_t max_waves_per_cu; -#if USE_ROCR_1_4 err = hsa_agent_get_info(_hsaAgent,(hsa_agent_info_t) HSA_AMD_AGENT_INFO_MAX_WAVES_PER_CU, &max_waves_per_cu); -#else - max_waves_per_cu = 10; -#endif DeviceErrorCheck(err); prop-> maxThreadsPerMultiProcessor = prop->warpSize*max_waves_per_cu; @@ -997,55 +970,6 @@ std::string ihipCtx_t::toString() const }; -hc::accelerator_view -ihipCtx_t::stealActiveQueue(LockedAccessor_CtxCrit_t &ctxCrit, ihipStream_t *needyStream) -{ - - // TODO - review handling if queue can't be found. - while (1) { - - for (auto iter=ctxCrit->streams().begin(); iter != ctxCrit->streams().end(); iter++) { - if (*iter != needyStream) { - auto victimCritPtr = (*iter)->_criticalData.mtry_lock(); - if (victimCritPtr) { - // try-lock succeeded: - if (victimCritPtr->_hasQueue && (victimCritPtr->_kernelCnt == 0)) { - - victimCritPtr->_hasQueue = false; - - tprintf(DB_SYNC, " stealActiveQueue from victim:%s to needy:%s\n", - ToString(*iter).c_str(), ToString(needyStream).c_str()); - - hc::accelerator_view av = victimCritPtr->_av; - - // TODO - cleanup to remove forced setting to N - uint64_t *p = (uint64_t*)(&victimCritPtr->_av); - *p = 0; // damage the victim av so attempt to use it will fault. - - (*iter)->_criticalData.munlock(); - return av; - } - (*iter)->_criticalData.munlock(); - } - } - } - } -} - - -hc::accelerator_view -ihipCtx_t::createOrStealQueue(LockedAccessor_CtxCrit_t &ctxCrit) -{ - if (HIP_MAX_QUEUES && (ctxCrit->streams().size() >= HIP_MAX_QUEUES)) { - // Steal a queue from an existing stream: - hc::accelerator_view av = this->stealActiveQueue (ctxCrit, nullptr); - return av; - } else { - // Create a new view - return getWriteableDevice()->_acc.create_view(); - } -} - //---- @@ -1062,29 +986,68 @@ ihipCtx_t::createOrStealQueue(LockedAccessor_CtxCrit_t &ctxCrit) -// Implement "default" stream syncronization -// This waits for all other streams to drain before continuing. +// This called for submissions that are sent to the null/default stream. This routine ensures +// that this new command waits for activity in the other streams to complete before proceeding. +// +// HIP_SYNC_NULL_STREAM=0 does all dependency resolutiokn on the GPU +// HIP_SYNC_NULL_STREAM=1 s legacy non-optimal mode which conservatively waits on host. +// // If waitOnSelf is set, this additionally waits for the default stream to empty. -void ihipCtx_t::locked_syncDefaultStream(bool waitOnSelf) +// In new HIP_SYNC_NULL_STREAM=0 mode, this enqueues a marker which causes the default stream to wait for other +// activity, but doesn't actually block the host. If host blocking is desired, the caller should set syncHost. +// +// syncToHost causes host to wait for the stream to finish. +// Note HIP_SYNC_NULL_STREAM=1 path always sync to Host. +void ihipCtx_t::locked_syncDefaultStream(bool waitOnSelf, bool syncHost) { LockedAccessor_CtxCrit_t crit(_criticalData); - tprintf(DB_SYNC, "syncDefaultStream\n"); + tprintf(DB_SYNC, "syncDefaultStream \n"); + + // Vector of ops sent to each stream that will complete before ops sent to null stream: + std::vector depOps; for (auto streamI=crit->const_streams().begin(); streamI!=crit->const_streams().end(); streamI++) { ihipStream_t *stream = *streamI; // Don't wait for streams that have "opted-out" of syncing with NULL stream. - // And - don't wait for the NULL stream - if (!(stream->_flags & hipStreamNonBlocking)) { + // And - don't wait for the NULL stream, unless waitOnSelf specified. + bool waitThisStream = (!(stream->_flags & hipStreamNonBlocking)) && + (waitOnSelf || (stream != _defaultStream)); - if (waitOnSelf || (stream != _defaultStream)) { - // TODO-hcc - use blocking or active wait here? - // TODO-sync - cudaDeviceBlockingSync + if (HIP_SYNC_NULL_STREAM) { + + if (waitThisStream) { stream->locked_wait(); } + } else { + if (waitThisStream) { + LockedAccessor_StreamCrit_t streamCrit(stream->_criticalData); + + // The last marker will provide appropriate visibility: + if (!streamCrit->_av.get_is_empty()) { + depOps.push_back(streamCrit->_av.create_marker(hc::accelerator_scope)); + tprintf(DB_SYNC, " push marker to wait for stream=%s\n", ToString(stream).c_str()); + } else { + tprintf(DB_SYNC, " skipped stream=%s since it is empty\n", ToString(stream).c_str()); + } + } } } + + + // Enqueue a barrier to wait on all the barriers we sent above: + if (!HIP_SYNC_NULL_STREAM && !depOps.empty()) { + LockedAccessor_StreamCrit_t defaultStreamCrit(_defaultStream->_criticalData); + tprintf(DB_SYNC, " null-stream wait on %zu non-empty streams. sync_host=%d\n", depOps.size(), syncHost); + hc::completion_future defaultCf = defaultStreamCrit->_av.create_blocking_marker(depOps.begin(), depOps.end(), hc::accelerator_scope); + if (syncHost) { + defaultCf.wait(); // TODO - account for active or blocking here. + } + } + + tprintf(DB_SYNC, " syncDefaultStream depOps=%zu\n", depOps.size()); + } @@ -1242,9 +1205,8 @@ void HipReadEnv() tokenize(HIP_LAUNCH_BLOCKING_KERNELS, ',', &g_hipLaunchBlockingKernels); } READ_ENV_I(release, HIP_API_BLOCKING, 0, "Make HIP APIs 'host-synchronous', so they block until completed. Impacts hipMemcpyAsync, hipMemsetAsync." ); - - - READ_ENV_I(release, HIP_MAX_QUEUES, 0, "Maximum number of queues that this app will use per-device. Additional streams will share the specified number of queues. 0=no limit."); + + READ_ENV_I(release, HIP_HIDDEN_FREE_MEM, 0, "Amount of memory to hide from the free memory reported by hipMemGetInfo, specified in MB. Impacts hipMemGetInfo." ); READ_ENV_C(release, HIP_DB, 0, "Print debug info. Bitmask (HIP_DB=0xff) or flags separated by '+' (HIP_DB=api+sync+mem+copy)", HIP_DB_callback); if ((HIP_DB & (1< (malloc((g_deviceCnt+1) * sizeof(hsa_agent_t))); + g_allAgents[0] = g_cpu_agent; + for (int i=0; i_hsaAgent; + } + + g_numLogicalThreads = std::thread::hardware_concurrency(); // If HIP_VISIBLE_DEVICES is not set, make sure all devices are initialized @@ -1411,17 +1381,49 @@ void ihipInit() hipStream_t ihipSyncAndResolveStream(hipStream_t stream) { if (stream == hipStreamNull ) { - ihipCtx_t *device = ihipGetTlsDefaultCtx(); + // Submitting to NULL stream, call locked_syncDefaultStream to wait for all other streams: + ihipCtx_t *ctx = ihipGetTlsDefaultCtx(); + tprintf(DB_SYNC, "ihipSyncAndResolveStream %s wait on default stream\n", ToString(stream).c_str()); #ifndef HIP_API_PER_THREAD_DEFAULT_STREAM - device->locked_syncDefaultStream(false); + ctx->locked_syncDefaultStream(false, false); #endif - return device->_defaultStream; + return ctx->_defaultStream; } else { - // ALl streams have to wait for legacy default stream to be empty: + // Submitting to a "normal" stream, just wait for null stream: if (!(stream->_flags & hipStreamNonBlocking)) { - tprintf(DB_SYNC, "%s wait default stream\n", ToString(stream).c_str()); - stream->getCtx()->_defaultStream->locked_wait(); + if (HIP_SYNC_NULL_STREAM) { + tprintf(DB_SYNC, "ihipSyncAndResolveStream %s host-wait on default stream\n", ToString(stream).c_str()); + stream->getCtx()->_defaultStream->locked_wait(); + } else { + ihipStream_t *defaultStream = stream->getCtx()->_defaultStream; + + + bool needGatherMarker = false; // used to gather together other markers. + hc::completion_future dcf; + { + LockedAccessor_StreamCrit_t defaultStreamCrit(defaultStream->criticalData()); + // TODO - could call create_blocking_marker(queue) or uses existing marker. + if (!defaultStreamCrit->_av.get_is_empty()) { + needGatherMarker = true; + + tprintf(DB_SYNC, " %s adding marker to default %s for dependency\n", + ToString(stream).c_str(), ToString(defaultStream).c_str()); + dcf = defaultStreamCrit->_av.create_marker(hc::accelerator_scope); + } else { + tprintf(DB_SYNC, " %s skipping marker since default stream is empty\n", ToString(stream).c_str()); + } + } + + if (needGatherMarker) { + // ensure any commands sent to this stream wait on the NULL stream before continuing + LockedAccessor_StreamCrit_t thisStreamCrit(stream->criticalData()); + // TODO - could be "noret" version of create_blocking_marker + thisStreamCrit->_av.create_blocking_marker(dcf, hc::accelerator_scope); + tprintf(DB_SYNC, " %s adding marker to wait for freshly recorded default-stream marker \n", + ToString(stream).c_str()); + } + } } return stream; @@ -1431,7 +1433,7 @@ hipStream_t ihipSyncAndResolveStream(hipStream_t stream) void ihipPrintKernelLaunch(const char *kernelName, const grid_launch_parm *lp, const hipStream_t stream) { - if ((HIP_TRACE_API & (1<ensureHaveQueue(crit); -#if USE_COPY_EXT_V2 crit->_av.copy_ext(src, dst, sizeBytes, hcCopyDir, srcPtrInfo, dstPtrInfo, copyDevice ? ©Device->getDevice()->_acc : nullptr, forceUnpinnedCopy); -#else - crit->_av.copy_ext(src, dst, sizeBytes, hcCopyDir, srcPtrInfo, dstPtrInfo, forceUnpinnedCopy); -#endif } } @@ -2011,21 +2008,12 @@ void ihipStream_t::locked_copyAsync(void* dst, const void* src, size_t sizeBytes // Perform fast asynchronous copy - we know copyDevice != NULL based on check above try { - this->ensureHaveQueue(crit); if (HIP_FORCE_SYNC_COPY) { -#if USE_COPY_EXT_V2 crit->_av.copy_ext (src, dst, sizeBytes, hcCopyDir, srcPtrInfo, dstPtrInfo, ©Device->getDevice()->_acc, forceUnpinnedCopy); -#else - crit->_av.copy_ext (src, dst, sizeBytes, hcCopyDir, srcPtrInfo, dstPtrInfo, forceUnpinnedCopy); -#endif } else { -#if USE_COPY_EXT_V2 crit->_av.copy_async_ext(src, dst, sizeBytes, hcCopyDir, srcPtrInfo, dstPtrInfo, ©Device->getDevice()->_acc); -#else - crit->_av.copy_async(src, dst, sizeBytes); -#endif } } catch (Kalmar::runtime_exception) { throw ihipException(hipErrorRuntimeOther); @@ -2056,13 +2044,8 @@ void ihipStream_t::locked_copyAsync(void* dst, const void* src, size_t sizeBytes // Perform slow synchronous copy: LockedAccessor_StreamCrit_t crit(_criticalData); - this->ensureHaveQueue(crit); -#if USE_COPY_EXT_V2 crit->_av.copy_ext(src, dst, sizeBytes, hcCopyDir, srcPtrInfo, dstPtrInfo, copyDevice ? ©Device->getDevice()->_acc : nullptr, forceUnpinnedCopy); -#else - crit->_av.copy_ext(src, dst, sizeBytes, hcCopyDir, srcPtrInfo, dstPtrInfo, forceUnpinnedCopy); -#endif } } } @@ -2115,7 +2098,6 @@ hipError_t hipHccGetAccelerator(int deviceId, hc::accelerator *acc) //--- -// Warning - with HIP_MAX_QUEUES!=0 there is no mechanism to prevent accelerator_view from being re-assigned... hipError_t hipHccGetAcceleratorView(hipStream_t stream, hc::accelerator_view **av) { HIP_INIT_API(stream, av); diff --git a/src/hip_hcc_internal.h b/src/hip_hcc_internal.h index 9c17c6e98c..1499406780 100644 --- a/src/hip_hcc_internal.h +++ b/src/hip_hcc_internal.h @@ -61,11 +61,13 @@ extern int HIP_FORCE_P2P_HOST; extern int HIP_COHERENT_HOST_ALLOC; - +extern int HIP_HIDDEN_FREE_MEM; //--- // Chicken bits for disabling functionality to work around potential issues: extern int HIP_SYNC_HOST_ALLOC; +extern int HIP_SYNC_NULL_STREAM; + // TODO - remove when this is standard behavior. extern int HCC_OPT_FLUSH; @@ -187,10 +189,11 @@ extern const char *API_COLOR_END; //--- -//HIP Trace modes -#define TRACE_ALL 0 // 0x1 -#define TRACE_CMD 1 // 0x2 -#define TRACE_MEM 2 // 0x4 +//HIP Trace modes - use with HIP_TRACE_API=... +#define TRACE_ALL 0 // 0x1 +#define TRACE_KCMD 1 // 0x2, kernel command +#define TRACE_MCMD 2 // 0x4, memory command +#define TRACE_MEM 3 // 0x8, memory allocation or deallocation. //--- @@ -275,12 +278,13 @@ extern void recordApiTrace(std::string *fullStr, const std::string &apiStr); API_TRACE(0, __VA_ARGS__); -// Like above, but will trace with DB_CMD. -// Replace HIP_INIT_API with this call inside important APIs that launch work on the GPU: +// Like above, but will trace with a specified "special" bit. +// Replace HIP_INIT_API with this call inside HIP APIs that launch work on the GPU: // kernel launches, copy commands, memory sets, etc. -#define HIP_INIT_CMD_API(...) \ +#define HIP_INIT_SPECIAL_API(tbit, ...) \ HIP_INIT()\ - API_TRACE((HIP_TRACE_API&(1<getWriteableDevice(); hc::am_memtracker_update(ptr, device->_deviceId, hipFlags); - int peerCnt=0; - { - LockedAccessor_CtxCrit_t crit(ctx->criticalData()); - // the peerCnt always stores self so make sure the trace actually - peerCnt = crit->peerCnt(); - tprintf(DB_MEM, " allow access to %d other peer(s)\n", peerCnt-1); - if (peerCnt > 1) { - //printf ("peer self access\n"); + if (shareWithAll) { + hsa_status_t s = hsa_amd_agents_allow_access(g_deviceCnt+1, g_allAgents, NULL, ptr); + tprintf (DB_MEM, " allow access to CPU + all %d GPUs (shareWithAll)\n", g_deviceCnt); + if (s != HSA_STATUS_SUCCESS) { + ret = -1; + } + } else { + int peerCnt=0; + { + LockedAccessor_CtxCrit_t crit(ctx->criticalData()); + // the peerCnt always stores self so make sure the trace actually + peerCnt = crit->peerCnt(); + tprintf(DB_MEM, " allow access to %d other peer(s)\n", peerCnt-1); + if (peerCnt > 1) { - // TODOD - remove me: - for (auto iter = crit->_peers.begin(); iter!=crit->_peers.end(); iter++) { - tprintf (DB_MEM, " allow access to peer: %s%s\n", (*iter)->toString().c_str(), (iter == crit->_peers.begin()) ? " (self)":""); - }; + //printf ("peer self access\n"); - hsa_status_t s = hsa_amd_agents_allow_access(crit->peerCnt(), crit->peerAgents(), NULL, ptr); - if (s != HSA_STATUS_SUCCESS) { - ret = -1; + // TODOD - remove me: + for (auto iter = crit->_peers.begin(); iter!=crit->_peers.end(); iter++) { + tprintf (DB_MEM, " allow access to peer: %s%s\n", (*iter)->toString().c_str(), (iter == crit->_peers.begin()) ? " (self)":""); + }; + + hsa_status_t s = hsa_amd_agents_allow_access(crit->peerCnt(), crit->peerAgents(), NULL, ptr); + if (s != HSA_STATUS_SUCCESS) { + ret = -1; + } } } } @@ -96,7 +105,7 @@ int sharePtr(void *ptr, ihipCtx_t *ctx, unsigned hipFlags) // Allocate a new pointer with am_alloc and share with all valid peers. // Returns null-ptr if a memory error occurs (either allocation or sharing) -void * allocAndSharePtr(const char *msg, size_t sizeBytes, ihipCtx_t *ctx, unsigned amFlags, unsigned hipFlags) +void * allocAndSharePtr(const char *msg, size_t sizeBytes, ihipCtx_t *ctx, bool shareWithAll, unsigned amFlags, unsigned hipFlags) { void *ptr = nullptr; @@ -104,11 +113,11 @@ void * allocAndSharePtr(const char *msg, size_t sizeBytes, ihipCtx_t *ctx, unsig auto device = ctx->getWriteableDevice(); ptr = hc::am_alloc(sizeBytes, device->_acc, amFlags); - tprintf(DB_MEM, " alloc %s ptr:%p size:%zu on dev:%d\n", - msg, ptr, sizeBytes, device->_deviceId); + tprintf(DB_MEM, " alloc %s ptr:%p-%p size:%zu on dev:%d\n", + msg, ptr, static_cast(ptr)+sizeBytes, sizeBytes, device->_deviceId); if (ptr != nullptr) { - int r = sharePtr(ptr, ctx, hipFlags); + int r = sharePtr(ptr, ctx, shareWithAll, hipFlags); if (r != 0) { ptr = nullptr; } @@ -193,7 +202,8 @@ hipError_t hipHostGetDevicePointer(void **devicePointer, void *hostPointer, unsi hc::AmPointerInfo amPointerInfo(NULL, NULL, 0, acc, 0, 0); am_status_t status = hc::am_memtracker_getinfo(&amPointerInfo, hostPointer); if (status == AM_SUCCESS) { - *devicePointer = amPointerInfo._devicePointer; + *devicePointer = static_cast(amPointerInfo._devicePointer) + (static_cast(hostPointer) - static_cast(amPointerInfo._hostPointer)) ; + tprintf(DB_MEM, " host_ptr=%p returned device_pointer=%p\n", hostPointer, *devicePointer); } else { e = hipErrorMemoryAllocation; } @@ -204,7 +214,7 @@ hipError_t hipHostGetDevicePointer(void **devicePointer, void *hostPointer, unsi hipError_t hipMalloc(void** ptr, size_t sizeBytes) { - HIP_INIT_API(ptr, sizeBytes); + HIP_INIT_SPECIAL_API((TRACE_MEM), ptr, sizeBytes); HIP_SET_DEVICE(); hipError_t hip_status = hipSuccess; @@ -220,7 +230,7 @@ hipError_t hipMalloc(void** ptr, size_t sizeBytes) } else { auto device = ctx->getWriteableDevice(); - *ptr = hip_internal::allocAndSharePtr("device_mem", sizeBytes, ctx, 0/*amFlags*/, 0/*hipFlags*/); + *ptr = hip_internal::allocAndSharePtr("device_mem", sizeBytes, ctx, false/*shareWithAll*/, 0/*amFlags*/, 0/*hipFlags*/); if(sizeBytes && (*ptr == NULL)){ hip_status = hipErrorMemoryAllocation; @@ -233,9 +243,10 @@ hipError_t hipMalloc(void** ptr, size_t sizeBytes) } + hipError_t hipHostMalloc(void** ptr, size_t sizeBytes, unsigned int flags) { - HIP_INIT_CMD_API(ptr, sizeBytes, flags); + HIP_INIT_SPECIAL_API((TRACE_MEM), ptr, sizeBytes, flags); HIP_SET_DEVICE(); hipError_t hip_status = hipSuccess; @@ -253,20 +264,42 @@ hipError_t hipHostMalloc(void** ptr, size_t sizeBytes, unsigned int flags) } else { unsigned trueFlags = flags; if (flags == hipHostMallocDefault) { - trueFlags = hipHostMallocMapped | hipHostMallocWriteCombined; + // HCC/ROCM provide a modern system with unified memory and should set both of these flags by default: + trueFlags = hipHostMallocMapped | hipHostMallocPortable; } - const unsigned supportedFlags = hipHostMallocPortable | hipHostMallocMapped | hipHostMallocWriteCombined; - if (flags & ~supportedFlags) { + const unsigned supportedFlags = hipHostMallocPortable + | hipHostMallocMapped + | hipHostMallocWriteCombined + | hipHostMallocCoherent + | hipHostMallocNonCoherent; + + + const unsigned coherencyFlags = hipHostMallocCoherent | hipHostMallocNonCoherent; + + if ((flags & ~supportedFlags) || + ((flags & coherencyFlags) == coherencyFlags)) { + *ptr = nullptr; + // can't specify unsupported flags, can't specify both Coherent + NonCoherent hip_status = hipErrorInvalidValue; - } - else { + } else { auto device = ctx->getWriteableDevice(); - unsigned amFlags = HIP_COHERENT_HOST_ALLOC ? amHostCoherent : amHostPinned; + + unsigned amFlags = 0; + if (flags & hipHostMallocCoherent) { + amFlags = amHostCoherent; + } else if (flags & hipHostMallocNonCoherent) { + amFlags = amHostNonCoherent; + } else { + // depends on env variables: + amFlags = HIP_COHERENT_HOST_ALLOC ? amHostCoherent : amHostNonCoherent; + } + + + *ptr = hip_internal::allocAndSharePtr((amFlags & amHostCoherent) ? "finegrained_host":"pinned_host", + sizeBytes, ctx, (trueFlags & hipHostMallocPortable) /*shareWithAll*/, amFlags, flags); - *ptr = hip_internal::allocAndSharePtr(HIP_COHERENT_HOST_ALLOC ? "finegrained_host":"pinned_host", - sizeBytes, ctx, amFlags, flags); if(sizeBytes && (*ptr == NULL)){ hip_status = hipErrorMemoryAllocation; } @@ -296,7 +329,7 @@ hipError_t hipHostAlloc(void** ptr, size_t sizeBytes, unsigned int flags) // width in bytes hipError_t hipMallocPitch(void** ptr, size_t* pitch, size_t width, size_t height) { - HIP_INIT_CMD_API(ptr, pitch, width, height); + HIP_INIT_SPECIAL_API((TRACE_MEM), ptr, pitch, width, height); HIP_SET_DEVICE(); hipError_t hip_status = hipSuccess; @@ -314,7 +347,7 @@ hipError_t hipMallocPitch(void** ptr, size_t* pitch, size_t width, size_t height auto device = ctx->getWriteableDevice(); const unsigned am_flags = 0; - *ptr = hip_internal::allocAndSharePtr("device_pitch", sizeBytes, ctx, am_flags, 0); + *ptr = hip_internal::allocAndSharePtr("device_pitch", sizeBytes, ctx, false/*shareWithAll*/, am_flags, 0); if (sizeBytes && (*ptr == NULL)) { hip_status = hipErrorMemoryAllocation; @@ -337,7 +370,7 @@ hipChannelFormatDesc hipCreateChannelDesc(int x, int y, int z, int w, hipChannel hipError_t hipMallocArray(hipArray** array, const hipChannelFormatDesc* desc, size_t width, size_t height, unsigned int flags) { - HIP_INIT_CMD_API(array, desc, width, height, flags); + HIP_INIT_SPECIAL_API((TRACE_MEM), array, desc, width, height, flags); HIP_SET_DEVICE(); hipError_t hip_status = hipSuccess; @@ -373,7 +406,7 @@ hipError_t hipMallocArray(hipArray** array, const hipChannelFormatDesc* desc, hip_status = hipErrorUnknown; break; } - *ptr = hip_internal::allocAndSharePtr("device_array", allocSize, ctx, am_flags, 0); + *ptr = hip_internal::allocAndSharePtr("device_array", allocSize, ctx, false/*shareWithAll*/, am_flags, 0); if (size && (*ptr == NULL)) { hip_status = hipErrorMemoryAllocation; } @@ -478,7 +511,7 @@ hipError_t hipHostUnregister(void *hostPtr) hipError_t hipMemcpyToSymbol(const void* symbolName, const void *src, size_t count, size_t offset, hipMemcpyKind kind) { - HIP_INIT_CMD_API(symbolName, src, count, offset, kind); + HIP_INIT_SPECIAL_API((TRACE_MCMD), symbolName, src, count, offset, kind); if(symbolName == nullptr) { @@ -513,7 +546,7 @@ hipError_t hipMemcpyToSymbol(const void* symbolName, const void *src, size_t cou hipError_t hipMemcpyFromSymbol(void* dst, const void* symbolName, size_t count, size_t offset, hipMemcpyKind kind) { - HIP_INIT_CMD_API(symbolName, dst, count, offset, kind); + HIP_INIT_SPECIAL_API((TRACE_MCMD), symbolName, dst, count, offset, kind); if(symbolName == nullptr) { @@ -548,7 +581,7 @@ hipError_t hipMemcpyFromSymbol(void* dst, const void* symbolName, size_t count, hipError_t hipMemcpyToSymbolAsync(const void* symbolName, const void *src, size_t count, size_t offset, hipMemcpyKind kind, hipStream_t stream) { - HIP_INIT_CMD_API(symbolName, src, count, offset, kind, stream); + HIP_INIT_SPECIAL_API((TRACE_MCMD), symbolName, src, count, offset, kind, stream); if(symbolName == nullptr) { @@ -586,7 +619,7 @@ hipError_t hipMemcpyToSymbolAsync(const void* symbolName, const void *src, size_ hipError_t hipMemcpyFromSymbolAsync(void* dst, const void* symbolName, size_t count, size_t offset, hipMemcpyKind kind, hipStream_t stream) { - HIP_INIT_CMD_API(symbolName, dst, count, offset, kind, stream); + HIP_INIT_SPECIAL_API((TRACE_MCMD), symbolName, dst, count, offset, kind, stream); if(symbolName == nullptr) { @@ -625,7 +658,7 @@ hipError_t hipMemcpyFromSymbolAsync(void* dst, const void* symbolName, size_t co //--- hipError_t hipMemcpy(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind) { - HIP_INIT_CMD_API(dst, src, sizeBytes, kind); + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, src, sizeBytes, kind); hipStream_t stream = ihipSyncAndResolveStream(hipStreamNull); @@ -647,7 +680,7 @@ hipError_t hipMemcpy(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind hipError_t hipMemcpyHtoD(hipDeviceptr_t dst, void* src, size_t sizeBytes) { - HIP_INIT_CMD_API(dst, src, sizeBytes); + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, src, sizeBytes); hipStream_t stream = ihipSyncAndResolveStream(hipStreamNull); @@ -669,7 +702,7 @@ hipError_t hipMemcpyHtoD(hipDeviceptr_t dst, void* src, size_t sizeBytes) hipError_t hipMemcpyDtoH(void* dst, hipDeviceptr_t src, size_t sizeBytes) { - HIP_INIT_CMD_API(dst, src, sizeBytes); + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, src, sizeBytes); hipStream_t stream = ihipSyncAndResolveStream(hipStreamNull); @@ -691,7 +724,7 @@ hipError_t hipMemcpyDtoH(void* dst, hipDeviceptr_t src, size_t sizeBytes) hipError_t hipMemcpyDtoD(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes) { - HIP_INIT_CMD_API(dst, src, sizeBytes); + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, src, sizeBytes); hipStream_t stream = ihipSyncAndResolveStream(hipStreamNull); @@ -713,7 +746,7 @@ hipError_t hipMemcpyDtoD(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeByte hipError_t hipMemcpyHtoH(void* dst, void* src, size_t sizeBytes) { - HIP_INIT_CMD_API(dst, src, sizeBytes); + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, src, sizeBytes); hipStream_t stream = ihipSyncAndResolveStream(hipStreamNull); @@ -738,7 +771,7 @@ hipError_t hipMemcpyHtoH(void* dst, void* src, size_t sizeBytes) hipError_t hipMemcpyAsync(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind, hipStream_t stream) { - HIP_INIT_CMD_API(dst, src, sizeBytes, kind, stream); + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, src, sizeBytes, kind, stream); return ihipLogStatus(hip_internal::memcpyAsync(dst, src, sizeBytes, kind, stream)); @@ -747,21 +780,21 @@ hipError_t hipMemcpyAsync(void* dst, const void* src, size_t sizeBytes, hipMemcp hipError_t hipMemcpyHtoDAsync(hipDeviceptr_t dst, void* src, size_t sizeBytes, hipStream_t stream) { - HIP_INIT_CMD_API(dst, src, sizeBytes, stream); + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, src, sizeBytes, stream); return ihipLogStatus(hip_internal::memcpyAsync(dst, src, sizeBytes, hipMemcpyHostToDevice, stream)); } hipError_t hipMemcpyDtoDAsync(hipDeviceptr_t dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream) { - HIP_INIT_CMD_API(dst, src, sizeBytes, stream); + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, src, sizeBytes, stream); return ihipLogStatus(hip_internal::memcpyAsync(dst, src, sizeBytes, hipMemcpyDeviceToDevice, stream)); } hipError_t hipMemcpyDtoHAsync(void* dst, hipDeviceptr_t src, size_t sizeBytes, hipStream_t stream) { - HIP_INIT_CMD_API(dst, src, sizeBytes, stream); + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, src, sizeBytes, stream); return ihipLogStatus(hip_internal::memcpyAsync(dst, src, sizeBytes, hipMemcpyDeviceToHost, stream)); } @@ -770,7 +803,7 @@ hipError_t hipMemcpyDtoHAsync(void* dst, hipDeviceptr_t src, size_t sizeBytes, h hipError_t hipMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind) { - HIP_INIT_CMD_API(dst, dpitch, src, spitch, width, height, kind); + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, dpitch, src, spitch, width, height, kind); if(width > dpitch || width > spitch) return ihipLogStatus(hipErrorUnknown); @@ -793,10 +826,28 @@ hipError_t hipMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch, return ihipLogStatus(e); } +hipError_t hipMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch, + size_t width, size_t height, hipMemcpyKind kind, hipStream_t stream) { + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, dpitch, src, spitch, width, height, kind, stream); + if(width > dpitch || width > spitch) + return ihipLogStatus(hipErrorUnknown); + hipError_t e = hipSuccess; + try { + for(int i = 0; i < height; ++i) { + e = hip_internal::memcpyAsync((unsigned char*)dst + i*dpitch, (unsigned char*)src + i*spitch, width, kind,stream); + } + } + catch (ihipException ex) { + e = ex._code; + } + + return ihipLogStatus(e); +} + hipError_t hipMemcpy2DToArray(hipArray* dst, size_t wOffset, size_t hOffset, const void* src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind) { - HIP_INIT_CMD_API(dst, wOffset, hOffset, src, spitch, width, height, kind); + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, wOffset, hOffset, src, spitch, width, height, kind); hipStream_t stream = ihipSyncAndResolveStream(hipStreamNull); @@ -849,7 +900,7 @@ hipError_t hipMemcpy2DToArray(hipArray* dst, size_t wOffset, size_t hOffset, con hipError_t hipMemcpyToArray(hipArray* dst, size_t wOffset, size_t hOffset, const void* src, size_t count, hipMemcpyKind kind) { - HIP_INIT_CMD_API(dst, wOffset, hOffset, src, count, kind); + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, wOffset, hOffset, src, count, kind); hipStream_t stream = ihipSyncAndResolveStream(hipStreamNull); @@ -908,7 +959,7 @@ ihipMemsetKernel(hipStream_t stream, // TODO-sync: function is async unless target is pinned host memory - then these are fully sync. hipError_t hipMemsetAsync(void* dst, int value, size_t sizeBytes, hipStream_t stream ) { - HIP_INIT_CMD_API(dst, value, sizeBytes, stream); + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, value, sizeBytes, stream); hipError_t e = hipSuccess; @@ -917,7 +968,6 @@ hipError_t hipMemsetAsync(void* dst, int value, size_t sizeBytes, hipStream_t s if (stream) { auto crit = stream->lockopen_preKernelCommand(); - stream->ensureHaveQueue(crit); hc::completion_future cf ; @@ -958,7 +1008,7 @@ hipError_t hipMemsetAsync(void* dst, int value, size_t sizeBytes, hipStream_t s hipError_t hipMemset(void* dst, int value, size_t sizeBytes ) { - HIP_INIT_CMD_API(dst, value, sizeBytes); + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, value, sizeBytes); hipError_t e = hipSuccess; @@ -969,7 +1019,6 @@ hipError_t hipMemset(void* dst, int value, size_t sizeBytes ) if (stream) { auto crit = stream->lockopen_preKernelCommand(); - stream->ensureHaveQueue(crit); hc::completion_future cf ; if ((sizeBytes & 0x3) == 0) { @@ -1011,7 +1060,7 @@ hipError_t hipMemset(void* dst, int value, size_t sizeBytes ) hipError_t hipMemsetD8(hipDeviceptr_t dst, unsigned char value, size_t sizeBytes ) { - HIP_INIT_CMD_API(dst, value, sizeBytes); + HIP_INIT_SPECIAL_API((TRACE_MCMD), dst, value, sizeBytes); hipError_t e = hipSuccess; @@ -1022,7 +1071,6 @@ hipError_t hipMemsetD8(hipDeviceptr_t dst, unsigned char value, size_t sizeByte if (stream) { auto crit = stream->lockopen_preKernelCommand(); - stream->ensureHaveQueue(crit); hc::completion_future cf ; if ((sizeBytes & 0x3) == 0) { @@ -1082,6 +1130,10 @@ hipError_t hipMemGetInfo (size_t *free, size_t *total) hc::am_memtracker_sizeinfo(device->_acc, &deviceMemSize, &hostMemSize, &userMemSize); *free = device->_props.totalGlobalMem - deviceMemSize; + + // Deduct the amount of memory from the free memory reported from the system + if(HIP_HIDDEN_FREE_MEM) + *free -= (size_t)HIP_HIDDEN_FREE_MEM*1024*1024; } else { e = hipErrorInvalidValue; @@ -1118,7 +1170,7 @@ hipError_t hipMemPtrGetInfo(void *ptr, size_t *size) hipError_t hipFree(void* ptr) { - HIP_INIT_API(ptr); + HIP_INIT_SPECIAL_API((TRACE_MEM), ptr); hipError_t hipStatus = hipErrorInvalidDevicePointer; @@ -1146,7 +1198,7 @@ hipError_t hipFree(void* ptr) hipError_t hipHostFree(void* ptr) { - HIP_INIT_API(ptr); + HIP_INIT_SPECIAL_API((TRACE_MEM), ptr); // Synchronize to ensure all work has finished. ihipGetTlsDefaultCtx()->locked_waitAllStreams(); // ignores non-blocking streams, this waits for all activity to finish. @@ -1180,7 +1232,7 @@ hipError_t hipFreeHost(void* ptr) hipError_t hipFreeArray(hipArray* array) { - HIP_INIT_API(array); + HIP_INIT_SPECIAL_API((TRACE_MEM), array); hipError_t hipStatus = hipErrorInvalidDevicePointer; @@ -1227,70 +1279,78 @@ hipError_t hipIpcGetMemHandle(hipIpcMemHandle_t* handle, void* devPtr){ // Get the size of allocated pointer size_t psize; hc::accelerator acc; - hc::AmPointerInfo amPointerInfo( NULL , NULL , 0 , acc , 0 , 0 ); - am_status_t status = hc::am_memtracker_getinfo( &amPointerInfo , devPtr ); - if (status == AM_SUCCESS) { - psize = (size_t)amPointerInfo._sizeBytes; - } - else + if((handle == NULL) || (devPtr == NULL)) { hipStatus = hipErrorInvalidResourceHandle; - ihipIpcMemHandle_t* iHandle = (ihipIpcMemHandle_t*) handle; - // Save the size of the pointer to hipIpcMemHandle - iHandle->psize = psize; + } else { + hc::AmPointerInfo amPointerInfo( NULL , NULL , 0 , acc , 0 , 0 ); + am_status_t status = hc::am_memtracker_getinfo( &amPointerInfo , devPtr ); + if (status == AM_SUCCESS) { + psize = (size_t)amPointerInfo._sizeBytes; + } else + hipStatus = hipErrorInvalidResourceHandle; + ihipIpcMemHandle_t* iHandle = (ihipIpcMemHandle_t*) handle; + // Save the size of the pointer to hipIpcMemHandle + iHandle->psize = psize; #if USE_IPC - // Create HSA ipc memory - hsa_status_t hsa_status = - hsa_amd_ipc_memory_create(devPtr, psize, (hsa_amd_ipc_memory_t*) &(iHandle->ipc_handle)); - if(hsa_status!= HSA_STATUS_SUCCESS) - hipStatus = hipErrorMemoryAllocation; + // Create HSA ipc memory + hsa_status_t hsa_status = + hsa_amd_ipc_memory_create(devPtr, psize, (hsa_amd_ipc_memory_t*) &(iHandle->ipc_handle)); + if(hsa_status!= HSA_STATUS_SUCCESS) + hipStatus = hipErrorMemoryAllocation; #else - hipStatus = hipErrorRuntimeOther; + hipStatus = hipErrorRuntimeOther; #endif - + } return ihipLogStatus(hipStatus); } hipError_t hipIpcOpenMemHandle(void** devPtr, hipIpcMemHandle_t handle, unsigned int flags){ HIP_INIT_API ( devPtr, &handle , flags); hipError_t hipStatus = hipSuccess; - + if(devPtr == NULL) { + hipStatus = hipErrorInvalidValue; + } else { #if USE_IPC - // Get the current device agent. - hc::accelerator acc; - hsa_agent_t *agent = static_cast(acc.get_hsa_agent()); - if(!agent) - return hipErrorInvalidResourceHandle; + // Get the current device agent. + hc::accelerator acc; + hsa_agent_t *agent = static_cast(acc.get_hsa_agent()); + if(!agent) + return hipErrorInvalidResourceHandle; - ihipIpcMemHandle_t* iHandle = (ihipIpcMemHandle_t*) &handle; - //Attach ipc memory - auto ctx= ihipGetTlsDefaultCtx(); - { - LockedAccessor_CtxCrit_t crit(ctx->criticalData()); - // the peerCnt always stores self so make sure the trace actually - hsa_status_t hsa_status = - hsa_amd_ipc_memory_attach((hsa_amd_ipc_memory_t*)&(iHandle->ipc_handle), iHandle->psize, crit->peerCnt(), crit->peerAgents(), devPtr); - if(hsa_status != HSA_STATUS_SUCCESS) - hipStatus = hipErrorMapBufferObjectFailed; - } + ihipIpcMemHandle_t* iHandle = (ihipIpcMemHandle_t*) &handle; + //Attach ipc memory + auto ctx= ihipGetTlsDefaultCtx(); + { + LockedAccessor_CtxCrit_t crit(ctx->criticalData()); + // the peerCnt always stores self so make sure the trace actually + hsa_status_t hsa_status = + hsa_amd_ipc_memory_attach((hsa_amd_ipc_memory_t*)&(iHandle->ipc_handle), iHandle->psize, crit->peerCnt(), crit->peerAgents(), devPtr); + if(hsa_status != HSA_STATUS_SUCCESS) + hipStatus = hipErrorMapBufferObjectFailed; + } #else - hipStatus = hipErrorRuntimeOther; + hipStatus = hipErrorRuntimeOther; #endif + } return ihipLogStatus(hipStatus); } hipError_t hipIpcCloseMemHandle(void *devPtr){ HIP_INIT_API ( devPtr ); hipError_t hipStatus = hipSuccess; - + if(devPtr == NULL) { + hipStatus = hipErrorInvalidValue; + } else { #if USE_IPC - hsa_status_t hsa_status = - hsa_amd_ipc_memory_detach(devPtr); - if(hsa_status != HSA_STATUS_SUCCESS) - return hipErrorInvalidResourceHandle; + hsa_status_t hsa_status = + hsa_amd_ipc_memory_detach(devPtr); + if(hsa_status != HSA_STATUS_SUCCESS) + return hipErrorInvalidResourceHandle; #else - hipStatus = hipErrorRuntimeOther; + hipStatus = hipErrorRuntimeOther; #endif + } return ihipLogStatus(hipStatus); } diff --git a/src/hip_module.cpp b/src/hip_module.cpp index b359e7a63c..b8c032da27 100644 --- a/src/hip_module.cpp +++ b/src/hip_module.cpp @@ -352,14 +352,14 @@ hipError_t ihipModuleGetSymbol(hipFunction_t *func, hipModule_t hmod, const char *func = sym; hmod->funcTrack.push_back(*func); } - return ihipLogStatus(ret); + return ret; } hipError_t hipModuleGetFunction(hipFunction_t *hfunc, hipModule_t hmod, const char *name){ HIP_INIT_API(hfunc, hmod, name); - return ihipModuleGetSymbol(hfunc, hmod, name); + return ihipLogStatus(ihipModuleGetSymbol(hfunc, hmod, name)); } @@ -451,14 +451,20 @@ hipError_t ihipModuleLaunchKernel(hipFunction_t f, hc::completion_future cf; lp.av->dispatch_hsa_kernel(&aql, config[1] /* kernarg*/, kernArgSize, - (startEvent || stopEvent) ? &cf : nullptr); + (startEvent || stopEvent) ? &cf : nullptr +#define USE_NAMED_KERNEL 0 +#if USE_NAMED_KERNEL + , f->_name.c_str() +#endif + ); + if (startEvent) { - startEvent->attachToCompletionFuture(&cf, hipEventTypeStartCommand); + startEvent->attachToCompletionFuture(&cf, hStream, hipEventTypeStartCommand); } if (stopEvent) { - stopEvent->attachToCompletionFuture (&cf, hipEventTypeStopCommand); + stopEvent->attachToCompletionFuture (&cf, hStream, hipEventTypeStopCommand); } @@ -525,7 +531,6 @@ hipError_t hipModuleGetGlobal(hipDeviceptr_t *dptr, size_t *bytes, } } - hipError_t hipModuleLoadData(hipModule_t *module, const void *image) { HIP_INIT_API(module, image); @@ -575,3 +580,8 @@ hipError_t hipModuleLoadData(hipModule_t *module, const void *image) } return ihipLogStatus(ret); } + +hipError_t hipModuleLoadDataEx(hipModule_t *module, const void *image, unsigned int numOptions, hipJitOption *options, void **optionValues) +{ + return hipModuleLoadData(module, image); +} diff --git a/src/hip_stream.cpp b/src/hip_stream.cpp index d7f8717725..40aade28b9 100644 --- a/src/hip_stream.cpp +++ b/src/hip_stream.cpp @@ -49,7 +49,7 @@ hipError_t ihipStreamCreate(hipStream_t *stream, unsigned int flags) // Obtain mutex access to the device critical data, release by destructor LockedAccessor_CtxCrit_t ctxCrit(ctx->criticalData()); - auto istream = new ihipStream_t(ctx, ctx->createOrStealQueue(ctxCrit), flags); + auto istream = new ihipStream_t(ctx, acc.create_view(), flags); ctxCrit->addStream(istream); *stream = istream; @@ -93,20 +93,17 @@ hipError_t hipStreamWaitEvent(hipStream_t stream, hipEvent_t event, unsigned int } else if (event->_state != hipEventStatusUnitialized) { - bool fastWait = false; - if (stream != hipStreamNull) { + + // This will user create_blocking_marker to wait on the specified queue. stream->locked_waitEvent(event); - fastWait = true; // don't use the slow host-side synchronization. - } - - if (!fastWait) { + } else { // TODO-hcc Convert to use create_blocking_marker(...) functionality. // Currently we have a super-conservative version of this - block on host, and drain the queue. // This should create a barrier packet in the target queue. + // TODO-HIP_SYNC_NULL_STREAM stream->locked_wait(); - e = hipSuccess; } } // else event not recorded, return immediately and don't create marker. @@ -129,9 +126,7 @@ hipError_t hipStreamQuery(hipStream_t stream) { LockedAccessor_StreamCrit_t crit(stream->_criticalData); - if (crit->_hasQueue) { - pendingOps = crit->_av.get_pending_async_ops(); - } + pendingOps = crit->_av.get_pending_async_ops(); } @@ -148,10 +143,11 @@ hipError_t hipStreamSynchronize(hipStream_t stream) hipError_t e = hipSuccess; - if (stream == NULL) { + if (stream == hipStreamNull) { ihipCtx_t *ctx = ihipGetTlsDefaultCtx(); - ctx->locked_syncDefaultStream(true/*waitOnSelf*/); + ctx->locked_syncDefaultStream(true/*waitOnSelf*/, true/*syncToHost*/); } else { + // note this does not synchornize with the NULL stream: stream->locked_wait(); e = hipSuccess; } @@ -173,20 +169,18 @@ hipError_t hipStreamDestroy(hipStream_t stream) //--- Drain the stream: if (stream == NULL) { - ihipCtx_t *ctx = ihipGetTlsDefaultCtx(); - ctx->locked_syncDefaultStream(true/*waitOnSelf*/); + e = hipErrorInvalidResourceHandle; // TODO - review - what happens if try to destroy null stream } else { stream->locked_wait(); - e = hipSuccess; - } - ihipCtx_t *ctx = stream->getCtx(); + ihipCtx_t *ctx = stream->getCtx(); - if (ctx) { - ctx->locked_removeStream(stream); - delete stream; - } else { - e = hipErrorInvalidResourceHandle; + if (ctx) { + ctx->locked_removeStream(stream); + delete stream; + } else { + e = hipErrorInvalidResourceHandle; + } } return ihipLogStatus(e); @@ -200,7 +194,7 @@ hipError_t hipStreamGetFlags(hipStream_t stream, unsigned int *flags) if (flags == NULL) { return ihipLogStatus(hipErrorInvalidValue); - } else if (stream == NULL) { + } else if (stream == hipStreamNull) { return ihipLogStatus(hipErrorInvalidResourceHandle); } else { *flags = stream->_flags; diff --git a/src/math_functions.cpp b/src/math_functions.cpp index 3472216309..f66f0a4312 100644 --- a/src/math_functions.cpp +++ b/src/math_functions.cpp @@ -830,16 +830,6 @@ __host__ double erfcinv(double y) return __hip_host_erfcinv(y); } -__host__ float erfinvf(float x) -{ - return __hip_host_erfinvf(x); -} - -__host__ double erfinv(double x) -{ - return __hip_host_erfinv(x); -} - __host__ double fdivide(double x, double y) { return x/y; @@ -947,15 +937,15 @@ __host__ void sincospi(double x, double *sptr, double *cptr) *cptr = std::cos(HIP_PI*x); } -__host__ float normcdfinvf(float x) -{ - return std::sqrt(2) * erfinv(2*x-1); -} +//__host__ float normcdfinvf(float x) +//{ +// return std::sqrt(2) * erfinvf(2*x-1); +//} -__host__ double normcdfinv(double x) -{ - return std::sqrt(2) * erfinv(2*x-1); -} +//__host__ double normcdfinv(double x) +//{ +// return std::sqrt(2) * erfinv(2*x-1); +//} __host__ float nextafterf(float x, float y) { diff --git a/tests/README.md b/tests/README.md index 223bd149dc..27cde7c534 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1,39 +1,78 @@ # HIP testing environment. -This document explains how to use the HIP CMAKE testing environment. +This document explains how to use the HIP CMAKE testing environment. +We make use of the HIT Integrated Tester (HIT) framework to automatically find and add test cases to the CMAKE testing environment. ### Quickstart -Usage : + +HIP unit tests are integrated into the top-level cmake project. The tests depend upon the installed version of HIP. +Typical usage (paths relative to top of the HIP repo): ``` $ mkdir build $ cd build -$ cmake ../src +$ cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/install $ make +$ make install +$ make build_tests $ make test ``` ### How to add a new test -The tests/src/runtimeApi/memory/hipMemtest.cpp file contains a simple unit test and is a good starting point for other tests. -Copy this to a new test name and modify tests/src/CMakefiles.txt to add the test to the build environment. - -Recent versions of the test infrastructure use a hierarchy of folders. Each folder contains src and CMakefiles.txt file. -See the CMakefiles.txt files for description of the intended purpose for each sub-directory. +The test infrastructure use a hierarchy of folders. So add the new test to the appropriate folder. +The tests/src/runtimeApi/memory/hipMemset.cpp file contains a simple unit test and is a good starting point for other tests. +Copy this to a new test name and modify it. -#### Edit CMakefiles.txt: -// Example: +### HIP Integrated Tester (HIT) + +The HIT framework sutomatically finds and adds test cases to the CMAKE testing environment. It achives this by parsing all files in the tests/src folder. +The parser looks for a code block similar to the one below. ``` -# Build the test executable: -build_hip_executable (hipMemset hipMemset.cpp) - - -# This runs the tests with the specified command-line testing. -# Multiple make_test may be specified. -make_test(hipMemset " ") +/* HIT_START + * BUILD: %t %s ../../test_common.cpp + * RUN: %t + * //Small copy + * RUN: %t -N 10 --memsetval 0x42 + * // Oddball size + * RUN: %t -N 10013 --memsetval 0x5a + * // Big copy + * RUN: %t -N 256M --memsetval 0xa6 + * HIT_END + */ ``` +In the above, BUILD commands provide instructions on how to build the test case while RUN commands provide instructions on how to execute the test case. -It is recommended to place the build and run steps adjacent in the CMakefiles.txt. +#### BUILD command + +The supported syntax for the BUILD command is: +``` +BUILD: %t %s HIPCC_OPTIONS HCC_OPTIONS NVCC_OPTIONS EXCLUDE_HIP_PLATFORM +``` +%s: refers to current source file name. Additional source files needed for the test can be specified by name (including relative path). +%t: refers to target executable named derived by removing the extension from the current source file. Alternatively a target executable name can be specified. +HIPCC_OPTIONS: All options specified after this delimiter are passed to hipcc on both HCC and NVCC platforms. +HCC_OPTIONS: All options specified after this delimiter are passed to hipcc on HCC platform only. +NVCC_OPTIONS: All options specified after this delimiter are passed to hipcc on NVCC platform only. +EXCLUDE_HIP_PLATFORM: This can be used to exclude a test case from HCC, NVCC or both platforms. + + +#### RUN command + +The supported syntax for the RUN command is: +``` +RUN: %t EXCLUDE_HIP_PLATFORM +``` +%t: refers to target executable named derived by removing the extension from the current source file. Alternatively a target executable name can be specified. +EXCLUDE_HIP_PLATFORM: This can be used to exclude a test case from HCC, NVCC or both platforms. Note that if the test has been excluded for a specific platform in the BUILD command, it is automatically excluded from the RUN command as well for the same platform. + + +#### RUN_NAMED command + +When using the RUN command, HIT will squash and append the arguments specified to the test executable name to generate the CMAKE test name. Sometimes we might want to specify a more descriptive name. The RUN_NAMED command is used for that. The supported syntax for the RUN_NAMED command is: +``` +RUN: %t CMAKE_TEST_NAME EXCLUDE_HIP_PLATFORM +``` ### Running tests: @@ -43,11 +82,14 @@ ctest ### Run subsets of all tests: ``` -# Run one test on the commandline (obtain commandline parms from CMakefiles.tst) -./hipMemset +# Run one test on the commandline +./directed_tests/runtime/memory/hipMemset -# Run all the memory tests: +# Run all the hipMemcpy tests: ctest -R Memcpy + +# Run all tests in a specific folder: +ctest -R memory ``` @@ -55,9 +97,13 @@ ctest -R Memcpy Find the test and commandline that fail: -(From the test build directory, perhaps hip/tests/build) +(From the build directory, perhaps hip/build) grep -IR hipMemcpy-modes -IR ../tests/ ../tests/src/runtimeApi/memory/hipMemcpy.cpp: * RUN_NAMED: %t hipMemcpy-modes --tests 0x1 +# Guidelines for adding new tests +- Prefer to enhance an existing test as opposed to writing a new one. Tests have overhead to start and many small tests spend precious test time on startup and initialization issues. +- Make the test run standalone without requirement for command-line arguments. THis makes it easier to debug since the name of the test is shown in the test report and if you know the name of the test you can the run the test. +- For long-running tests or tests with multiple phases, consider using the --tests option as an optional mechanism to allow debuggers to start with the failing subset of the test. diff --git a/tests/src/deviceLib/hipDeviceMemcpy.cpp b/tests/src/deviceLib/hipDeviceMemcpy.cpp index 3843c07bb9..527df9bab1 100644 --- a/tests/src/deviceLib/hipDeviceMemcpy.cpp +++ b/tests/src/deviceLib/hipDeviceMemcpy.cpp @@ -4,7 +4,7 @@ #include "../test_common.h" -#define LEN 1030 +#define LEN 1024 #define SIZE LEN << 2 /* HIT_START @@ -17,13 +17,13 @@ __global__ void cpy(hipLaunchParm lp, uint32_t *Out, uint32_t *In) { int tx = hipThreadIdx_x; - memcpy(Out + tx, In + tx, SIZE/LEN); + memcpy(Out + tx, In + tx, sizeof(uint32_t)); } __global__ void set(hipLaunchParm lp, uint32_t *ptr, uint8_t val, size_t size) { int tx = hipThreadIdx_x; - memset(ptr + tx, val, size); + memset(ptr + tx, val, (sizeof(uint32_t)*(size/LEN))); } int main() diff --git a/tests/src/deviceLib/hipDoublePrecisionMathDevice.cpp b/tests/src/deviceLib/hipDoublePrecisionMathDevice.cpp index df5dad3968..f4f7ab0479 100644 --- a/tests/src/deviceLib/hipDoublePrecisionMathDevice.cpp +++ b/tests/src/deviceLib/hipDoublePrecisionMathDevice.cpp @@ -99,7 +99,7 @@ __device__ void double_precision_math_functions() normcdf(0.0); normcdfinv(1.0); pow(1.0, 0.0); - rcbrt(1.0); + //rcbrt(1.0); remainder(2.0, 1.0); // remquo(1.0, 2.0, &iX); rhypot(0.0, 1.0); @@ -109,8 +109,8 @@ __device__ void double_precision_math_functions() rnorm4d(0.0, 0.0, 0.0, 1.0); round(0.0); rsqrt(1.0); - scalbln(0.0, 1); - scalbn(0.0, 1); + //scalbln(0.0, 1); + //scalbn(0.0, 1); signbit(1.0); sin(0.0); sincos(0.0, &fX, &fY); diff --git a/tests/src/deviceLib/hipSinglePrecisionMathDevice.cpp b/tests/src/deviceLib/hipSinglePrecisionMathDevice.cpp index 53ccd2251f..de3dec35ef 100644 --- a/tests/src/deviceLib/hipSinglePrecisionMathDevice.cpp +++ b/tests/src/deviceLib/hipSinglePrecisionMathDevice.cpp @@ -100,7 +100,7 @@ __device__ void single_precision_math_functions() normcdfinvf(1.0f); fX = 1.0f; normf(1, &fX); powf(1.0f, 0.0f); - rcbrtf(1.0f); + //rcbrtf(1.0f); remainderf(2.0f, 1.0f); //remquof(1.0f, 2.0f, &iX); rhypotf(0.0f, 1.0f); @@ -110,8 +110,8 @@ __device__ void single_precision_math_functions() fX = 1.0f; rnormf(1, &fX); roundf(0.0f); rsqrtf(1.0f); - scalblnf(0.0f, 1); - scalbnf(0.0f, 1); + //scalblnf(0.0f, 1); + //scalbnf(0.0f, 1); signbit(1.0f); sincosf(0.0f, &fX, &fY); sincospif(0.0f, &fX, &fY); diff --git a/tests/src/hipPointerAttrib.cpp b/tests/src/hipPointerAttrib.cpp index fb7832d9a6..bddbff5ce0 100644 --- a/tests/src/hipPointerAttrib.cpp +++ b/tests/src/hipPointerAttrib.cpp @@ -32,7 +32,6 @@ THE SOFTWARE. #endif -#define USE_AV_COPY (__hcc_workweek__ >= 16351) size_t Nbytes = 0; @@ -99,7 +98,7 @@ inline int zrand(int max) //================================================================================================= -// Functins to run tests +// Functions to run tests //================================================================================================= //-- //Run through a couple simple cases to test lookups and host pointer arithmetic: @@ -410,21 +409,13 @@ void thread_noise_generator(int iters, size_t numBuffers, Dir addDir, Dir remove if (addDir == Up) { for (char *p = basePtr; p=0; p-=bufferSize) { -#if USE_AV_COPY hc::AmPointerInfo info(p, p, bufferSize, acc, false, false); hc::am_memtracker_add(p, info); -#else - hc::am_memtracker_add(p, bufferSize, acc, false); -#endif } } diff --git a/tests/src/kernel/inline_asm_vadd.cpp b/tests/src/kernel/inline_asm_vadd.cpp new file mode 100644 index 0000000000..7a941d31af --- /dev/null +++ b/tests/src/kernel/inline_asm_vadd.cpp @@ -0,0 +1,126 @@ +/* Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO +EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +/* HIT_START + * BUILD: %t %s EXCLUDE_HIP_PLATFORM nvcc + * RUN: %t + * HIT_END + */ + + +#include + +// hip header file +#include "hip/hip_runtime.h" + +#define NUM 1024 + +#define THREADS_PER_BLOCK_X 4 + +// Device (Kernel) function, it must be void +// hipLaunchParm provides the execution configuration +__global__ void vadd_asm(hipLaunchParm lp, + float *out, + float *in) +{ + int i = hipBlockDim_x * hipBlockIdx_x + hipThreadIdx_x; + + asm volatile ("v_add_f32_e32 %0, %1, %2" : "=v" (out[i]) : "v"(in[i]),"v" (out[i])); +} + +// CPU implementation of Vector Result +void addCPUReference( + float * output, + float * input) +{ + for(unsigned int j=0; j < NUM; j++) + { + + output[j]= input[j] + output[j]; + } +} + +int main(){ + + float* VectorA; + float* ResultVector; + float* VectorB; + + float* gpuVector; + float* gpuResultVector; + + int i; + int errors; + + VectorA = (float*)malloc(NUM * sizeof(float)); + ResultVector = (float*)malloc(NUM * sizeof(float)); + VectorB = (float*)malloc(NUM * sizeof(float)); + + // initialize the input data + for (i = 0; i < NUM; i++) { + VectorA[i] = (float)i*10.0f; + VectorB[i] = (float)i*30.0f; + } + + // allocate the memory on the device side + hipMalloc((void**)&gpuVector, NUM * sizeof(float)); + hipMalloc((void**)&gpuResultVector, NUM * sizeof(float)); + + // Memory transfer from host to device + hipMemcpy(gpuVector, VectorA, NUM*sizeof(float), hipMemcpyHostToDevice); + hipMemcpy(gpuResultVector, VectorB, NUM*sizeof(float), hipMemcpyHostToDevice); + + // Lauching kernel from host + hipLaunchKernel(vadd_asm, + dim3(NUM/THREADS_PER_BLOCK_X), + dim3(THREADS_PER_BLOCK_X), + 0, 0, + gpuResultVector , gpuVector); + + // Memory transfer from device to host + hipMemcpy(ResultVector, gpuResultVector, NUM*sizeof(float), hipMemcpyDeviceToHost); + + // CPU Result computation + addCPUReference(VectorB, VectorA); + + // verify the results + errors = 0; + double eps = 1.0E-3; + for (i = 0; i < NUM; i++) { + if (std::abs(ResultVector[i] - VectorB[i]) > eps ) { + errors++; + } + } + if (errors!=0) { + printf("FAILED: %d errors\n",errors); + } else { + printf ("PASSED!\n"); + } + + //free the resources on device side + hipFree(gpuVector); + hipFree(gpuResultVector); + + hipDeviceReset(); + + //free the resources on host side + free(VectorA); + free(ResultVector); + free(VectorB); + + return errors; +} diff --git a/tests/src/kernel/inline_asm_vmac.cpp b/tests/src/kernel/inline_asm_vmac.cpp new file mode 100644 index 0000000000..1b6941c249 --- /dev/null +++ b/tests/src/kernel/inline_asm_vmac.cpp @@ -0,0 +1,125 @@ +/* +Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#include + +// hip header file +#include "hip/hip_runtime.h" + +#define NUM 1024 + +#define THREADS_PER_BLOCK_X 4 + +// Device (Kernel) function, it must be void +// hipLaunchParm provides the execution configuration +__global__ void vmac_asm(hipLaunchParm lp, + float *out, + float *in) +{ + int i = hipBlockDim_x * hipBlockIdx_x + hipThreadIdx_x; + + asm volatile ("v_mac_f32_e32 %0, %2, %3" : "=v" (out[i]) : "0"(out[i]), "v" (a), "v" (in[i])); +} + +// CPU implementation of saxpy +void CPUReference( + float * output, + float * input) +{ + for(unsigned int j=0; j < NUM; j++) + { + + output[j]= a*input[j] + output[j]; + } +} + +int main(){ + + float* VectorA; + float* ResultVector; + float* VectorB; + + float* gpuVector; + float* gpuResultVector; + + const float a = 10.0f + int i; + int errors; + + VectorA = (float*)malloc(NUM * sizeof(float)); + ResultVector = (float*)malloc(NUM * sizeof(float)); + VectorB = (float*)malloc(NUM * sizeof(float)); + + // initialize the input data + for (i = 0; i < NUM; i++) { + VectorA[i] = (float)i*10.0f; + VectorB[i] = (float)i*30.0f; + } + + // allocate the memory on the device side + hipMalloc((void**)&gpuVector, NUM * sizeof(float)); + hipMalloc((void**)&gpuResultVector, NUM * sizeof(float)); + + // Memory transfer from host to device + hipMemcpy(gpuVector, VectorA, NUM*sizeof(float), hipMemcpyHostToDevice); + hipMemcpy(gpuResultVector, VectorB, NUM*sizeof(float), hipMemcpyHostToDevice); + + // Lauching kernel from host + hipLaunchKernel(vmac_asm, + dim3(NUM/THREADS_PER_BLOCK_X), + dim3(THREADS_PER_BLOCK_X), + 0, 0, + gpuResultVector , gpuVector); + + // Memory transfer from device to host + hipMemcpy(ResultVector, gpuResultVector, NUM*sizeof(float), hipMemcpyDeviceToHost); + + // CPU Result computation + addCPUReference(VectorB, VectorA); + + // verify the results + errors = 0; + double eps = 1.0E-3; + for (i = 0; i < NUM; i++) { + if (std::abs(ResultVector[i] - VectorB[i]) > eps ) { + errors++; + } + } + if (errors!=0) { + printf("FAILED: %d errors\n",errors); + } else { + printf ("PASSED!\n"); + } + + //free the resources on device side + hipFree(gpuVector); + hipFree(gpuResultVector); + + hipDeviceReset(); + + //free the resources on host side + free(VectorA); + free(ResultVector); + free(VectorB); + + return errors; +} diff --git a/tests/src/runtimeApi/event/record_event.cpp b/tests/src/runtimeApi/event/record_event.cpp new file mode 100644 index 0000000000..bd8a3ada8e --- /dev/null +++ b/tests/src/runtimeApi/event/record_event.cpp @@ -0,0 +1,200 @@ +/* +Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +/* HIT_START + * BUILD: %t %s ../../test_common.cpp + * RUN: %t + * HIT_END + */ + + +#include "test_common.h" + +enum SyncMode { + syncNone, + syncStream, + syncStopEvent, +}; + + +const char *syncModeString(int syncMode) { + switch (syncMode) { + case syncNone: + return "syncNone"; + case syncStream: + return "syncStream"; + case syncStopEvent: + return "syncStopEvent"; + default: + return "unknown"; + }; +}; + + +void test(unsigned testMask, int *C_d, int *C_h, int64_t numElements, hipStream_t stream, int waitStart, SyncMode syncMode) +{ + if (!(testMask & p_tests)) { + return; + } + printf ("\ntest 0x%3x: stream=%p waitStart=%d syncMode=%s\n", + testMask, stream, waitStart, syncModeString(syncMode)); + + size_t sizeBytes = numElements * sizeof(int); + + int count =100; + int init0 = 0; + HIPCHECK(hipMemset(C_d, init0, sizeBytes)); + for (int i=0; i0.0f); + printf ("time=%6.2f error=%s\n", t, hipGetErrorName(e)); + + e = hipEventElapsedTime(&t, stop, start); + HIPCHECK_API(e, expectedStopError); + if (expectedStopError == hipSuccess) + assert (t<0.0f); + printf ("negtime=%6.2f error=%s\n", t, hipGetErrorName(e)); + + + + { + // Check some error conditions for incomplete events: + HIPCHECK_API(hipEventElapsedTime(&t, timingDisabled, stop), hipErrorInvalidResourceHandle); + HIPCHECK_API(hipEventElapsedTime(&t, start, timingDisabled), hipErrorInvalidResourceHandle); + + HIPCHECK_API(hipEventElapsedTime(&t, neverCreated, stop), hipErrorInvalidResourceHandle); + HIPCHECK_API(hipEventElapsedTime(&t, start, neverCreated), hipErrorInvalidResourceHandle); + + HIPCHECK_API(hipEventElapsedTime(&t, neverRecorded, stop), hipErrorInvalidResourceHandle); + HIPCHECK_API(hipEventElapsedTime(&t, start, neverRecorded), hipErrorInvalidResourceHandle); + } + + HIPCHECK(hipEventDestroy(start)); + HIPCHECK(hipEventDestroy(stop)); + + // Clear out everything: + HIPCHECK(hipDeviceSynchronize()); + + printf ("test: OK \n"); +} + + + +void runTests(int64_t numElements) +{ + size_t sizeBytes = numElements * sizeof(int); + + printf ("test: starting sequence with sizeBytes=%zu bytes, %6.2f MB\n", sizeBytes, sizeBytes/1024.0/1024.0); + + + int *C_h, *C_d; + HIPCHECK(hipMalloc(&C_d, sizeBytes)); + HIPCHECK(hipHostMalloc(&C_h, sizeBytes)); + + hipStream_t stream; + HIPCHECK(hipStreamCreateWithFlags(&stream, 0x0)); + + //for (int waitStart=0; waitStart<2; waitStart++) { + for (int waitStart=1; waitStart>=0; waitStart--) { + unsigned W = waitStart ? 0x1000:0; + test (W | 0x01, C_d, C_h, numElements, 0 , waitStart, syncNone); + test (W | 0x02, C_d, C_h, numElements, stream, waitStart, syncNone); + test (W | 0x04, C_d, C_h, numElements, 0 , waitStart, syncStream); + test (W | 0x08, C_d, C_h, numElements, stream, waitStart, syncStream); + test (W | 0x10, C_d, C_h, numElements, 0, waitStart, syncStopEvent); + test (W | 0x20, C_d, C_h, numElements, stream, waitStart, syncStopEvent); + } + + + HIPCHECK(hipStreamDestroy(stream)); + HIPCHECK(hipFree(C_d)); + HIPCHECK(hipHostFree(C_h)); +} + + +int main(int argc, char *argv[]) +{ + HipTest::parseStandardArguments(argc, argv, true /*failOnUndefinedArg*/); + + runTests(80000000); + + passed(); +} diff --git a/tests/src/runtimeApi/memory/hipHostMalloc.cpp b/tests/src/runtimeApi/memory/hipHostMalloc.cpp index d6b3b05a1d..607e2a9f63 100644 --- a/tests/src/runtimeApi/memory/hipHostMalloc.cpp +++ b/tests/src/runtimeApi/memory/hipHostMalloc.cpp @@ -21,24 +21,92 @@ */ /* HIT_START - * BUILD: %t %s ../../test_common.cpp + * BUILD: %t %s ../../test_common.cpp NVCC_OPTIONS -std=c++11 * RUN: %t * HIT_END */ +#include #include"test_common.h" #define LEN 1024*1024 #define SIZE LEN*sizeof(float) -__global__ void Add(hipLaunchParm lp, float *Ad, float *Bd, float *Cd){ +__global__ void Add(float *Ad, float *Bd, float *Cd){ int tx = hipThreadIdx_x + hipBlockIdx_x * hipBlockDim_x; Cd[tx] = Ad[tx] + Bd[tx]; } + +__global__ void Set(int *Ad, int val){ + int tx = hipThreadIdx_x + hipBlockIdx_x * hipBlockDim_x; + Ad[tx] = val; +} + + +#define SYNC_EVENT 0 +#define SYNC_STREAM 1 +#define SYNC_DEVICE 2 + +std::vector syncMsg = {"event", "stream", "device"}; + +void CheckHostPointer(int numElements, int *ptr, unsigned eventFlags, int syncMethod, std::string msg) +{ + std::cerr << "test: CheckHostPointer " << msg + //<< " HIP_COHERENT_HOST_ALLOC=" << HIP_COHERENT_HOST_ALLOC + //<< " HIP_EVENT_SYS_RELEASE=" << HIP_EVENT_SYS_RELEASE + << " eventFlags = " << std::hex << eventFlags + << ((eventFlags & hipEventReleaseToDevice) ? " hipEventReleaseToDevice" : "") + << ((eventFlags & hipEventReleaseToSystem) ? " hipEventReleaseToSystem" : "") + << " ptr=" << ptr + << " syncMethod=" << syncMsg[syncMethod] << "\n"; + + hipStream_t s; + hipEvent_t e; + + // Init: + HIPCHECK(hipStreamCreate(&s)); + HIPCHECK(hipEventCreateWithFlags(&e, eventFlags)) + dim3 dimBlock(64,1,1); + dim3 dimGrid(numElements/dimBlock.x,1,1); + + const int expected = 13; + + // Init array to know state: + hipLaunchKernelGGL(Set, dimGrid, dimBlock, 0, 0x0, ptr, -42); + HIPCHECK(hipDeviceSynchronize()); + + hipLaunchKernelGGL(Set, dimGrid, dimBlock, 0, s, ptr, expected); + HIPCHECK(hipEventRecord(e, s)); + + // Host waits for event : + switch (syncMethod) { + case SYNC_EVENT: + HIPCHECK(hipEventSynchronize(e)); + break; + case SYNC_STREAM: + HIPCHECK(hipStreamSynchronize(s)); + break; + case SYNC_DEVICE: + HIPCHECK(hipDeviceSynchronize()); + break; + default: + assert(0); + }; + + for (int i=0; iOFFSETS_TO_TRY); if (p_tests & 0x2) { diff --git a/tests/src/runtimeApi/memory/hipMemcpy.cpp b/tests/src/runtimeApi/memory/hipMemcpy.cpp index 749ec0de77..e8e803e44c 100644 --- a/tests/src/runtimeApi/memory/hipMemcpy.cpp +++ b/tests/src/runtimeApi/memory/hipMemcpy.cpp @@ -304,7 +304,7 @@ void memcpytest2_sizes(size_t maxElem=0) HIPCHECK(hipMemGetInfo(&free, &total)); if (maxElem == 0) { - maxElem = free/sizeof(T)/5; + maxElem = free/sizeof(T)/8; } printf (" device#%d: hipMemGetInfo: free=%zu (%4.2fMB) total=%zu (%4.2fMB) maxSize=%6.1fMB\n", diff --git a/tests/src/runtimeApi/memory/hipMemoryAllocate.cpp b/tests/src/runtimeApi/memory/hipMemoryAllocate.cpp deleted file mode 100644 index 0a256d6362..0000000000 --- a/tests/src/runtimeApi/memory/hipMemoryAllocate.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* -Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANNTY OF ANY KIND, EXPRESS OR -IMPLIED, INNCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANNY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER INN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -/* HIT_START - * BUILD: %t %s ../../test_common.cpp - * RUN: %t - * HIT_END - */ - -#include"test_common.h" - -#define SIZE 1024*1024*256 - -int main(){ - float *Ad, *B, *Bd, *Bm, *C, *Cd, *ptr_0; - B = (float*)malloc(SIZE); - hipMalloc((void**)&Ad, SIZE); - hipHostMalloc((void**)&B, SIZE); - hipHostMalloc((void**)&Bd, SIZE, hipHostMallocDefault); - hipHostMalloc((void**)&Bm, SIZE, hipHostMallocMapped); - hipHostMalloc((void**)&C, SIZE, hipHostMallocMapped); - - hipHostGetDevicePointer((void**)&Cd, C, 0/*flags*/); - - HIPCHECK_API(hipMalloc((void**)&ptr_0,0), hipSuccess); - - HIPCHECK_API(hipFree(Ad) , hipSuccess); - HIPCHECK_API(hipHostFree(Ad) , hipErrorInvalidValue); - - HIPCHECK_API(hipFree(B) , hipErrorInvalidDevicePointer); // try to hipFree on malloced memory - HIPCHECK_API(hipFree(Bd) , hipErrorInvalidDevicePointer); - HIPCHECK_API(hipFree(Bm) , hipErrorInvalidDevicePointer); - HIPCHECK_API(hipFree(ptr_0) , hipSuccess); - HIPCHECK_API(hipHostFree(Bd) , hipSuccess); - HIPCHECK_API(hipHostFree(Bm) , hipSuccess); - - HIPCHECK_API(hipFree(C) , hipErrorInvalidDevicePointer); - HIPCHECK_API(hipHostFree(C) , hipSuccess); - - - HIPCHECK_API(hipFree(NULL) , hipSuccess); - HIPCHECK_API(hipHostFree(NULL) , hipSuccess); - - { - // Some negative testing - request a too-big allocation and verify it fails: - // Someday when we support virtual memory may need to refactor these: - size_t tooBig = 128LL*1024*1024*1024*1024; // 128 TB; - void *p; - HIPCHECK_API ( hipMalloc(&p, tooBig), hipErrorMemoryAllocation ); - HIPCHECK_API ( hipHostMalloc(&p, tooBig), hipErrorMemoryAllocation ); - } - - passed(); -} diff --git a/tests/src/runtimeApi/memory/p2p_copy_coherency.cpp b/tests/src/runtimeApi/memory/p2p_copy_coherency.cpp new file mode 100644 index 0000000000..9fadebea1e --- /dev/null +++ b/tests/src/runtimeApi/memory/p2p_copy_coherency.cpp @@ -0,0 +1,204 @@ +/* +Copyright (c) 2015-2017 Advanced Micro Devices, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +// Simple test for memset. +// Also serves as a template for other tests. + +/* HIT_START + * BUILD: %t %s ../../test_common.cpp NVCC_OPTIONS --std=c++11 + * RUN: %t + * HIT_END + */ + +#include "hip/hip_runtime.h" +#include "test_common.h" + +#ifdef __HIP_PLATFORM_HCC__ +#include +#define USE_HCC_MEMTRACKER 0 +#endif + + +int elementSizes[] = {16, 1024,524288}; +int nSizes = sizeof(elementSizes) / sizeof(int); + +int enablePeers(int dev0, int dev1) +{ + int canAccessPeer01, canAccessPeer10; + HIPCHECK(hipDeviceCanAccessPeer(&canAccessPeer01, dev0, dev1)); + HIPCHECK(hipDeviceCanAccessPeer(&canAccessPeer10, dev1, dev0)); + if (!canAccessPeer01 || !canAccessPeer10) { + return -1; + } + + HIPCHECK(hipSetDevice(dev0)); + HIPCHECK(hipDeviceEnablePeerAccess(dev1, 0/*flags*/)); + HIPCHECK(hipSetDevice(dev1)); + HIPCHECK(hipDeviceEnablePeerAccess(dev0, 0/*flags*/)); + + return 0; +}; + +__global__ void +memsetIntKernel(/*hipLaunchParm lp,*/ int * ptr, const int val, size_t numElements) +{ + int gid = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x); + int stride = hipBlockDim_x * hipGridDim_x ; + for (size_t i= gid; i< numElements; i+=stride){ + ptr[i] = val; + } +}; + +__global__ void +memcpyIntKernel(/*hipLaunchParm lp, */const int * src, int* dst, size_t numElements) +{ + int gid = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x); + int stride = hipBlockDim_x * hipGridDim_x ; + for (size_t i= gid; i< numElements; i+=stride){ + dst[i] = src[i]; + } +}; + +void checkReverse(const int *ptr, int numElements, int expected) { + for (int i=numElements-1; i>=0; i--) { + if (ptr[i] != expected) { + printf ("i=%d, ptr[](%d) != expected (%d)\n", i, ptr[i], expected); + assert (ptr[i] == expected); + } + } + + printf ("test: OK\n"); +} + +void runTest(bool stepAIsCopy, bool hostSync, hipStream_t gpu0Stream, hipStream_t gpu1Stream, int numElements, + int * dataGpu0_0, int * dataGpu0_1, int *dataGpu1, int *dataHost, int expected) +{ + hipEvent_t e; + if(!hostSync) { + HIPCHECK(hipEventCreateWithFlags(&e,0)); + } + const size_t sizeElements = numElements * sizeof(int); + printf ("test: runTest with %zu bytes %s with hostSync %s\n", sizeElements, stepAIsCopy ? "copy" : "kernel", hostSync ? "enabled" : "disabled"); + + hipStream_t stepAStream = gpu0Stream; + + if (stepAIsCopy) { + HIPCHECK(hipMemcpyAsync(dataGpu1, dataGpu0_0, sizeElements, hipMemcpyDeviceToDevice, stepAStream)); + } else { + unsigned blocks = HipTest::setNumBlocks(blocksPerCU, threadsPerBlock, numElements); + hipLaunchKernelGGL(memcpyIntKernel, dim3(blocks), dim3(threadsPerBlock), 0, gpu0Stream, + dataGpu0_0, dataGpu1, numElements); + } + + if(!hostSync) { + HIPCHECK(hipEventRecord(e, stepAStream)); + HIPCHECK(hipStreamWaitEvent(gpu1Stream, e, 0)); + } else { + HIPCHECK(hipStreamSynchronize(stepAStream)); + } + + HIPCHECK(hipMemcpyAsync(dataGpu0_1, dataGpu1, sizeElements, hipMemcpyDeviceToDevice, gpu1Stream)); + + if(!hostSync) { + HIPCHECK(hipEventRecord(e, gpu1Stream)); + } else { + HIPCHECK(hipStreamSynchronize(gpu1Stream)); + } + + HIPCHECK(hipMemcpyAsync(dataHost, dataGpu0_1, sizeElements, hipMemcpyDeviceToHost, gpu0Stream)); + HIPCHECK(hipStreamSynchronize(gpu0Stream)); + + checkReverse(dataHost, numElements, expected); +} + +void testMultiGpu(int dev0, int dev1, int numElements, bool hostSync, bool useMemcpy) +{ + const size_t sizeElements = numElements * sizeof(int); + + int * dataGpu0_0, * dataGpu0_1, *dataGpu1, *dataHost; + hipStream_t gpu0Stream, gpu1Stream; + const int expected = 42; + unsigned blocks = HipTest::setNumBlocks(blocksPerCU, threadsPerBlock, numElements); + + HIPCHECK(hipSetDevice(dev0)); + + HIPCHECK(hipMalloc(&dataGpu0_0, sizeElements)); + HIPCHECK(hipMalloc(&dataGpu0_1, sizeElements)); + HIPCHECK(hipStreamCreate(&gpu0Stream)); + hipLaunchKernelGGL(memsetIntKernel, dim3(blocks), dim3(threadsPerBlock), 0, gpu0Stream, + dataGpu0_0, expected, numElements); + HIPCHECK(hipDeviceSynchronize()); + + + HIPCHECK(hipSetDevice(dev1)); + HIPCHECK(hipMalloc(&dataGpu1, sizeElements)); + HIPCHECK(hipStreamCreate(&gpu1Stream)); + hipLaunchKernelGGL(memsetIntKernel, dim3(blocks), dim3(threadsPerBlock), 0, gpu0Stream, + dataGpu1, 0x34, numElements); + HIPCHECK(hipDeviceSynchronize()); + + HIPCHECK(hipHostMalloc(&dataHost, sizeElements)); + memset(dataHost, 13, sizeElements); + +#if USE_HCC_MEMTRACKER + hc::am_memtracker_print(0x0); +#endif + + printf (" test: init complete\n"); + runTest(useMemcpy , hostSync, gpu0Stream, gpu1Stream, numElements, dataGpu0_0,dataGpu0_1, dataGpu1, dataHost, expected); + + HIPCHECK(hipFree(dataGpu0_0)); + HIPCHECK(hipFree(dataGpu0_1)); + HIPCHECK(hipFree(dataGpu1)); + HIPCHECK(hipHostFree(dataHost)); +}; + +int main(int argc, char *argv[]) +{ + HipTest::parseStandardArguments(argc, argv, true); + + int numElements = N; + + int dev0 = 0; + int dev1 = 1; + + int numDevices; + HIPCHECK(hipGetDeviceCount(&numDevices)); + if (numDevices == 1) { + printf("warning : test requires atleast two gpus\n"); + passed(); + } + + if (enablePeers(dev0,dev1) == -1) { + printf ("warning : could not find peer gpus\n"); + return -1; + }; + + for(int index = 1;index < nSizes;index++) { + testMultiGpu(dev0, dev1, elementSizes[index] , false /* GPU Synchronization*/, true); + testMultiGpu(dev0, dev1, elementSizes[index] , true /*Host Synchronization*/, true); + testMultiGpu(dev0, dev1, elementSizes[index] , true /*Host Synchronization*/, false); + testMultiGpu(dev0, dev1, elementSizes[index] , false /*Host Synchronization*/, false); + } + + + passed(); +}; diff --git a/tests/src/runtimeApi/module/hipFuncSetCacheConfig.cpp b/tests/src/runtimeApi/module/hipFuncSetCacheConfig.cpp new file mode 100644 index 0000000000..e3c3efad3d --- /dev/null +++ b/tests/src/runtimeApi/module/hipFuncSetCacheConfig.cpp @@ -0,0 +1,36 @@ +/* +Copyright (c) 2015-Present Advanced Micro Devices, Inc. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +/* HIT_START + * BUILD: %t %s ../../test_common.cpp + * RUN: %t + * HIT_END + */ + +#include +#include +#include"test_common.h" + +int main(){ + hipFuncCache_t cacheConfig; + void *func; + hipFuncSetCacheConfig(func, cacheConfig); + passed(); +} + diff --git a/tests/src/runtimeApi/multiThread/hipMultiThreadStreams1.cpp b/tests/src/runtimeApi/multiThread/hipMultiThreadStreams1.cpp index 229ceea440..4f73b67ad7 100644 --- a/tests/src/runtimeApi/multiThread/hipMultiThreadStreams1.cpp +++ b/tests/src/runtimeApi/multiThread/hipMultiThreadStreams1.cpp @@ -29,6 +29,8 @@ THE SOFTWARE. #include "hip/hip_runtime.h" #include "test_common.h" +int p_iters=10; + void printSep() { printf ("======================================================================================\n"); @@ -43,7 +45,7 @@ template< class P=HipTest::Unpinned, class C=HipTest::Memcpy > -void simpleVectorCopy(size_t numElements, int iters, hipStream_t stream) +void simpleVectorAdd(size_t numElements, int iters, hipStream_t stream) { using HipTest::MemTraits; @@ -57,6 +59,24 @@ void simpleVectorCopy(size_t numElements, int iters, hipStream_t stream) T *A_h, *B_h, *C_h; HipTest::initArrays (&A_d, &B_d, &C_d, &A_h, &B_h, &C_h, N, P::isPinned); + for (size_t i=0; i::Copy(B_d, B_h, Nbytes, hipMemcpyHostToDevice, stream); + MemTraits::Copy(A_d, A_h, Nbytes, hipMemcpyHostToDevice, stream); + MemTraits::Copy(C_d, C_h, Nbytes, hipMemcpyHostToDevice, stream); + HIPCHECK (hipDeviceSynchronize()); + + for (size_t i=0; i::Copy(A_d, A_h, Nbytes, hipMemcpyHostToDevice, stream); MemTraits::Copy(B_d, B_h, Nbytes, hipMemcpyHostToDevice, stream); - hipLaunchKernel(HipTest::vectorADD, dim3(blocks), dim3(threadsPerBlock), 0, 0, A_d, B_d, C_d, numElements); + //HIPCHECK(hipStreamSynchronize(stream)); + + // This is the null stream? + //hipLaunchKernel(HipTest::vectorADD, dim3(blocks), dim3(threadsPerBlock), 0, 0, A_d, B_d, C_d, numElements); + hipLaunchKernel(HipTest::vectorADDReverse, dim3(blocks), dim3(threadsPerBlock), 0, 0, A_d, B_d, C_d, numElements); MemTraits::Copy(C_h, C_d, Nbytes, hipMemcpyDeviceToHost, stream); @@ -76,9 +100,9 @@ void simpleVectorCopy(size_t numElements, int iters, hipStream_t stream) } HipTest::freeArrays (A_d, B_d, C_d, A_h, B_h, C_h, P::isPinned); + std::cout <<" pid" << pid << " success\n"; HIPCHECK (hipDeviceSynchronize()); - std::cout <<" pid" << pid << " success\n"; } template @@ -88,12 +112,14 @@ void test_multiThread_1(std::string testName, hipStream_t stream0, hipStream_t s printf ("%s\n", __func__); std::cout << testName << std::endl; + size_t numElements = N; + // Test 2 threads operating on same stream: - std::thread t1 (simpleVectorCopy, 2000000/*mb*/, 100/*iters*/, stream0); + std::thread t1 (simpleVectorAdd, numElements, p_iters/*iters*/, stream0); if (serialize) { t1.join(); } - std::thread t2 (simpleVectorCopy, 2000000/*mb*/, 100/*iters*/, stream1); + std::thread t2 (simpleVectorAdd, numElements, p_iters/*iters*/, stream1); if (serialize) { t2.join(); } @@ -109,6 +135,7 @@ void test_multiThread_1(std::string testName, hipStream_t stream0, hipStream_t s int main(int argc, char *argv[]) { + N = 8000000; HipTest::parseStandardArguments(argc, argv, true); printf ("info: set device to %d\n", p_gpuDevice); @@ -121,8 +148,8 @@ int main(int argc, char *argv[]) hipStream_t stream; HIPCHECK (hipStreamCreate(&stream)); - simpleVectorCopy (2000000/*mb*/, 10/*iters*/, stream); - simpleVectorCopy (2000000/*mb*/, 10/*iters*/, stream); + simpleVectorAdd (N/*mb*/, 10/*iters*/, stream); + simpleVectorAdd (N/*mb*/, 10/*iters*/, stream); HIPCHECK(hipStreamDestroy(stream)); } @@ -139,8 +166,8 @@ int main(int argc, char *argv[]) } if (p_tests & 0x4) { - test_multiThread_1 ("Multithread with NULL stream", NULL, NULL, false); - test_multiThread_1 ("Multithread with two streams", stream0, stream1, false); + //test_multiThread_1 ("Multithread with NULL stream", NULL, NULL, false); + //test_multiThread_1 ("Multithread with two streams", stream0, stream1, false); test_multiThread_1 ("Multithread with one stream", stream0, stream0, false); } diff --git a/tests/src/runtimeApi/stream/hipNullStream.cpp b/tests/src/runtimeApi/stream/hipNullStream.cpp new file mode 100644 index 0000000000..b610315608 --- /dev/null +++ b/tests/src/runtimeApi/stream/hipNullStream.cpp @@ -0,0 +1,300 @@ +/* +Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +/* HIT_START + * BUILD: %t %s ../../test_common.cpp NVCC_OPTIONS --std=c++11 + * RUN: %t + * HIT_END + */ + + +#include "hip/hip_runtime.h" +#include "test_common.h" +#include +unsigned p_streams =16; +int p_repeat = 10; +int p_db = 0; + + +template +__global__ void +vectorADDRepeat(hipLaunchParm lp, + const T *A_d, + const T *B_d, + T *C_d, + size_t NELEM, + int repeat) +{ + size_t offset = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x); + size_t stride = hipBlockDim_x * hipGridDim_x ; + + for (int j=1; j<=repeat;j++) { + for (size_t i=offset; i +class Streamer { +public: + Streamer(size_t numElements, bool useNullStream=false); + ~Streamer(); + void enqueAsync(); + void queryUntilComplete(); + + void reset(); + void H2D(); + void D2H(); + + +public: + T *_A_h; + T *_B_h; + T *_C_h; + + T *_A_d; + T *_B_d; + T *_C_d; + + hipStream_t _stream; + hipEvent_t _event; + + size_t _numElements; +}; + +template +Streamer::Streamer(size_t numElements, bool useNullStream) : + _numElements(numElements) +{ + HipTest::initArrays (&_A_d, &_B_d, &_C_d, &_A_h, &_B_h, &_C_h, numElements, true); + + if (useNullStream) { + _stream = 0x0; + } else { + HIPCHECK(hipStreamCreate(&_stream)); + } + HIPCHECK(hipEventCreate(&_event)); + + H2D(); + +}; + +template +void Streamer::H2D() +{ + HIPCHECK(hipMemcpy(_A_d, _A_h, _numElements*sizeof(T), hipMemcpyHostToDevice)); + HIPCHECK(hipMemcpy(_B_d, _B_h, _numElements*sizeof(T), hipMemcpyHostToDevice)); +} + +template +void Streamer::D2H() +{ + HIPCHECK(hipMemcpy(_C_h, _C_d, _numElements*sizeof(T), hipMemcpyDeviceToHost)); +} + +template +void Streamer::reset() +{ + HipTest::setDefaultData(_numElements, _A_h, _B_h, _C_h); + H2D(); + +} + + +template +void Streamer::enqueAsync() +{ + printf ("testing: %s numElements=%zu size=%6.2fMB\n", __func__, _numElements, _numElements * sizeof(T) / 1024.0/1024.0); + unsigned blocks = HipTest::setNumBlocks(blocksPerCU, threadsPerBlock, _numElements); + hipLaunchKernel(vectorADDRepeat, dim3(blocks), dim3(threadsPerBlock), 0, _stream, _A_d, _B_d, _C_d, _numElements, p_repeat); + +} + +template +void Streamer::queryUntilComplete() +{ + int numQueries = 0; + hipError_t e = hipSuccess; + do { + numQueries++; + e = hipStreamQuery(_stream); + } while (e != hipSuccess) ; + + printf ("completed after %d queries\n", numQueries); +}; + + + +//--- +//Parse arguments specific to this test. +void parseMyArguments(int argc, char *argv[]) +{ + int more_argc = HipTest::parseStandardArguments(argc, argv, false); + + // parse args for this test: + for (int i = 1; i < more_argc; i++) { + const char *arg = argv[i]; + + if (!strcmp(arg, "--streams")) { + if (++i >= argc || !HipTest::parseUInt(argv[i], &p_streams)) { + failed("Bad streams argument"); + } + } else if (!strcmp(arg, "--repeat") || (!strcmp(arg, "-r"))) { + if (++i >= argc || !HipTest::parseInt(argv[i], &p_repeat)) { + failed("Bad repeat argument"); + } + } else { + failed("Bad argument '%s'", arg); + } + }; +}; + + +void +printBuffer(std::string name, int *f, size_t numElements) +{ + std::cout << name << "\n"; + for (size_t i=0; i IntStreamer; + + std::vector streamers; + + size_t numElements = N; + + int *expected_H = (int*)malloc(numElements*sizeof(int)); + + + auto nullStreamer = new IntStreamer(numElements, true); + + // Expected resultr - last streamer runs vectorADDRepeat, then nullstreamer adds lastStreamer->_C_d + lastStreamer->_C_d + for (size_t i=0; i_A_h[i])*p_repeat + (nullStreamer->_B_h[i]) * p_repeat) *2; + } + + + for (int i=0; i Test %x runAsnc, #streams=%d\n", (1<reset(); + + for (int i=0; ienqueAsync(); + } + + auto lastStreamer = streamers[s - 1]; + + // Dispatch to NULL stream, should wait for prior async activity to complete before beginning: + hipLaunchKernel(vectorADDRepeat, dim3(blocks), dim3(threadsPerBlock), 0, 0/*nullstream*/, lastStreamer->_C_d, lastStreamer->_C_d, nullStreamer->_C_d, numElements, 1/*repeat*/); + + + if (p_db) { + HIPCHECK(hipDeviceSynchronize()); + lastStreamer->D2H(); + printBuffer("lastStream _A_h", lastStreamer->_A_h, min(numElements, size_t(20))); + printBuffer("lastStream _B_h", lastStreamer->_B_h, min(numElements, size_t(20))); + printBuffer("lastStream _C_h", lastStreamer->_C_h, min(numElements, size_t(20))); + } + nullStreamer->D2H(); + HIPCHECK(hipDeviceSynchronize()); + + HipTest::checkTest(expected_H, nullStreamer->_C_h, numElements); + } + } + + + for (int s=1; sreset(); + printf ("==> Test %x runAsnc-odd-only, #streams=%d\n", tmask, s); + for (int i=0; ienqueAsync(); + } + } + auto lastStreamer = streamers[s - 1]; + + // Dispatch to NULL stream, should wait for prior async activity to complete before beginning: + hipLaunchKernel(vectorADDRepeat, dim3(blocks), dim3(threadsPerBlock), 0, 0/*nullstream*/, lastStreamer->_C_d, lastStreamer->_C_d, nullStreamer->_C_d, numElements, 1/*repeat*/); + + nullStreamer->D2H(); + + HIPCHECK(hipDeviceSynchronize()); + + HipTest::checkTest(expected_H, nullStreamer->_C_h, numElements); + } + } + + // Expected resultr - last streamer runs vectorADDRepeat + for (size_t i=0; i_A_h[i])*p_repeat + (nullStreamer->_B_h[i]) * p_repeat); + } + + if (p_tests & 0x20000) { + + assert (p_streams >=2); // need a couple streams in order to run this test. + nullStreamer->reset(); + printf ("\n==> Test hipStreamSynchronize with defaultStream \n"); + + // Enqueue a long-running job to stream1 + streamers[0]->enqueAsync(); + + // Check to see if synchronizing on a null stream synchronizes all other streams or just the null stream. + // This function follows null stream semantics and will wait for all other blocking streams before returning. + // This will wait on the host + HIPCHECK(hipStreamSynchronize(0)); + + // Copy with stream1, this could go async if the streamSync doesn't synchronize ALL the streams. + HIPCHECK(hipMemcpyAsync(streamers[0]->_C_h, streamers[0]->_C_d, streamers[0]->_numElements*sizeof(int), hipMemcpyDeviceToHost, streamers[1]->_stream)); + + + HIPCHECK(hipDeviceSynchronize()); + + HipTest::checkTest(expected_H, streamers[0]->_C_h, numElements); + } + + + passed(); +} diff --git a/tests/src/runtimeApi/stream/hipStreamSync2.cpp b/tests/src/runtimeApi/stream/hipStreamSync2.cpp new file mode 100644 index 0000000000..c6a58ce7d4 --- /dev/null +++ b/tests/src/runtimeApi/stream/hipStreamSync2.cpp @@ -0,0 +1,207 @@ +/* +Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +/* HIT_START + * BUILD: %t %s ../../test_common.cpp + * RUN: %t + * HIT_END + */ + + +#include "test_common.h" + +enum SyncMode { + syncNone, + syncNullStream, + syncOtherStream, + syncMarkerThenOtherStream, + syncMarkerThenOtherNonBlockingStream, + syncDevice +}; + + +const char *syncModeString(int syncMode) { + switch (syncMode) { + case syncNone: + return "syncNone"; + case syncNullStream: + return "syncNullStream"; + case syncOtherStream: + return "syncOtherStream"; + case syncMarkerThenOtherStream: + return "syncMarkerThenOtherStream"; + case syncMarkerThenOtherNonBlockingStream: + return "syncMarkerThenOtherNonBlockingStream"; + case syncDevice: + return "syncDevice"; + default: + return "unknown"; + }; +}; + + +void test(unsigned testMask, int *C_d, int *C_h, int64_t numElements, SyncMode syncMode, bool expectMismatch) +{ + + // This test sends a long-running kernel to the null stream, then tests to see if the + // specified synchronization technique is effective. + // + // Some syncMode are not expected to correctly sync (for example "syncNone"). in these + // cases the test sets expectMismatch and the check logic below will attempt to ensure that + // the undesired synchronization did not occur - ie ensure the kernel is still running and did + // not yet update the stop event. This can be tricky since if the kernel runs fast enough it + // may complete before the check. To prevent this, the addCountReverse has a count parameter + // which causes it to loop repeatedly, and the results are checked in reverse order. + // + // Tests with expectMismatch=true should ensure the kernel finishes correctly. This results + // are checked and we test to make sure stop event has completed. + + if (!(testMask & p_tests)) { + return; + } + printf ("\ntest 0x%02x: syncMode=%s expectMismatch=%d\n", + testMask, syncModeString(syncMode), expectMismatch); + + size_t sizeBytes = numElements * sizeof(int); + + int count =100; + int init0 = 0; + HIPCHECK(hipMemset(C_d, init0, sizeBytes)); + for (int i=0; i 0); + } + + + HIPCHECK(hipStreamDestroy(otherStream)); + HIPCHECK(hipEventDestroy(stop)); + HIPCHECK(hipEventDestroy(otherStreamEvent)); + + HIPCHECK(hipDeviceSynchronize()); + + printf ("test: OK - %d mismatches (%6.2f%%)\n", mismatches, ((double)(mismatches)*100.0)/numElements); +} + + +void runTests(int64_t numElements) +{ + size_t sizeBytes = numElements * sizeof(int); + + printf ("\n\ntest: starting sequence with sizeBytes=%zu bytes, %6.2f MB\n", sizeBytes, sizeBytes/1024.0/1024.0); + + + int *C_h, *C_d; + HIPCHECK(hipMalloc(&C_d, sizeBytes)); + HIPCHECK(hipHostMalloc(&C_h, sizeBytes)); + + + { + test (0x01, C_d, C_h, numElements, syncNone, true /*expectMismatch*/); + test (0x02, C_d, C_h, numElements, syncNullStream, false /*expectMismatch*/); + test (0x04, C_d, C_h, numElements, syncOtherStream, true /*expectMismatch*/); + test (0x08, C_d, C_h, numElements, syncDevice, false /*expectMismatch*/); + + // Sending a marker to to null stream may synchronize the otherStream + // - other created with hipStreamNonBlocking=0 : synchronization, should match + // - other created with hipStreamNonBlocking=1 : no synchronization, may mismatch + test (0x10, C_d, C_h, numElements, syncMarkerThenOtherStream, false /*expectMismatch*/); + + // TODO - review why this test seems flaky + //test (0x20, C_d, C_h, numElements, syncMarkerThenOtherNonBlockingStream, true /*expectMismatch*/); + } + + + HIPCHECK(hipFree(C_d)); + HIPCHECK(hipHostFree(C_h)); +} + + +int main(int argc, char *argv[]) +{ + // Can' destroy the default stream:// TODO - move to another test + HIPCHECK_API(hipStreamDestroy(0), hipErrorInvalidResourceHandle); + + HipTest::parseStandardArguments(argc, argv, true /*failOnUndefinedArg*/); + + runTests(40000000); + + passed(); +} diff --git a/tests/src/runtimeApi/stream/hipStreamWaitEvent.cpp b/tests/src/runtimeApi/stream/hipStreamWaitEvent.cpp index 637275c381..9bbd43828c 100644 --- a/tests/src/runtimeApi/stream/hipStreamWaitEvent.cpp +++ b/tests/src/runtimeApi/stream/hipStreamWaitEvent.cpp @@ -18,7 +18,7 @@ THE SOFTWARE. */ /* HIT_START - * BUILD: %t %s ../../test_common.cpp + * BUILD: %t %s ../../test_common.cpp NVCC_OPTIONS --std=c++11 * RUN: %t * HIT_END */ @@ -28,60 +28,162 @@ THE SOFTWARE. #include "hip/hip_runtime.h" #include "test_common.h" #include -unsigned p_streams = 6; +#include +unsigned p_streams = 8; +unsigned p_db = 0; +unsigned p_count = 100; + + + //------ // Structure for one stream; template class Streamer { + +#define COMMAND_ADD_FORWARD 0 +#define COMMAND_ADD_REVERSE 1 +#define COMMAND_COPY 2 + + public: - Streamer(size_t numElements); + Streamer(int deviceId, T *input, size_t numElements, int commandType); ~Streamer(); - void runAsync(); + void runAsyncAfter(Streamer *depStreamer, bool waitSameStream=false); + void runAsyncWaitSameStream(); void queryUntilComplete(); + size_t check(int streamerNum, T initValue, T expectedOffset, bool expectPass=true); + void copyToHost(hipStream_t copyStream); + hipEvent_t event() { return _event; }; + + int deviceId() const { return _deviceId; }; + size_t mismatchCount() const { return _mismatchCount; }; + T *C_d() { return _C_d; }; + + // How much does this streamer add to A[i] after running runAsyncAfter + int expectedAdd() const { return (_commandType == COMMAND_COPY) ? 0 : p_count; }; + + + int _commandType; // 0=addReverse, 1=addFwd, 2=move private: - T *_A_h; - T *_B_h; + T *_C_h; + T *_preA_d; // if input is on another device, this is pointer to that memory. T *_A_d; - T *_B_d; T *_C_d; hipStream_t _stream; hipEvent_t _event; + int _deviceId; size_t _numElements; + + size_t _mismatchCount; }; + template -Streamer::Streamer(size_t numElements) : - _numElements(numElements) +Streamer::Streamer(int deviceId, T * A_d, size_t numElements, int commandType) : + _preA_d(NULL), + _A_d(A_d), + _deviceId(deviceId), + _numElements(numElements), + _commandType(commandType) { - HipTest::initArrays (&_A_d, &_B_d, &_C_d, &_A_h, &_B_h, &_C_h, numElements, true); + size_t sizeElements = numElements * sizeof(int); + + //if (commandType == 0) _commandType = 1; // TODO - remove me + + HIPCHECK(hipSetDevice(_deviceId)); + + + hipPointerAttribute_t attr; + HIPCHECK(hipPointerGetAttributes(&attr, A_d)); + if (attr.device != deviceId) { + // source is on another device, we will need to copy later. + // So save original source pointer and allocate local space. + printf ("info: source for streamer on another device, will insert memcpy\n"); + _preA_d = A_d; + HIPCHECK(hipMalloc(&_A_d, sizeElements)); + HIPCHECK(hipMemset(_A_d, -3, sizeElements)); + } + + HIPCHECK(hipMalloc(&_C_d, sizeElements)); + HIPCHECK(hipHostMalloc(&_C_h, sizeElements)); + + HIPCHECK(hipMemset(_C_d, -1, sizeElements)); + HIPCHECK(hipMemset(_C_h, -2, sizeElements)); HIPCHECK(hipStreamCreate(&_stream)); HIPCHECK(hipEventCreate(&_event)); + + + }; -template -void Streamer::runAsync() -{ - printf ("testing: %s numElements=%zu size=%6.2fMB\n", __func__, _numElements, _numElements * sizeof(T) / 1024.0/1024.0); - unsigned blocks = HipTest::setNumBlocks(blocksPerCU, threadsPerBlock, _numElements); - hipLaunchKernel(HipTest::vectorADD, dim3(blocks), dim3(threadsPerBlock), 0, _stream, _A_d, _B_d, _C_d, _numElements); - // Test case where hipStreamWaitEvent waits on same event we just placed into the queue. - HIPCHECK(hipEventRecord(_event, _stream)); - HIPCHECK(hipStreamWaitEvent(_stream, _event, 0)); +template +Streamer::~Streamer() +{ + HIPCHECK(hipSetDevice(_deviceId)); + + printf ("info: ~Streamer\n"); + if (_preA_d) { + HIPCHECK(hipFree(_preA_d)); + } + HIPCHECK(hipFree(_C_d)); + HIPCHECK(hipHostFree(_C_h)); + + HIPCHECK(hipStreamDestroy(_stream)); + HIPCHECK(hipEventDestroy(_event)); } + +template +void Streamer::runAsyncAfter(Streamer *depStreamer, bool waitSameStream) +{ + HIPCHECK(hipSetDevice(_deviceId)); + if (p_db) { + printf ("testing: %s numElements=%zu size=%6.2fMB\n", __func__, _numElements, _numElements * sizeof(T) / 1024.0/1024.0); + } + + if (depStreamer) { + HIPCHECK(hipStreamWaitEvent(_stream, depStreamer->event(), 0)); + } + + if (_preA_d) { + // _preA_d is on another device, so copy to local device so kernel can access it: + HIPCHECK(hipMemcpyAsync(_A_d, _preA_d, _numElements * sizeof(T), hipMemcpyDeviceToDevice, _stream)); + } + + + unsigned blocks = HipTest::setNumBlocks(blocksPerCU, threadsPerBlock, _numElements); + if (_commandType == COMMAND_ADD_REVERSE) { + hipLaunchKernelGGL(HipTest::addCountReverse , dim3(blocks), dim3(threadsPerBlock), 0, _stream, _A_d, _C_d, _numElements, p_count); + } else if (_commandType == COMMAND_ADD_FORWARD) { + hipLaunchKernelGGL(HipTest::addCount, dim3(blocks), dim3(threadsPerBlock), 0, _stream, _A_d, _C_d, _numElements, p_count); + } else if (_commandType == COMMAND_COPY) { + HIPCHECK(hipMemcpyAsync(_C_d, _A_d, _numElements * sizeof(T), hipMemcpyDeviceToDevice, _stream)); + } else { + assert(0); // bad command type + } + HIPCHECK(hipEventRecord(_event, _stream)); + + if (waitSameStream) { + HIPCHECK(hipStreamWaitEvent(_stream, _event, 0)); // this is essentially a no-op, but make sure it doesn't crash + } +} + + + template void Streamer::queryUntilComplete() { + HIPCHECK(hipSetDevice(_deviceId)); int numQueries = 0; hipError_t e = hipSuccess; do { @@ -89,15 +191,62 @@ void Streamer::queryUntilComplete() e = hipStreamQuery(_stream); } while (e != hipSuccess) ; - printf ("completed after %d queries\n", numQueries); + printf ("info: hipStreamQuery completed after %d queries\n", numQueries); }; +// If copyStream is !nullptr it is used for the copy. +template +void Streamer::copyToHost(hipStream_t copyStream) +{ + if (p_db) { + printf ("db: copy back to host\n"); + } + HIPCHECK(hipSetDevice(_deviceId)); + HIPCHECK(hipMemcpyAsync(_C_h, _C_d, _numElements*sizeof(T), hipMemcpyDeviceToHost, copyStream ? copyStream : _stream)); + HIPCHECK(hipStreamSynchronize(copyStream ? copyStream:_stream)); + +} + + +template +size_t Streamer::check(int streamerNum, T initValue, T expectedOffset, bool expectPass) +{ + T expected = initValue + expectedOffset; + if (p_db) { + printf ("db: check\n"); + } + + _mismatchCount = 0; + for (size_t i=0; i<_numElements; i++) { + if (_C_h[i] != expected) { + _mismatchCount++; + if (expectPass) { + fprintf(stderr, "for streamer:%d _C_h[%zu] (%d) != expected(%d)\n", streamerNum, i, _C_h[i], expected); + if (_mismatchCount > 10) { + failed("for streamer:%d _C_h[%zu] (%d) != expected(%d)\n", streamerNum, i, _C_h[i], expected); + } + } + } + } + + if (!expectPass && (_mismatchCount ==0)) { + // the test should run kernels long enough that if we don't correctly wait for them to finish then an error is reported. + //failed("for streamer:%d we expected inavalid synchronization to lead to mismatch but none was detected. Increase --N to sensitize sync.\n", streamerNum); + + } + + return _mismatchCount; +} + + //--- //Parse arguments specific to this test. void parseMyArguments(int argc, char *argv[]) { + N = 64*1024*1024; + int more_argc = HipTest::parseStandardArguments(argc, argv, false); // parse args for this test: @@ -108,6 +257,14 @@ void parseMyArguments(int argc, char *argv[]) if (++i >= argc || !HipTest::parseUInt(argv[i], &p_streams)) { failed("Bad streams argument"); } + } else if (!strcmp(arg, "--count")) { + if (++i >= argc || !HipTest::parseUInt(argv[i], &p_count)) { + failed("Bad count argument"); + } + } else if (!strcmp(arg, "--db")) { + if (++i >= argc || !HipTest::parseUInt(argv[i], &p_db)) { + failed("Bad db argument"); + } } else { failed("Bad argument '%s'", arg); } @@ -115,6 +272,95 @@ void parseMyArguments(int argc, char *argv[]) }; +typedef Streamer IntStreamer; + + + + +void runStreamerLoop(std::vector &streamers) +{ + for (int i=0; irunAsyncAfter(i ? streamers[i-1] : NULL); + } +} + + +void checkAll(int initValue, std::vector &streamers, std::vector &sideStreams, bool expectPass=true) +{ + size_t mismatchCount=0; + + // Copy in reverse order to catch anything not yet finished... + for (int i=streamers.size()-1; i>=0; i--) { + streamers[i]->copyToHost(sideStreams.empty() ? NULL : sideStreams[streamers[i]->deviceId()]); + } + + + int expected = 0; + // Check in forward order so we can find first mismatch: + for (int i=0; iexpectedAdd(); + + mismatchCount += streamers[i]->check(i+1, initValue, expected, expectPass); + + } + if (!expectPass && (mismatchCount==0)) { + // the test should run kernels long enough that if we don't correctly wait for them to finish then an error is reported. + failed("we expected inavalid synchronization to lead to mismatch but none was detected. Increase --count to sensitize sync.\n"); + } + +} + + + +#define RUN_SYNC_TEST(_enableBit, _streamers, _sync, _expectPass)\ + if (p_tests & (_enableBit)) {\ + printf ("==> Test %02x runAsyncAfter sync=%s\n", (_enableBit), #_sync);\ + runStreamerLoop(_streamers);\ + (_sync);\ + checkAll (initValue, _streamers, sideStreams, _expectPass);\ + } + + + + +//--- +// A family of sync functions which somehow wait for inflight activity to finish: + + +void sync_none(void) {}; + +void sync_allDevices(int numDevices) +{ + for (int d=0; d streamers) +{ + for (int i=streamers.size()-1; i>=0; i--) { + streamers[i]->queryUntilComplete(); + }; +} + + +void sync_streamWaitEvent(hipEvent_t lastEvent, int sideDeviceId, hipStream_t sideStream, bool waitHere) +{ + HIPCHECK(hipSetDevice(sideDeviceId)); + + // wait on the last event in the stream of chained streamers: + // This plants a marker which the subsquent copy for this device will wait on: + HIPCHECK(hipStreamWaitEvent(sideStream, lastEvent, 0)); + + if (waitHere) { + HIPCHECK(hipStreamSynchronize(sideStream)); + } +} + + //--- int main(int argc, char *argv[]) @@ -122,39 +368,115 @@ int main(int argc, char *argv[]) HipTest::parseStandardArguments(argc, argv, false); parseMyArguments(argc, argv); - typedef Streamer FloatStreamer; - std::vector streamers; + size_t numElements = N; + size_t sizeElements = numElements * sizeof(int); - for (int i=0; i::max()); + + + int initValue = 1000; + + int * initArray_d, *initArray_h; + HIPCHECK(hipMalloc(&initArray_d, sizeElements)); + HIPCHECK(hipHostMalloc(&initArray_h, sizeElements)); + for (size_t i=0; i Test 0x1 runAsnc\n"); + int numDevices; + HIPCHECK(hipGetDeviceCount(&numDevices)); + numDevices = min(2, numDevices); // multi-GPU to 2 device. + + std::vector streamers; + std::vector streamersDev0; // streamers for first device. + + for (int d=0; drunAsync(); + int command = (i%2) ? COMMAND_ADD_FORWARD : COMMAND_ADD_REVERSE; + IntStreamer * s = new IntStreamer(d, i ? streamers.back()->C_d() : initArray_d, numElements, command); + streamers.push_back(s); + if (d==0) { + streamersDev0.push_back(s); + } } - HIPCHECK(hipDeviceSynchronize()); } - if (p_tests & 0x2) { - printf ("==> Test 0x2 queryUntilComplete\n"); - for (int i=0; irunAsync(); - streamers[i]->queryUntilComplete(); - } - HIPCHECK(hipDeviceSynchronize()); + + + + + // A sideband stream channel that is independent from above. + // Used to check to ensure the WaitEvent or other synchronization is working correctly since by default sideStream is + // asynchronous wrt the other streams. + std::vector sideStreams; + for (int d=0; devent(), 0, sideStreams[0], false), true); + + if (numDevices > 1) { + // Sync on second device for activity running on device 0: + RUN_SYNC_TEST(0x10, streamersDev0, sync_streamWaitEvent(streamersDev0.back()->event(), 1, sideStreams[1], true), true); + } + + + // Tests on all GPUs: + // RUN_SYNC_TEST(0x100, streamers, sync_streamWaitEvent(streamers.back()->event(), 0, sideStreams[0], false), true); + + + + + if (p_tests & 0x1000) { + printf ("==> Test 0x1000 try null stream\n"); hipStreamQuery(0/* try null stream*/); } + // Insert small wrinkle here, insert a wait on event just recorded, all in the same stream. + if (p_tests & 0x2000) { + printf ("==> Test 0x2000 runAsyncWaitSameStream\n"); + for (int i=0; irunAsyncAfter(i ? streamersDev0[i-1] : NULL, true/*waitSameStream*/); + } + + sync_streamWaitEvent(streamersDev0.back()->event(), 0, sideStreams[0], false); + checkAll (initValue, streamersDev0, sideStreams); + } + + + // Change Adds to copies to stimulate different case with event followign copy: + for (auto &s : streamers) { + if (s->_commandType == COMMAND_ADD_FORWARD) + s->_commandType = COMMAND_COPY; + } + + + { + printf ("test: alternating memcpy/count-reverse followed by event\n"); + RUN_SYNC_TEST(0x4000, streamersDev0, sync_queryAllUntilComplete(streamersDev0), true); + RUN_SYNC_TEST(0x8000, streamersDev0, sync_streamWaitEvent(streamersDev0.back()->event(), 0, sideStreams[0], false), true); + } + + passed(); } diff --git a/tests/src/test_common.h b/tests/src/test_common.h index 1250de4801..f585fb8bca 100644 --- a/tests/src/test_common.h +++ b/tests/src/test_common.h @@ -146,6 +146,90 @@ vectorADD(hipLaunchParm lp, } +template +__global__ void +vectorADDReverse(hipLaunchParm lp, + const T *A_d, + const T *B_d, + T *C_d, + size_t NELEM) +{ + size_t offset = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x); + size_t stride = hipBlockDim_x * hipGridDim_x ; + + for (int64_t i=NELEM-stride+offset; i>=0; i-=stride) { + C_d[i] = A_d[i] + B_d[i]; + } +} + + +template +__global__ void +addCount( const T *A_d, + T *C_d, + size_t NELEM, + int count) +{ + size_t offset = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x); + size_t stride = hipBlockDim_x * hipGridDim_x ; + + // Deliberately do this in an inefficient way to increase kernel runtime + for (int i=0; i +__global__ void +addCountReverse( const T *A_d, + T *C_d, + int64_t NELEM, + int count) +{ + size_t offset = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x); + size_t stride = hipBlockDim_x * hipGridDim_x ; + + // Deliberately do this in an inefficient way to increase kernel runtime + for (int i=0; i=0; i-=stride) { + C_d[i] = A_d[i] + (T)count; + } + } +} + + +template +__global__ void +memsetReverse( T *C_d, T val, + int64_t NELEM) +{ + size_t offset = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x); + size_t stride = hipBlockDim_x * hipGridDim_x ; + + for (int64_t i=NELEM-stride+offset; i>=0; i-=stride) { + C_d[i] = val; + } +} + + +template +void setDefaultData(size_t numElements, T *A_h, T* B_h, T *C_h) +{ + // Initialize the host data: + for (size_t i=0; i void initArraysForHost(T **A_h, T **B_h, T **C_h, size_t N, bool usePinnedHost=false) @@ -179,15 +263,10 @@ void initArraysForHost(T **A_h, T **B_h, T **C_h, } } - // Initialize the host data: - for (size_t i=0; i void initArrays(T **A_d, T **B_d, T **C_d, T **A_h, T **B_h, T **C_h, @@ -295,7 +374,7 @@ inline void initHIPArrays(hipArray **A_d, hipArray **B_d, hipArray **C_d, // Assumes C_h contains vector add of A_h + B_h // Calls the test "failed" macro if a mismatch is detected. template -void checkVectorADD(T* A_h, T* B_h, T* result_H, size_t N, bool expectMatch=true) +size_t checkVectorADD(T* A_h, T* B_h, T* result_H, size_t N, bool expectMatch=true, bool reportMismatch=true) { size_t mismatchCount = 0; size_t firstMismatch = 0; @@ -316,9 +395,50 @@ void checkVectorADD(T* A_h, T* B_h, T* result_H, size_t N, bool expectMatch=true } } + if (reportMismatch) { + if (expectMatch) { + if (mismatchCount) { + failed("%zu mismatches ; first at index:%zu\n", mismatchCount, firstMismatch); + } + } else { + if (mismatchCount == 0) { + failed("expected mismatches but did not detect any!"); + } + } + } + + return mismatchCount; + +} + + +// Assumes C_h contains vector add of A_h + B_h +// Calls the test "failed" macro if a mismatch is detected. +template +void checkTest(T* expected_H, T* result_H, size_t N, bool expectMatch=true) +{ + size_t mismatchCount = 0; + size_t firstMismatch = 0; + size_t mismatchesToPrint = 10; + for (size_t i=0; i