CUDA vs OpenCL
Решил попробовать CUDA.
Были большие ожидания, мол должен быть клевый язык с фишками, плюшками, интеграцией в VisualStudio.
Но с 2015 где update > 2 не работает, хм, ладно поставил 2013.
Отладка не заработала из коробки ( может ее и нет вообще
И еще был дико возмущен необходимостью писать вот такой код:
__global__ void addKernel(double3 *c, const double3 *a, const double3 *b)
О новое тысячелетие! О космические корабли!((
После этого мираж о суперудобной куде растворился совсем(
Теперь смотрю в сторону брутального OpenCL, уж если брутализировать то шоб прям соусем !
Какие у CUDA нынче плюшки по сравнению с OpenCL?
Пока только одну нашел — студия подсвечивает ошибки в коде
Что еще?
#1
5:59, 12 авг 2016
Куда — это более зрелая технология с достаточно развитым toolchain разработки. Большие научные сообщества как правило предпочитают использовать Куда (не в последнюю очередь ввиду того, что NVIDIA инвестирует в данную технологию и под неё есть вагон библиотек). В OpenCL есть совместимость с устройствами помимо видеокарт NVIDIA и пользоваться ей чуть менее удобно. В целом же, обе технологии очень близки друг к другу. Писать эффективный код и под так, и под другую сложно.
#2
10:15, 12 авг 2016
Arxon
> Какие у CUDA нынче плюшки по сравнению с OpenCL?
Практически никаких 🙂 Возможно может наличие более удобных тулзов. Но Это все спорный момент, для AMD есть CodeXL. С учетом того что возможно новые разработки будут писаться на OpenCL и он на некоторых задачах OpenCL на AMD рвет CUDA на nVidia. Для будущего я бы выбрал OpenCL поддержка всех видеокарт в отличие от nVidia это больший плюс.
#3
12:03, 12 авг 2016
Andrey
> Практически никаких 🙂
Ну да, никаких Tesla в природе не существует. У CUDA R&D поддержка в разы больше, чем у AMD.
> Для будущего я бы выбрал OpenCL поддержка всех видеокарт в отличие от nVidia
> это больший плюс.
CL не только для GPU может быть
#4
12:06, 12 авг 2016
Andrey
> рвет
#5
14:06, 12 авг 2016
CUDA не может компилировать исходники в рантайме, может что-то и добавили, но весьма геморно.
OpenCL не поддерживает перегрузку функций и этот жуткий синтаксис кастов: convert_float, convert_int2 и тд.
Это мои основные претензии, у CUDA вроде с отладкой получше, с интеграцией с GL, с поддержкой фич в отличие от OpenCL на nVidia, но я выбрал OpenCL.
Кстати, OpenCL программы компилируются заметно дольше чем GLSL, возможно они лучше оптимизируются, либо так медленно перегоняются в CUDA ))
#6
21:18, 12 авг 2016
innuendo
> У CUDA R&D поддержка в разы больше, чем у AMD.
неа. У АМД Никак не меньше, и дальше еще будет лучше.
/A\
> OpenCL программы компилируются заметно дольше чем GLSL, возможно они лучше оптимизируются
про оптмизацию врядли, А насчет времени компиляции, то тут предположительно сложность шейдеров иная.
#7
22:11, 12 авг 2016
Andrey
> неа. У АМД Никак не меньше, и дальше еще будет лучше.
У них есть аналог Tesla ?
Напомни, что лично ты делал на compute shaders ?
#8
22:34, 12 авг 2016
Кимпиляция в рантайме это минус для удобства разработки.
В датацентрах сплошная нвидиа.
Вижу что CUDA как технология лучше, думаю спорить никто не будет.
Интересны ее килер фичи.
#9
22:50, 12 авг 2016
Ты что делать хочешь ? Лучше знать оба
#10
23:22, 12 авг 2016
Я вроде слышал, что CUDA быстрее, чем OpenGL и всякие вычислительные кластеры с GPGPU делают с NVidia’вскими карточками.
Но меня возмущает то, что она совместима только с одной IDE, причём её старой версии. Из-за этого я принципиально не буду использовать CUDA без крайней необходимости. Можно конечно наверное и из консоли, но не хочу так красноглазить. На винде это слишком неудобно.
#11
1:49, 13 авг 2016
innuendo
>>Ты что делать хочешь ?
Image processing на сервере
>>Лучше знать оба
Нет смысла знать даже один, главное знать как железка устроена и писать удобно код.
#12
18:38, 13 авг 2016
Arxon
> > > что делать хочешь ?
> Image processing на сервере
Любое железо или только Nvidia ?
Andrey
> про оптмизацию врядли, А насчет времени компиляции, то тут предположительно
> сложность шейдеров иная.
Напомни, что лично ты делал на compute shaders ?
#13
21:34, 13 авг 2016
innuendo
>>Любое железо или только Nvidia ?
Скорее всего нвидиа будет, на амазоне другого нету
Но не в сервере дело, дело в моем личном удобстве при разработке, так как пока нефига не работает расчет и чтоб проверять различные гипотезы не хочется ждать многие минуты. Сейчас не до оптимизаций, брутфорс бы немного скрасил процесс.
Забегая вперед. Есть ли у CUDA движения в сторону Inter Process Communication, всякие темы с шарингом памяти, семфорами?
Копирование туда сюда не впечатляет. Для текущей задачи это совсем не нужно, просто интересно как быстро к гомогенной архитектуре движутся.
#14
10:50, 16 авг 2016
Arxon
> Забегая вперед. Есть ли у CUDA движения в сторону Inter Process Communication,
> всякие темы с шарингом памяти, семфорами?
Ты рамсы попутал? Какие к черту семафоры? На ГПУ используюися барьеры памяти.
Лично я пишу на OpenCl + CodeXL, т.к. на студии уже давно не программирую. В CUDA есть только один плюс — интеграция в студию, где есть встроенный отладчик gpu
Что лучше cuda или opencl
SONY Vegas Pro
Вопросы и ответы по «SONY Vegas Pro»
Вопрос и ответы были вам полезны?

Да

Нет
Попробуйте также:

Похожие вопросы :
- Sony Vegas вылетает при рендеринге и предпросмотре. (Ответов: 1)
- Рендеринг в Sony Vegas Pro 11 (Ответов: 1)
- Лагает Sony Vegas Pro 13. Чёрный экран при предпросмотре в любом качестве. Рендеринг. (Ответов: 4)
- После рендеринга видео в SONY Vegas Pro 13 видео есть, а аудио нет. Что делать ? (Ответов: 3)
- Проблема с рендерингом (Ответов: 1)
- Рендеринг (Ответов: 0)
- Пиксели при добавлении видео в программу. (Ответов: 1)
- Вылетает Вегас при рендеринге. Ничего не помогает (Ответов: 5)
- Падает качество картинки при уменьшении кадра и подложенном ниже футажом? (Ответов: 1)
- Как исправить цветовые искажения после рендеринга? (Ответов: 1)
В чем различие между OpenGL, DirectX, OpenCL, CUDA?
сразу прошу прощение за очень глупый вопрос, но чем отличается OpenСL от DirectX, OpenGL, CUDA? почему есть сравнение DirectX с OpenGL и OpenCL с CUDA, но нет сравнения допустим OpenCL и DirectX? я догадываюсь что они очень разные, но как я понимаю они все позволяют обращаться к видеокарте и ускорять с помощью нее вычисления. Хотелось бы узнать различие между этими технологиями и что за что отвечает?
Отслеживать
задан 21 апр 2020 в 15:47
Илья Антипанов Илья Антипанов
111 1 1 серебряный знак 9 9 бронзовых знаков
А как вы собираетесь сравнивать сладкое и зелёное?
21 апр 2020 в 16:02
@ArchDemon По идее они не являются «сладким или зеленым», по факту это API для доступа к ресурсам видеокарты. Если бы один обращался к видеокарте, второй к звуковой карте, третий к сетевым параметрам тогда я бы понял что нельзя их сравнивать, но тут все они обращаются к видеокарте и делают на ней просчеты, значит сравнить их можно по скорости работы и применению в разных сферах и где какая технология предпочтительней.
21 апр 2020 в 16:05
Для начала: OpenGL и DirectX предназначены для работы с графикой, а CUDA и OpenCL — для распараллеливания на GPU. Т.е эти внутри этих пар их можно как-то сравнивать, но между — нет.
21 апр 2020 в 16:06
То что сладкое и зелёное принадлежит моему яблоку, ещё не значит эти характеристики можно сравнивать между собой
21 апр 2020 в 16:07
@ArchDemon можно ли с помощью каждой технологии сделать подсчеты с графикой? Если да, то вполне можно сравнить или все таки расписать в чем принципиальное их отличие, где используется одна технология, а где другая. Если обратиться к википедии и сравнить directX и openCL то область применения у них попадает на графику, встает вопрос когда рационально использовать одно а когда другое.
21 апр 2020 в 16:15
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
OpenGL vs DirectX
Это два движка для отрисовки графики.
DirectX — это только для Windows, с C++ и интерфейсами, с закрытым кодом.
OpenGL открытый, есть для многих разных платформ. Внутри код написан в Си стиле.
В принципе любая игра может быть написана на любой из платформ. Да, на них можно сделать расчеты, но неудобно.
OpenCL vs CUDA
А это средства, которые позволяют использовать видеокарту для рассчётов. В первом приближении можно считать, что видеокарта это много-много маленьких процессоров, которые умеют выполнять однотипные расчеты.
CUDA — разработка от Nvidia. Закрытые исходники, только для Nvidia. OpenCL — открытое, для разнообразных видеокарт.
Писать на них игры можно, конечно, но эти библиотеки (или это все таки фреймворки?) не предназначены для отрисовки графики.
Как выбрать видеокарту для нейронных сетей и глубокого обучения
Для задач, связанных с машинным обучением, необходимы большие вычислительные мощности. Грамотный выбор видеокарты для этих целей позволит с высокой скоростью вычислять оптимальные архитектуры и настройки глубоких сетей, выполнять эксперименты не за несколько месяцев, а за несколько дней и за минуты, вместо часов.
GPU для машинного обучения
Чтобы выполнять машинное обучение эффективно, важно учитывать количество ядер и размер памяти видеокарты. Так как глубокое обучение представляет собой множество линейных функций, много простых операций происходят одновременно, для него лучше подходят именно графические процессоры. Дело в том, что именно они предназначены для множества параллельных вычислений, в то время как центральные процессоры – для последовательных. В статье поговорим о том, как выбрать GPU для глубокого обучения.
Два ведущих производителя графических чипов: NVIDIA и AMD. Сейчас Intel тоже начинает выпускать на рынок свои карты, но пока они не дают высокую производительность.
Ранее библиотеки для машинного обучения использовали технологию CUDA, которая встречалась только на картах NVIDIA. Это сделало GPU данного производителя ведущим в области обучения нейросетей. Спустя время популярные библиотеки стали поддерживать OpenCL, что позволило работать и на картах AMD, однако на данный момент NVIDIA предпочтительнее.
Для глубокого обучения подойдёт часть карт архитектуры Kepler, модели архитектуры Maxwell и более новые карты.
Основные критерии при выборе
Прежде, чем искать и приобретать подходящую GPU, определитесь с областью применения. Будет ли это Kaggle, компьютерное зрение и т.п. Далее рассмотрим, на какие технические характеристики стоит обратить внимание при выборе видеокарт для глубокого обучения.
Аренда облачного сервера для разработки, хостинга, обученияПодробнее
Объём памяти
Процесс перемещения данных из памяти и в память замедляет выполнение вычислений, в связи с этим количество встроенной памяти GPU является важным критерием. Чем больше значение памяти, тем предпочтительнее. Для разных задач требуются разные объёмы памяти.
Если перед вами стоит небольшая задача с малым количеством входных параметров, для соревнования в Kaggle достаточно будет менее 10-11 ГБ. Подойдут такие видеокарты, как RTX 3080 и RTX 3070.
Для предобученных моделей архитектуры Transformer (распознавание изображений, исследование компьютерного зрения и др.) потребуется более 11 ГБ. А для больших моделей в Transformer или в сверточных нейросетях – более 24 ГБ.
Пропускная способность памяти
Пропускная способность памяти имеет критическое значение для целей машинного обучения. Её влияние может быть даже выше, чем мощность графического процессора, например, при обучении распознаванию лиц. Данный параметр при необходимости можно самостоятельно рассчитать, умножив значение шины памяти на ее эффективную частоту, а потом разделив итоговое число на 8.
Чип видеокарты
Чипы карт могут иметь разное количество ядер CUDA, а также их архитектурой. GPU линии RTX имеют тензорные ядра, которые представляют собой блоки графического процессора для машинного обучения, благодаря которым ощутимо повышается скорость тренировки нейросетей.
Такие ядра ощутимо быстрее CUDA, так как на операции нужно меньше циклов. Видеокарты RTX могут выполнять вычисления c низкой точностью, данный режим позволяет обучать модели вдвое большего размера при том же объеме памяти.
Работа на нескольких видеокартах
Для повышения скорости обучения можно устанавливать несколько GPU. При обучении сверточных нейросетей можно получить ускорение в 1,9/2,8/3,5 раза, если использовать 2/3/4 GPU соответственно. Для рекуррентных сетей более важна длина последовательности. Для NLP ускорение будет примерно такое же, как для свёрточных, либо немного слабее.
Использование нескольких GPU также позволит одновременно запускать сразу несколько экспериментов на каждой видеокарте отдельно.