Веб-сайты

Параллелизм нуждается в применении Killer для массового принятия

whatsaper ru Недетские анекдоты про Вовочку

whatsaper ru Недетские анекдоты про Вовочку
Anonim

Добавление нескольких ядер к микропроцессорам создало значительную возможность для параллельного программирования, но приложение-убийца необходимо, чтобы подтолкнуть концепцию к мейнстриму, говорят исследователи во время группового обсуждения на конференции Hot Chips.

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

Много внимания и денег пошли на создание быстрых машин и улучшенных языков программирования, сказал Дэвид Паттерсон, компьютер научный профессор Калифорнийского университета в Беркли, на конференции в Стэнфорде в понедельник. Сравнительно мало внимания уделялось написанию настольных программ параллельно, но такие приложения, как игры и музыка, могли бы изменить это. Пользователи таких программ требуют лучшей производительности в режиме реального времени, поэтому программистам, возможно, придется принимать модели, которые разбивают задачи на несколько потоков и ядер.

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

В Калифорнийском университете в Беркли есть параллельная вычислительная лаборатория, в которой исследователи пытаются понять, как используются приложения, что может помочь оптимизировать код для карманных устройств. Один из проектов нацелен на то, чтобы обеспечить перенос рабочего стола на карманные устройства путем оптимизации кода на основе конкретных задач, таких как рендеринг и анализ страниц. Другой проект включает оптимизацию кода для более быстрого поиска медицинской информации. Лаборатория финансируется в первую очередь Intel и Microsoft.

Исследователи из Беркли пытаются внедрить параллелизм, заменив биты кода, первоначально написанные на языках сценариев, таких как Python и Ruby on Rails, с новым низкоуровневым C-кодом. В новом коде особое внимание уделяется конкретным задачам, таким как анализ конкретного голосового шаблона в приложении распознавания речи, сказал Паттерсон в интервью в среду. Код написан с использованием OpenMP или MPI, интерфейсов прикладного программирования, предназначенных для написания параллельных приложений на уровне машины.

Экспертам необходимо написать этот высокоспециализированный параллельный код, сказал Паттерсон. Это сокращает время разработки для программистов, которые в противном случае использовали бы Python и Ruby on Rails, что упростило бы разработку приложений, но не фокусировалось на параллелизме, сказал Паттерсон в интервью. Лаборатория продемонстрировала ускорение выполнения задачи в 20 раз с низкоуровневым машинным кодом.

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

«Нити должны синхронизироваться правильно», - сказал Кристос Козыракис, профессор электротехники и информатики в Стэнфордском университете, во время презентации перед групповым обсуждением. Код должен быть написан в форме, которая ведет себя предсказуемо и масштабируется по мере появления большего количества ядер.

Компиляторы также должны быть умнее и быть достаточно проницательными, чтобы разбивать потоки вовремя, поэтому выходы принимаются в правильной последовательности, сказал Козыракис, Неправильные попытки построить параллелизм в код могут создать багги-программное обеспечение, если конкретные вычисления не выполняются в определенном порядке. Это проблема, обычно называемая условиями гонки. По словам участников дискуссии, кодеры также могут узнать, как использовать несколько программных средств для достижения более точных уровней параллелизма.

«Нет никакого ленивого подхода к программированию», - сказал Паттерсон на конференции.

Задержка памяти и сети создала узкие места в пропускной способности данных, что может отрицательно сказаться на производительности, достигаемой при параллельном выполнении задачи. Существуют также различные средства программирования для разных архитектур, что затрудняет использование всего доступного оборудования.

Многие инструменты параллелизма, доступные сегодня, предназначены для использования возможностей параллельной обработки процессоров и блоков обработки графики для повышения производительности системы. Apple, Intel, Nvidia и Advanced Micro Devices входят в число компаний, которые продвигают OpenCL, параллельную среду программирования, которая будет поддерживаться в будущей операционной системе Apple Mac OS X 10.6, также называемой Snow Leopard, которая должна выйти в пятницу. OpenCL конкурирует с Microsoft, которая продвигает свои собственные инструменты параллельного программирования DirectX и Nvidia, которая предлагает инфраструктуру CUDA.

OpenCL включает C-подобный язык программирования с API (интерфейсами прикладного программирования) для управления распределением ядер по всему оборудованию, таким как как процессорные ядра и другие ресурсы. OpenCL может помочь Mac OS быстрее декодировать видео, распределяя обработку пикселей в нескольких процессорах и графических процессорах в системе.

Все существующие инструменты ориентированы на различные программные среды и используют различные ресурсы, сказал Паттерсон. OpenCL, например, больше ориентирован на выполнение задач на графических процессорах. Проприетарные модели, такие как DirectX, трудно развернуть в гетерогенных вычислительных средах, в то время как некоторые модели, такие как OpenCL, адаптируются только к конкретным средам, которые полагаются на графические процессоры.

«Я не думаю, что OpenCL будет охвачен всеми архитектурами». - сказал Паттерсон. «Нам нужно в то же время пробовать другие вещи», например, пытаться улучшить модели программирования с использованием обычно используемых инструментов разработки, таких как Ruby on Rails.

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

Козыракис сказал, что Стэнфорд создал лабораторию, цель которой - «сделать параллельную разработку приложений практичной для [масс]» к 2012 году Исследователи работают с такими компаниями, как Intel, AMD, IBM, Sun, Hewlett-Packard и Nvidia.

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

«В этих областях есть деньги, - сказал Паттерсон.