Поддержка GPU в математическом пакете MATLAB

    За последние год-полтора создание кластеров и суперкомпьютеров на GPU стало новым трендом для высокопроизводительных систем. Это вполне имеет смысл, потому что графические процессоры прекрасно поддерживают параллельную работу и на некоторых задачах обладают производительностью гораздо выше, чем у бюджетных CPU.

    В этом смысле вполне логичной выглядит новость, что в пакете программ математического моделирования MATLAB версии 2010b появилась нативная поддержка Nvidia CUDA (версия Compute Capability 1.3 или выше). Она включена в набор инструментов Parallel Computing Toolbox. Теперь распараллеливание команд осуществляется прямо из MATLAB и не нужно переписывать код на C++ или Fortran специально для CUDA.

    Примеры и демо
    Введение в GPU-вычисления MATLAB (видео)



    Бенчмаркинг оператора “\”на Nvidia GPU (демо)
    Ускорение расчёта относительных площадей штатов США, используя метод Point-In-Polygon и GPU (демо)

    Справочные материалы
    GPU-вычисления MATLAB (документация)
    Ускорение MATLAB на Tesla GPU (справка Nvidia)
    Как проверить версию Compute Capability моего Nvidia GPU? (справка Nvidia)
    Что такое вычисления GPU? (справка Nvidia)
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

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

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

      0
      > графические процессоры прекрасно поддерживают параллельную работу и обладают производительностью гораздо выше, чем у бюджетных CPU
        +2
        поясню: не хватает уточнения «на некоторых задачах». Иначе выглядит странно.
        0
        Не понимаю, что заставляет такие известные проекты использовать проприетарную технологию Nvidia и тем самым забивать на обладателей AMD.
          0
          Вероятно обоюдовыгодное соглашение. Вполне возможно, что поддержка карт AMD будет реализована в будущем.
          MATLAB does not support computation acceleration using AMD/ATI GPUs at this time.
          http://www.mathworks.com/products/matlab/choosing_hardware.html
            +2
            Да вроде не раз уже тут писали, что причины три:

            1) на любых научных конференциях про Это завязана nVidia, помогает ученым;
            2) всесторонняя помощь nVidia разработчикам софта под CUDA;
            3) производительность карт nVidia для вычислительных задач превышает аналогичную у карт AMD более, чем на 30%.
              +1
              первых двух причин хватает, чтобы использовать CUDA вместо AMD' proprietary tech.

              в других случаях на проприетарную технологию AMD также забивают, используя OpenCL или DirectCompute.

              Так уж сложилось, что все люди, использующие GPU для вычислений, используют nVidia GPUs.

              Вот лично у меня все карты с давнего времени были nVidia, но скоро я перейду на AMD, но лишь потому, что у меня таких задач нет (а ля Adobe Premiere) и монитор поддерживает только 3DFusion (я тупо ошибся, заказывая монитор).
                0
                nVidia угрохала столько ресурсов в куду, пытаясь противопоставить её открытому стандарту OpenCL. Похоже что на рынке GPGPU они борятся не с AMD, а со здравым смыслом.

                По моему мнению, AMD/ATI правильно поступает что не пытаются городить свой стандарт, а просто делают грамотную имплементацию открытых стандартов. Кому надо проталкивать OpenCL — ученым? Да про него и так все знают и умеют. Не один десяток круптых фирм долдонит про OpenCL, зачем что то еще делать для популяризации стандарта? Спецификаций стандарта написано не на один год вперед. AMD просто cидит и имплементирует новые фичи.

                Про производительность nVidia не надо гнать, на хабре не один раз проскакивало что AMD всех превосходит в производительности на шейдерах :). Им только нужно подкрутить свой компилятор OpenCL. Я верю что с каждым выходом новой версии SDK, ситуация с производительностью в OpenCL будет все лучше и лучше. Впрочем уже сейчас во многих задачах OpenCL бьет CPU имплементацию в разы. А что еще людям нужно?

                Лично с моей точки зрения зачем мне что то писать на куде если это нигде больше не заработает? OpenCL, пусть не дотягивает по производительности, но выигрывает на совместимости. Texas Instruments выпустили OpenCL на ARM платформе, хрен еще кто не заявлял о совместимости с OpenCL. Apple, и тот собирается засунуть OpenCL на свои айфоны.

                Кому нужна CUDA? Да только недальновидным «ученым», или тем кому нужно запустить свой код один раз, получить результаты и забыть.

                  0
                  arxiv.org/pdf/1005.2581v3 — A Performance Comparison of CUDA and OpenCL.

                  В top 500 суперкомпьютеров соотношение кластеров nVidia к кластерам AMD — 4 к 1. Количество документации относительно nVidia GPU's превышает аналогичную у AMD в 6 раз (результаты поиска по gpgpu.org, плюс сравнение порталов для разработчиков у двух компаний).

                  Сравнение производительности OpenCL на картах nVidia и AMD:

                  www.phoronix.com/scan.php?page=article&item=opencl_nvidia_ati&num=2
                    0
                    Я не настаивал на сравнении nVidia versus AMD. Я говорил про CUDA versus OpenCL.

                    В вашей же первой ссылке что я вижу — да, компилятор куды чуть более оптимизирован, или может за счет других резервов, но вцелом разница в производительности 10-20%, от силы 30%.
                    При том что код на OpenCL может запуститься и на других GPU тоже.

                    А вот если хотите производительности, смотрите сюда:
                    habrahabr.ru/blogs/hi/96122
                    AMD + шейдеры всех уделывают. А шейдеры кстати тоже стандартизованы. GLSL наверное даже больше распрастранен чем OpenCL, так что переносимость будет еще лучше.

                    Почему OpenCL от nVidia «уделывает» OpenCL от AMD — честно говоря мне нет до этого дела. Но, судя по тому что корни у OpenCL растут все-таки из nVidia это все и объясняет. Да, модель (архитектура) памяти у карточек разная. Ну так и мы не последний день живем. Что выпустит AMD или другие производители в будущем — никому не ведомо.

                    Если вы хотите переносимости, чтоб работало на мобильных платформах и т.п. — OpenCL ваш выбор.
                    Если вы хотите чтобы ваш код работал через 5 лет и больше — снова OpenCL ваш выбор.

                    Во всех остальных случаях CUDA даст вам на 20% больше производительности. Хотя здесь GLSL может подпортить малину куде.
                      +1
                      В указанной вами статье имеет смысл прочесть и комментарии. Шейдеры уделывают CUDA только потому, что сравниваются карты разных поколений с разницей в год? что очень много (более новая AMD с более старой nVidia). И иисходники тестов автор не выложил, так что проверить на картах одного поколения не оплучится.
                    0
                    Причем проблема с производительностью OpenCL у карт AMD технологическая, а не программная. При больше теоретической производительности карты AMD проигрывают из-за худшей реализации доступа к памяти, а также из-за требования к векторизации всех операций.

                    Также можно отметить библиотеки, выпускаемые nVidia и сторонними разработчиками для CUDA (например, CUVI), которые резко упрощают разработку под CUDA по сравнению с AMD Stream или OpenCL.
                      0
                      CUDA нужна любому кто пишет GPU приложение для себя (и кто еще не купил железо от AMD). На ней писать на много проще, в ней больше возможностей, ее производительность выше.

                      Об OpenCL стоит задумываться только тем, кто пишет приложения для других и лишь при условии, что среди заказчиков есть те, кто уже купили оборудование AMD.
                0
                Слишком дорога эта приблуда, хотя и работает замечательно.
                  0
                  Странно. Вроде как обычная видюха хотя бы серии GTX.
                    0
                    Я про Parallel Computing Toolbox
                    0
                    да и матлаб какбэ не три рубля стоит. Хотя система классная. В универе довелось много с ней работать, круче всяких Маткадов и прочих Мэплов.
                      +1
                      Не путайте тёплое с мягким. У них у каждого своя специализация.
                        0
                        Скажем так, круг задач этих систем во многом пересекается
                          0
                          Есть топор, кувалда и молоток. Круг их задач тоже пересекается. Однако забивать столбы в землю молотком неудобно. А прибивать что-то маленькое неудобно топором.

                          Если вернуться к конкретике, то MathCAD изумительно подходит для формирования математических отчётов. Все быстро и красиво.

                          Mapple как инструмент завязан на символьные вычисления и он силён именно в них.

                          Особенность же Matlab — работа с матрицами и векторами и считает он их весьма быстро.

                          Да практически любою задачу, которую можно решить одним инструментом, можно решить и другим. Но вот утверждение, что какой-то из них «круче», на мой взгляд, ошибочно.
                            0
                            Если вы в матлабе пользовались только матричным исчислением, вы и десятой доли его возможностей не пробовали. Он не менее силен и в символьных вычислениях. Отдельных слов заслуживает пакет simulink. Также есть куча встроенных пакетов интеграции от DLL до .NET. Почитайте чтоли в википедии хотя бы.
                            Что касается мат.отчетов, то в чем-то маткад пожалуй удобнее. Потому так любим студентами.
                              +2
                              Simulink вертится именно на быстром матричном ядре. Половину времени работал именно с ним. Символьные вычисления — Symbloic math toolbox прикручены сбоку.

                              Ядро матлаба именно матрицы. Почти все остальное — специализированные функции по работе с матрицами и векторами сгруппированные по тулбоксам.

                              Уверен, что Mapple и MathCAD тоже прекрасно интегрируются с .NET и прочим.

                              Я просто хочу сказать, что все они хороши-каждый в свой области. Потому абслютного понятия «круче» нет. Вот «круче под конкретную задачу» — возможно.
                                0
                                ладно, согласен, «круче» — совсем неудачный термин :)
                              0
                              да, пожалуй с символьными вычислениями я немного поторопился, там сторонний пакет или ядро maple можно подключать
                            +1
                            У Матлаба как раз особой специализации нет, как можно более всё свалено в кучу уже из коробки.
                        0
                        Хм, ну для тех же систем машинного зрения теперь можно обрабатывать быстрее все будет, там много вычислений, которые под специфику GPU подойдут.
                          0
                          openCV с CUDA дружит
                          0
                          Немного огорчает необходимость Compute Capability 1.3. Здесь предлагают коммерческую библиотеку, позволяющую работать с CUDA Capability от 1.0

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

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