Что такое libcublasLt.so (не libcublas.so)?

#cuda #nvidia

#cuda #nvidia

Вопрос:

Я компилирую исходный код с помощью p&f95 (компилятор Fortran).

Если я использую cuda 10.0, он успешно компилирует исходный код.

Однако, если я использую cuda 10.1, он завершается с ошибкой, показывая, что «не удается найти libcublasLt.so ‘.

Когда я сканирую каталог cuda-10.0/ lib64, cuda-10.1 / lib64, в обоих нет файла, начинающегося с ‘libcublasLt’.

Как я могу решить эту проблему?

Ответ №1:

libcublasLt.so это библиотека, предоставляющая реализацию cublasLt API, которая определена здесь. Это просто отдельный общий объект из libcublas.so

В прошлом (например, CUDA 10.0 и предыдущие версии) большинство библиотек CUDA были установлены в /usr/local/cuda/lib64 (или аналогичных) по умолчанию (в Linux). Примерно на таймфрейме CUDA 10.1 было решено, что некоторые библиотеки будут установлены в разных местах. CUDA 10.1 также является тем местом, где были представлены cublasLt API и библиотека. Это повлияло на некоторые библиотеки cublas и обсуждается в заметках о выпуске CUDA 10.1 здесь (как введение библиотеки cublasLt, так и изменение расположения библиотек).

Итак, здесь есть 2 возможности (для CUDA 10.1, CUDA 10.2):

  1. libcublasLt.so есть на вашем компьютере, но он просто не там, где вы ожидали его найти.

  2. libcublasLt.so отсутствует на вашем компьютере. Это означает, что вы работаете с версией CUDA, предшествующей внедрению cublasLt API (т. Е. 10.0 или более ранней версии), или у вас произошла ошибка при установке.

Итак, предполагая, что вы работаете с CUDA 10.1 или CUDA 10.2, первым шагом является поиск / определение того, есть libcublasLt.so на вашем компьютере или нет. Для этого вы можете использовать утилиту Linux, такую как find или locate . У них должны быть man доступные для вас страницы.

Если вы можете его найти, то вам нужно указать путь к нему через спецификацию компоновщика (например -L/path/to/libcublasLt.so/

Если вы не можете его найти, значит, вы либо работаете с более старой версией CUDA (10.0 или более ранней), либо вам необходимо переустановить CUDA.

Я полагаю, что к тому времени, когда вы перейдете на CUDA 11.0, пакеты CUDA вернут cublas библиотеки обратно в /usr/local/cuda/lib64 другие библиотеки. YMMV.

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

1. Это означает, что 10.0 не имеет libcublasLt.so вообще ?

2. Хм… Я понимаю ваш второй момент » libcublasLt.so отсутствует на вашем компьютере. Это означает, что вы работаете с версией CUDA, предшествующей внедрению cublasLt API (т. Е. 10.0 или более ранней версии) «, поскольку в 10.0 его нет. Дело в том, что мне это нужно для компиляции библиотеки, но я не могу найти файл для 10.0.

3. Да, вы правы, это моя ошибка. cublasLt API был представлен с CUDA 10.1 (смотрите здесь ) и недоступен с CUDA 10.0 (смотрите здесь ). (Я удалил свой предыдущий комментарий, поскольку он неверен / вводит в заблуждение).