Использование набора инструментов microsoft c++ из командной строки

Использование метода os.system()

Как указывалось ранее, выполнение команд оболочки в Python можно легко выполнить с помощью некоторых методов модуля . Здесь мы собираемся использовать широко используемый .

Эта функция реализована с использованием функции C и, следовательно, имеет те же ограничения.

Метод принимает системную команду как строку на входе и возвращает код вывода.

В приведенном ниже примере мы пытаемся проверить версию Python в нашей системе с помощью командной строки.

import os

command = "python --version" #command to be executed

res = os.system(command)
#the method returns the exit status

print("Returned Value: ", res)

Выход:

Python 3.7.4
Returned Value:  0

Здесь сохраняет возвращенное значение (код выхода = 0 для успеха). Из выходных данных видно, что команда выполнена успешно, и мы получили нашу версию Python, как и ожидалось.

Изучаем дистрибутив LLVM

Язык LLVM-IR

LLVM-IR — это промежуточный язык компиляторов, использующих библиотеки LLVM, именно с ним работают ключевые подсистемы LLVM. Язык поддерживает:

  • инструкции, близкие к ассемблерным
  • функции с параметрами и возвращаемым значением и их атрибуты
  • структуры и массивы
  • примитивные типы, например, целые числа от i1 (1-битное) до i64 (64-битное)
  • в присваивании участвуют не переменные, а регистры — считается, что в LLVM бесконечно много регистров
  • имена регистров локальные для функции, обычно генератор кода генерирует имена с помощью возрастающего ряда чисел
  • присваивать регистр может только одна инструкция в пределах функции, для присваивания в цикле потребуется снова прыгнуть на эту инструкцию

В языке нет ни выражений, ни ООП, поскольку из LLVM-IR без излишних преобразований генерируется машинный код. Оптимизаторы кода в составе LLVM работают именно с LLVM-IR.

Пример Kaleidoscope

В состав дистрибутива LLVM включён пример Kaleidoscope (см. каталоги и проекты Kaleidoscope, Kaleidoscope-Ch2, Kaleidoscope-Ch3 и так далее). Для этих же примеров есть актуальные статьи на английском языке: llvm.org/docs/tutorial.

Пример реализует полноценный компилятор с кодогенерацией через LLVM. Особенности примера:

  • фронтенд компилятора сильно упрощён, лексер и парсер написаны вручную
  • для простоты примера используются глобальные переменные, от которых легко избавиться средствами ООП
  • бекенд компилятора построен на библиотеках LLVM, для генерации и обработки промежуточного кода использует API библиотек LLVM
  • есть поддержка выражений (включая if-выражение, эквивалентное тернарному оператору)
  • есть поддержка инструкции for
  • есть поддержка вызова внешних функций, написанных на языке C
  • показан полный цикл кодогенерации, включая генерацию отладочной информации

Утилита llc

Утилита llc получает на вход LLVM-IR код и создаёт машинный код. Благодаря этому она служит прекрасным примером для создания финальной стадии бекенда: генератора машинного кода.

  • код прост и понятен, и не содержит внутренней логики обработки данных
  • в своём проекте алгоритм можно упростить ещё сильнее, убрав обработку ненужных вашему компилятору опций командной строки
  • исходный код незначительно меняется от версии к версии в связи с изменениями в LLVM API

Компиляция из C/C++ в LLVM-IR

Компилятор clang способен компилировать из C/C++ в текстовое представление LLVM-IR, что позволяет исследовать способы генерации кода из различных высокоуровневых конструкций. По умолчанию clang компилирует без оптимизаций, то есть сгенерированный при обходе AST код не искажается проходами оптимизатора.

Допустим, есть файл main.cpp:

Команда для компиляции:

На выходе создаётся файл main.ll с текстовым представлением LLVM-IR:

2.1. Метод call()

Теперь перейдем к методу .

Метод принимает аргументы командной строки, переданные в виде списка строк или с аргументом оболочки, установленным в . И возвращает нам код выхода или статус.

В приведенном ниже фрагменте кода мы пытаемся установить pandas с помощью PIP из оболочки.

import subprocess

command = "pip install pandas" #command to be executed

res = subprocess.call(command, shell = True)
#the method returns the exit code

print("Returned Value: ", res)

Выход:

Collecting pandas
  Downloading pandas-1.0.3-cp37-cp37m-win32.whl (7.5 MB)
Requirement already satisfied: pytz>=2017.2 in c:\users\sneha\appdata\local\programs\python\python37-32\lib\site-packages (from pandas) (2019.3)
Requirement already satisfied: numpy>=1.13.3 in c:\users\sneha\appdata\local\programs\python\python37-32\lib\site-packages (from pandas) (1.18.1)
Requirement already satisfied: python-dateutil>=2.6.1 in c:\users\sneha\appdata\local\programs\python\python37-32\lib\site-packages (from pandas) (2.8.1)
Requirement already satisfied: six>=1.5 in c:\users\sneha\appdata\local\programs\python\python37-32\lib\site-packages (from python-dateutil>=2.6.1->pandas) (1.14.0)
Installing collected packages: pandas
Successfully installed pandas-1.0.3
Returned Value:  0

Как видим, команда выполнена успешно с возвращаемым значением.

Отчёт о покрытии ветвлений

Для получения отчёта с информацией о выборе ветвлений надо добавить параметр как для вызова , так и для вызова :

Теперь вы можете повторно открыть и познакомиться с новой информацией. Знаки возле означают, что программа ни разу не зашла в первую ветку (ветку then), но заходила во вторую (ветку else). В остальных ветвлениях if/else программа заходила в разное время в обе ветки.

У любопытных людей может возникнуть вопрос: почему в конце функции main тоже написано ? Это правильный вопрос, детектив. Дело в том, что каждая функция может быть завершена либо нормальным способом (вернув что-либо на инструкции return), либо выбросом исключения. Если немного модифицировать программу, написав всегда бросающую исключение функцию , то branch coverage для вызова изменится на : функция ни разу не завершилась нормально, но как минимум один раз завершилась с выбросом исключения:

3|1nvcc

Это было введено ранее,По сути, это компилятор CUDA, который можно скачать из CUDA Toolkit.Из каталога аналогичноЭто компилятор языка C. Поскольку программа запрограммирована в исполняемый двоичный файл компилятором, а программа cuda имеет два типа кодов: один — это код хоста, работающий на процессоре, другой — код устройства, работающий на графическом процессоре, поэтомуКомпилятор должен гарантировать, что две части кода могут быть скомпилированы в двоичный файл и выполнены на разных машинах. Суффиксы файлов и связанные с ними значения, используемые в nvcc, следующие

Расширение файла значение
.cu исходные файлы cuda, включая коды хоста и устройства
.cup Предварительно обработанный исходный файл cuda, опция компиляции —preprocess / -E
.c c исходный файл
.cc/.cxx/.cpp исходный файл c ++
.gpu промежуточный файл gpu, опция компиляции —gpu
.ptx Как и в коде сборки, опция компиляции —ptx
.o/.obj Объектный файл, параметр компиляции —compile / -c
.a/.lib Файл библиотеки, опция компиляции —lib / -lib
.res ресурс
.so Общий объектный файл, параметр компиляции —shared / -shared
.cubin двоичный файл cuda, опция компиляции -cubin

Шаг 8: Тестовая установка TensorFlow и его доступ к GPU

Перейдите в меню «Пуск» в Windows и найдите среду IDE с именем «idle», которая будет установлена ​​как часть вашей установки на python, если вы выбрали, как я сделал вШаг 6, Окно Python должно появиться с надписьюОболочка Python 3.6.x, По приглашению (обозначается как «>>>») импортируйте пакет Tensorflow. Это проверит, что Tensorflow был установлен (как вы можете импортировать его). Команда для оболочки IDLE для импорта пакета tenorflow выглядит следующим образом:

Чтобы проверить поддержку CUDA для вашей установки Tensorflow, вы можете запустить в командной строке следующую команду:

Наконец, чтобы убедиться, что графический процессор доступен для Tensorflow, вы можете протестировать, используя встроенную служебную функцию в TensorFlow, как показаноВот:

