SWDEV-489106 - Hip changes for Linker APIs

1) Map RTC linker API enums to Runtime Linker API enums
2) Add API declarations for Runtime linker APIs

Change-Id: Id5da355a77365f97868e462847f3906e87fd2af7


[ROCm/hip commit: b6c63068a2]
Αυτή η υποβολή περιλαμβάνεται σε:
Rahul Manocha
2024-10-09 12:45:31 -07:00
υποβλήθηκε από Rahul Manocha
γονέας b1ba15a75e
υποβολή c6d7a82620
3 αρχεία άλλαξαν με 288 προσθήκες και 74 διαγραφές
@@ -33,6 +33,7 @@ THE SOFTWARE.
#include <string.h> // for getDeviceProp
#include <hip/hip_version.h>
#include <hip/hip_common.h>
#include <hip/linker_types.h>
enum {
HIP_SUCCESS = 0,
@@ -625,6 +626,7 @@ typedef struct hipIpcEventHandle_st {
} hipIpcEventHandle_t;
typedef struct ihipModule_t* hipModule_t;
typedef struct ihipModuleSymbol_t* hipFunction_t;
typedef struct ihipLinkState_t* hipLinkState_t;
/**
* HIP memory pool
*/
@@ -1137,29 +1139,6 @@ typedef struct hipMemPoolPtrExportData {
unsigned char reserved[64];
} hipMemPoolPtrExportData;
/**
* hipJitOption
*/
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 some Nvidia devices, these hints and controls are ignored.
*/
@@ -5906,6 +5885,86 @@ hipError_t hipModuleLoadData(hipModule_t* module, const void* image);
*/
hipError_t hipModuleLoadDataEx(hipModule_t* module, const void* image, unsigned int numOptions,
hipJitOption* options, void** optionValues);
/**
* @brief Completes the linking of the given program.
* @param [in] state hip link state
* @param [in] type Type of the input data or bitcode
* @param [in] data Input data which is null terminated
* @param [in] size Size of the input data
* @param [in] name Optional name for this input
* @param [in] numOptions Size of the options
* @param [in] options Array of options applied to this input
* @param [in] optionValues Array of option values cast to void*
*
* @returns #hipSuccess, #hipErrorInvalidValue, #hipErrorInvalidHandle
*
* If adding the file fails, it will
* @return #hipErrorInvalidConfiguration
*
* @see hipError_t
*/
hipError_t hipLinkAddData(hipLinkState_t state, hipJitInputType type, void* data, size_t size,
const char* name, unsigned int numOptions, hipJitOption* options,
void** optionValues);
/**
* @brief Adds a file with bit code to be linked with options
* @param [in] state hip link state
* @param [in] type Type of the input data or bitcode
* @param [in] path Path to the input file where bitcode is present
* @param [in] numOptions Size of the options
* @param [in] options Array of options applied to this input
* @param [in] optionValues Array of option values cast to void*
*
* @returns #hipSuccess, #hipErrorInvalidValue
*
* If adding the file fails, it will
* @return #hipErrorInvalidConfiguration
*
* @see hipError_t
*/
hipError_t hipLinkAddFile(hipLinkState_t state, hipJitInputType type, const char* path, unsigned int numOptions,
hipJitOption* options, void** optionValues);
/**
* @brief Completes the linking of the given program.
* @param [in] state hip link state
* @param [out] hipBinOut Upon success, points to the output binary
* @param [out] sizeOut Size of the binary is stored (optional)
*
* @returns #hipSuccess #hipErrorInvalidValue
*
* If adding the data fails, it will
* @return #hipErrorInvalidConfiguration
*
* @see hipError_t
*/
hipError_t hipLinkComplete(hipLinkState_t state, void** hipBinOut, size_t* sizeOut);
/**
* @brief Creates the link instance via hip APIs.
* @param [in] numOptions Number of options
* @param [in] option Array of options
* @param [in] optionValues Array of option values cast to void*
* @param [out] stateOut hip link state created upon success
*
* @returns #hipSuccess #hipErrorInvalidValue #hipErrorInvalidConfiguration
*
* @see hipSuccess
*/
hipError_t hipLinkCreate(unsigned int numOptions, hipJitOption* options,
void** optionValues, hipLinkState_t* stateOut);
/**
* @brief Deletes the link instance via hip APIs.
* @param [in] state link state instance
*
* @returns #hipSuccess #hipErrorInvalidValue
*
* @see hipSuccess
*/
hipError_t hipLinkDestroy(hipLinkState_t state);
/**
* @brief launches kernel f with launch parameters and shared memory on stream with arguments passed
* to kernelparams or extra
@@ -22,6 +22,7 @@ THE SOFTWARE.
#pragma once
#include <hip/hip_common.h>
#include <hip/linker_types.h>
#if !defined(__HIP_PLATFORM_AMD__) && defined(__HIP_PLATFORM_NVIDIA__)
#include <hip/nvidia_detail/nvidia_hiprtc.h>
@@ -41,7 +42,7 @@ extern "C" {
*
* @addtogroup GlobalDefs
* @{
*
*
*/
/**
* hiprtc error code
@@ -56,66 +57,90 @@ typedef enum hiprtcResult {
HIPRTC_ERROR_COMPILATION = 6, ///< Compilation error
HIPRTC_ERROR_BUILTIN_OPERATION_FAILURE = 7, ///< Failed in builtin operation
HIPRTC_ERROR_NO_NAME_EXPRESSIONS_AFTER_COMPILATION = 8, ///< No name expression after compilation
HIPRTC_ERROR_NO_LOWERED_NAMES_BEFORE_COMPILATION = 9, ///< No lowered names before compilation
HIPRTC_ERROR_NO_LOWERED_NAMES_BEFORE_COMPILATION = 9, ///< No lowered names before compilation
HIPRTC_ERROR_NAME_EXPRESSION_NOT_VALID = 10, ///< Invalid name expression
HIPRTC_ERROR_INTERNAL_ERROR = 11, ///< Internal error
HIPRTC_ERROR_LINKING = 100 ///< Error in linking
} hiprtcResult;
/**
* hiprtc JIT option
*/
typedef enum hiprtcJIT_option {
HIPRTC_JIT_MAX_REGISTERS = 0, ///< CUDA Only Maximum registers may be used in a thread, passed to compiler
HIPRTC_JIT_THREADS_PER_BLOCK, ///< CUDA Only Number of thread per block
HIPRTC_JIT_WALL_TIME, ///< CUDA Only Value for total wall clock time
HIPRTC_JIT_INFO_LOG_BUFFER, ///< CUDA Only Pointer to the buffer with logged information
HIPRTC_JIT_INFO_LOG_BUFFER_SIZE_BYTES, ///< CUDA Only Size of the buffer in bytes for logged info
HIPRTC_JIT_ERROR_LOG_BUFFER, ///< CUDA Only Pointer to the buffer with logged error(s)
HIPRTC_JIT_ERROR_LOG_BUFFER_SIZE_BYTES, ///< CUDA Only Size of the buffer in bytes for logged error(s)
HIPRTC_JIT_OPTIMIZATION_LEVEL, ///< Value of optimization level for generated codes, acceptable options -O0, -O1, -O2, -O3
HIPRTC_JIT_TARGET_FROM_HIPCONTEXT, ///< CUDA Only The target context, which is the default
HIPRTC_JIT_TARGET, ///< CUDA Only JIT target
HIPRTC_JIT_FALLBACK_STRATEGY, ///< CUDA Only Fallback strategy
HIPRTC_JIT_GENERATE_DEBUG_INFO, ///< CUDA Only Generate debug information
HIPRTC_JIT_LOG_VERBOSE, ///< CUDA Only Generate log verbose
HIPRTC_JIT_GENERATE_LINE_INFO, ///< CUDA Only Generate line number information
HIPRTC_JIT_CACHE_MODE, ///< CUDA Only Set cache mode
HIPRTC_JIT_NEW_SM3X_OPT, ///< @deprecated CUDA Only New SM3X option.
HIPRTC_JIT_FAST_COMPILE, ///< CUDA Only Set fast compile
HIPRTC_JIT_GLOBAL_SYMBOL_NAMES, ///< CUDA Only Array of device symbol names to be relocated to the host
HIPRTC_JIT_GLOBAL_SYMBOL_ADDRESS, ///< CUDA Only Array of host addresses to be relocated to the device
HIPRTC_JIT_GLOBAL_SYMBOL_COUNT, ///< CUDA Only Number of symbol count.
HIPRTC_JIT_LTO, ///< @deprecated CUDA Only Enable link-time optimization for device code
HIPRTC_JIT_FTZ, ///< @deprecated CUDA Only Set single-precision denormals.
HIPRTC_JIT_PREC_DIV, ///< @deprecated CUDA Only Set single-precision floating-point division and
///< reciprocals
HIPRTC_JIT_PREC_SQRT, ///< @deprecated CUDA Only Set single-precision floating-point square root
HIPRTC_JIT_FMA, ///< @deprecated CUDA Only Enable floating-point multiplies and adds/subtracts operations
HIPRTC_JIT_NUM_OPTIONS, ///< Number of options
HIPRTC_JIT_IR_TO_ISA_OPT_EXT = 10000, ///< Linker options to be passed on to compiler
/// @note Only supported for the AMD platform.
HIPRTC_JIT_IR_TO_ISA_OPT_COUNT_EXT, ///< Count of linker options to be passed on to
///< compiler @note Only supported for the AMD platform
} hiprtcJIT_option;
#define hiprtcJIT_option hipJitOption
#define HIPRTC_JIT_MAX_REGISTERS hipJitOptionMaxRegisters ///< CUDA Only Maximum registers may be used in a
///< thread, passed to compiler
#define HIPRTC_JIT_THREADS_PER_BLOCK hipJitOptionThreadsPerBlock ///< CUDA Only Number of thread per block
#define HIPRTC_JIT_WALL_TIME hipJitOptionWallTime ///< CUDA Only Value for total wall clock time
#define HIPRTC_JIT_INFO_LOG_BUFFER hipJitOptionInfoLogBuffer ///< CUDA Only Pointer to the buffer with
///< logged information
#define HIPRTC_JIT_INFO_LOG_BUFFER_SIZE_BYTES hipJitOptionInfoLogBufferSizeBytes ///< CUDA Only Size of the buffer
///< in bytes for logged info
#define HIPRTC_JIT_ERROR_LOG_BUFFER hipJitOptionErrorLogBuffer ///< CUDA Only Pointer to the buffer
///< with logged error(s)
#define HIPRTC_JIT_ERROR_LOG_BUFFER_SIZE_BYTES hipJitOptionErrorLogBufferSizeBytes ///< CUDA Only Size of the buffer in
///< bytes for logged error(s)
#define HIPRTC_JIT_OPTIMIZATION_LEVEL hipJitOptionOptimizationLevel ///< Value of optimization level for
///< generated codes, acceptable
///< options -O0, -O1, -O2, -O3
#define HIPRTC_JIT_TARGET_FROM_HIPCONTEXT hipJitOptionTargetFromContext ///< CUDA Only The target context,
///< which is the default
#define HIPRTC_JIT_TARGET hipJitOptionTarget ///< CUDA Only JIT target
#define HIPRTC_JIT_FALLBACK_STRATEGY hipJitOptionFallbackStrategy ///< CUDA Only Fallback strategy
#define HIPRTC_JIT_GENERATE_DEBUG_INFO hipJitOptionGenerateDebugInfo ///< CUDA Only Generate debug information
#define HIPRTC_JIT_LOG_VERBOSE hipJitOptionLogVerbose ///< CUDA Only Generate log verbose
#define HIPRTC_JIT_GENERATE_LINE_INFO hipJitOptionGenerateLineInfo ///< CUDA Only Generate line number information
#define HIPRTC_JIT_CACHE_MODE hipJitOptionCacheMode ///< CUDA Only Set cache mode
#define HIPRTC_JIT_NEW_SM3X_OPT hipJitOptionSm3xOpt ///< @deprecated CUDA Only New SM3X option.
#define HIPRTC_JIT_FAST_COMPILE hipJitOptionFastCompile ///< CUDA Only Set fast compile
#define HIPRTC_JIT_GLOBAL_SYMBOL_NAMES hipJitOptionGlobalSymbolNames ///< CUDA Only Array of device symbol names to be
///< relocated to the host
#define HIPRTC_JIT_GLOBAL_SYMBOL_ADDRESS hipJitOptionGlobalSymbolAddresses ///< CUDA Only Array of host addresses to be
///< relocated to the device
#define HIPRTC_JIT_GLOBAL_SYMBOL_COUNT hipJitOptionGlobalSymbolCount ///< CUDA Only Number of symbol count.
#define HIPRTC_JIT_LTO hipJitOptionLto ///< @deprecated CUDA Only Enable link-time
///< optimization for device code
#define HIPRTC_JIT_FTZ hipJitOptionFtz ///< @deprecated CUDA Only Set
///< single-precision denormals.
#define HIPRTC_JIT_PREC_DIV hipJitOptionPrecDiv ///< @deprecated CUDA Only Set
///< single-precision floating-point division
///< and reciprocals
#define HIPRTC_JIT_PREC_SQRT hipJitOptionPrecSqrt ///< @deprecated CUDA Only Set
///< single-precision floating-point
///< square root
#define HIPRTC_JIT_FMA hipJitOptionFma ///< @deprecated CUDA Only Enable
///< floating-point multiplies and
///< adds/subtracts operations
#define HIPRTC_JIT_POSITION_INDEPENDENT_CODE hipJitOptionPositionIndependentCode ///< CUDA Only Generates
///< Position Independent code
#define HIPRTC_JIT_MIN_CTA_PER_SM hipJitOptionMinCTAPerSM ///< CUDA Only Hints to JIT compiler
///< the minimum number of CTAs frin
///< kernel's grid to be mapped to SM
#define HIPRTC_JIT_MAX_THREADS_PER_BLOCK hipJitOptionMaxThreadsPerBlock ///< CUDA only Maximum number of
///< threads in a thread block
#define HIPRTC_JIT_OVERRIDE_DIRECT_VALUES hipJitOptionOverrideDirectiveValues ///< CUDA only Override Directive
///< Values
#define HIPRTC_JIT_NUM_OPTIONS hipJitOptionNumOptions ///< Number of options
#define HIPRTC_JIT_IR_TO_ISA_OPT_EXT hipJitOptionIRtoISAOptExt ///< HIP Only Linker options to be
///< passed on to compiler
#define HIPRTC_JIT_IR_TO_ISA_OPT_COUNT_EXT hipJitOptionIRtoISAOptCountExt ///< HIP Only Count of linker options
///< to be passed on to
/**
* hiprtc JIT input type
*/
typedef enum hiprtcJITInputType {
HIPRTC_JIT_INPUT_CUBIN = 0, ///< Input cubin
HIPRTC_JIT_INPUT_PTX, ///< Input PTX
HIPRTC_JIT_INPUT_FATBINARY, ///< Input fat binary
HIPRTC_JIT_INPUT_OBJECT, ///< Input object
HIPRTC_JIT_INPUT_LIBRARY, ///< Input library
HIPRTC_JIT_INPUT_NVVM, ///< Input NVVM
HIPRTC_JIT_NUM_LEGACY_INPUT_TYPES, ///< Number of legacy input type
HIPRTC_JIT_INPUT_LLVM_BITCODE = 100, ///< LLVM bitcode or IR assembly
HIPRTC_JIT_INPUT_LLVM_BUNDLED_BITCODE = 101, ///< LLVM bundled bitcode
HIPRTC_JIT_INPUT_LLVM_ARCHIVES_OF_BUNDLED_BITCODE = 102, ///< LLVM archives of boundled bitcode
HIPRTC_JIT_NUM_INPUT_TYPES = (HIPRTC_JIT_NUM_LEGACY_INPUT_TYPES + 3)
} hiprtcJITInputType;
#define hiprtcJITInputType hipJitInputType
#define HIPRTC_JIT_INPUT_CUBIN hipJitInputCubin ///< Cuda only Input Cubin
#define HIPRTC_JIT_INPUT_PTX hipJitInputPtx ///< Cuda only Input PTX
#define HIPRTC_JIT_INPUT_FATBINARY hipJitInputFatBinary ///< Cuda Only Input FAT Binary
#define HIPRTC_JIT_INPUT_OBJECT hipJitInputObject ///< Cuda Only Host Object with embedded device code
#define HIPRTC_JIT_INPUT_LIBRARY hipJitInputLibrary ///< Cuda Only Archive of Host Objects with embedded device code
#define HIPRTC_JIT_INPUT_NVVM hipJitInputNvvm ///< @deprecated CUDA only High Level intermediate code for LTO
#define HIPRTC_JIT_NUM_LEGACY_INPUT_TYPES hipJitNumLegacyInputTypes ///< Count of Legacy Input Types
#define HIPRTC_JIT_INPUT_LLVM_BITCODE hipJitInputLLVMBitcode ///< HIP Only LLVM Bitcode or IR assembly
#define HIPRTC_JIT_INPUT_LLVM_BUNDLED_BITCODE hipJitInputLLVMBundledBitcode ///< HIP Only LLVM Clang Bundled Code
#define HIPRTC_JIT_INPUT_LLVM_ARCHIVES_OF_BUNDLED_BITCODE hipJitInputLLVMArchivesOfBundledBitcode ///< HIP Only LLVM
///< Archives of
///< Bundled Bitcode
#define HIPRTC_JIT_INPUT_SPIRV hipJitInputSpirv ///< HIP Only SPIRV Code Object
#define HIPRTC_JIT_NUM_INPUT_TYPES hipJitNumInputTypes ///< Count of Input Types
/**
* @}
*/
Εκτελέσιμο αρχείο
+130
Προβολή Αρχείου
@@ -0,0 +1,130 @@
/*
Copyright (c) 2015 - 2023 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.
*/
#ifndef HIP_INCLUDE_HIP_LINKER_TYPES_H
#define HIP_INCLUDE_HIP_LINKER_TYPES_H
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-identifier"
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
#endif
#if !defined(__HIP_PLATFORM_AMD__) && defined(__HIP_PLATFORM_NVIDIA__)
#elif defined(__HIP_PLATFORM_AMD__) && !defined(__HIP_PLATFORM_NVIDIA__)
/**
* @defgroup LinkerTypes Jit Linker Data Types
* @{
* This section describes the Jit Linker data types.
*
*/
/**
* hipJitOption
*/
typedef enum hipJitOption {
hipJitOptionMaxRegisters = 0, ///< CUDA Only Maximum registers may be used in a thread,
///< passed to compiler
hipJitOptionThreadsPerBlock, ///< CUDA Only Number of thread per block
hipJitOptionWallTime, ///< CUDA Only Value for total wall clock time
hipJitOptionInfoLogBuffer, ///< CUDA Only Pointer to the buffer with logged information
hipJitOptionInfoLogBufferSizeBytes, ///< CUDA Only Size of the buffer in bytes for logged info
hipJitOptionErrorLogBuffer, ///< CUDA Only Pointer to the buffer with logged error(s)
hipJitOptionErrorLogBufferSizeBytes, ///< CUDA Only Size of the buffer in bytes for logged error(s)
hipJitOptionOptimizationLevel, ///< Value of optimization level for generated codes, acceptable options
///< -O0, -O1, -O2, -O3
hipJitOptionTargetFromContext, ///< CUDA Only The target context, which is the default
hipJitOptionTarget, ///< CUDA Only JIT target
hipJitOptionFallbackStrategy, ///< CUDA Only Fallback strategy
hipJitOptionGenerateDebugInfo, ///< CUDA Only Generate debug information
hipJitOptionLogVerbose, ///< CUDA Only Generate log verbose
hipJitOptionGenerateLineInfo, ///< CUDA Only Generate line number information
hipJitOptionCacheMode, ///< CUDA Only Set cache mode
hipJitOptionSm3xOpt, ///< @deprecated CUDA Only New SM3X option.
hipJitOptionFastCompile, ///< CUDA Only Set fast compile
hipJitOptionGlobalSymbolNames, ///< CUDA Only Array of device symbol names to be relocated to the host
hipJitOptionGlobalSymbolAddresses, ///< CUDA Only Array of host addresses to be relocated to the device
hipJitOptionGlobalSymbolCount, ///< CUDA Only Number of symbol count.
hipJitOptionLto, ///< @deprecated CUDA Only Enable link-time optimization for device code
hipJitOptionFtz, ///< @deprecated CUDA Only Set single-precision denormals.
hipJitOptionPrecDiv, ///< @deprecated CUDA Only Set single-precision floating-point division
///< and reciprocals
hipJitOptionPrecSqrt, ///< @deprecated CUDA Only Set single-precision floating-point square root
hipJitOptionFma, ///< @deprecated CUDA Only Enable floating-point multiplies and
///< adds/subtracts operations
hipJitOptionPositionIndependentCode, ///< CUDA Only Generates Position Independent code
hipJitOptionMinCTAPerSM, ///< CUDA Only Hints to JIT compiler the minimum number of CTAs frin kernel's
///< grid to be mapped to SM
hipJitOptionMaxThreadsPerBlock, ///< CUDA only Maximum number of threads in a thread block
hipJitOptionOverrideDirectiveValues, ///< Cuda only Override Directive values
hipJitOptionNumOptions, ///< Number of options
hipJitOptionIRtoISAOptExt = 10000, ///< Hip Only Linker options to be passed on to compiler
hipJitOptionIRtoISAOptCountExt, ///< Hip Only Count of linker options to be passed on to compiler
} hipJitOption;
/**
* hipJitInputType
*/
typedef enum hipJitInputType {
hipJitInputCubin = 0, ///< Cuda only Input cubin
hipJitInputPtx, ///< Cuda only Input PTX
hipJitInputFatBinary, ///< Cuda Only Input FAT Binary
hipJitInputObject, ///< Cuda Only Host Object with embedded device code
hipJitInputLibrary, ///< Cuda Only Archive of Host Objects with embedded
///< device code
hipJitInputNvvm, ///< @deprecated Cuda only High Level intermediate
///< code for LTO
hipJitNumLegacyInputTypes, ///< Count of Legacy Input Types
hipJitInputLLVMBitcode = 100, ///< HIP Only LLVM Bitcode or IR assembly
hipJitInputLLVMBundledBitcode = 101, ///< HIP Only LLVM Clang Bundled Code
hipJitInputLLVMArchivesOfBundledBitcode = 102, ///< HIP Only LLVM Archive of Bundled Bitcode
hipJitInputSpirv = 103, ///< HIP Only SPIRV Code Object
hipJitNumInputTypes = 10 ///< Count of Input Types
} hipJitInputType;
/**
* hipJitCacheMode
*/
typedef enum hipJitCacheMode {
hipJitCacheOptionNone = 0,
hipJitCacheOptionCG,
hipJitCacheOptionCA
} hipJitCacheMode;
/**
* hipJitFallback
*/
typedef enum hipJitFallback {
hipJitPreferPTX = 0,
hipJitPreferBinary,
} hipJitFallback;
// doxygen end LinkerTypes
/**
* @}
*/
#else
#error("Must define exactly one of __HIP_PLATFORM_AMD__ or __HIP_PLATFORM_NVIDIA__");
#endif
#endif // HIP_INCLUDE_HIP_LINKER_TYPES_H