当前位置: 首页 > backend >正文

GPU虚拟化实现(四)

GPU虚拟化实现(四)

  • 章节回顾
  • 拦截CUDA函数流程
    • 初始化列表
    • 开始拦截
    • 拦截之后的处理
  • 总结

章节回顾

在上一章,我们分析了项目拦截NVML函数的流程以及代码的实现,在这一章,将会分析项目拦截CUDA函数的流程以及代码的实现。其实流程本身与拦截NVML函数是一致的。

拦截CUDA函数流程

初始化列表

在hook.c中同样有一个cuda列表

cuda_entry_t cuda_library_entry[] = {/* Init Part    */ {.name = "cuInit"},/* Deivce Part */{.name = "cuDeviceGetAttribute"},{.name = "cuDeviceGet"},{.name = "cuDeviceGetCount"},{.name = "cuDeviceGetName"},{.name = "cuDeviceCanAccessPeer"},{.name = "cuDeviceGetP2PAttribute"},{.name = "cuDeviceGetByPCIBusId"},{.name = "cuDeviceGetPCIBusId"},{.name = "cuDeviceGetUuid"},{.name = "cuDeviceGetDefaultMemPool"},{.name = "cuDeviceGetLuid"},{.name = "cuDeviceGetMemPool"},{.name = "cuDeviceTotalMem_v2"},{.name = "cuDriverGetVersion"},{.name = "cuDeviceGetTexture1DLinearMaxWidth"},{.name = "cuDeviceSetMemPool"},{.name = "cuFlushGPUDirectRDMAWrites"},/* Context Part */{.name = "cuDevicePrimaryCtxGetState"},{.name = "cuDevicePrimaryCtxRetain"},{.name = "cuDevicePrimaryCtxSetFlags_v2"},{.name = "cuDevicePrimaryCtxRelease_v2"},{.name = "cuCtxGetDevice"},{.name = "cuCtxCreate_v2"},{.name = "cuCtxDestroy_v2"},{.name = "cuCtxGetApiVersion"},{.name = "cuCtxGetCacheConfig"},{.name = "cuCtxGetCurrent"},{.name = "cuCtxGetFlags"},{.name = "cuCtxGetLimit"},{.name = "cuCtxGetSharedMemConfig"},{.name = "cuCtxGetStreamPriorityRange"},{.name = "cuCtxPopCurrent_v2"},{.name = "cuCtxPushCurrent_v2"},{.name = "cuCtxSetCacheConfig"},{.name = "cuCtxSetCurrent"},{.name = "cuCtxSetLimit"},{.name = "cuCtxSetSharedMemConfig"},{.name = "cuCtxSynchronize"},//{.name = "cuCtxEnablePeerAccess"},{.name = "cuGetExportTable"},/* Stream Part */{.name = "cuStreamCreate"},{.name = "cuStreamDestroy_v2"},{.name = "cuStreamSynchronize"},/* Memory Part */{.name = "cuArray3DCreate_v2"},{.name = "cuArrayCreate_v2"},{.name = "cuArrayDestroy"},{.name = "cuMemAlloc_v2"},{.name = "cuMemAllocHost_v2"},{.name = "cuMemAllocManaged"},{.name = "cuMemAllocPitch_v2"},{.name = "cuMemFree_v2"},{.name = "cuMemFreeHost"},{.name = "cuMemHostAlloc"},{.name = "cuMemHostRegister_v2"},{.name = "cuMemHostUnregister"},{.name = "cuMemcpyDtoH_v2"},{.name = "cuMemcpyHtoD_v2"},{.name = "cuMipmappedArrayCreate"},{.name = "cuMipmappedArrayDestroy"},{.name = "cuMemGetInfo_v2"},{.name = 
http://www.xdnf.cn/news/2863.html

相关文章:

  • XMOS人工智能降噪——AI降噪让极端嘈杂环境下的通话和拾音变得可能
  • 说说stack reconciler 和fiber reconciler
  • 算法题(136):逛画展
  • 如何利用谷歌趋势精确估算关键词搜索量?
  • DDI0487--A1.3
  • 阿里云服务器云盘扩容
  • 【Machine Learning Q and AI 读书笔记】- 01 嵌入、潜空间和表征
  • 更新日期自动填充
  • LeetCode 热题 100_最小路径和(92_64_中等_C++)(多维动态规划)
  • TypeScript之type
  • IEEE会议:第十届网络安全与信息工程国际会议(ICCSIE 2025)
  • 资产定位解决方案:蓝牙Beacon如何实现低成本高效追踪
  • 【Android】谈谈DexClassLoader
  • dx11 龙书学习 第四章 dx11 准备工作
  • Unity AI-使用Ollama本地大语言模型运行框架运行本地Deepseek等模型实现聊天对话(二)
  • 天梯——链表去重
  • 基于STM32、HAL库的ATSHA204A安全验证及加密芯片驱动程序设计
  • 深度学习大模型: AI 阅卷替代人工阅卷
  • Field访问对象int字段,对象访问int字段,通过openjdk17 C++源码看对象字段访问原理
  • J-Link RTT打印输出调试信息
  • 深入蜂窝物联网:第二章 深度解读 NB-IoT:协议栈、部署与典型应用
  • 两地三中心
  • MySQL数据库(14)—— 使用C操作MySQL
  • 【ACL系列论文写作指北03-相关工作怎么写】-展示视野与定位创新
  • leetcode283-移动零
  • 第二章 信息技术发展(2.2 新一代信息技术及应用)
  • Linux428 chmod 0xxx 1xxx 2xxx 4xxx;umask;chown 属主属组 软件包rpm
  • ECharts散点图-散点图20,附视频讲解与代码下载
  • php数据库连接
  • Docker安装的mysql限制ip访问