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

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 = 

相关文章:

  • [实战] IRIG-B协议详解及Verilog实现(完整代码)
  • 【重走C++学习之路】22、C++11语法
  • vim粘贴代码格式错乱 排版错乱 缩进错乱 解决方案
  • C++(初阶)(十四)——多态
  • 程序进程多任务线程
  • el-dialog弹窗关闭时调了两次刷新数据的接口
  • Linux文件的一般权限
  • 在Spark集群中搭建Standalone
  • 2025“钉耙编程”中国大学生算法设计春季联赛(8)10031007
  • 嵌入式开发学习日志Day11
  • 【403 Error】Atcoder Beginner Contest 403 题解
  • Redo log,Undo log和binlog
  • 系统思考提升培训效能
  • 培养一个输出型的爱好
  • 【Git】项目多个分支开发、维护与优化处理 ing
  • miniconda在ARM64位芯片上面的安装
  • Windows应用-屏幕截图
  • 解决 shadui组件库Popover 点击后会消失
  • 【蓝桥杯省赛真题58】Scratch画台扇 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解
  • 人工智能与机器学习:Python从零实现K-Means 算法
  • 体坛联播|安切洛蒂预计执教巴西国家队,利拉德确诊跟腱撕裂
  • 伊朗国防部发言人:发生爆炸的港口无进出口军用物资
  • 孟泽:我们简化了历史,因此也简化了人性
  • 视频丨伊朗阿巴斯港一处油罐发生高强度爆炸:造成大面积破坏,伤亡不明
  • 乌方称泽连斯基与特朗普进行简短会谈
  • 价格周报|猪价继续回暖:二次育肥热度仍存,对猪价仍有一定支撑