cuda跟踪仿真-需要一些专家见解

cuda跟踪仿真-需要一些专家见解,cuda,Cuda,作为研究生院研究工作的一部分,我正在windows中开发gpu跟踪仿真工具。具体来说,我正在进行cuda运行时跟踪仿真 我使用MS Detours的简单DLL注入来拦截cuda运行时API。我将API调用及其参数存储在跟踪文件中。我在尝试从跟踪文件模拟API时遇到了一些问题(我使用单词playback来表示此操作) 典型的跟踪文件首先调用uu cudaRegisterFatBinary和u cudaRegisterFunction。接下来是对Cudamaloc的呼叫 我做了什么 1) 我偶然发现

作为研究生院研究工作的一部分,我正在windows中开发gpu跟踪仿真工具。具体来说,我正在进行cuda运行时跟踪仿真

我使用MS Detours的简单DLL注入来拦截cuda运行时API。我将API调用及其参数存储在跟踪文件中。我在尝试从跟踪文件模拟API时遇到了一些问题(我使用单词playback来表示此操作)

典型的跟踪文件首先调用uu cudaRegisterFatBinary和u cudaRegisterFunction。接下来是对Cudamaloc的呼叫

我做了什么

1) 我偶然发现了著名的GPUOcelot,我发现了Nvidia目前正在使用的立体结构。我用它来在截取模式下保存cudaRegisterFatBinary的地址参数,并通过在内存中重新填充结构来使用回放中的指针

2) 在_cudaRegisterFunction中,我不确定hostFunction、Device Function和Device Name参数指的是什么。我的意思是,我不明白如何在从跟踪文件播放时填充它。我只是从原始执行中保存指针,并使用它来模拟调用。但由于函数没有返回值,因此无法知道该函数是否正常运行

3) 这两个入口点函数后面的cudaMalloc返回cuda错误代码11。根据英伟达文档,它是CUDA无效值。我不知道为什么会这样。我假设前两个函数调用有问题。我还觉得cuda运行时隐式主上下文创建有问题。有人能给我一些关于cuda运行时执行的见解,并指出我可能缺少什么吗

我知道这是一堆没有任何有用代码的信息。我不知道该在这里发布代码的哪一部分。当人们开始对我的问题感兴趣并问我关于我的项目的具体问题时,我会这样做。起初,我只是希望我错过了一些你们中的一位能够发现的重大而高层次的东西


我非常感谢你的时间和兴趣

总的来说,听起来很有趣。您的“错误:Cuda无效值”可能与_cudaRegisterFunction的参数有关。参数“DeviceName”听起来像是标识要使用的GPU(卡?)。检查CUDA SDK,系统上有许多枚举GPU的演示,也许这些值对“DeviceName”有效。至于“hostFunction”和“deviceFunction”,它们听起来像函数ID,或者可能像函数指针。此外,还可以调用“cudaGetLastError()”来测试函数调用是否成功(如果一切正常,它将返回“cudaSuccess”…请查看sdk中的错误日志宏)。祝你好运

总的来说,听起来很有趣。您的“错误:Cuda无效值”可能与_cudaRegisterFunction的参数有关。参数“DeviceName”听起来像是标识要使用的GPU(卡?)。检查CUDA SDK,系统上有许多枚举GPU的演示,也许这些值对“DeviceName”有效。至于“hostFunction”和“deviceFunction”,它们听起来像函数ID,或者可能像函数指针。此外,还可以调用“cudaGetLastError()”来测试函数调用是否成功(如果一切正常,它将返回“cudaSuccess”…请查看sdk中的错误日志宏)。祝你好运