- Pros and cons of CUDA on Linux vs Windows?
- 3 Answers 3
- О технологии многопотоковых вычислений CUDA в видеокартах компании Nvidia
- Что такое технология CUDA?
- Влияет ли на хешрейт версия CUDA, установленная на компьютере?
- Вам также может понравиться
- Блокчейн-платформа Aeternity и майнинг на алгоритме CuckooCycle
- Борьба с ошибкой Bad return status for module build on kernel
Pros and cons of CUDA on Linux vs Windows?
I’m using both operating systems (Fedora 13 and Windows 7) for different purposes, but I’m going into GPU computing using CUDA C/C++. I’ve read about the Parallel Nsight plugin for Visual Studio and it seems like an amazing environment to develop in. However, Linux has always had a greater range of of tools and GPU supercomputers usually do use Linux. Anyway, I’d like to know the pros and cons from anyone whose used either or both of the platforms. In case anyone is wondering, it’s a dual-boot system and I’m going to install a GTX 470 for GPU debugging into my extra PCI express slot. Please no flame wars.
3 Answers 3
The NVidia tools on windows are nice.
The reason supercomputers use Linux is that the windows client license on 10,000 nodes gets pricey! There are also tradiationally a bunch of better tools to manage Linux clusters.
There is a general performance hit on windows just because there is lots of gui stuff you can’t turn off. We measured 10-15% lower performance for a CPU bound task vs Linux running a command line.
The actual performance inside the Cuda task on the GPU ‘should’ be the same.
10-15%. That is quite a performance hit, however this is merely one GPU that I will be running a CUDA program on. How many GPUs were your people using when you measured this performance discrepancy between the two operating systems?
Oh I see, misread the answer, so I might as well use Windows, since I already have the VS10 and VS08 installed?
Is this still true? I’m using CUDA 10-2 on Ubuntu and we get screaming fast results, haven’t tried with Windows10 yet.
This answer could be improved by reference to features/limitations of CUDA on windows vs Linux. At the moment it is not specific to CUDA.
If you are going to be using cuda code for production software, you might as well do it in the environment you are most friendly with.
But if you are looking at a performance point of view, and the time taken for a build, it would be best to use Linux (if you are comfortable with Make).
Ease of use will certainly depend on your experience. But assuming you have equal experience on Windows and Linux, please find pros/cons below.
In summary, Linux will probably have less friction and fewer limitations. However, if you are on a Windows OS and don’t want to dual-boot Linux, it may be worth it to use Windows or to compromise with WSL2. I’ve got CUDA development up and running on Linux multiple times (sometimes with a little heartache) but abandoned a Windows setup due to issues below. I will dual-boot Linux instead.
- Most developers seem to use it so there will be better support in the NVIDIA forums, more examples for set up with VSCode etc.
- Building programs e.g. the CUDA samples have a very explicit make file which gets a lot of use, plenty of video and other references to using it.
- Supports all CUDA features
- Matches the target production system in most cases, most production workloads will be on Linux
- The toolkit installation is fairly straight-forward
- The toolkit includes NSight productivity tools but you need to have Visual Studio (rather than VS Code) installed for them all to auto-install
- Using Visual Studio is quite intuitive to build and run the solutions
- Encountered one bug during the solution build for the CUDA samples, missing files fixed by https://dominoc925.blogspot.com/2021/03/cuda112props-not-found-in-visual-studio.html
- However, cannot get the CUDA runtime 11.8 template to load in Visual Studio to do actual dev. I tried instructions here for 11.6 but no dice. https://forums.developer.nvidia.com/t/cuda-11-6-missing-project-templates-in-visual-studio-2022/200594/3
- Ultimately most content out there is targetted to Linux which makes a Windows environment a lonely and difficult setup!
- Maybe it’s a decent compromise as you can avail of most of Linux functionality and content out there
- But, the installation is a little trickier. As per https://docs.nvidia.com/cuda/wsl-user-guide/index.html, you need to install the CUDA toolkit within WSL2 but be careful not to install the one with the driver.
- There are some limitations as per above link, e.g. profiling is not supported
О технологии многопотоковых вычислений CUDA в видеокартах компании Nvidia
Видеокарты производства компании Nvidia пользуются заслуженной славой в области проведения надежных высокопроизводительных вычислений. Благодаря наличию аппаратных возможностей технологии CUDA, «зеленые карты» показывают отличные результаты и при майнинге на большинстве алгоритмов консенсуса PoW.
Рассмотрим подробнее некоторые особенности CUDA.
Что такое технология CUDA?
CUDA (Compute Unified Device Architecture) – это технология многопотоковых компьютерных вычислений, созданная компанией NVIDIA. Она позволяет значительно увеличить производительность при проведении сложных расчетов за счет распараллеливания на множестве вычислительных ядер.
Приложения CUDA используются для обработки видео и аудио, моделирования физических эффектов, в процессе разведки месторождений нефти и газа, проектировании различных изделий, медицинской визуализации и научных исследованиях, в разработке вакцин от болезней, в том числе COVID-19, физическом моделировании и других областях.
CUDA ™ – это архитектура параллельных вычислений общего назначения, которая позволяет решать сложные вычислительные задачи с помощью GPU. CUDA поддерживает операционные системы Linux и Windows. Чем больше ядер CUDA имеет видеокарта и чем больше частота их работы, тем большую производительность она может обеспечить.
Каждая дополнительна единица вычислительной мощности требует соответствующего количества потребленной электроэнергии. Чем меньший технологический процесс используется при производстве вычислительных ядер, тем меньшие напряжения используются для их питания и, соответственно снижается потребление. Поэтому, даже если видеокарты разных поколений имеют одинаковую теоретическую вычислительную мощность в TFlops, их эффективность кардинально отличается по КПД, в значительной мере зависящему от потребления полупроводниковых элементов, из которых состоят ядра видеопроцессоров.
Архитектура CUDA упрощенно включает набор исполняемых команд и аппаратный механизм проведения параллельных вычислений внутри графического процессора. Разработчики программного обеспечения, в том числе майнеров, для работы с CUDA обычно используют языки программирования высокого уровня (C, Фортран). В будущем в CUDA планируется добавление полноценной поддержки C ++, Java и Python. Продвинутые программисты дополнительно улучшают эффективность майнеров с помощью оптимизации кода майнеров на языке более низкого (машинного) уровня – Ассемблере. В качестве примера в этом контексте можно привести Клеймор дуал майнер, который показывает высочайшую эффективность на зеленых видеокартах.
В технологии CUDA есть три важных элемента: библиотеки разработчика, среда выполнения и драйвера. Все они прямо влияют на производительность и надежность работы приложений.
Драйвер – это уровень абстракции устройств с поддержкой CUDA, который обеспечивает интерфейс доступа для аппаратных устройств. С помощью среды выполнения через этот уровень реализуется выполнение различных функций по проведению сложных вычислений.
Таблица версий CUDA, поддерживающихся в драйверах NVIDIA разных версий:
Версия CUDA | Linux x86_64 | Windows x86_64 |
---|---|---|
CUDA 11.1 | >=455.23 | >=456.38 |
CUDA 11.0.3 Update 1 | >= 450.51.06 | >= 451.82 |
CUDA 11.0.2 GA | >= 450.51.05 | >= 451.48 |
CUDA 11.0.1 RC | >= 450.36.06 | >= 451.22 |
CUDA 10.2.89 | >= 440.33 | >= 441.22 |
CUDA 10.1 (10.1.105) | >= 418.39 | >= 418.96 |
CUDA 10.0.130 | >= 410.48 | >= 411.31 |
CUDA 9.2 (9.2.148 Update 1) | >= 396.37 | >= 398.26 |
CUDA 9.2 (9.2.88) | >= 396.26 | >= 397.44 |
CUDA 9.1 (9.1.85) | >= 390.46 | >= 391.29 |
CUDA 9.0 (9.0.76) | >= 384.81 | >= 385.54 |
CUDA 8.0 (8.0.61 GA2) | >= 375.26 | >= 376.51 |
CUDA 8.0 (8.0.44) | >= 367.48 | >= 369.30 |
CUDA 7.5 (7.5.16) | >= 352.31 | >= 353.66 |
CUDA 7.0 (7.0.28) | >= 346.46 | >= 347.62 |
Для CUDA 6.5 нужны драйвера 340.0+, для CUDA 6.0 – 331.00, для CUDA 5.5 – не ниже 319.00.
При установке новых драйверов на видеокарты со старой версией compute capability вычисления производиться не будут.
Например, на большинство видеокарт с архитектурой Kepler (GeForce 640 – 780Ti, 910M, GTX TITAN, compute capability 3.5) нет смысла ставить драйвера новее 441.22 (Windows) или 440.33 (Linux), так как в них отсутствует поддержка compute capability 3.x.
Информация, которую нужно учитывать при установке драйверов для видеокарт Nvidia на предмет соответствия версии compute capability CUDA:
- CUDA SDK 1.0 – поддерживает версии compute capability 1.0 – 1.1 (Tesla);
- CUDA SDK 1.1 – 1.0 – версии 1.1+x (Tesla);
- CUDA SDK 2.0 – 1.0 – версии 1.1+x (Tesla);
- CUDA SDK 2.1 – 2.3.1 – версии 1.0 – 1.3 (Tesla);
- CUDA SDK 3.0 – 3.1 – 1.0 – версия 2.0 (Tesla, Fermi);
- CUDA SDK 3.2 – версии 1.0 – 2.1 (Tesla, Fermi) [32]
- CUDA SDK 4.0 – 4.2 – версии 1.0 – 2.1+x (Tesla, Fermi).
- CUDA SDK 5.0 – 5.5 – версии 1.0 – 3.5 (Tesla, Fermi, Kepler).
- CUDA SDK 6.0 – версии 1.0 – 3.5 (Tesla, Fermi, Kepler).
- CUDA SDK 6.5 – версии 1.1 – 5.x (Tesla, Fermi, Kepler, Maxwell). Последняя версия CUDA для видеокарт с поддержкой компьютерных вычислений версии 1.x (Tesla)
- CUDA SDK 7.0 – 7.5 – версии 2.0 – 5.x (Fermi, Kepler, Maxwell).
- CUDA SDK 8.0 – для версий 2.0 – 6.x (Fermi, Kepler, Maxwell, Pascal). Последняя версия CUDA для видеокарт с поддержкой компьютерных вычислений версии 2.x (Fermi) (Pascal GTX 1070Ti не поддерживается);
- CUDA SDK 9.0 – 9.2 – поддержка версий 3.0 – 7.2 (Kepler, Maxwell, Pascal, Volta). Видеокарты с архитектурой Pascal GTX 1070Ti не поддерживаются;
- CUDA SDK 10.0 – 10.2 – поддержка 3.0 – 7.5 (Kepler, Maxwell, Pascal, Volta, Turing). Это последняя версия CUDA с поддержкой компьютерных вычислений версии 3.x (Kepler);
- CUDA SDK 11.0 – 11.2- частично 3.5 – 8.6 (некоторые карты с архитектурой Kepler, Maxwell, Pascal, Volta, Turing, Ampere).
Библиотеки разработки (CUDA SDK) на практике реализуют выполнение математических операций и крупномасштабных задач параллельных вычислений.
Среда выполнения CUDA – это интерфейс разработчика плюс компоненты выполнения программного кода. Она определяет основные типы данных и функций для проведения вычислений, преобразований, управления памятью, позволяет реализовать доступ к устройствам и спланировать выполнение команд.
Программный код CUDA на практике обычно состоит из двух частей, одна из которых выполняется на CPU, а другая на GPU.
Ядро CUDA имеет три важных абстрактных понятия:
которые могут быть достаточно легко представлены и использованы на языке программирования Си.
Программный стек CUDA состоит из нескольких уровней, аппаратного драйвера, интерфейса прикладного программирования (API) и среды его выполнения, а также двух расширенных математических библиотек общего назначения, CUFFT и CUBLAS.
Теоретически каждое новое поколение CUDA должно демонстрировать более высокую производительность за счет устранения выявленных ошибок, оптимизации кода, добавления новых алгоритмов и прочих новшеств. К сожалению, на практике это не всегда соответствует реалиям. В особенности это связано с постоянным ростом аппетита программ по отношению аппаратным ресурсам. Это касается не только программных пакетов CUDA, но затрагивает даже такие, казалось бы, независимые операционные системы, как Linux.
Влияет ли на хешрейт версия CUDA, установленная на компьютере?
Практические опыты с майнерами на разных версиях CUDA показывают, что новые версии особого прироста в хешрейте не дают.
Использование новых драйверов Nvidia обычно сопряжено с увеличением требований к аппаратному обеспечению и часто влечет рост потребления видеопамяти, что не всегда положительно сказываются на производительности видеокарт при майнинге.
Это особенно проявляется в быстродействии и потреблении видеопамяти при майнинге на алгоритме Ethash/DaggerHashimoto. Как правило, старые версии драйверов потребляют меньше видеопамяти при одинаковой производительности на Ethash.
Для обычных пользователей нет необходимости заботиться о версии CUDA, если только этого не требуют последние версии майнеров с новыми поддерживающимися алгоритмами.
Тем не менее, нужно учитывать, что технология CUDA постоянно совершенствуется, в нее добавляются новые возможности, которые требуют адаптации программ-майнеров. Поэтому современные майнеры иногда имеют разные версии, которые поддерживают работу с разными версиями CUDA 8.0, 9.1/9.2, а также 10.0, 10.1 и 10.2.