Как обновить драйвера nvidia cuda

Обновлено: 17.05.2024

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

Видеокарта: Просто поймите, что мы сказали ранееGPU, Особенно серии GPU, производимые NVIDIA, потому что cuda и cudnn, описанные ниже, все разработаны NVIDIA исключительно для собственного GPU.

Графический драйвер: Очевидно, это буквально означает, обычно относится кNVIDIA Driver, По сути, это программный драйвер, а предыдущийВидеокартаЭто оборудование.

Архитектура графического процессора: Тесла, Ферми, Кеплер, Максвелл, Паскаль

Модель чипа: GT200, GK210, GM104, GF104 и др.

Серия видеокарт: GeForce, Quadro, Tesla

Модели видеокарт GeForce: G / GS, GT, GTS, GTX

Архитектура графического процессора относится к способу проектирования оборудования, например к количеству ядер в кластере потокового процессора, наличию кеш-памяти L1 или L2, наличия вычислительного блока с двойной точностью и т. Д. Архитектура каждого поколения - это своего рода мышление, как лучше завершить параллельное мышление

Чип является реализацией вышеупомянутой идеи архитектуры графического процессора. Например, вторая буква в модели чипа GT200 обозначает, какое поколение архитектуры, иногда бывает 100 и 200 поколений микросхем. Их основные идеи дизайна согласуются с этим поколением архитектуры, но в деталях Некоторые изменения были внесены в вышеизложенное, например, GK210 имеет вдвое больше регистров, чем GK110. Иногда в видеокарте может быть два чипа, и Tesla k80 использует два чипа GK210. Архитектура графического процессора первого поколения здесь также называется Tesla, но в основном нет карт с таким дизайном. Если упомянуто ниже, для различения будут использоваться архитектура Tesla и серия Tesla.

Нет никакой разницы в характере серии видеокарт, но NVIDIA надеется разделить ее на три варианта: GeForce для домашних развлечений, Quadro для рабочих станций и серия Tesla для серверов. Карта Tesla K-типа разработана для высокопроизводительных научных вычислений. Выдающиеся преимущества - это высокие вычислительные возможности с плавающей запятой двойной точности и поддержка памяти ECC. Однако возможность двойной точности бесполезна для обучения глубокому обучению, поэтому серия Tesla Представлена ​​модель M как специальная видеокарта для обучения сетей глубокого обучения. Следует отметить, что серия Tesla не имеет интерфейса вывода на дисплей, она ориентирована на расчет данных, а не на графическое отображение.

Последняя модель видеокарты GeForce представляет собой другую аппаратную настройку, чем позже, тем лучше производительность, чем выше тактовая частота, тем больше память, то есть G / GS <GT <GTS <GTX.

2 | 1 CUDA

image.jpg

2 | 2 cudnn

На самом деле это программная библиотека, специально разработанная для вычислений с глубоким обучением, которая предоставляет множество специализированных функций вычислений, таких как свертка. Как видно из приведенного выше рисунка, существует множество других программных библиотек и промежуточного программного обеспечения, включая trust, который реализует c ++ STL, cublas, реализующий версию blas для графических процессоров, cuFFT, реализующий быстрое преобразование Фурье, cuSparse, реализующий операции с разреженными матрицами, и Реализуйте cuDNN для ускорения сети с глубоким обучением и т. Д. Подробнее см.GPU-Accelerated Libraries

2 | 3 CUDA Toolkit

