Гетерогенные системы

Опубликовано февраля 14, 2018 в Технология CUDA

Недавние разработки ведущих производителей микросхем, таких как NVIDIA, со всей очевидностью показали, что будущие микропроцессоры и крупные высокопроизводительные вычислительные системы (НРС) будут гибридными (гетерогенными). В их основу будут положены компоненты двух основных типов в разных пропорциях:

  • мультиядерные и многоядерные центральные процессоры: количество ядер будет и дальше возрастать из-за желания поместить все больше компонентов на один кристалл, не упираясь в барьер мощности, памяти и параллелизма на уровне команд;
  • специализированное оборудование и массивно-параллельные ускорители: например, графические процессоры (GPU) от NVIDIA в последние годы превзошли стандартные CPU в производительности вычислений с плавающей точкой. Да и программировать их стало так же просто, как многоядерные GPU (если не проще).

Гетерогенные системы

Каким будет соотношение между этими компонентами в будущих проектах, пока не ясно, и со временем оно, скорее всего, будет меняться. Но не вызывает сомнений, что вычислительные системы нового поколения — от ноутбуков до суперкомпьютеров — будут состоять из гетерогенных компонентов. Именно такая система преодолела барьер в один петафлоп (1055 операций с плавающей точкой в секунду).

И тем не менее задачи, с которыми сталкиваются разработчики, вступающие в новый мир гибридных процессоров, все еще весьма сложны. Критическим частям программной инфраструктуры уже очень трудно поспевать за изменениями. В некоторых случаях производительность не масштабируется с увеличением числа ядер, потому что все большая доля времени тратится не на вычисления, а на перемещение данных. В других случаях разработка программ, оптимизированных для достижения максимального быстродействия, завершается спустя годы после выхода на рынок оборудования, и потому они оказываются устаревшими уже в момент поставки. А иногда, как в случае последних моделей GPU, программа вообще перестает работать, так как окружение изменилось слишком сильно.

Рубрика нашего сайта: «Технология CUDA в примерах» посвящена рассмотрению одного из самых новаторских и эффективных решений задачи программирования массивно-параллельных процессоров, появившемуся в последние годы.

В ней вы на примерах познакомитесь с программированием на языке CUDA С, узнаете о конструкции графических процессоров NVIDIA и научитесь их эффективно использовать. Эта категория — введение в идеи параллельных вычислений, здесь вы найдете и простые примеры, и технику отладки (поиск логических ошибок и разрешение проблем с производительностью), и более сложные темы, связанные С разработкой и использованием конкретных приложений. Все излагаемые идеи иллюстрируются примерами кода.

Этот раздел сайта — обязательное чтение для всех работающих с вычислительными системами, содержащими ускорители. Параллельные вычисления здесь рассматриваются достаточно глубоко, предлагаются подходы к решению различных возникающих задач. Особенно полезен он будет разработчикам приложений, авторам библиотек для численных расчетов, а также студентам, изучающим параллельные вычисления, и преподавателям.

Особую сложность доставляют видео- и аудио-драйвера (в первом случае — проблемы с играми, во втором — нет звука). Лучшие программы для автоматического обновления драйверов здесь: https://ocomp.info/update-drivers.html