Comments 18
«В пресс-релизе компания намекает на более открытый доступ к исходникам в будущем.» то есть пока открыли не полностью? Какой забавный стриптиз!
Дык с недавних пор такая же канитель с PhysX. Т.е. после регистрации на сайте и одобрения (у меня длилось около недели), можете получить доступ к SDK, что как-то не особо располагает.
Будем надеяться, что nVidia поспособствует замене кривущего openCL на CUDA (естественно, для этого CUDA всего лишь должна быть открытой, а лучше — свободной).
Хотя, лично я не так уперт, как, например, RMS: мне ничто не мешает использовать CUDA и сейчас, пока она закрыта.
Хотя, лично я не так уперт, как, например, RMS: мне ничто не мешает использовать CUDA и сейчас, пока она закрыта.
а чем кривущ OpenCL? Его проблемы не могут быть связаны с реализацией реализаторами под свою платформу? NVIDIA сразу точила под только свою архитектуру. OpenCL же всего лишь спецификация, который каждый может реализовать по своему, как пример: NVIDIA поверх CUDA. И не возникнет ли схожей кривущести при реализации CUDA на других архитектурах?
> а чем кривущ OpenCL?
Ну вот если вы захотите распараллелить несложное вычисление для CPU, чем вы воспользуетесь: openmp или pthreads? В первом случае кода придется писать намного меньше, а читабельность будет выше. Вот примерно так же и CUDA с openCL соотносятся: openCL жутко запутанный, а CUDA проста.
> Его проблемы не могут быть связаны с реализацией реализаторами под свою платформу?
Нет: это же язык высокого уровня.
Ну вот если вы захотите распараллелить несложное вычисление для CPU, чем вы воспользуетесь: openmp или pthreads? В первом случае кода придется писать намного меньше, а читабельность будет выше. Вот примерно так же и CUDA с openCL соотносятся: openCL жутко запутанный, а CUDA проста.
> Его проблемы не могут быть связаны с реализацией реализаторами под свою платформу?
Нет: это же язык высокого уровня.
жутко запутанный ввиду своей ориентированности не под определенную архитектуру. У той же CUDA есть режим работы (не приведу сейчас название, давно не трогал её), где также будет вся эта многословность.
так при чем тут язык-то? я вам говорю, что определенный производитель железа решил реализовать спецификации OpenCL на своем оборудовании. И вот от того, что он криво написал эту прокладку перед железом, язык виноват не будет
так при чем тут язык-то? я вам говорю, что определенный производитель железа решил реализовать спецификации OpenCL на своем оборудовании. И вот от того, что он криво написал эту прокладку перед железом, язык виноват не будет
Ну, я к тому, что openCL слишком уж низкоуровневый язык. Очень неудобная штука. CUDA приятней.
// а учитывая то, что CUDA еще и более распространена, сдается мне, что через годик-другой openCL канет в Лету.
// а учитывая то, что CUDA еще и более распространена, сдается мне, что через годик-другой openCL канет в Лету.
слишком смелый прогноз.
У CUDA host API имеется 2 режима: driver и runtime. Вы говорите про легкость именно runtime режима. Взгляните на driver-режим, сразу нахлынет дежавю с отсылкой на opencl
У CUDA host API имеется 2 режима: driver и runtime. Вы говорите про легкость именно runtime режима. Взгляните на driver-режим, сразу нахлынет дежавю с отсылкой на opencl
к тому же CUDA ограничена только адаптерами NVIDIA. А ведь помимо этого имеются ещё и AMD-адптеры. Ну и спеки OpenCL могут быть реализованы на любом (не придирайтесь к слову) оборудовании, если будет желание производителей
хотя ладно, глянул ваш профиль. Увидел, что вы не программист :)
>А ведь помимо этого имеются ещё и AMD-адптеры
А почему это должно волновать NVIDIA ;-)
>Ну и спеки OpenCL могут быть реализованы на любом (не придирайтесь к слову) оборудовании
Ограниченно реализованы, я бы сказал. Не всегда все фишки платформы можно уложить в этот стандарт. Я намеренно не говорю, про разные расширения, ибо это будет уже специфичный для платформы код.
А почему это должно волновать NVIDIA ;-)
>Ну и спеки OpenCL могут быть реализованы на любом (не придирайтесь к слову) оборудовании
Ограниченно реализованы, я бы сказал. Не всегда все фишки платформы можно уложить в этот стандарт. Я намеренно не говорю, про разные расширения, ибо это будет уже специфичный для платформы код.
а к чему вообще аргумент, что это не должно волновать NVIDIA?
Не припомню я, чтоб в opencl были какие-то специфичные расширения — спецификация всё-таки одна и для всех, не все её (например NVIDIA) реализуют сразу, например версию 1.1. Да и вот с CUDA может сложиться, что все её фишки нельзя уложить на другие платформы, а в случае с opencl сразу создавать рабочая группа Khronos во главе с Apple, как раз-таки чтобы объять несколько производителей и сделать стандарт более универсальным между разными архитектурами
Не припомню я, чтоб в opencl были какие-то специфичные расширения — спецификация всё-таки одна и для всех, не все её (например NVIDIA) реализуют сразу, например версию 1.1. Да и вот с CUDA может сложиться, что все её фишки нельзя уложить на другие платформы, а в случае с opencl сразу создавать рабочая группа Khronos во главе с Apple, как раз-таки чтобы объять несколько производителей и сделать стандарт более универсальным между разными архитектурами
>а к чему вообще аргумент, что это не должно волновать NVIDIA?
Это к вашей фразе о привязке CUDA к NVIDIA.
>Не припомню я, чтоб в opencl были какие-то специфичные расширения
Я же говорил ограниченно реализованы. Сейчас расширений может и нет (я, увы, тоже не могу припомнить), но стандарт это предусматривает. Таким образом появляется ситуация, что не о какой переносимости речи быть не может, как только задействуют такое расширение. Примерно такая же ситуация и с OpenGL.
>Да и вот с CUDA может сложиться, что все её фишки нельзя уложить на другие платформы
Правильно, но это уже вопрос не CUDA, как стандарта, а оборудования. Например нельзя уложить GPU P2P на процессоры в силу того, что это возможности PCI express.
>как раз-таки чтобы объять несколько производителей и сделать стандарт более универсальным между разными архитектурами
И потерять некоторые возможности оборудования в силу того, чтобы быть универсальным.
Это палка о двух концах, в которой нужно взвешивать все за и против. Хочешь, чтобы у тебя просто работало — пишешь стандартные OpenCL ядра. Хочешь получить ускорение — пишешь уже платформозависимый код на OpenCL/CUDA и хоть пять раз стандартизируй все… не избавиться от различных условий и ограничений.
Это к вашей фразе о привязке CUDA к NVIDIA.
>Не припомню я, чтоб в opencl были какие-то специфичные расширения
Я же говорил ограниченно реализованы. Сейчас расширений может и нет (я, увы, тоже не могу припомнить), но стандарт это предусматривает. Таким образом появляется ситуация, что не о какой переносимости речи быть не может, как только задействуют такое расширение. Примерно такая же ситуация и с OpenGL.
>Да и вот с CUDA может сложиться, что все её фишки нельзя уложить на другие платформы
Правильно, но это уже вопрос не CUDA, как стандарта, а оборудования. Например нельзя уложить GPU P2P на процессоры в силу того, что это возможности PCI express.
>как раз-таки чтобы объять несколько производителей и сделать стандарт более универсальным между разными архитектурами
И потерять некоторые возможности оборудования в силу того, чтобы быть универсальным.
Это палка о двух концах, в которой нужно взвешивать все за и против. Хочешь, чтобы у тебя просто работало — пишешь стандартные OpenCL ядра. Хочешь получить ускорение — пишешь уже платформозависимый код на OpenCL/CUDA и хоть пять раз стандартизируй все… не избавиться от различных условий и ограничений.
Ну и забыл добавить ещё: не хочешь писать все с нуля, используй директивы (правда только для CUDA)
короче пришли к тому, с чего и начали: CUDA хороша своей заточенностью под свои же девайсы, а OpenCL хорош своей универсальностью (не учитывая этих самых мнимых расширений). И попытка выложить исходные коды CUDA лишь сыграть на поле OpenCL — на поле универсальности, но придется столкнуться с его недостатками, учитывая, что OpenCL — это стандарт, поддерживаемый целой группой, а у CUDA — только исходники, хорошее пространство для энтузиастов.
Кстати, писал на OpenCL на NVIDIA. Видимо хорошо пересадили (т.к. сама NVIDIA участвовала в разработке стандарта OpenCL), потому как разницы существенной с аналогичным кодом на CUDA я не заметил. Ну оно в принципе и понятно
Кстати, писал на OpenCL на NVIDIA. Видимо хорошо пересадили (т.к. сама NVIDIA участвовала в разработке стандарта OpenCL), потому как разницы существенной с аналогичным кодом на CUDA я не заметил. Ну оно в принципе и понятно
Ну и не забывайте все-таки спускаться с небес на землю: нужно добавить, что CUDA де-факто является стандартом для разработки на GPU, а OpenCL — игрушкой.
>короче пришли к тому, с чего и начали
Мы от этого и не уходили, т.к. это очевидные факты.
>И попытка выложить исходные коды CUDA лишь сыграть на поле OpenCL
Нет, это прежде всего попытка расширить границы использования. Сейчас есть Cи/Fortran и открытие как раз позволяет сделать доступным функционал для других языков. К слову сказать OpenCL — это только Cи. С другой стороны открыть возможность для CUDA иным устройствам.
> а у CUDA — только исходники, хорошее пространство для энтузиастов
Не только, ещё ресурс компании, большое кол-во разработчиков, книг и удобная документация.
>потому как разницы существенной с аналогичным кодом на CUDA я не заметил
А должны были заметить разницу? Тут вопрос не в скорости, а в функционале, который доступен для OpenCL или CUDA
Мы от этого и не уходили, т.к. это очевидные факты.
>И попытка выложить исходные коды CUDA лишь сыграть на поле OpenCL
Нет, это прежде всего попытка расширить границы использования. Сейчас есть Cи/Fortran и открытие как раз позволяет сделать доступным функционал для других языков. К слову сказать OpenCL — это только Cи. С другой стороны открыть возможность для CUDA иным устройствам.
> а у CUDA — только исходники, хорошее пространство для энтузиастов
Не только, ещё ресурс компании, большое кол-во разработчиков, книг и удобная документация.
>потому как разницы существенной с аналогичным кодом на CUDA я не заметил
А должны были заметить разницу? Тут вопрос не в скорости, а в функционале, который доступен для OpenCL или CUDA
И не открыла, а разместила на закрытом сервере. И не для всех, а только для избранных разработчиков, имеющих прямое отношения к NVidia. И не всей системы, а бэкэнда компилятора для llvm. И не «можно будет приспособить», а «можно будет приспособить за выплату лицензионных отчислений»— Из анекдота про Ализара.
Sign up to leave a comment.
Nvidia открыла исходный код компилятора CUDA