使用不带.cu扩展名的Clang编译Cuda

使用不带.cu扩展名的Clang编译Cuda,cuda,clang,Cuda,Clang,第一个命令直接来自手册,但第二个命令似乎无法识别.cc文件为cuda,即使我有-xcuda标志 clang++apxy.cu--cuda gpu arch=sm_61-L/usr/local/cuda/lib64-lcudart_static-ldl-lrt-pthread clang++apxy.cc-xcuda--cuda gpu arch=sm_61-L/usr/local/cuda/lib64-lcudart_static-ldl-lrt-pthread apxy.cc:3:1:错误:未

第一个命令直接来自手册,但第二个命令似乎无法识别.cc文件为cuda,即使我有-xcuda标志

clang++apxy.cu--cuda gpu arch=sm_61-L/usr/local/cuda/lib64-lcudart_static-ldl-lrt-pthread

clang++apxy.cc-xcuda--cuda gpu arch=sm_61-L/usr/local/cuda/lib64-lcudart_static-ldl-lrt-pthread

apxy.cc:3:1:错误:未知类型名称“\uuuu global\uuuuu”void axpy(浮点a,浮点*x,浮点*y){│        在io.iohk.ethereum.mallet.main.Shell.(Shell.scala:18)
^                                                                                                                                                              │        在io.iohk.ethereum.mallet.main.mallet$.delayedEndpoint$io$iohk$ethereum$mallet$main$mallet$1(mallet.scala:20)
apxy.cc:3:12:错误:应为不合格id│        在io.iohk.ethereum.mallet.main.mallet$delayedInit$body.apply(mallet.scala:13)
__全局无效axpy(浮点a、浮点*x、浮点*y){│        在scala.Function0.apply$mcV$sp处(Function0.scala:34)
^                                                                                                                                                   │        在scala.Function0.apply$mcV$sp$(Function0.scala:34)
apxy.cc:17:3:错误:使用未声明的标识符“cudamaloc”│        在scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)中
Cudamaloc(&device_x,kDataLen*sizeof(float));

使用
--std=cuda
应该可以做到这一点。注意:我自己还没有尝试过这个方法。

我的问题是我需要在文件名前面加上-xcuda。下面是一个使用Bazel的示例

工作空间

new_local_repository(
    name = "cuda",
    path = "/usr/local/cuda",
    build_file_content = """
cc_library(
    name = "cuda",
    hdrs = glob(["**/*.h", "**/*.hpp", ]),
    includes = ["include/"],
    linkopts = ["-L/usr/local/cuda/lib64 -lcudart_static -ldl -lrt -pthread"],
    visibility = ["//visibility:public"],
)
    """
)
建造

new_local_repository(
    name = "cuda",
    path = "/usr/local/cuda",
    build_file_content = """
cc_library(
    name = "cuda",
    hdrs = glob(["**/*.h", "**/*.hpp", ]),
    includes = ["include/"],
    linkopts = ["-L/usr/local/cuda/lib64 -lcudart_static -ldl -lrt -pthread"],
    visibility = ["//visibility:public"],
)
    """
)
cc_binary(
    name = "example",
    srcs = ["example.cu.cc"],
    copts = ["-xcuda --cuda-gpu-arch=sm_61"],
    deps = ["@cuda"],
)