Требуется несколько минут, чтобы вернуть результат из этого; когда он закончен, он возвращаетсяПравда, а затем приглашение>>>`появляется снова. Импортирование тензорного потока и эти тесты показаны на рис. 24 в оболочке Python IDLE.

Как найти причину бага CUDA runtime, приводящего к ошибке no usable mining devices found?

Детектирование наличия CUDA-capable GPU производится через библиотеку cudart (файлы cudart.dll, cudart_static.lib, cudadevrt.lib.dll в Windows) с помощью функции cudaGetDeviceCount() из состава CUDA Runtime API.

Она выдает ошибку cudaErrorNoDevice если в системе отсутствуют совместимые устройства или используется неподходящий драйвер (ошибка cudaErrorInsufficientDriver).

В случае использования компьютеров с видеокартами Nvidia, поддерживающими разные версии CUDA, могут возникнуть проблемы, связанные с их совместимостью. В связи с этим рекомендуется делать сборку компьютеров (майнинг ригов) с одинаковыми видеокартами (на одной архитектуре), а также использовать драйвера, соответствующие видеокарте (ее Compute Capability).

Таблица соответствия драйверов, версии Compute Capability и архитектуры видеокарт Nvidia:

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

В Windows очень удобно для изучения информации о видеокарте использовать программы GPU-Z или Некоторую информацию о старых видеокартах nVIDIA Geforce, Quadro и Tesla в Windows, Linux и Mac OSX можно получить утилитой cuda-z. В большинстве систем можно использовать штатную консольную утилиту nvidia-smi. Она позволяет получать следующую информацию:

  • количество ECC ошибок за текущую сессию и за все время работы GPU;
  • загруженность GPU с точки зрения compute ресурсов и памяти;
  • активные compute процессы их названием/ID и выделенной им GPU памятью;
  • частота GPU и текущий уровень performance state (pstate);
  • температура и частота вращения вентиляторов видеокарты;
  • потребляемая мощность;
  • идентификационные данные о драйверах, графическом адаптере, включая его серийный номер, PCI device Ids, версия VBIOS и т.д.

Обычно утилита nvidia-smi.exe устанавливается в папку

C:\Windows\System32

или

C:\Windows\System32\DriverStore\FileRepository\nvdm*\nvidia-smi.exe

где имя каталога nvdm* различается в зависимости от используемых драйверов/системы.

В старых ОС, например, в Windows 8.1 с драйверами 445.87, программа nvidia-smi находится в папке C:\Program Files\NVIDIA Corporation\NVSMI:

Запуск программы nvidia-smi.exe в Windows можно производить из ее каталога с помощью простейшего батника (для удобства пользователя можно использовать ярлык на рабочем столе):

@echo off

nvidia-smi

pause

При запуске такого bat-файла (без дополнительных ключей) можно получить информацию об установленных драйверах и поддерживаемой версией CUDA, например:

Как видно на приведенном в качестве примера рисунке, nvidia-smi видит видеокарту, драйвер и поддерживаемую версию CUDA, но в колонке Process name (она отвечает за compute-процессы) отображается надпись Not Supported. При этом игры на этой видеокарте работают (например, World of Tanks), а майнеры не видят CUDA-устройства (появляется ошибка no devices).

В этом случае, наверное, лучше перейти на другой, более послушный дистрибутив операционной системы.

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

2.2. Метод check_output()

Вышеупомянутые методы выполняют успешно переданную команду оболочки, но не дают пользователю свободы манипулировать способом получения вывода. Для этого на должен метод подпроцесса .

Метод выполняет переданную команду, но вместо возврата статуса выхода на этот раз возвращает объект.

Присмотритесь к приведенному ниже примеру, где мы снова пытаемся установить модуль (уже установленный).

import subprocess

command = "pip install pymysql" #command to be executed

res = subprocess.check_output(command) #system command

print("Return type: ", type(res)) #type of the value returned

print("Decoded string: ", res.decode("utf-8")) #decoded result

Выход:

Return type:  <class 'bytes'>
Decoded string:  Requirement already satisfied: pymysql in c:\users\sneha\appdata\local\programs\python\python37-32\lib\site-packages (0.9.3)

Здесь, как и в предыдущих случаях, хранит объект, возвращаемый методом . Мы видим, что подтверждает, что объект имеет тип.

После этого печатаем декодированную строку и видим, что команда успешно выполнена.

Настройка параметров модуля

Чтобы передать параметр модулю ядра, вы можете воспользоваться конфигурационным файлом в modprobe или использовать командную строку ядра.

С помощью файлов в /etc/modprobe.d/

Файлы в директории можно использовать для передачи настроек модуля в udev, который через управляет загрузкой модулей во время загрузки системы. Конфигурационные файлы в этой директории могут иметь любое имя, оканчивающееся расширением . Синтаксис следующий:

/etc/modprobe.d/myfilename.conf
options modname parametername=parametervalue

Например:

/etc/modprobe.d/thinkfan.conf
# On ThinkPads, this lets the 'thinkfan' daemon control fan speed
options thinkpad_acpi fan_control=1

Примечание: Если какой-либо из затрагиваемых модулей загружается из initramfs, тогда вам придётся добавить соответствующий файл в в файле или использовать , чтобы он был включен в initramfs.

С помощью командной строки ядра

Если модуль вкомпилирован в ядро, вы также можете передать параметры модулю с помощью командной строки ядра. Для всех стандартных загрузчиков, подойдёт следующий синтаксис:

modname.parametername=parametercontents

Например:

thinkpad_acpi.fan_control=1

Просто добавьте это в загрузчике в строку с ядром, как описано в параметрах ядра.

Как удалить программу через командную строку

В Windows удаление программы из командной строки занимает не так много времени, и это — не сложная операция даже для неопытных пользователей. Необходимо выполнить лишь пару команд.

Запуск удаления программ из командной строки выполняется следующим способом:

  1. Запустите командную строку от имени администратора.
  2. В окне интерпретатора командной строки введите команду, а затем нажмите на клавишу «Enter»:
wmic product get name
  1. Через некоторое время, в окне консоли появится список установленных приложений.
  1. Чтобы запустить удаление программ из командной строки, необходимо выполнить следующую команду:
wmic product where name="XXX" call uninstall /nointeractive

"XXX" — имя программы, заключенное в двойных кавычках, так как оно отображается в командной строке.

/nointeractive — параметр для немедленного запуска удаления программы, без вызова дополнительных шагов.
  1. После завершения удаления приложения в окне интерпретатора командной строки отобразится информация о завершении этой операции.

Шаг 7: Установите Tensorflow с поддержкой GPU

Tensorflowпредоставляет инструкциидля проверки правильности добавления каталогов установки CUDA, cuDNN и (необязательно: CUPTI) в переменные среды PATH. Поскольку три файла cuDNN были скопированы в подпапки CUDA, я не обновил существующий путь переменных среды CUDA.

Шаг 7.1: вызов командной строки с правами администратора

На этом этапе выполняется общесистемная установка Tensorflow, а не установка для каждого пользователя. Общесистемная установка Tensorflow требует прав администратора, поэтому, соответственно, командная строка должна запускаться с правами администратора.

Откройте командную строку, запустив ‘CMD’В строке поиска, а затем щелкните правой кнопкой мыши в командной строке, чтобы выбрать« Запуск от имени администратора ». Это открывает Администратор: Командная строка, как показано на рисунке 21.

Шаг 7.2: Общесистемная установка Tensorflow через Python pip

После открытия командной строки общесистемная команда установки для Tensorflow с поддержкой GPU выглядит следующим образом:

Команда «pip3» (в отличие от «pip») требуется, так как установка выполняется в Python 3. Выполнение этой команды в командной строке показано на рисунке 22.

Результирующий вывод команды показан на рисунке 23, и, если все пойдет по плану, в конечном итоге должно появиться сообщение, подтверждающее, что Tensorflow был успешно установлен.

Примеры запуска

В результате интерактивного запуска программы выдаётся имя узла, на котором запущен соответствующий процесс, например:

При запуске в пакетном режиме команда запуска программы задаётся либо в скрипте, либо через опцию , например,

или

где скрипт mybat:

Внимание!

  • Команда внутри скрипта может запрашивать ресурсы только в тех пределах, которые установлены командой .
  • Скрипт запускается только на первом из выделенных узлов.
  • Запуск нескольких процессов осуществляется командой . При этом все опции, указанные в командной строке или самом скрипте в строках , приписываются к каждой команде данного скрипта, если не переопределены в ней. Так, результирующий файл приведённого примера будет содержать 2 строки с именами узлов (возможно, одинаковых), на которых выполнятся 2 процесса задачи, сформированные командой srun.
  • Если команды srun запускаются в фоновом режиме (символ в конце строки), то они при наличии ресурсов могут выполняться одновременно.

Запрет загрузки

В терминах модулей ядра blacklisting означает механизм, предотвращающий загрузку какого-то модуля. Это может понадобиться, например если вам не нужна работа какого-то оборудования или если загрузка данного модуля вызывает проблемы: например, могут быть два модуля ядра, которые пытаются управлять одним и тем же оборудованием, и их совместная загрузка приводит к конфликту.

Некоторые модули загружаются как часть initramfs. Команда напечатает все автоматически обнаруженные модули: для предотвращения initramfs от загрузки каких-то из этих модулей, занесите их в чёрный список в . Команда отобразит все модули, которые необходимы некоторым хукам (например, хук, хук и т.д.). Не забудьте добавить этот файл в секцию в , если вы этого ещё не сделали, пересоберите initramfs после того, как вы запретили загрузку модулей, а затем перезагрузитесь.

С помощью файлов в /etc/modprobe.d/

Создайте файл в и добавьте строку для каждого модуля, который вы хотите запретить, используя ключевое слово . Например, если вы хотите запретить загружать модуль :

/etc/modprobe.d/nobeep.conf
# Do not load the 'pcspkr' module on boot.
blacklist pcspkr

Примечание: Команда запретит автоматическую загрузку модуля, но этот модуль всё равно может загрузиться, если от него зависит какой-то не запрещённый модуль или если он загружен вручную.

Можно изменить такое поведение. Команда заставляет modprobe запускать вашу собственную команду вместо вставки модуля в ядро как обычно. Поэтому вы можете насильно сделать так, чтобы модуль никогда не загружался:

/etc/modprobe.d/blacklist.conf
...
install module_name /bin/false
...

Это запретит данный модуль и все модули, зависящие от него.

С помощью командной строки ядра

Совет: Это может очень помочь, если неправильный модуль не даёт загрузиться вашей системе.

Вы также можете запрещать модули из загрузчика.

Просто добавьте в вашем загрузчике в строку ядра, как описано в параметрах ядра.

Примечание: Когда вы запрещаете несколько модулей, обратите внимание, что они разделяются только запятой. Пробелы или что-либо ещё могут нарушить синтаксис.

Установка библиотек в Ubuntu

Обычно, если вы используете менеджер пакетов вашего дистрибутива для установки новых программ, то библиотеки устанавливаются автоматически. Но если вы хотите собрать программу из исходников или запустить 32 битную программу на 64 битной системе могут начаться проблемы. Например, при запуске или компиляции программы вы получаете ошибку:

Обычно, в Ubuntu имена пакетов библиотек соответствуют имени нужной библиотеки. Поэтому чтобы определить точное имя в большинстве случаев достаточно воспользоваться поиском по базе пакетов:

Как видите, найдено два варианта библиотеки, libfuse2 и libfuse-dev.

Если библиотека нужна обычной программе и ее не нужно собирать из исходников, то будет достаточно установить библиотеку ubuntu без префикса dev. Например:

Если же вам нужно собрать приложение из исходников, то кроме обычной библиотеки понадобятся заголовочные файлы, в которых содержится описание реализованных в библиотеке функций. Такие пакеты имеют приставку dev, например, libfuse-dev, тогда нужно устанавливать этот пакет, а он уже в зависимостях потянет и обычную библиотеку, если она еще не установлена:

Много проблем может вызвать ситуация, когда вам нужно запустить 32 битную программу в 64 битной системе. Например, если вы установили 64 битную версию библиотеки, а программа все равно говорит о том, что не может ее найти, возможно это 32 битная программа и ей необходима именно 32 библиотека. Если программа не устанавливается с помощью пакетного менеджера, вам тоже придется устанавливать библиотеки вручную.

Посмотреть разрядность бинарника можно с помощью утилиты file:

На скриншоте показаны два варианта вывода программы, для 32 бит, в нашем случае Skype и для 64 — mount.

Для того чтобы установить библиотеку Ubuntu с архитектурой i386 сначала необходимо добавить поддержку архитектуры i386 в dpkg:

Затем обновляем наши репозитории:

А во время установки нужной вам библиотеки теперь необходимо указать архитектуру через двоеточие после имени пакета:

Если вы уверенны, что библиотека установлена, но программа все равно говорит, что такой библиотеки нет, то возможно, ей просто нужна другая версия библиотеки. Например, в системе есть libudev.so.0, а программе нужна libudev.so.0.1. Такое случается, если вы попытаетесь установить пакет для другого дистрибутива, особенно в Red Hat системах. Если в репозиториях нет нужной версии библиотеки, то скорее всего, они одинаковы, и можно просто создать символическую ссылку:

Затем программа найдет нужную библиотеку.

Управление библиотеками в Linux

Установка библиотек ubuntu уже рассмотрена, но хотелось бы упомянуть еще пару моментов. Как я сказал, библиотеки ubuntu размещаются в определенных каталогах, но расположение библиотек можно настроить.

Перед тем как библиотека будет подключена к программе, ее должна найти в системе специальная программа — менеджер библиотек. Он берет адреса библиотек из файла /etc/ld.cache, а этот файл формируется утилитой ldconfig, на основе файлов конфигурации /etc/ld.so.conf.

В этом файле перечислены все пути к библиотекам. Если вы хотите добавить свою папку для библиотек просто добавьте ее в этот файл:

Затем обновите кэш просто выполнив:

Теперь ваша библиотека может быть загружена программой, например, вы можете добавить путь /opt/lib или даже /home/user/lib. И система будет нормально грузить оттуда библиотеки.

Посмотреть какие библиотеки находятся в кеше ld.cache можно командой:

Также мы можем проверить находится ли там определенная библиотека:

Еще один способ указать программе где нужно искать библиотеки — это переменная LD_LIBRARY_PATH. Например:

Теперь программы, запускаемые в этом терминале, кроме стандартных путей поиска библиотек, будут использовать и указанную папку.

Веб-интерфейс

Многие современные пакеты, такие как Jupiter Notebook или Tensor Board имеют встроенный веб-сервер, который обеспечивает взаимодействие с программой через веб-браузер. В этом случае возможно запустить сервер на узле, а браузер на хост-машине или на домашнем компьютере пользователя.

Запуск браузера на домашнем компьютере требует дополнительных настроек, связанных с пробросом портов, и здесь рассматриваться не будет.

Далее предполагается, что пользователь кластера использует подключение с поддержкой графической среды XWindow (клиенты X2Go, Mobaxterm и т.п.). Поскольку запускаемые скрипты требуют выполнения нескольких команд, они оформлены в виде файлов, которые могут запускаться как через srun, так и через sbatch.

В скриптах номера портов TCP выбираются на основе UID пользователя и базового смещения большего 1024. Это должно обеспечить возможность одновременного запуска скрипта на одном узле несколькими пользователями. Если порт случайно оказался занят, то можно поменять базу (в пределах 2000-20000) и попробовать запустить скрипт снова.

Запуск Jupiter Notebook

Для запуска Jupiter Notebook на узле, необходимо передать ему опцию —no-browser и IP адрес сетевой карты (иначе будет использован IP 127.0.0.1). Можно настроить авторизацию по паролю, отредактировав файл ~/.jupyter или выполнив команду , но авторизации по токену будет достаточно.

Скрипт запуска jupiter_slurm.sh

Запустив скрипт и дождавшись сообщения с URL и токеном можно запустить браузер и подключиться к своему JupiterNotebook.

Запуск Tensor Board

Запуск Tensor Board в целом аналогичен запуску Jupiter Notebook. В отличие от Jupiter Notebook у Tensor Board нет парольной защиты, так что теоретически возможно подключение к вашей Tensor Board какого-то пользователя кластера. При необходимости, эта проблема будет решаться административным путём — отключением слишком любопытных пользователей.

Скрипт запуска tensorboard_slurm.sh

Запуск:

Шаг 5: Загрузите и установите cuDNN

После установки базового установщика CUDA 9.0 и его четырех исправлений следующим шагом будет поиск совместимой версии CuDNN. Основываясь на информации на веб-сайте Tensorflow, для поддержки Tensorflow с графическим процессором требуется версия cuDNN по адресуминимум 7,2,

Шаг 5.1: Загрузка cuDNN

Для того, чтобыскачать CuDNNВы должны зарегистрироваться, чтобы стать участником программы разработчиков NVIDIA (которая бесплатна).

Когда вы создаете учетную запись, входите в систему и заполняете некоторые другие необходимые сведения о том, почему вы используете учетную запись, вы получаете страницу загрузки, показанную на рис. 16.

Шаг 5.2: Распаковка файлов cuDNN и копирование в папки CUDA

В приведенных ниже инструкциях я ссылаюсь на путь к папке «C: \ Users \ жо \ Documents \ cuDNN_downloads \»(Упоминается чуть выше) как« », Такой, что zip-файл теперь находится в пути:

В разархивированных подкаталогах папки cuDNN находятся три файла, которые нужно скопировать в каталоги CUDA Toolkit. Это cudnn64_7.dll, cudnn.h и:

1. cudnn64_7.dll

cudnn64_7.dll можно найти по следующему пути в загруженных файлах cuDNN:

Предполагая, что вы установили CUDA 9.0 по пути по умолчанию (как я сделал вШаг 2.3), а именно следующий путь по умолчанию:

Вы можете скопироватьcudnn64_7.dllфайл прямо в папку CUDAбункерПуть к папке (примечание: вам не нужно создавать какие-либо новые подпапки):

2. cudnn.h

Как и в случае с файлом cudnn64_7.dll, приведенным выше, после загрузки и разархивирования папки cuDNN файл заголовкаcudnn64.hможно найти в пути:

Опять же, предполагая, что вы установили CUDA 9.0 в путь по умолчанию, как я сделал вШаг 2.3скопироватьcudnn.hнепосредственно в папку CUDA по следующему пути (новые подпапки не нужны):

3. cudnn.lib

.Lib файлcudnn.libможно найти в загруженном пути cuDNN:

Скопируйте cudnn.lib непосредственно в папку CUDA по следующему пути:

Шаг 5.3: Проверка того, что переменные среды CUDA установлены в Windows

Наконец,инструкции на нвидииубедитесь, что вы ранее установили переменную среды CUDA следующим образом:

В Windows 10 переменные среды можно найти, выбрав:

Панель управления->Система и безопасность->система->Расширенные настройки системы,

Откроется окно «Свойства системы» (рис. 17), в котором следует выбрать кнопку «Переменные среды».

Когда появится окно «Переменные среды», в «системных переменных» (в нижней половине окна) нажмите «Путь» и нажмите кнопку «Изменить». Появится новое окно под названием «Редактировать переменную среды», как показано на рисунке 18 ниже.

6|2установка cuda

Введите на место Справочник:

Перехватите наиболее важные варианты в процессе установки:

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81? (y)es/(n)o/(q)uit: n # Если вы ранее устанавливали более позднюю версию драйвера видеокарты, вам не нужно устанавливать его повторно.Если вам нужно установить его снова, выберите Да, и вам нужно закрыть графический интерфейс.

Install the CUDA 9.0 Toolkit? (y)es/(n)o/(q)uit: y

Enter Toolkit Location [ default is /usr/local/cuda-9.0 ]: # Обычно выбирайте значение по умолчанию, вы также можете выбрать установку в другой каталог, указать на этот каталог при необходимости или использовать программную ссылку на / usr / local / cuda.

/usr/local/cuda-9.0 is not writable. Do you wish to run the installation with ‘sudo’? (y)es/(n)o: y

Please enter your password: Do you want to install a symbolic link at /usr/local/cuda? # Связывать ли установочный каталог с / usr / local / cuda через программную ссылку, да или нет, зависит от того, используете ли вы / usr / local / cuda в качестве каталога cuda по умолчанию. (y)es/(n)o/(q)uit: n

Install the CUDA 9.0 Samples? (y)es/(n)o/(q)uit: n

Краткое описание предыдущих выборов:

Please make sure that

  • PATH includes /usr/local/cuda-9.0/bin
  • LD_LIBRARY_PATH includes /usr/local/cuda-9.0/lib64, or, add /usr/local/cuda-9.0/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-9.0/bin

Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-9.0/doc/pdf for detailed information on setting up CUDA.

***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 9.0 functionality to work. To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file: sudo <CudaInstaller>.run -silent -driver

После завершения установки вы сможете увидеть его в каталоге / usr / local:

Выводы статьи

Обычно, на компьютере установлено довольно много программ, с помощью которых пользователь решает свои задачи. С течением времени, не все приложения становятся нужными или актуальными для использования в работе. Поэтому имеется смысл в деинсталляции ненужных программ с ПК.

Существует несколько способов для удаления программ в операционной системе Windows. Один из вариантов решения проблемы — деинсталляция приложений из командной строки или из Windows PowerShell.

Похожие публикации:

  • Буфер обмена Windows 10: расширенные возможности
  • ReadyBoost — ускорение работы системы и приложений
  • Как очистить историю на компьютере в Windows
  • Как добавить пункт в контекстное меню рабочего стола Window
  • Убираем стрелки с ярлыков в Windows — 3 способа
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: