cuda - 检查 makefile 中 nvcc 是否可用

标签 cuda compilation makefile nvcc

我在应用程序中有两个版本的函数,一个是用 CUDA 实现的,另一个是用标准 C 实现的。它们位于不同的文件中,比如说 cudafunc.hfunc。 h (实现位于 cudafunc.cufunc.c 中)。我想在编译应用程序时提供两个选项。如果用户安装了 nvcc,它将编译 cudafunc.h。否则,它将编译func.h

是否有办法检查机器是否在 makefile 中安装了 nvcc,从而相应地调整编译器?

非常感谢,

最佳答案

您可以尝试使用条件,例如

ifeq (($shell which nvcc),) # No 'nvcc' found
func.o: func.c func.h
HEADERS += func.h
else
func.o: cudafunc.cu cudafunc.h
        nvcc -o $@ -c $< . . . 
CFLAGS += -DUSE_CUDA_FUNC
HEADERS += cudafunc.h
endif

然后在调用该函数的代码中,可以测试#if USE_CUDA_FUNC来决定包含哪个 header 以及调用哪个接口(interface)。

关于cuda - 检查 makefile 中 nvcc 是否可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24599434/

相关文章:

c++ - OpenCV GPU HOG 检测

c++ - 检查矩阵是否包含 CUDA 中的 nans 或无限值

c++ - "Sams teach yourself C"中的示例使用 "fgets"但返回错误

c# - 使用 mono 编译应用程序

c++ - gcc 或 makefile 是否有一种机制可以描述源文件的包含文件以替换 #include "xxxx.h"?

c++ - 如何在 Windows 上安装 GMP Mp? (C++)

cuda - 如何在 visual studio 2010 中更改 compute _' ' 和 sm _' ' 参数?

CUDA:__syncthreads() 在 if 语句中

windows - 使用 VC++ Express 2010 编译 libdwarf 无法运行 Demo 应用程序

c++ - 在 Linux 上链接 pdfium