Несовместимое искажение имен C++ и CUDAC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Несовместимое искажение имен C++ и CUDA

Сообщение Anonymous »

Я попытался скомпилировать PyTorch из исходного кода, но столкнулся с очень странной ошибкой компоновки. Проведя расследование, я обнаружил, что шаблонная функция, определенная в файле C++, и ее объявление в файле CUDA генерируют два разных искаженных имени.
  • Определение C++ : _ZNK2at10TensorBase14const_data_ptrIdTnNSt9enable_ifIXntsr3stdE10is_const_vIT_EEiE4typeELi0EEEPKS3_v
  • Объявление CUDA: _ZNK2at10TensorBase14const_data_ptrIdTnNSt9enable_ifIXntsr4__T0E10is_const_vIT_EEiE4typeELi0EEEPKS3_v
Эти два имени выглядят почти одинаково, за исключением выделенных жирным шрифтом частей.Когда я использую llvm-cxxfilt, два искаженных имени вернули одно и то же имя функции double const* at::TensorBase::const_data_ptr() const
Версия инструментов:
  • clang: Ubuntu clang версии 18.1.8
  • NVCC: Инструменты компиляции Cuda, выпуск 12.6, V12.6.85
  • Хост-компилятор NVCC: clang 18.1.8, как указано выше
Не могли бы вы объяснить мне:
  • Какие части в искаженных именах выделены жирным шрифтом? Я не вижу их в расчлененном имени.
  • Почему два разных искажённых символа могут привести к одному и тому же расчленённому имени?


Подробнее здесь: https://stackoverflow.com/questions/792 ... consistent
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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