Некоторые люди всегда устанавливают последнюю версию ОС. Я являюсь одним из них. Я с радостью установил Ubuntu 17.04 и застрял на компиляции Tensorflow на 1 неделю.
Вкратце: основная проблема заключается в том, что версия gcc несовместима с CUDA 8.0. На данный момент CUDA 8.0 поддерживает gcc только до версии 5.3.1. Однако в Ubuntu 17.04 только 5.4. Установка gcc-4.9 решила проблему.
Вот последовательность моей установки:
- Установите gcc-4.9 и g++4.9.
- Создайте мягкую ссылку gcc-4.9 как gcc на своем пути (обычно /usr/bin).
- Загрузите и установите файл запуска CUDA. Возникли проблемы с файлом Installutils.pm, и они были решены с помощью решения отсюда.
- Загрузите и установите патч CUDA (если есть)
- Загрузите cudnn и извлеките файлы include и lib в папку установки CUDA.
- Установите среду для LD_LIBRARY_PATH и CUDA_HOME в .bashrc или .bash_profile (или .zshrc для моей машины).
- Загрузите распространяемые исходные файлы bazel и скомпилируйте их.
- Добавьте мягкую ссылку на исполняемый файл bazel на свой путь.
- Клонируйте Tensorflow и проверьте версию, которую вы хотите использовать (на данный момент 1.3.2)
- Попробуйте скомпилировать его и посмотреть, есть ли какие-либо сообщения об ошибках. Моя установка давала некоторые отсутствующие ошибки библиотеки, и я исправил их, добавив дополнительные пути в LD_LIBRARY_PATH (cuda/extras/CUPTI/lib64 для моей машины)
- Скомпилируй и иди обедать.
- Вернитесь с обеда, сгенерируйте пакет pip и установите его.
- Установите драйвер nvidia и nvidia-current-dev. Это установит gcc-6 как часть зависимостей. Сбросьте ссылку gcc на gcc-4.9 в папке /usr/bin.
- Смените драйвер видеокарты на драйвер nvidia.
- Перезагрузите компьютер.
- Добавлена новая установка nvidia lib в LD_LIBRARY_PATH (/usr/lib/nvidia-384 для моей машины)
- Tensorflow готов для вас прямо сейчас!
Все зависит от gcc. Если вы используете неправильную версию, вам придется удалить все и начать с нуля снова. Строго соблюдайте требования из Руководства по установке NVIDIA. CUDA очень чувствительна к версиям gcc. Любые незначительные обновления могут нарушить компиляцию CUDA.
p.s. Скомпилированная версия Tensorflow на 20% быстрее, чем пакет pip.