Ошибка компилятора CUDA mathfunctions.hpp в Mac OS: не удается перегрузить функции, отличающиеся типом возвращаемого значения

#macos #cuda

#macos #cuda

Вопрос:

Я попытался скомпилировать код изhttps://github.com/wilicc/gpu-burn используя следующий Makefile. Это запись графического процессора с использованием CUDA, и мой Mac действительно имеет GT750M.

   1 CUDAPATH=/usr/local/cuda
  2
  3 # Have this point to an old enough gcc (for nvcc)
  4 GCCPATH=/usr/bin/clang
  5
  6 NVCC=nvcc
  7 CCPATH=${GCCPATH}/bin
  8
  9 drv:
 10         PATH=${PATH}:.:${CCPATH}:${PATH} ${NVCC} -I${CUDAPATH}/include -arch=compute_30 -ptx compare.cu -o compare.ptx
 11         g   -O3 -Wno-unused-result -I${CUDAPATH}/include -c gpu_burn-drv.cpp
 12         g   -o gpu_burn gpu_burn-drv.o -O3 -lcuda -L${CUDAPATH}/lib64 -L${CUDAPATH}/lib -Wl,-rpath=${CUDAPATH}/lib64 -Wl,-rpath=${CUDAPATH}/lib -lcublas -lcudart -o gpu_burn
  

Но я получил восемь ошибок компиляции, в которых указано, что « /usr/local/cuda/include/crt/math_functions.hpp(xxx): error: cannot overload functions distinguished by return type alone «.

Я установил последнюю версию CUDA 10.1.105 на свой Mac и скомпилировал код с помощью Clang, но он не работает. Если я переключусь обратно на gcc, ошибки все еще будут.

gcc —version: Apple LLVM версии 10.0.1 (clang-1001.0.46.3)

Комментарии:

1. На самом деле, это случается со мной, даже если я пытаюсь скомпилировать пример кода из официального руководства по установке драйвера CUDA. Мне кажется, это обычная проблема.

2. Я полагаю, вы находитесь в Мохаве? gcc имеет символическую ссылку на clang, поэтому, если вы намеренно не установили gcc и не настроили его, вы все еще просто используете clang

Ответ №1:

Обходной путь к этому — просто отредактировать math_functions.hpp (а также math_functions.h в моем случае) и закомментировать оскорбительные строки.