6.12. 库管理
本节介绍底层 CUDA 驱动程序应用程序编程接口的库管理功能。
函数
- CUresult cuKernelGetAttribute ( int* pi, CUfunction_attribute attrib, CUkernel kernel, CUdevice dev )
- 返回有关内核的信息。
- CUresult cuKernelGetFunction ( CUfunction* pFunc, CUkernel kernel )
- 返回函数句柄。
- CUresult cuKernelGetLibrary ( CUlibrary* pLib, CUkernel kernel )
- 返回库句柄。
- CUresult cuKernelGetName ( const char** name, CUkernel hfunc )
- 返回 CUkernel 句柄的函数名称。
- CUresult cuKernelGetParamInfo ( CUkernel kernel, size_t paramIndex, size_t* paramOffset, size_t* paramSize )
- 返回设备端参数布局中内核参数的偏移量和大小。
- CUresult cuKernelSetAttribute ( CUfunction_attribute attrib, int val, CUkernel kernel, CUdevice dev )
- 设置有关内核的信息。
- CUresult cuKernelSetCacheConfig ( CUkernel kernel, CUfunc_cache config, CUdevice dev )
- 为设备内核设置首选缓存配置。
- CUresult cuLibraryEnumerateKernels ( CUkernel* kernels, unsigned int numKernels, CUlibrary lib )
- 检索库中的内核句柄。
- CUresult cuLibraryGetGlobal ( CUdeviceptr* dptr, size_t* bytes, CUlibrary library, const char* name )
- 返回全局设备指针。
- CUresult cuLibraryGetKernel ( CUkernel* pKernel, CUlibrary library, const char* name )
- 返回内核句柄。
- CUresult cuLibraryGetKernelCount ( unsigned int* count, CUlibrary lib )
- 返回库中内核的数量。
- CUresult cuLibraryGetManaged ( CUdeviceptr* dptr, size_t* bytes, CUlibrary library, const char* name )
- 返回指向托管内存的指针。
- CUresult cuLibraryGetModule ( CUmodule* pMod, CUlibrary library )
- 返回模块句柄。
- CUresult cuLibraryGetUnifiedFunction ( void** fptr, CUlibrary library, const char* symbol )
- 返回指向统一函数的指针。
- CUresult cuLibraryLoadData ( CUlibrary* library, const void* code, CUjit_option* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, CUlibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions )
- 加载具有指定代码和选项的库。
- CUresult cuLibraryLoadFromFile ( CUlibrary* library, const char* fileName, CUjit_option* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, CUlibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions )
- 加载具有指定文件和选项的库。
- CUresult cuLibraryUnload ( CUlibrary library )
- 卸载库。
函数
- CUresult cuKernelGetAttribute ( int* pi, CUfunction_attribute attrib, CUkernel kernel, CUdevice dev )
-
返回有关内核的信息。
参数
- pi
- - 返回的属性值
- attrib
- - 请求的属性
- kernel
- - 要查询属性的内核
- dev
- - 要查询属性的设备
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
在*pi中返回属性的整数值attrib对于内核kernel对于请求的设备dev。支持的属性有
-
CU_FUNC_ATTRIBUTE_MAX_THREADS_PER_BLOCK:每个块的最大线程数,超过此数目内核的启动将失败。此数字取决于内核和请求的设备。
-
CU_FUNC_ATTRIBUTE_SHARED_SIZE_BYTES:此内核所需的每个块的静态分配共享内存的大小(以字节为单位)。这不包括用户在运行时请求的动态分配的共享内存。
-
CU_FUNC_ATTRIBUTE_CONST_SIZE_BYTES:此内核所需的用户分配的常量内存的大小(以字节为单位)。
-
CU_FUNC_ATTRIBUTE_LOCAL_SIZE_BYTES:此内核的每个线程使用的本地内存的大小(以字节为单位)。
-
CU_FUNC_ATTRIBUTE_NUM_REGS:此内核的每个线程使用的寄存器数量。
-
CU_FUNC_ATTRIBUTE_PTX_VERSION:编译内核所针对的 PTX 虚拟架构版本。此值是 PTX 主版本 * 10 + PTX 次版本,因此 PTX 版本 1.3 函数将返回值 13。请注意,对于在 CUDA 3.0 之前编译的 cubin,这可能会返回未定义的 0 值。
-
CU_FUNC_ATTRIBUTE_BINARY_VERSION:编译内核所针对的二进制架构版本。此值是二进制主版本 * 10 + 二进制次版本,因此二进制版本 1.3 函数将返回值 13。请注意,对于没有正确编码的二进制架构版本的旧版 cubin,这将返回值 10。
-
CU_FUNC_CACHE_MODE_CA:指示内核是否已使用用户指定的选项“-Xptxas --dlcm=ca”集编译的属性。
-
CU_FUNC_ATTRIBUTE_MAX_DYNAMIC_SHARED_SIZE_BYTES:动态分配共享内存的最大大小(以字节为单位)。
-
CU_FUNC_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT:首选的共享内存-L1 缓存分割比率,占总共享内存的百分比。
-
CU_FUNC_ATTRIBUTE_CLUSTER_SIZE_MUST_BE_SET:如果设置了此属性,则内核必须使用指定的有效集群大小启动。
-
CU_FUNC_ATTRIBUTE_REQUIRED_CLUSTER_WIDTH:块中所需的集群宽度。
-
CU_FUNC_ATTRIBUTE_REQUIRED_CLUSTER_HEIGHT:块中所需的集群高度。
-
CU_FUNC_ATTRIBUTE_REQUIRED_CLUSTER_DEPTH:块中所需的集群深度。
-
CU_FUNC_ATTRIBUTE_NON_PORTABLE_CLUSTER_SIZE_ALLOWED:指示是否可以使用非便携式集群大小启动函数。1 表示允许,0 表示不允许。非便携式集群大小可能仅在程序测试的特定 SKU 上起作用。如果程序在不同的硬件平台上运行,则启动可能会失败。CUDA API 提供 cudaOccupancyMaxActiveClusters 来帮助检查所需的尺寸是否可以在当前设备上启动。便携式集群大小保证在高于目标计算能力的所有计算能力上都能正常工作。sm_90 的便携式集群大小为每个集群 8 个块。此值可能会在未来的计算能力中增加。特定的硬件单元可能支持更高的集群大小,但这不能保证是便携式的。
-
CU_FUNC_ATTRIBUTE_CLUSTER_SCHEDULING_POLICY_PREFERENCE:函数的块调度策略。值类型为 CUclusterSchedulingPolicy。
注意如果另一个线程尝试使用 cuKernelSetAttribute() 同时在同一设备上设置相同的属性,则属性查询将给出旧值或新值,具体取决于操作系统调度程序和内存一致性选择的交错。
另请参阅
cuLibraryLoadData, cuLibraryLoadFromFile, cuLibraryUnload, cuKernelSetAttribute, cuLibraryGetKernel, cuLaunchKernel, cuKernelGetFunction, cuLibraryGetModule, cuModuleGetFunction, cuFuncGetAttribute
- CUresult cuKernelGetFunction ( CUfunction* pFunc, CUkernel kernel )
-
返回函数句柄。
参数
- pFunc
- - 返回的函数句柄
- kernel
- - 用于检索请求上下文中函数的内核
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_NOT_FOUND, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_CONTEXT_IS_DESTROYED
描述
在pFunc请求的内核和当前上下文的函数句柄。如果未找到函数句柄,则调用返回 CUDA_ERROR_NOT_FOUND。kerneland the current context. If function handle is not found, the call returns CUDA_ERROR_NOT_FOUND.
另请参阅
cuLibraryLoadData, cuLibraryLoadFromFile, cuLibraryUnload, cuLibraryGetKernel, cuLibraryGetModule, cuModuleGetFunction
- CUresult cuKernelGetLibrary ( CUlibrary* pLib, CUkernel kernel )
-
返回库句柄。
参数
- pLib
- - 返回的库句柄
- kernel
- - 用于检索库句柄的内核
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_NOT_FOUND
描述
在pLib请求的内核的库句柄kernel
另请参阅
cuLibraryLoadData, cuLibraryLoadFromFile, cuLibraryUnload, cuLibraryGetKernel
- CUresult cuKernelGetName ( const char** name, CUkernel hfunc )
-
返回 CUkernel 句柄的函数名称。
参数
- name
- - 返回的函数名称
- hfunc
- - 要检索名称的函数句柄
描述
在**name与内核句柄关联的函数名称hfunc。函数名称以空终止字符串返回。仅当内核句柄有效时,返回的名称才有效。如果库被卸载或重新加载,则必须再次调用 API 才能获取更新的名称。如果函数未声明为具有 C 链接,则此 API 可能会返回损坏的名称。如果**name或hfunc为 NULL,则返回 CUDA_ERROR_INVALID_VALUE。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
- CUresult cuKernelGetParamInfo ( CUkernel kernel, size_t paramIndex, size_t* paramOffset, size_t* paramSize )
-
返回设备端参数布局中内核参数的偏移量和大小。
参数
- kernel
- - 要查询的内核
- paramIndex
- - 要查询的参数索引
- paramOffset
- - 返回参数所在的设备端参数布局中的偏移量
- paramSize
- - 可选地返回设备端参数布局中参数的大小
描述
查询paramIndexkernel的参数列表中的参数,并在paramOffset和paramSize中分别返回参数在设备端参数布局中的偏移量和大小。此信息可用于通过 cudaGraphKernelNodeSetParam() 和 cudaGraphKernelNodeUpdatesApply() 从设备更新内核节点参数。paramIndex必须小于kernelkernelparamSize接受的参数数量。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
设置为 NULL。 - CUresult cuKernelSetAttribute ( CUfunction_attribute attrib, int val, CUkernel kernel, CUdevice dev )
-
设置关于内核的信息。
参数
- attrib
- - 请求的属性
- val
- - 要设置的值
- kernel
- - 要设置属性的内核
- dev
- - 要设置属性的设备
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE, CUDA_ERROR_OUT_OF_MEMORY
描述
此调用设置指定属性的值attrib在内核上kernel对于请求的设备dev为指定的整数值val。如果成功设置了属性的新值,此函数返回 CUDA_SUCCESS。如果设置失败,此调用将返回错误。并非所有属性都可以设置值。尝试设置只读属性的值将导致错误 (CUDA_ERROR_INVALID_VALUE)。
请注意,使用 cuFuncSetAttribute() 设置的属性将覆盖此 API 设置的属性,无论对 cuFuncSetAttribute() 的调用是在此 API 调用之前还是之后进行的。cuKernelGetAttribute() 始终返回由此 API 设置的属性值。
支持的属性有
-
CU_FUNC_ATTRIBUTE_MAX_DYNAMIC_SHARED_SIZE_BYTES:这是动态分配的共享内存的最大大小(以字节为单位)。该值应包含请求的动态分配的共享内存的最大大小。此值与函数属性 CU_FUNC_ATTRIBUTE_SHARED_SIZE_BYTES 的总和不能超过设备属性 CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK_OPTIN。可请求的最大动态共享内存大小可能因 GPU 架构而异。
-
CU_FUNC_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT:在 L1 缓存和共享内存使用相同硬件资源的设备上,此属性设置共享内存划分首选项,以占总共享内存的百分比表示。请参阅 CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_MULTIPROCESSOR。这只是一个提示,驱动程序可以在执行函数时根据需要选择不同的比率。
-
CU_FUNC_ATTRIBUTE_REQUIRED_CLUSTER_WIDTH:所需的集群宽度(以块为单位)。宽度、高度和深度值必须全部为 0 或全部为正数。集群维度的有效性在启动时进行检查。如果在编译时设置了该值,则无法在运行时设置。在运行时设置它将返回 CUDA_ERROR_NOT_PERMITTED。
-
CU_FUNC_ATTRIBUTE_REQUIRED_CLUSTER_HEIGHT:所需的集群高度(以块为单位)。宽度、高度和深度值必须全部为 0 或全部为正数。集群维度的有效性在启动时进行检查。如果在编译时设置了该值,则无法在运行时设置。在运行时设置它将返回 CUDA_ERROR_NOT_PERMITTED。
-
CU_FUNC_ATTRIBUTE_REQUIRED_CLUSTER_DEPTH:所需的集群深度(以块为单位)。宽度、高度和深度值必须全部为 0 或全部为正数。集群维度的有效性在启动时进行检查。如果在编译时设置了该值,则无法在运行时设置。在运行时设置它将返回 CUDA_ERROR_NOT_PERMITTED。
-
CU_FUNC_ATTRIBUTE_NON_PORTABLE_CLUSTER_SIZE_ALLOWED:指示是否可以使用不可移植的集群大小启动函数。1 表示允许,0 表示不允许。
-
CU_FUNC_ATTRIBUTE_CLUSTER_SCHEDULING_POLICY_PREFERENCE:函数的块调度策略。值类型为 CUclusterSchedulingPolicy。
注意与传统的 cuFuncSetAttribute() 相比,此 API 由于设备范围的语义,具有更严格的锁定要求。如果多个线程尝试同时在同一设备上设置相同的属性,则属性设置将取决于操作系统调度程序和内存一致性选择的交错。
另请参阅
cuLibraryLoadData, cuLibraryLoadFromFile, cuLibraryUnload, cuKernelGetAttribute, cuLibraryGetKernel, cuLaunchKernel, cuKernelGetFunction, cuLibraryGetModule, cuModuleGetFunction, cuFuncSetAttribute
- CUresult cuKernelSetCacheConfig ( CUkernel kernel, CUfunc_cache config, CUdevice dev )
-
为设备内核设置首选缓存配置。
参数
- kernel
- - 要为其配置缓存的内核
- config
- - 请求的缓存配置
- dev
- - 要设置属性的设备
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE, CUDA_ERROR_OUT_OF_MEMORY
描述
在 L1 缓存和共享内存使用相同硬件资源的设备上,这将通过以下方式设置config设备内核的首选缓存配置kernel在请求的设备上dev。这只是一个首选项。驱动程序将在可能的情况下使用请求的配置,但如果需要执行kernel,则可以自由选择不同的配置。通过 cuCtxSetCacheConfig() 设置的任何上下文范围的首选项将被此每个内核的设置覆盖。
请注意,使用 cuFuncSetCacheConfig() 设置的属性将覆盖此 API 设置的属性,无论对 cuFuncSetCacheConfig() 的调用是在此 API 调用之前还是之后进行的。
在 L1 缓存和共享内存大小固定的设备上,此设置不起作用。
使用与最近首选项设置不同的首选项启动内核可能会插入设备端同步点。
支持的缓存配置有
-
CU_FUNC_CACHE_PREFER_NONE:对共享内存或 L1 没有偏好(默认)
-
CU_FUNC_CACHE_PREFER_SHARED:首选更大的共享内存和更小的 L1 缓存
-
CU_FUNC_CACHE_PREFER_L1:首选更大的 L1 缓存和更小的共享内存
-
CU_FUNC_CACHE_PREFER_EQUAL:首选大小相等的 L1 缓存和共享内存
注意与传统的 cuFuncSetCacheConfig() 相比,此 API 由于设备范围的语义,具有更严格的锁定要求。如果多个线程尝试同时在同一设备上设置配置,则缓存配置设置将取决于操作系统调度程序和内存一致性选择的交错。
另请参阅
cuLibraryLoadData, cuLibraryLoadFromFile, cuLibraryUnload, cuLibraryGetKernel, cuKernelGetFunction, cuLibraryGetModule, cuModuleGetFunction, cuFuncSetCacheConfig, cuCtxSetCacheConfig, cuLaunchKernel
- CUresult cuLibraryEnumerateKernels ( CUkernel* kernels, unsigned int numKernels, CUlibrary lib )
-
检索库中的内核句柄。
参数
- kernels
- - 返回内核句柄的缓冲区
- numKernels
- - 可以返回到缓冲区的最大内核句柄数
- lib
- - 要从中查询的库
- CUresult cuLibraryGetGlobal ( CUdeviceptr* dptr, size_t* bytes, CUlibrary library, const char* name )
-
返回全局设备指针。
参数
- dptr
- - 为请求的上下文返回的全局设备指针
- bytes
- - 返回的全局大小(以字节为单位)
- library
- - 要从中检索全局变量的库
- name
- - 要检索的全局变量的名称
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_NOT_FOUND, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_CONTEXT_IS_DESTROYED
描述
在*dptr和*bytes具有名称的全局变量的基指针和大小name对于请求的库library和当前上下文。如果不存在请求名称的全局变量name,则调用返回 CUDA_ERROR_NOT_FOUND。参数之一dptr或bytes(不是两个)可以为 NULL,在这种情况下将被忽略。
另请参阅
cuLibraryLoadData, cuLibraryLoadFromFile, cuLibraryUnload, cuLibraryGetModule, cuModuleGetGlobal
- CUresult cuLibraryGetKernel ( CUkernel* pKernel, CUlibrary library, const char* name )
-
返回内核句柄。
参数
- pKernel
- - 返回的内核句柄
- library
- - 要从中检索内核的库
- name
- - 要检索的内核的名称
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_NOT_FOUND
描述
在pKernel具有名称的内核的句柄name位于库中library。如果未找到内核句柄,则调用返回 CUDA_ERROR_NOT_FOUND。
另请参阅
cuLibraryLoadData, cuLibraryLoadFromFile, cuLibraryUnload, cuKernelGetFunction, cuLibraryGetModule, cuModuleGetFunction
- CUresult cuLibraryGetKernelCount ( unsigned int* count, CUlibrary lib )
-
返回库中内核的数量。
参数
- count
- - 在库中找到的内核数量
- lib
- - 要查询的库
描述
在count内核的数量在lib.
- CUresult cuLibraryGetManaged ( CUdeviceptr* dptr, size_t* bytes, CUlibrary library, const char* name )
-
返回指向托管内存的指针。
参数
- dptr
- - 返回的指向托管内存的指针
- bytes
- - 返回的内存大小(以字节为单位)
- library
- - 要从中检索托管内存的库
- name
- - 要检索的托管内存的名称
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_NOT_FOUND
描述
在*dptr和*bytes具有名称的托管内存的基指针和大小name对于请求的库library。如果没有具有请求名称的托管内存name,则调用返回 CUDA_ERROR_NOT_FOUND。参数之一dptr或bytes(不是两个)可以为 NULL,在这种情况下将被忽略。请注意,库的托管内存library在设备之间共享,并且在库加载到至少一个上下文中时注册。
另请参阅
- CUresult cuLibraryGetModule ( CUmodule* pMod, CUlibrary library )
-
返回模块句柄。
参数
- pMod
- - 返回的模块句柄
- library
- - 要从中检索模块的库
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_NOT_FOUND, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_CONTEXT_IS_DESTROYED
描述
在pMod与当前上下文关联的模块句柄,位于库中library。如果未找到模块句柄,则调用返回 CUDA_ERROR_NOT_FOUND。
另请参阅
cuLibraryLoadData, cuLibraryLoadFromFile, cuLibraryUnload, cuModuleGetFunction
- CUresult cuLibraryGetUnifiedFunction ( void** fptr, CUlibrary library, const char* symbol )
-
返回指向统一函数的指针。
参数
- fptr
- - 返回的指向统一函数的指针
- library
- - 要从中检索函数指针内存的库
- symbol
- - 要检索的函数指针的名称
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_NOT_FOUND
描述
在*fptr指向由以下项表示的统一函数的函数指针symbol。如果没有具有名称的统一函数symbol,则调用返回 CUDA_ERROR_NOT_FOUND。如果系统中没有具有属性 CU_DEVICE_ATTRIBUTE_UNIFIED_FUNCTION_POINTERS 的设备,则调用可能返回 CUDA_ERROR_NOT_FOUND。
另请参阅
- CUresult cuLibraryLoadData ( CUlibrary* library, const void* code, CUjit_option* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, CUlibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions )
-
使用指定的代码和选项加载库。
参数
- library
- - 返回的库
- code
- - 要加载的代码
- jitOptions
- - JIT 的选项
- jitOptionsValues
- - JIT 的选项值
- numJitOptions
- - 选项的数量
- libraryOptions
- - 加载的选项
- libraryOptionValues
- - 加载的选项值
- numLibraryOptions
- - 加载的选项数量
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_PTX, CUDA_ERROR_UNSUPPORTED_PTX_VERSION, CUDA_ERROR_OUT_OF_MEMORY, CUDA_ERROR_NO_BINARY_FOR_GPU, CUDA_ERROR_SHARED_OBJECT_SYMBOL_NOT_FOUND, CUDA_ERROR_SHARED_OBJECT_INIT_FAILED, CUDA_ERROR_JIT_COMPILER_NOT_FOUND, CUDA_ERROR_NOT_SUPPORTED
描述
接受一个指针code并加载相应的库library基于应用程序定义的库加载模式。
-
如果模块加载通过“模块加载”中描述的环境变量设置为 EAGER,library则在调用时急切地加载到所有上下文中,并在创建时加载到未来的上下文中,直到使用 cuLibraryUnload() 卸载库为止。
-
如果环境变量设置为 LAZY,library则不会立即加载到所有现有上下文中,并且仅在需要该上下文的函数时(例如内核启动)才加载。
这些环境变量在 CUDA 编程指南的“CUDA 环境变量”部分中描述。
该code可以是 nvcc 输出的 cubin 或 fatbin,也可以是 nvcc 输出或手写的以 NULL 结尾的 PTX。在进行单独编译时,fatbin 也应包含可重定位的代码。
选项通过数组传递jitOptions,并且任何相应的参数都在其中传递jitOptionsValues。JIT 选项的总数通过以下方式提供numJitOptions。任何输出都将通过以下方式返回jitOptionsValues.
库加载选项通过数组传递libraryOptions,并且任何相应的参数都在其中传递libraryOptionValues。库加载选项的总数通过以下方式提供numLibraryOptions.
注意如果库包含托管变量,并且系统中没有设备支持托管变量,则此调用预计返回 CUDA_ERROR_NOT_SUPPORTED。
另请参阅
cuLibraryLoadFromFile, cuLibraryUnload, cuModuleLoad, cuModuleLoadData, cuModuleLoadDataEx
- CUresult cuLibraryLoadFromFile ( CUlibrary* library, const char* fileName, CUjit_option* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, CUlibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions )
-
使用指定的文件和选项加载库。
参数
- library
- - 返回的库
- fileName
- - 要从中加载的文件
- jitOptions
- - JIT 的选项
- jitOptionsValues
- - JIT 的选项值
- numJitOptions
- - 选项的数量
- libraryOptions
- - 加载的选项
- libraryOptionValues
- - 加载的选项值
- numLibraryOptions
- - 加载的选项数量
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_PTX, CUDA_ERROR_UNSUPPORTED_PTX_VERSION, CUDA_ERROR_OUT_OF_MEMORY, CUDA_ERROR_NO_BINARY_FOR_GPU, CUDA_ERROR_SHARED_OBJECT_SYMBOL_NOT_FOUND, CUDA_ERROR_SHARED_OBJECT_INIT_FAILED, CUDA_ERROR_JIT_COMPILER_NOT_FOUND, CUDA_ERROR_NOT_SUPPORTED
描述
接受一个指针code并加载相应的库library基于应用程序定义的库加载模式。
-
如果模块加载通过“模块加载”中描述的环境变量设置为 EAGER,library则在调用时急切地加载到所有上下文中,并在创建时加载到未来的上下文中,直到使用 cuLibraryUnload() 卸载库为止。
-
如果环境变量设置为 LAZY,library则不会立即加载到所有现有上下文中,并且仅在需要该上下文的函数时(例如内核启动)才加载。
这些环境变量在 CUDA 编程指南的“CUDA 环境变量”部分中描述。
该文件应该是 nvcc 输出的 cubin 文件,或者 nvcc 输出或手写的 PTX 文件,或者 nvcc 输出的 fatbin 文件。在进行单独编译时,fatbin 也应包含可重定位的代码。
选项通过数组传递jitOptions,并且任何相应的参数都在其中传递jitOptionsValues。选项总数通过以下方式提供numJitOptions。任何输出都将通过以下方式返回jitOptionsValues.
库加载选项通过数组传递libraryOptions,并且任何相应的参数都在其中传递libraryOptionValues。库加载选项的总数通过以下方式提供numLibraryOptions.
注意如果库包含托管变量,并且系统中没有设备支持托管变量,则此调用预计返回 CUDA_ERROR_NOT_SUPPORTED。
另请参阅
cuLibraryLoadData, cuLibraryUnload, cuModuleLoad, cuModuleLoadData, cuModuleLoadDataEx
- CUresult cuLibraryUnload ( CUlibrary library )
-
卸载库。
参数
- library
- - 要卸载的库