I try to use auto tensorcore codegen feature in tvm 0.7dev as following tutorial. https://docs.tvm.ai/tutorials/optimize/opt_matmul_auto_tensorcore.html
commit:a2429c1fa61cf54d1890e887572c8fa93c467d7a I built tvm on docker image: nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04
-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Build with RPC support...
-- Build with Graph runtime support...
-- Build VTA runtime with target: sim
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Found CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda
-- Found CUDA_CUDA_LIBRARY=/usr/local/cuda/targets/x86_64-linux/lib/stubs/libcuda.so
-- Found CUDA_CUDART_LIBRARY=/usr/local/cuda/lib64/libcudart.so
-- Found CUDA_NVRTC_LIBRARY=/usr/local/cuda/lib64/libnvrtc.so
-- Found CUDA_CUDNN_LIBRARY=/usr/lib/x86_64-linux-gnu/libcudnn.so
-- Found CUDA_CUBLAS_LIBRARY=/usr/lib/x86_64-linux-gnu/libcublas.so
-- Found CUDA_CUBLASLT_LIBRARY=CUDA_CUBLASLT_LIBRARY-NOTFOUND
-- Build with CUDA support
-- Build with cuDNN support
-- Use llvm-config=llvm-config-8
-- /usr/lib/llvm-8/include
-- Found LLVM_INCLUDE_DIRS=/usr/lib/llvm-8/include
-- Found LLVM_DEFINITIONS= -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
-- Found TVM_LLVM_VERSION=80
-- Build with LLVM
-- Set TVM_LLVM_VERSION=80
-- Use BLAS library /usr/lib/x86_64-linux-gnu/libopenblas.so
-- Build with contrib.sort
-- Build with contrib.hybriddump
-- Performing Test SUPPORT_CXX11
-- Performing Test SUPPORT_CXX11 - Success
-- Build with c++11
-- Build with thread support...
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/tvm/build
Scanning dependencies of target tvm_runtime
[ 1%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/builtin_fp16.cc.o
[ 1%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/cpu_device_api.cc.o
[ 1%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/c_runtime_api.cc.o
[ 1%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/container.cc.o
[ 2%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/module.cc.o
[ 2%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/ndarray.cc.o
[ 2%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/file_util.cc.o
[ 2%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/dso_library.cc.o
[ 2%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/library_module.cc.o
[ 3%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/object.cc.o
[ 3%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/registry.cc.o
[ 3%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/system_library.cc.o
[ 4%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/thread_pool.cc.o
[ 4%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/threading_backend.cc.o
[ 4%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/workspace_pool.cc.o
[ 4%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/vm/executable.cc.o
[ 5%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/vm/memory_manager.cc.o
[ 5%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/vm/vm.cc.o
[ 5%] Building CXX object CMakeFiles/tvm_runtime.dir/3rdparty/bfloat16/bfloat16.cc.o
[ 6%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/rpc/rpc_device_api.cc.o
[ 6%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/rpc/rpc_event_impl.cc.o
[ 6%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/rpc/rpc_module.cc.o
Scanning dependencies of target tvm
[ 7%] Building CXX object CMakeFiles/tvm.dir/src/node/container.cc.o
[ 7%] Building CXX object CMakeFiles/tvm.dir/src/node/reflection.cc.o
[ 7%] Building CXX object CMakeFiles/tvm.dir/src/node/repr_printer.cc.o
[ 8%] Building CXX object CMakeFiles/tvm.dir/src/node/serialization.cc.o
In file included from /usr/tvm/src/node/reflection.cc:28:0:
/usr/tvm/include/tvm/ir/attrs.h: In lambda function:
/usr/tvm/include/tvm/ir/attrs.h:768:21: error: 'strcmp' is not a member of 'std'
if (!std::strcmp(key, args.values[i].v_str)) {
^~~~~~
[ 8%] Building CXX object CMakeFiles/tvm.dir/src/ir/adt.cc.o
make[2]: *** [CMakeFiles/tvm.dir/src/node/reflection.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/tvm.dir/build.make:86: recipe for target 'CMakeFiles/tvm.dir/src/node/reflection.cc.o' failed
[ 8%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/rpc/rpc_server_env.cc.o
[ 10%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/rpc/rpc_session.cc.o
[ 10%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/rpc/rpc_socket_impl.cc.o
[ 10%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/graph/graph_runtime.cc.o
In file included from /usr/tvm/include/tvm/ir/type_relation.h:30:0,
from /usr/tvm/include/tvm/relay/type.h:29,
from /usr/tvm/src/ir/adt.cc:24:
/usr/tvm/include/tvm/ir/attrs.h: In lambda function:
/usr/tvm/include/tvm/ir/attrs.h:768:21: error: 'strcmp' is not a member of 'std'
if (!std::strcmp(key, args.values[i].v_str)) {
^~~~~~
CMakeFiles/tvm.dir/build.make:158: recipe for target 'CMakeFiles/tvm.dir/src/ir/adt.cc.o' failed
make[2]: *** [CMakeFiles/tvm.dir/src/ir/adt.cc.o] Error 1
[ 11%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/cuda/cuda_device_api.cc.o
[ 11%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/cuda/cuda_module.cc.o
[ 11%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/contrib/cudnn/conv_forward.cc.o
[ 11%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/contrib/cudnn/cudnn_utils.cc.o
[ 12%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/contrib/cblas/cblas.cc.o
[ 12%] Building CXX object CMakeFiles/tvm_runtime.dir/src/runtime/contrib/sort/sort.cc.o
CMakeFiles/Makefile2:557: recipe for target 'CMakeFiles/tvm.dir/all' failed
make[1]: *** [CMakeFiles/tvm.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 12%] Linking CXX shared library libtvm_runtime.so
[ 12%] Built target tvm_runtime
Makefile:129: recipe for target 'all' failed
Any idea how to resolve it?
This is my DockerFile
FROM nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04
RUN apt-get update --fix-missing
COPY tvm/docker/install/ubuntu_install_core.sh /install/ubuntu_install_core.sh
RUN bash /install/ubuntu_install_core.sh
# Python: basic dependencies
RUN apt-get update && apt-get install -y python3-dev python3-pip
RUN pip3 install numpy nose-timer cython decorator scipy
# LLVM
#RUN echo deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-6.0 main \
# >> /etc/apt/sources.list.d/llvm.list && \
# wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - && \
# apt-get update && apt-get install -y --force-yes llvm-6.0
COPY tvm/docker/install/ubuntu_install_llvm.sh /install/ubuntu_install_llvm.sh
RUN bash /install/ubuntu_install_llvm.sh
# Jupyter notebook.
RUN pip3 install matplotlib Image Pillow jupyter[notebook]
# Deep learning frameworks
RUN pip3 install mxnet tensorflow keras gluoncv
# Build TVM
COPY . /usr/
COPY tvm/docker/install/install_tvm_gpu.sh /install/install_tvm_gpu.sh
RUN bash /install/install_tvm_gpu.sh
# Environment variables
ENV PYTHONPATH=/usr/tvm/python:/usr/tvm/topi/python:/usr/tvm/nnvm/python/:/usr/tvm/vta/python:${PYTHONPATH}
ENV PATH=/usr/local/nvidia/bin:${PATH}
ENV PATH=/usr/local/cuda/bin:${PATH}
ENV LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/nvidia/lib64:${LD_LIBRARY_PATH}