Многоядерная архитектура диктует новую парадигму программирования

Если вы внимательно следите за новостями, то наверняка знаете, что уже не за горами переход на многоядерную архитектуру. Между тем, как это часто бывает, новые аппаратные технологии требуют программной поддержки для того, чтобы максимально полно задействовать все имеющиеся ресурсы. Так и процессоры, в состав которых входит более одного ядра, требуют от выполняемых приложений, а значит, и от разработчиков использования алгоритмов параллельных вычислений. Другими словами, все существующие сегодня программные продукты необходимо модернизировать, чтобы задействовать всю мощь новой архитектуры. Итак, что именно нужно делать разработчикам и какие инструменты для этого доступны? Можно ли обойтись малой кровью и свести все только к новым компиляторам и интерфейсам программирования? Что будет с технологией Hyper-Threading, подразумевающей виртуальное распараллеливание потока исполнения? Со всеми этими вопросами мы обратились к Алексею Одинокову, директору подразделения Software and Solutions Group корпорации Intel в России.

Компьютер-Пресс: Как, на ваш взгляд, изменится процесс разработки программного обеспечения в результате перехода на многоядерную архитектуру?

Алексей Одиноков: Процесс перехода потребует четкой координации при взаимодействии большинства участников компьютерного рынка. Если раньше архитектурной оптимизацией своих приложений занимались меньше 10% разработчиков программного обеспечения, то для того, чтобы процесс перехода на параллельную архитектуру оказался успешным, надо, чтобы большинство разработчиков перешли на новую модель программирования. То есть практически всем разработчикам, стремящимся остаться конкурентоспособными, надо будет задуматься о том, каким образом их приложение сможет использовать возможности параллельных архитектур.

 

Алексей Одиноков

КП: На кого, по вашему мнению, ляжет основная тяжесть проблемы распараллеливания — на производителей программных платформ или на разработчиков прикладного программного обеспечения?

А.О.: Переход на процессоры с несколькими вычислительными ядрами — это кардинальное изменение всего подхода к программированию. Для успешной реализации этого процесса понадобятся усилия всех участников компьютерной индустрии. В первую очередь Intel увеличивает собственные инвестиции в разработку программных инструментов для параллельного программирования. Все программные инструменты, разрабатываемые Intel по программе Intel Software Network, будут предназначены для программирования процессоров с несколькими вычислительными ядрами. Для этого мы продолжаем расширять состав группы программных продуктов и решений (Intel Software and Solutions Group) в России — до середины наступившего года мы планируем дополнительно принять на работу сто программистов. Но ни одна компания, как бы велика она ни была, не сможет сделать все в одиночку, поэтому мы активно сотрудничаем с другими компаниями, производящими операционные системы, инструменты и языки программирования, для реализации поддержки параллельного программирования. Я думаю, что и от прикладных разработчиков потребуются усилия, чтобы изменить свой подход к использованию инструментов и алгоритмов, оптимальных для параллельных систем. Большая роль принадлежит и университетам — надо начинать подготовку нового поколения программистов, умеющих работать с параллельными системами.

КП: Можно ли, на ваш взгляд, «упаковать» задачи распараллеливания в достаточно высокоуровневые интерфейсы (например, API, классы .NET или Java) таким образом, чтобы избавить разработчиков прикладного ПО от решения задачи распараллеливания?

А.О.: Программирование для параллельных систем требует кардинального изменения всей дисциплины программирования — на каждом уровне, в том числе и на уровне интерфейсов высокого уровня. Но не думаю, что можно будет ограничиться только этим. В планах на будущее у Intel — выпуск процессоров с десятками, а может, даже с сотнями вычислительных ядер, и вряд ли можно будет эффективно использовать такие системы без изменения архитектуры программных систем.

КП: Как, на ваш взгляд, будет проходить процесс переноса существующих приложений под многоядерную архитектуру? Достаточно ли будет просто перекомпилировать это приложение, например с помощью новой версии компилятора, или разработчикам придется решать какие-то математические задачи по распараллеливанию алгоритмов?

