В своей знаменитой статье 2005 года «Свободный обед окончен» Херб Саттер предсказал параллельную программную революцию, столь же большую, как объектно-ориентированная революция. Действительно ли эта революция произошла в 2005 - 2013 годах?
Ключевые моменты в статье:
Производители процессоров исчерпали свои традиционные подходы к повышению производительности процессора. Вместо того чтобы увеличивать тактовую частоту, они вместо этого обращаются к гиперпоточным и многоядерным архитектурам.
Приложения будут все чаще нуждаться в одновременной работе, если они хотят полностью использовать увеличение пропускной способности ЦП.
«Ох, производительность не имеет большого значения, компьютеры просто продолжают работать быстрее», утверждение будет ошибочным.
Оптимизация эффективности и производительности станет более важной, а не менее важной. Те языки, которые уже поддаются тяжелой оптимизации, обретут новую жизнь; те, кому не нужно искать способы конкурировать и стать более эффективными и оптимизируемыми. Ожидайте долгосрочный рост спроса на ориентированные на производительность языки и системы.
Языки и системы программирования будут все чаще вынуждены иметь дело с параллелизмом. Нам крайне необходима модель программирования более высокого уровня для параллелизма, чем языки предлагают сегодня.
источник
Ответы:
Да, но это зависит
Вы не можете ожидать написания нетривиального , высокопроизводительного программного обеспечения, не используя преимущества параллельного оборудования и не используя параллелизм как метод структурирования программы. Но большая часть программного обеспечения является тривиальной и не критичной к производительности. Веб-приложение не сильно сокращает число, а приложения CRUD не имеют ничего общего с жесткими временными ограничениями некоторых симуляторов и медицинских программ.
Разработчики игр, в частности, должны заботиться об этом, потому что игры являются наиболее распространенным типом приложений с мягкими требованиями реального времени. Проблема очевидна на мобильном телефоне, где вы хотите выжать как можно больше вычислительной мощности и мощности рендеринга из интегрированного чипа с двумя ядрами процессора и графическим процессором с низким энергопотреблением. Это еще одна причина, по которой многие разработчики смотрят на Haskell и ждут, пока языки, такие как Rust, станут зрелыми - нам нужны безопасность и производительность на современном оборудовании.
С 2005 года мы приобрели новые и улучшенные инструменты, такие как OpenCL, CUDA, OpenMP и наборы векторных инструкций для работы с параллелизмом и параллелизмом данных в установленных языках. Тем не менее, относительные новички с самого начала были предназначены для одновременного выполнения многих других интересных задач.
Параллельная среда выполнения Haskell позволяет языку обеспечить расширенную поддержку облегченного параллелизма (искры) и абстракций параллелизма (потоков, каналов и общих изменяемых ссылок). Go и Rust также предлагают легкие задачи, Go с использованием каналов и Rust с использованием передачи сообщений.
Эти системы обеспечивают безопасность памяти, быстродействие и статическую защиту от некоторых видов гонок. По умолчанию неизменяемость Haskell и Rust значительно упрощает управление параллелизмом. Erlang был сделать это уже в 80 - х годах, но потребности программного обеспечения и наших знаний о том , как проектировать системы программирования также улучшились с тех пор, слава богу.
Наконец, многие существующие языки - я не буду называть имен - готовы отказаться от выбора в качестве заслуживающего доверия выбора для написания нового программного обеспечения. Их бремя сложности и плохой абстракции параллелизма делают их непригодными для современных приложений. Мы просто ждем зрелых альтернатив.
источник
Вот несколько точек данных; решите сами, считается ли это революцией.
Параллельное оборудование
Около 2005 года Intel и AMD начинают массовое производство двухъядерных процессоров x86 для настольных ПК (Pentium D и Athlon 64) с тактовой частотой около 3 ГГц.
В 2006 году была выпущена PlayStation 3 с процессором Cell с 8 + 1 ядром на частоте 3,2 ГГц.
В 2006 году выпущена серия GeForce 8. Он состоит из большого числа (~ 100) «потоковых процессоров» общего назначения, а не графических модулей. Примерно в 2007 году была выпущена спецификация CUDA 1.0, позволяющая выполнять вычисления общего назначения на аппаратно-параллельном оборудовании NVidia.
С тех пор тенденции продолжались.
Например, теперь, в 2013 году, Intel и AMD предлагают 4, 8 и 16-ядерные процессоры с тактовой частотой чуть выше 4 ГГц. Двухъядерные и четырехъядерные конструкции распространены для устройств с низким энергопотреблением, таких как ноутбуки и смартфоны.
Все это массовое, повседневное компьютерное оборудование потребительского уровня.
Програмное обеспечение
CUDA выпущен в 2007 году, затем OpenCL в 2008 году, что позволяет использовать массивно-параллельные графические процессоры для общих (неграфических) вычислений. Модель становится популярной; многие хостинговые компании (например, Amazon) предлагают графические процессоры для общих вычислительных задач.
Go выпущен в 2009 году с очень дешевыми приоритетными потоками («goroutines») и позволяет эффективно выражать высококонкурентные алгоритмы.
Инструментарий Akka выпущен для Java и Scala в 2009 году, что обеспечивает параллелизм на основе акторов.
Эрланг (высококонкурентный язык) видит некоторое увеличение в использовании.
Параллелизм против параллелизма
Обратите внимание, что для использования параллельного аппаратного обеспечения необязательно нужен параллелизм программного обеспечения , то есть манипулирование потоками выполнения в вычислении. Многие проблемы решаются с помощью параллельных , не взаимодействующих процессов, где каждый процесс представляет собой традиционную последовательную программу.
Параллельная обработка может использовать более традиционные языки и параллельные структуры, такие как map-Reduce или MPC или OpenMP. Для таких платформ наличие нескольких ядер в одном кристалле ЦП концептуально не сильно отличается от наличия большего количества ЦП в кластере; разница в основном скорость.
Пока нет бесплатного обеда
Частота процессора все еще остается на уровне около 5 ГГц на верхнем уровне. С появлением лучших технологий, таких как графеновые транзисторы, частоты могут снова возрасти в будущем, но, вероятно, не очень скоро.
источник