【发布时间】:2023-03-26 18:43:01
【问题描述】:
我正在尝试修改用 C 编写的 GPL 程序。我的目标是用 CUDA 实现替换一种方法,这意味着我需要使用 nvcc 而不是 gcc 进行编译。我需要帮助来构建项目 - 而不是实施它(我认为您不需要了解任何有关 CUDA C 的信息来提供帮助)。
这是我第一次尝试更改涉及 .configure 和 Makefile 的中等复杂度的 C 项目。老实说,这是我很长时间以来第一次在 C 中做任何事情,包括涉及 gcc 或 g++ 的任何事情,所以我很迷茫。
我对学习配置和 Makefile 不是很感兴趣——这更像是一个实验。在花时间创建正确的构建脚本之前,我想看看项目实施是否顺利。 (不是不愿意学习必要的,只是想给出一个范围的想法)。
话虽如此,我在构建这个项目时有哪些选择?我有无数的问题...
我尝试在 AC_PROG_CC 之后将“CC=nvcc”添加到 configure.in 文件。这似乎有效 - 运行 configure 和 make 的输出显示 nvcc 作为编译器。但是 make 无法使用 CUDA 内核编译源文件,无法识别 CUDA 特定的语法。我不知道为什么,希望这能奏效。
是否可以使用 nvcc 编译源文件,然后在主程序的 make 过程中的链接步骤中包含它?如果是这样,怎么做? (这个问题可能没有意义——我对此真的很生疏)
正确的做法是什么?
有没有一种快速而肮脏的方法可以用于测试目的?
是否有一些每个人都可以使用的秘密工具来设置和理解这些配置和 Makefile?这比我习惯的 Apache Ant 脚本还要糟糕(是的,我不在我的领域)
【问题讨论】:
-
您可能错过的是文件扩展名。 nvcc 使用文件扩展名来确定哪些包含设备代码,哪些不包含 - 任何包含文件的设备代码都必须具有
.cu扩展名才能正确编译。 -
只是好奇,你在 CUDA 函数中做什么?
-
关于 .cu 文件的要点。我会尝试重命名一些源文件。
-
我正在尝试调整 fcrackzip 以在 CUDA 内核中执行。这是我选择的一个学校项目,希望它仍然在范围内,因为它不完全是家庭作业。