使用不带.cu扩展名的Clang编译Cuda
第一个命令直接来自手册,但第二个命令似乎无法识别.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使用不带.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:错误:未
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"],
)