无法找到迁移的 dpcpp 输出文件,并且 dpct 响应为“不需要迁移”

Posted

技术标签:

【中文标题】无法找到迁移的 dpcpp 输出文件,并且 dpct 响应为“不需要迁移”【英文标题】:Not able to find a migrated dpcpp output file and dpct responds as "Migration not necessary" 【发布时间】:2021-06-07 12:41:44 【问题描述】:

我正在尝试使用 dpct 迁移我的 cuda 应用程序。调用 dpct 时;我看到它处理 CUDA 文件并生成一些良性警告,但最后它退出而没有写出任何 DPC++ 等效文件。我可以清楚地看到这些应用程序中调用的 CUDA 函数,并且删除 CUDA 路径会使编译过程失败。这是命令我用过

$ dpct --report-type=all --cuda-include-path=/usr/local/cuda-10.2/include -p compile_commands.json"

我已经消除了文件的实际物理路径以避免混淆:

Processing: ....../ComputeThermoGPU.cu
Processing: ....../CommunicatorGPU.cu
Processing: ....../ParticleData.cu
Processing: ....../Integrator.cu
------------------APIS report--------------------
API name Frequency
------------------------------------------------- 
----------Stats report---------------
File name, LOC migrated to DPC++, LOC migrated to helper functions, LOC not needed to migrate, 
LOC not able to migrate
....../Integrator.cu, 1, 0, 168, 0
....../ParticleData.cu, 1, 0, 402, 0
....../ComputeThermoGPU.cu, 1, 0, 686, 0
....../ParticleGroup.cu, 6, 0, 111, 0
Total migration time: 17207.371000 ms
-------------------------------------
dpct exited with code: 1 (Migration not necessary)```

【问题讨论】:

【参考方案1】:

我可以为自己的问题找到解决方案 采用 dpct -p compile_commands.json --in-root=src --out-root=dpct_out --process-all

我认为原因可能是由于缺少驱动程序代码(包含主函数),DPCT 认为由于这些辅助 .cu 文件无论如何都没有被使用,因此无需对这些文件执行迁移。这就是您看到“不需要迁移”警告的原因。

【讨论】:

以上是关于无法找到迁移的 dpcpp 输出文件,并且 dpct 响应为“不需要迁移”的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Intel oneAPI DPCT 迁移我的应用程序:错误代码 -5

Sycl 部分+ DPCPP 中的互相关和错误

win10蓝屏dpc_watchdog

sycl/dpc++ 使用全局指针访问全局变量

迁移到 Qt5 时无法在子目录中找到头文件

如何使用 Profiling+openCL+Sycl+DPCPP 测量 GPU 的执行时间