А.О.: К счастью, это можно будет делать постепенно. Уже сейчас современные компиляторы могут генерировать код, использующий встроенные параллельные возможности процессоров. Можно будет начать с перекомпиляции, а затем рассмотреть вопрос использования прикладных библиотек, поддерживающих различные модели параллельных вычислений. По мере приобретения опыта создания параллельных программ, назреет необходимость начинать менять архитектуру программной системы и алгоритмов для получения максимального выигрыша от использования параллельных систем.

КП: Разработчикам, создающим крупные корпоративные приложения, отныне всегда придется решать задачи распараллеливания — то есть фактически им придется освоить новое ремесло?

А.О.: Да, параллельность неизбежна. И для того, чтобы оставаться конкурентоспособными в новых условиях, большинству разработчиков надо научиться использовать преимущества параллельности. Но я не вижу в этом ничего экстраординарного, ведь современные информационные технологии — отрасль очень быстро развивающаяся, где постоянно нужно осваивать новые навыки и новые подходы. Мы в Intel будем стремиться к тому, чтобы сделать этот процесс как можно более плавным и помочь разработчикам в освоении нового подхода к программированию.

КП: Не могли бы вы кратко рассказать об инструментах Intel, которые помогают решать задачи распараллеливания?

А.О.: Для этого у нас уже сейчас существуют программные инструменты, которые позволяют сделать первые шаги в написании и отладке параллельных программ:

  • компилятор Intel для С++ и Fortran — он уже сейчас в состоянии генерировать код, использующий параллельные возможности процессора с помощью интерфейса OpenMP;
  • отладчик Intel VTune, позволяющий отслеживать, как именно выполнялось многопоточное приложение;
  • библиотеки Intel IPP (Integrated Performance Primitives) и Intel MKL (Math Kernel Library), по умолчанию поддерживающие интерфейс OpenMP. А для библиотеки Intel MKL есть и кластерная версия, предназначенная для распределенных параллельных систем;
  • Intel Thread Checker, позволяющий проверить логику выполнения программы, использующую несколько потоков, и обнаружить и исправить ошибки, связанные с работой нескольких параллельных потоков;
  • Intel Thread Profiler, на системном уровне позволяющий проследить выполнение программы, использующей интерфейсы OpenMP, POSIX и потоки Win32, сбалансировать загрузку параллельных ресурсов и увеличить производительность параллельной программы;
  • набор инструментов Intel Cluster Toolkit, предназначенный для разработки распределенных параллельных программ на кластерах.

Дополнительную информацию об инструментах Intel можно найти в Интернете по адресу http://www.intel.com/cd/software/products/asmo-na/eng/index.htm.

КП: Известно, что приложение, которое оптимизировано для выполнения на процессорах Intel, работает быстрее, чем аналогичное приложение без оптимизации. Правильно ли я понимаю, что с переходом на многоядерную архитектуру роль оптимизации кода для процессоров Intel возрастет, поскольку разрыв в производительности увеличится?

А.О.: Да, на этапе перехода на новую парадигму. Если раньше при повышении производительности процессора Intel за счет совершенствования архитектуры или повышения частоты автоматически повышалась производительность всех приложений, то теперь основной прирост производительности процессора будет происходить от дополнительных вычислительных ядер, а следовательно, чтобы получить этот прирост, приложение должно быть спроектировано для использования возможностей параллельных систем. Поэтому мы думаем, что на начальном этапе большинству разработчиков нужно будет «оптимизировать» свои приложения для использования возможностей параллельных систем. В то же время наш опыт показывает, что хорошо спроектированное и оптимизированное приложение для параллельных систем способно увеличивать производительность в широком диапазоне вычислительных узлов. Таким образом, не нужно будет всякий раз с приростом количества вычислительных ядер переделывать приложение.

КП: Хотелось бы узнать о проблеме оптимизации приложений для применения технологии Hyper-Threading на многоядерных процессорах. Сохранятся ли инструменты и методология подобной оптимизации?

А.О.: Технология Hyper-Threading — это наш первый шаг в сторону параллельного выполнения программ, который позволил и Intel, и разработчикам приобрести положительный опыт в создании параллельных приложений. Пока технология Hyper-Threading будет востребована, наши процессоры будут ее поддерживать, так же как и наши инструменты.

КП: Большое спасибо, что уделили нам столько времени и ответили на все вопросы. Удачи вам и всего доброго!

 

Вопросы задавал Алексей Доля.

КомпьютерПресс 1'2006

Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует