tvm
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Variables
tvm::attr Namespace Reference

Generic attribute names that can be attached to any function. More...

Variables

constexpr const char * kCallingConv = "calling_conv"
 Indicates the special calling convention. More...
 
constexpr const char * kTarget = "target"
 Compilation target of the function. More...
 
constexpr const char * kGlobalSymbol = "global_symbol"
 Global linker symbol of the function in generated code. More...
 
constexpr const char * kModuleName = "mod_name"
 Name of the module. More...
 
constexpr const char * kConstants = "constants"
 
constexpr const char * kExternalMods = "external_mods"
 All the runtime::Modules accumulated during compilation by external codegen. These modules must be either directly linked or captured in the final compilation artifact. More...
 
constexpr const char * kSystemLibPrefix = "system_lib_prefix"
 A prefix for generating C symbols system lib creation. More...
 
constexpr const char * kConstNameToConstant = "const_name_to_constant"
 All the named runtime::NDArrays accumulated during compilation by external codegen. Generally the associated runtime::Module will indicate it requires bindings for these names, and during module initialization these bindings will be recovered from a ConstLoaderModule. See also kConstantsArray above, which is the analog for PrimFuncs. More...
 

Detailed Description

Generic attribute names that can be attached to any function.

See also
tvm::tir::attr, tvm::relax::attr

Variable Documentation

◆ kCallingConv

constexpr const char* tvm::attr::kCallingConv = "calling_conv"
constexpr

Indicates the special calling convention.

Type: Integer

See also
tvm::CallingConv

◆ kConstants

constexpr const char* tvm::attr::kConstants = "constants"
constexpr

◆ kConstNameToConstant

constexpr const char* tvm::attr::kConstNameToConstant = "const_name_to_constant"
constexpr

All the named runtime::NDArrays accumulated during compilation by external codegen. Generally the associated runtime::Module will indicate it requires bindings for these names, and during module initialization these bindings will be recovered from a ConstLoaderModule. See also kConstantsArray above, which is the analog for PrimFuncs.

Type: Map<String, runtime::NDArray>

◆ kExternalMods

constexpr const char* tvm::attr::kExternalMods = "external_mods"
constexpr

All the runtime::Modules accumulated during compilation by external codegen. These modules must be either directly linked or captured in the final compilation artifact.

Type: Array<runtime::Module>

◆ kGlobalSymbol

constexpr const char* tvm::attr::kGlobalSymbol = "global_symbol"
constexpr

Global linker symbol of the function in generated code.

This option forces the code generator to name the function with the given.

For example, we could set a global_symbol of a function early to make sure that we can always refer to it by the symbol name in the generated DLL.

We should not set the attribute for local functions, so that the compiler can freely rename them.

A unique global symbol will be automatically assigned to each function in the module before the target code generation phase.

Type: String

◆ kModuleName

constexpr const char* tvm::attr::kModuleName = "mod_name"
constexpr

Name of the module.

Type: String

See also
tvm::runtime::String

◆ kSystemLibPrefix

constexpr const char* tvm::attr::kSystemLibPrefix = "system_lib_prefix"
constexpr

A prefix for generating C symbols system lib creation.

This prefix guides passes that creates global_symbol for internal functions that may have c linkage (e.g. TIR functions and some BYOC functions). It also affects the symbol of the fat bin blob during module export.

This attribute is used to avoid symbol conflict when we generate and combine multiple system libs that get linked into one.

Rationale: mechanisms like BYOC rely on the common global symbol and each external compiler also has its own mechanism of mangling. As a result, we cannot rely on other mechanisms on setting a global_symbol and then renaming, because the external compiler already agreed on the name.

system_lib_prefix provides a way to hint at the passes to allow names to avoid name conflict at the beginning.

Note that users can still directly specify global symbols that may conflict. It is up to the downstream toolchain to manage those external-facing functions.

This does not affect non-C linkage functions it is less of an issue because they will be embedded into fatbin that in different symbols, The system lib loader can pick the right prefix for a given prefix.

Having this attribute implies system lib generation linkage.

◆ kTarget

constexpr const char* tvm::attr::kTarget = "target"
constexpr

Compilation target of the function.

Type: Target

See also
tvm::Target