В новой версии CUDA 6 разработка программ для суперкомпьютеров, серверов, ПК и, в меньшей степени, смартфонов будет проще. Цель совершенствования CUDA — предоставить программистам базовые инструменты, управляющие передачей нагрузки по обработке данных с центральных процессоров на графические, и тем самым повысить быстродействие графических приложений и приложений технического характера.
CUDA 6 поддерживает унификацию памяти, поэтому доступность памяти графического процессора стновится такой же, как и память центрального процессора. Ранее данные приходилось передавать с центральных процессоров на графические для обработки, после чего они оправлялись обратно, и в результате формировались два пула данных. Благодаря поддержке унифицированной памяти разработчику не надо специально программировать этот процесс, а можно просто обращаться к функциям обработки в графических процессорах.
Функция управления памятью автоматически определяет, нужно ли передавать данные в память центрального или графического процессора, а следовательно, программисты оказываются избавлены от написания целого ряда строк кода, определяющих передачу данных, пояснил Самит Гупта, генеральный менеджер Nvidia по продуктам Tesla Accelerated Computing.
«Разработчик может не беспокоиться о вопросах, связанных с памятью графических и центральных процессоров, поскольку это решается не программным путем, а директивами CUDA, — пояснил Дэн Олдс, главный аналитик фирмы Gabriel Consulting Group. — Модернизация CUDA носит эволюционный, а не революционный характер».
Например, графические процессоры часто используются в серверах для виртуализации рабочих столов и автоматизации выделения памяти, и теперь можно рассчитывать на ускорение развертывания экземпляров ОС на виртуальных машинах, отметил Олдс.
Поддержка унифицированной памяти в CUDA аналогична спецификации HUMA организации HSA (Heterogeneous System Architecture) Foundation, регламентирующей совместное использование процессорами различных типов памяти в системе. Спецификация позволяет программистам разрабатывать приложения, не уделяя специального внимания тому, на какой ресурс памяти передается код. Nvidia не входит в HSA Foundation, который был основан в прошлом году рядом компаний, в том числе AMD, ARM, Qualcomm.
Предлагаемая поддержка также согласуется с задачей, которую поставила перед собой Nvidia и которая состоит в превращении памяти графических и центральных процессоров в совместно используемый ресурс на аппаратном уровне. Намеченный к выпуску процессор Tegra 6 для мобильных систем под кодовым названием Parker будет объединять в общий пул память графического и центрального процессоров мобильных устройств, серверов и ПК для расширения адресуемой памяти, доступной для программ. Сейчас память графических и центральных процессоров — это независимые ресурсы, и CUDA 6 призвана устранить это неудобство на программном уровне до тех пор, пока не будут разработаны аппаратные средства.
В ряде наиболее мощных суперкомпьютеров графические процессоры и сопроцессоры используются для обработки данных, чтобы повысить быстродействие. В предыдущей версии CUDA, 5.5, имелась поддержка центральных процессоров в архитектуре ARM. В CUDA 6 улучшена также работа с библиотеками, что может ускорить обработку данных на графических процессорах.