首页 > 解决方案 > 在 Windows 10 中生成错误的命令:

问题描述

这是代码,我正在尝试在命令提示符下使用 make 命令进行编译。

nvcc := "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/bin/nvcc"
cudalib := "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/extras/CUPTI/lib64"
cudainclude := "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/include"
tensorflow := C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64

TF_CFLAGS := $$(python -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_compile_flags()))') 
TF_LFLAGS := $$(python -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_link_flags()))') 


all: tf_nndistance_so.so
clean:
    rm -rf *.o *.so
.PHONY : all clean

tf_nndistance_so.so: tf_nndistance_g.o tf_nndistance.cpp
    g++ -std=c++11 -shared tf_nndistance.cpp tf_nndistance_g.o -o tf_nndistance_so.so -fPIC $(TF_CFLAGS) $(TF_LFLAGS) -O2

tf_nndistance_g.o: tf_nndistance_g.cu
    $(nvcc) -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11 -c -o tf_nndistance_g.o tf_nndistance_g.cu -I $(tensorflow) -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC -O2

但得到以下错误:

"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/bin/nvcc" -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11 -c -o tf_nndistance_g.o tf_nndistance_g.cu -I C:/"Program Files (x86)"/"Microsoft Visual Studio"/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64 -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC -O2
nvcc fatal   : Cannot find compiler 'cl.exe' in PATH
make: *** [Makefile:19: tf_nndistance_g.o] Error 1

欢迎任何建议。

谢谢你。

标签: pythonc++tensorflowcudacudnn

解决方案


眼前的问题

您需要设置您的VStudio(您已经安装 的2019 )路径。
一种常见的方法是调用vcvarsall.bat : "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
有关从命令行构建的更多详细信息:[SO]:如何构建 libjpeg 9b 的 DLL 版本?(@CristiFati 的回答)

更大的问题

您正在混合编译器:

  • CUDA Toolkit使用(默认)VStudio(本机)编译器(cl.exe
  • 您正在使用g++.exe

这是一个坏主意,您应该坚持使用一个编译器(cl - 如上一节所述)。请注意,您使用的某些标志不兼容。
或者指示CUDA使用g++(不知道它属于什么构建工具链,也不知道是否可行)。


推荐阅读