Ошибка более чем одного оператора «=» при компиляции с помощью CUDA 12.2.C++

Программы на C++. Форум разработчиков
Anonymous
Ошибка более чем одного оператора «=» при компиляции с помощью CUDA 12.2.

Сообщение Anonymous »

Я пытаюсь собрать библиотеку Spconv с помощью CUDA 12.2 и GCC 9 (по некоторым причинам я не могу использовать версию GCC > 10)
Существует проблема, связанная с неявными преобразованиями:
[build] /usr/include/c++/9/bits/stl_algobase.h(342): ошибка: этим операндам соответствует более одного оператора "=":
[ build] функция "__half::operator=(float)" (объявлена ​​в строке 341 файла /usr/local/cuda/include/cuda_fp16.hpp)
...
Я определил

Код: Выделить всё

 __CUDA_FP16_DISABLE_IMPLICIT_INTEGER_CONVERTS_FOR_HOST_COMPILERS__
__CUDA_BF16_DISABLE_IMPLICIT_INTEGER_CONVERTS_FOR_HOST_COMPILERS__
макросы, как предложено в документации, но это не помогает.
В
< есть строки условной компиляции. p>/usr/local/cuda/include/cuda_fp16.hpp

Код: Выделить всё

#if !(defined __CUDA_FP16_DISABLE_IMPLICIT_INTEGER_CONVERTS_FOR_HOST_COMPILERS__) || (defined __CUDACC__)
..
/usr/local/cuda/include/cuda_bf16.hpp

Код: Выделить всё

#if !(defined __CUDA_BF16_DISABLE_IMPLICIT_INTEGER_CONVERTS_FOR_HOST_COMPILERS__) || (defined __CUDACC__)
Если я попытаюсь изменить эти строки вот так:

Код: Выделить всё

#if !(defined __CUDA_FP16_DISABLE_IMPLICIT_INTEGER_CONVERTS_FOR_HOST_COMPILERS__)
#if !(defined __CUDA_BF16_DISABLE_IMPLICIT_INTEGER_CONVERTS_FOR_HOST_COMPILERS__)
Библиотека Spconv может быть успешно скомпилирована (применяются макросы отключения неявного преобразования). Итак, возникла некоторая ошибка, связанная с макросом __CUDACC__...
Кроме того, я могу скомпилировать Spconv с CUDA 12.1 без ошибок.
Не могли бы вы помочь с этой проблемой?< /п>

Подробнее здесь: https://stackoverflow.com/questions/787 ... -cuda-12-2

Вернуться в «C++»