CUDA Toolkit состоит из следующих компонентов:

  • Compiler: Компилятор CUDA-C и CUDA-C ++ NVCC роды bin/ Справочник. Он построен на NVVM Над оптимизатором и NVVM Сам оптимизатор построен на LLVM На вершине инфраструктуры компилятора. Надеюсь, разработчики смогут использовать nvm/ Компилятор SDK в каталоге для непосредственной разработки для NVVM.
  • Tools: Укажите изображения profiler , debuggers И другие инструменты, эти инструменты могут быть из bin/ Попасть в каталог
  • Libraries: Некоторые из научных библиотек и служебных библиотек, перечисленных ниже, можно найти в lib/ Использовать в каталоге (DLL в Windows находится в bin/ В) их интерфейсы находятся в include/ Имеется в каталоге.
    • cudart: CUDA Runtime
    • cudadevrt: CUDA device runtime
    • cupti: CUDA profiling tools interface
    • nvml: NVIDIA management library
    • nvrtc: CUDA runtime compilation
    • cublas: BLAS (базовые подпрограммы линейной алгебры, базовая сборка линейной алгебры)
    • cublas_device: BLAS kernel interface
    • .

    3 | 1 nvcc

    Это было введено ранее, nvcc По сути, это компилятор CUDA, который можно скачать из CUDA Toolkit. /bin Из каталога аналогично gcc Это компилятор языка C. Поскольку программа запрограммирована в исполняемый двоичный файл компилятором, а программа cuda имеет два типа кодов: один - это код хоста, работающий на процессоре, другой - код устройства, работающий на графическом процессоре, поэтому nvcc Компилятор должен гарантировать, что две части кода могут быть скомпилированы в двоичный файл и выполнены на разных машинах. Суффиксы файлов и связанные с ними значения, используемые в 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

    3 | 2 nvidia-smi

    nvidia-smi Весь процесс представляет собой интерфейс управления системой NVIDIA, который основан на ранее представленной NVIDIA Management Library(NVML) Утилита командной строки, созданная для помощи в управлении и мониторинге устройств NVIDIA GPU.

    3 | 3 Отличаются ли версии CUDA, отображаемые nvcc и nvidia-smi?

    На сервере в нашей лаборатории nvcc --version Отображаются следующие результаты:

    а также nvidia-smi Результаты приведены ниже:

    можно увидеть nvcc Версия CUDA - 9.2, и nvidia-smi Версия CUDA - 10.0. Странно, что иногда код удается запустить в большинстве случаев.stackoverflowПриведенное выше объяснение выглядит следующим образом:

    CUDA имеет два основных API:исполняемый APIс участиемdriver API. Оба API имеют соответствующие версии CUDA (например, 9.2, 10.0 и т. Д.).

    • Используется для поддержкиdriver APIНеобходимые документы (например, libcuda.so )ОтGPU driver installerУстановлен. nvidia-smi Он принадлежит к этому типу API.
    • Используется для поддержкиruntime APIНеобходимые документы (например, libcudart.so также как и nvcc )ОтCUDA Toolkit installerУстановлен. (Установщик CUDA Toolkit иногда может интегрировать установщик драйвера графического процессора). nvcc Это инструмент компилятора-драйвера CUDA, устанавливаемый вместе с CUDA Toolkit. Он знает только версию среды выполнения CUDA, когда она была создана. Он не знает, какая версия драйвера графического процессора установлена, и даже установлен ли он.

    Таким образом, если версии CUDA API драйвера и API среды выполнения несовместимы, это может быть связано с тем, что вы используете отдельный установщик драйвера графического процессора вместо установщика драйвера графического процессора в установщике CUDA Toolkit.

    На следующем рисунке четко показана взаимосвязь между различными концепциями, упомянутыми ранее. Среди них среда выполнения и API драйвера во многих случаях очень похожи, что означает, что эффект от их использования эквивалентен, но вы не можете смешивать два API. , Потому что оба исключают друг друга. Другими словами, в процессе разработки вы можете выбрать только один из API. Простое понимание разницы между ними заключается в следующем: среда выполнения - это более продвинутый пакет, который более удобен для разработчиков, в то время как API драйвера находится ближе к основанию, а скорость может быть выше.

    Подробно о двух APIразличияследующим образом:

    • Сложность
      • API среды выполнения упрощает управление кодом устройства, обеспечивая неявную инициализацию, управление контекстом и управление модулями. Это упрощает код, но ему также не хватает уровня контроля, обеспечиваемого API драйвера.
      • Напротив, API драйвера обеспечивает более детальный контроль, особенно в контексте и загрузке модулей. Реализовать запуск ядра намного сложнее, потому что конфигурация выполнения и параметры ядра должны быть указаны с явными вызовами функций.
      • Для API среды выполнения все ядра автоматически загружаются во время инициализации во время выполнения и остаются загруженными во время работы программы.
      • С помощью API драйвера вы можете загружать только те модули, которые необходимы в данный момент, или даже динамически перезагружать модули. API драйвера также не зависит от языка, потому что он обрабатывает только cubin Объект.
      • Если контекст становится текущим контекстом вызывающего потока через API драйвера, среда выполнения будет его использовать,
      • Если такого контекста нет, он будет использовать «первичный контекст».

      Основной контекст создается по мере необходимости, по одному контексту на устройство для каждого процесса, подсчитываются ссылки, а затем уничтожаются, когда ссылок больше нет. В процессе все пользователи API среды выполнения будут совместно использовать основной контекст, если только контекст не стал текущим контекстом каждого потока. Контекст, используемый средой выполнения, то есть текущий контекст или основной контекст, может использоваться cudaDeviceSynchronize() Синхронизировать, вы также можете использовать cudaDeviceReset() уничтожить.
      Однако при использовании API среды выполнения с основным контекстом придется пойти на компромисс. Например, для разработчиков, которым необходимо писать подключаемые модули для более крупных пакетов программного обеспечения, это вызовет массу проблем, потому что, если все подключаемые модули работают в одном процессе, они будут использовать общий контекст, но не смогут взаимодействовать друг с другом. . То есть, если один из них вызывает после завершения всей работы CUDA cudaDeviceReset() , Другие плагины потерпят неудачу, потому что контекст, который они используют, уничтожен без их ведома. Чтобы избежать этой проблемы, клиенты CUDA могут использовать API драйвера для создания и установки текущего контекста, а затем использовать API среды выполнения для его обработки. Однако контекст может потреблять много ресурсов, таких как память устройства, дополнительные потоки хоста и затраты производительности при переключении контекста на устройстве. Такой вид совместного использования контекста драйвера времени выполнения очень важен при использовании API драйвера с библиотеками, построенными на API времени выполнения, таких как cuBLAS или cuFFT.


      5 | 1 PATH

      PATH - это путь к исполняемому файлу, который является наиболее часто встречающимся из трех, потому что каждая команда в нашей командной строке, такая как ls, top, ps и т. Д., Является файлом выполнения команды, найденным системой через PATH , Затем запустите эту команду (исполняемый файл). Например, в каталоге пользователя

      /mycode/ Есть папка bin, в которой находятся исполняемые двоичные файлы, сценарии оболочки и т. Д. Если вы хотите запустить исполняемый файл указанной выше папки bin в любом каталоге, вам нужно только добавить путь к корзине в PATH, как показано ниже:

      5 | 2 LIBRARY_PATH и LD_LIBRARY_PATH

      Эти два пути можно обсудить вместе,

      • LIBRARY_PATH даВо время компиляции программыУкажите путь для поиска общих библиотек при поиске библиотек динамической компоновки
      • LD_LIBRARY_PATH даВо время загрузки и запуска программыПри поиске библиотеки динамической компоновки укажите путь, отличный от пути по умолчанию в системе

      Их общей точкой является библиотека, которая представляет собой разницу между двумя путями и путем PATH, а PATH - это исполняемый файл.

      Разница между ними в том, что время использования разное. Один из них - период компиляции, который соответствует стадии разработки, такой как компиляция gcc; другой - период загрузки и выполнения, который соответствует стадии использования поставленной программы.

      Способ настройки аналогичен:

      На основе введения в предыдущих разделах будет легче понять, как теперь управлять несколькими версиями CUDA.

      6 | 1 Как скачать и установить cuda

      image.jpg

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

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

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

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

      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.

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

      6 | 3 Переключение между несколькими версиями cuda

      /.zshrc Пути, связанные с cuda, изменены на /usr/local/cuda/ Не используйте /usr/local/cuda-8.0/ или /usr/local/cuda-9.0/ 。

      nvcc: NVIDIA ® Cuda compiler driver
      Copyright © 2005-2016 NVIDIA Corporation
      Built on Mon_Jan_23_12:24:11_CST_2017
      Cuda compilation tools, release 8.0, V8.0.62

      На этой неделе мы обновили драйверы NVIDIA в нашем каталоге. Все версии драйверов CUDA 10 совместимые. Были добавлены такие версии:

      • 410.93 - R410 стабильная линейка с длительным сроком поддержки
      • 415.27 - R415 текущая стабильная ветка
      • 418.43 - R418 текущая бета ветка Для обновления драйверов достаточно воспользоваться утилитой nvidia-driver-update .

      После проведения ряда тестов на различном оборудовании мы выбрали версию 418.43 такой, которая теперь устанавливается по умолчанию, если не задан параметр для утилиты 'nvidia-driver-update'. Эта версия поддерживает все последние карты новой линейки NVIDIA RTX 20хх, и, кроме того, отмечено падение в 2 и более раза системной загрузки при майнинге на таких алгоритмах как семейство x16, cuckoo и других.

      Типичные вопросы перед установкой

      Прежде чем мы начнем, давайте ответим на типичные вопросы.

      Нужно ли обновлять?

      Нет! Если у Вас все работает - ничего не трогайте.

      Зачем тогда обновлять?

      Новые драйверы включают поддержку новых карт, таких как 1660ti, 2060, 2070, 2080, 2080ti серии Иногда специальная оптимизация у некоторых майнеров имеет положительный эффект на хэшрейте но только на некоторых алгоритмах и на топовых картах семейства Pascal - 10хх.

      Все еще не передумали?

      Процедура обновления

      Мы настоятельно рекомендуем использовать Hive Shell для правильной процедуры обновления. Конечно, если вы можете использовать локальную консоль - используйте ее, или если ваши риги находятся в одной локальной сети с вашим ПК / ноутбуком, то вы можете использовать, например, SSH-клиент PuTTY или браузерный вариант ShellInABox вместо Hive Shell. Процедура обновления довольно проста:

      1. Запустите консоль, например, Hive Shell
      2. Выполните в ней последовательно следующие команды:

      Теперь вы можете перезагрузить Ваш риг. После перезагрузки проверьте версию драйвера и работоспособность майнера.

      Обновление/откат до желаемой версии

      Вы можете обновить драйвер до желаемой версии. В этом случае командная строка для инструмента nvidia-driver-update должна содержать URL-адрес нужной версии драйвера. Например, понижение до 396.54:

      Возможные проблемы и их решение

      Ошибка установки драйвера (модуль nvidia-drm)

      Ошибка установки драйвера (nvidia-uvm)

      nvidia dr image

      Если установка останавливается со следующей ошибкой: В таком случае, перегрузите риг и повторите процедуру обновления.

      Ошибка при удалении предыдущего драйвера

      nvidia dr image

      Во время установки нового драйвера nvidia-driver-update удаляет сначала предыдущую версию драйвера. Если удаление прекращается со следующей ошибкой (Received signal SIGBUS; aborting): Пока нет решения. Не воспроизводится.

      Не хватает места на диске

      • используйте инструмент расширения диска disk-expand, чтобы увеличить диск, чтобы использовать все пространство
      • удалите неиспользуемые драйверы из /hive-driver-pack (для этого отправьте вашему воркеру команду rm /hive-drivers-pack/NV* , которая удалит все имеющиеся архивы драйверов NVIDIA)
      • удалите майнеры hpkg утилитой

      Ошибка установки при распаковке драйвера

      По умолчанию каталог TMP находится на RAM-диске, поэтому вам необходимо включить в журналах некоторое пространство. logs-on reboot

      После обновления майнер не запускается должным образом

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

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

      Nvidia перестала выпускать драйверы Studio Drivers для серии 9 и ниже. Adobe. настоятельно рекомендуются следующие драйверы:

      • Используйте один из следующих драйверов 460.89:

      Кроме того, компания NVIDIA прекратила поддержку мобильных графических процессоров Kepler. Если вы используете один и этих драйверов, отчет о совместимости системы в Premiere Pro 14.0 предупредит вас о необходимости обновления драйвера. Однако обновления для этой серии драйверов отсутствуют.

      Ниже приведены некоторые проблемы драйверов, с которыми вы можете столкнуться.

      • Зеленые, розовые или фиолетовые полосы в Premiere Rush и Premiere Pro после импорта файла или в экспортированном файле. Для получения более подробной информации по устранению этой ошибки см. раздел Зеленое и розовое видео в Premiere Pro CC 13.0 или Premiere Rush CC 1.0.
      • Параметр рендеринга становится неактивным при переходе к разделу Файл > Настройки проекта > Общие .
      • Периодические сбои при редактировании.
      • Нет предварительного просмотра, искаженный предварительный просмотр, падение частоты кадров, проблемы с производительностью, включая медленное воспроизведение или сбои кадров. В этой статье описываются требования для использования графики CUDA, Intel и Apple Metal с версиями Premiere Pro 2019 года (13.0 и выше).

      Для ускорения графики NVIDIA CUDA требуются драйверы CUDA 10.1.

      CUDA не является обязательным требованием для запуска видеоприложений Adobe, но если вы предпочитаете ускорение графики CUDA, то у вас должны быть установлены драйверы CUDA 10.1 от NVIDIA до того, как вы обновите Premiere Pro до версии 13.0 и выше.

      Обновление драйверов NVIDIA в Windows

      Вы можете запускать Premiere Pro с новейшими графическими процессорами серии GeForce или картами серии Quadro.

      Эти драйверы регулярно обновляются, поэтому зайдите на веб-сайт NVIDA и убедитесь, что у вас установлена последняя версия для вашего графического процессора.

      Последние драйверы ГП доступны здесь:

      Обновление драйвера дисплея и CUDA 10.1 для macOS

      Требования для запуска CUDA 10.1 на macOS:

      • Требуется macOS 10.13.6 (последняя версия High Sierra).
      • Современный графический процессор NVIDIA с минимальным объемом памяти 4 ГБ.
      • Драйвер дисплея NVIDIA версии 387.10.10.10.40.128.

      macOS 10.14 (Mojave) в настоящее время не поддерживает CUDA.

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

      Adobe поддерживает те версии Windows и macOS, которые все еще активно поддерживаются Microsoft и Apple. Для macOS сюда обычно входят три последние версии.

      Это относится и к последним выпускам. Однако, чтобы реализовать преимущества ускорения графики Metal от Apple, версия Premiere Pro 2019 должна работать либо на macOS 10.13 (High Sierra), либо на недавно выпущенной версии 10.14 (Mojave).

      Вы все еще можете запускать Premiere Pro на macOS 10.12 с использованием ускорения графики OpenCL, но Metal обеспечивает на 15-20 процентов более быстрый рендеринг, и Adobe рекомендует его для оптимальной производительности.

      Premiere Pro версии 13.0 и более поздних версий требует последней версии графических драйверов Intel. Ваш драйвер Intel должен иметь версию не ниже 27.20.100.8476, чтобы избежать проблем со стабильностью и производительностью. Рекомендуется обновить драйверы Intel до указанной выше версии.

      100.8476 относится к последним двум числам полной версии драйвера Intel (например, 27.20.100.8476)

      Если версия вашего драйвера ниже 100.6286 и производитель вашего ПК не предоставляет совместимую версию, не рекомендуется устанавливать более раннюю версию, чем 100.6286, с веб-сайта Intel. Драйвер версии 100.6444 является драйвером Windows DCH, который не может быть корректно установлен поверх устаревших драйверов.

      "Стандартными" пакетами являются те, которые не требуют компонентов драйверов DCH.

      "DCH" ( Декларативные, Компонентные, Аппаратные приложения для поддержки) – это новые пакеты, которые предварительно устанавливаются OEM-провайдерами и включают универсальный драйвер Microsoft.

      Драйверы DCH не могут быть установлены со стандартной системой, а стандартные драйверы с системой DCH.

      Чтобы подтвердить тип системы, которую вы используете, перейдите в пункт Тип драйвера, который находится ниже меню «Системная информация» на панели управления NVIDIA.

      X

      WHQL сертификация , GRD , SD , NFB / QNF , PB / ODE , PB / LLB , NFB / SLB , Бета выпуск

      "WHQL сертификация" Тестирование Windows Hardware Quality Labs, или WHQL, - это процесс тестирования, который включает проведение серии тестов на аппаратном или программном обеспечении третьей стороны (т.е. не Microsoft) и предоставление результатов тестов для оценки компании Microsoft. Процедура может также включать проведение Microsoft собственных текстов на широком спектре оборудования, например, на различном аппаратном обеспечении и с различными выпусками Microsoft Windows.

      "GRD" Драйверы Game Ready обеспечивают лучшие игровые возможности во всех популярных играх. Начиная с раннего доступа и на протяжении всего существования игры, команда по разработке драйверов NVIDIA тщательно тестирует все ключевые функции, поэтому драйверы оптимизируют производительность, позволяют добиться максимальной стабильности и отличной функциональности геймплея.

      "SD" Драйверы Studio обеспечивают лучшие возможности работы в основных приложениях для профессионального творчества. NVIDIA проводит тщательное тестирование, направленное на проверку функциональности в ведущих приложениях, и гарантирует высочайший уровень производительности, стабильной работы и функциональности.

      "NFB / QNF" New Feature Branch (NFB) [Ранее назывался Quadro New Feature (QNF)] из последней серии выпусков драйверов, он обеспечивает новейшие возможности и функции между выпусками драйвера Production Branch. Драйвер был протестирован для рабочих станций с ограниченной поддержкой продукта и рекомендован к использованию только для пользователей, нуждающихся в особых возможностях, которые указаны в соответсвующем разделе «Возможности выпуска».

      "PB / ODE" Production Branch (PB) [Ранее назывался Оптимизированный для предприятий драйвер (ODE)] / Studio Большинство пользователей выбирает этот тип драйвера для обеспечения оптимальной производительности и стабильной работы. Драйверы Production Branch оснащены сертификатами ISV, поддержкой всего жизненного цикла и обеспечивают все функции драйверов Studio такой же версии.

      "PB / LLB" Production Branch (PB) [Ранее назывались драйверы для Linux с долгосрочной поддержкой (LLB)] Драйверы Production Branch для Linux оснащены сертификатами ISV и обеспечивают оптимальную производительность и стабильность работы для пользователей Unix. Такой драйвер обычно используется в компаниях, обеспечивая постоянные исправления ошибок и стандартные обновления безопасности.

      "NFB / SLB" New Feature Branch (NFB) [Ранее назывался Драйвер для Linux с краткосрочной поддержкой (SLB) Драйверы New Feature Branch для Linux предоставляют разработчикам и ранним пользователям доступ к новым функциям до интеграции в драйверы Production Branches.

      Читайте также: