Nvidia открыла исходный код компилятора CUDA

    Nvidia открыла исходный код нового компилятора CUDA на базе LLVM. Сорцы не раздаются направо и налево, а доступны только для «квалифицированных исследователей и разработчиков». Для их получения нужно зарегистрироваться, заполнить форму и указать, для каких проектов вы намерены применять компилятор. Так что пока непонятно, под какой лицензией опубликован компилятор и вообще — свободная ли это лицензия. В пресс-релизе компания намекает на более открытый доступ к исходникам в будущем.



    С помощью компилятора и нового CUDA Toolkit 4.1 можно будет приспособить платформу GPGPU для других архитектур и процессоров, в том числе AMD GPU и x86 CPU, а также создавать гетерогенные суперкомпьютерные системы.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 18

      +11
      «В пресс-релизе компания намекает на более открытый доступ к исходникам в будущем.» то есть пока открыли не полностью? Какой забавный стриптиз!
        0
        Дык с недавних пор такая же канитель с PhysX. Т.е. после регистрации на сайте и одобрения (у меня длилось около недели), можете получить доступ к SDK, что как-то не особо располагает.
          +1
          Будем надеяться, что nVidia поспособствует замене кривущего openCL на CUDA (естественно, для этого CUDA всего лишь должна быть открытой, а лучше — свободной).
          Хотя, лично я не так уперт, как, например, RMS: мне ничто не мешает использовать CUDA и сейчас, пока она закрыта.
            +1
            а чем кривущ OpenCL? Его проблемы не могут быть связаны с реализацией реализаторами под свою платформу? NVIDIA сразу точила под только свою архитектуру. OpenCL же всего лишь спецификация, который каждый может реализовать по своему, как пример: NVIDIA поверх CUDA. И не возникнет ли схожей кривущести при реализации CUDA на других архитектурах?
              0
              > а чем кривущ OpenCL?
              Ну вот если вы захотите распараллелить несложное вычисление для CPU, чем вы воспользуетесь: openmp или pthreads? В первом случае кода придется писать намного меньше, а читабельность будет выше. Вот примерно так же и CUDA с openCL соотносятся: openCL жутко запутанный, а CUDA проста.

              > Его проблемы не могут быть связаны с реализацией реализаторами под свою платформу?
              Нет: это же язык высокого уровня.
                0
                жутко запутанный ввиду своей ориентированности не под определенную архитектуру. У той же CUDA есть режим работы (не приведу сейчас название, давно не трогал её), где также будет вся эта многословность.
                так при чем тут язык-то? я вам говорю, что определенный производитель железа решил реализовать спецификации OpenCL на своем оборудовании. И вот от того, что он криво написал эту прокладку перед железом, язык виноват не будет
                  0
                  Ну, я к тому, что openCL слишком уж низкоуровневый язык. Очень неудобная штука. CUDA приятней.
                  // а учитывая то, что CUDA еще и более распространена, сдается мне, что через годик-другой openCL канет в Лету.
                    0
                    слишком смелый прогноз.
                    У CUDA host API имеется 2 режима: driver и runtime. Вы говорите про легкость именно runtime режима. Взгляните на driver-режим, сразу нахлынет дежавю с отсылкой на opencl
                      0
                      к тому же CUDA ограничена только адаптерами NVIDIA. А ведь помимо этого имеются ещё и AMD-адптеры. Ну и спеки OpenCL могут быть реализованы на любом (не придирайтесь к слову) оборудовании, если будет желание производителей
                        +2
                        хотя ладно, глянул ваш профиль. Увидел, что вы не программист :)
                          0
                          >А ведь помимо этого имеются ещё и AMD-адптеры

                          А почему это должно волновать NVIDIA ;-)

                          >Ну и спеки OpenCL могут быть реализованы на любом (не придирайтесь к слову) оборудовании

                          Ограниченно реализованы, я бы сказал. Не всегда все фишки платформы можно уложить в этот стандарт. Я намеренно не говорю, про разные расширения, ибо это будет уже специфичный для платформы код.
                            +1
                            а к чему вообще аргумент, что это не должно волновать NVIDIA?

                            Не припомню я, чтоб в opencl были какие-то специфичные расширения — спецификация всё-таки одна и для всех, не все её (например NVIDIA) реализуют сразу, например версию 1.1. Да и вот с CUDA может сложиться, что все её фишки нельзя уложить на другие платформы, а в случае с opencl сразу создавать рабочая группа Khronos во главе с Apple, как раз-таки чтобы объять несколько производителей и сделать стандарт более универсальным между разными архитектурами
                              0
                              >а к чему вообще аргумент, что это не должно волновать NVIDIA?

                              Это к вашей фразе о привязке CUDA к NVIDIA.

                              >Не припомню я, чтоб в opencl были какие-то специфичные расширения

                              Я же говорил ограниченно реализованы. Сейчас расширений может и нет (я, увы, тоже не могу припомнить), но стандарт это предусматривает. Таким образом появляется ситуация, что не о какой переносимости речи быть не может, как только задействуют такое расширение. Примерно такая же ситуация и с OpenGL.

                              >Да и вот с CUDA может сложиться, что все её фишки нельзя уложить на другие платформы

                              Правильно, но это уже вопрос не CUDA, как стандарта, а оборудования. Например нельзя уложить GPU P2P на процессоры в силу того, что это возможности PCI express.

                              >как раз-таки чтобы объять несколько производителей и сделать стандарт более универсальным между разными архитектурами

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

                              Это палка о двух концах, в которой нужно взвешивать все за и против. Хочешь, чтобы у тебя просто работало — пишешь стандартные OpenCL ядра. Хочешь получить ускорение — пишешь уже платформозависимый код на OpenCL/CUDA и хоть пять раз стандартизируй все… не избавиться от различных условий и ограничений.
                                0
                                Ну и забыл добавить ещё: не хочешь писать все с нуля, используй директивы (правда только для CUDA)
                                  0
                                  короче пришли к тому, с чего и начали: CUDA хороша своей заточенностью под свои же девайсы, а OpenCL хорош своей универсальностью (не учитывая этих самых мнимых расширений). И попытка выложить исходные коды CUDA лишь сыграть на поле OpenCL — на поле универсальности, но придется столкнуться с его недостатками, учитывая, что OpenCL — это стандарт, поддерживаемый целой группой, а у CUDA — только исходники, хорошее пространство для энтузиастов.

                                  Кстати, писал на OpenCL на NVIDIA. Видимо хорошо пересадили (т.к. сама NVIDIA участвовала в разработке стандарта OpenCL), потому как разницы существенной с аналогичным кодом на CUDA я не заметил. Ну оно в принципе и понятно
                                    0
                                    Ну и не забывайте все-таки спускаться с небес на землю: нужно добавить, что CUDA де-факто является стандартом для разработки на GPU, а OpenCL — игрушкой.
                                      0
                                      >короче пришли к тому, с чего и начали

                                      Мы от этого и не уходили, т.к. это очевидные факты.

                                      >И попытка выложить исходные коды CUDA лишь сыграть на поле OpenCL

                                      Нет, это прежде всего попытка расширить границы использования. Сейчас есть Cи/Fortran и открытие как раз позволяет сделать доступным функционал для других языков. К слову сказать OpenCL — это только Cи. С другой стороны открыть возможность для CUDA иным устройствам.

                                      > а у CUDA — только исходники, хорошее пространство для энтузиастов

                                      Не только, ещё ресурс компании, большое кол-во разработчиков, книг и удобная документация.

                                      >потому как разницы существенной с аналогичным кодом на CUDA я не заметил

                                      А должны были заметить разницу? Тут вопрос не в скорости, а в функционале, который доступен для OpenCL или CUDA
                  +20
                  И не открыла, а разместила на закрытом сервере. И не для всех, а только для избранных разработчиков, имеющих прямое отношения к NVidia. И не всей системы, а бэкэнда компилятора для llvm. И не «можно будет приспособить», а «можно будет приспособить за выплату лицензионных отчислений»
                  — Из анекдота про Ализара.

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

                  Самое читаемое