Компания Intel представила ветку GCC с реализацией технологии Cilk Plus

Компания Intel объявила об открытии исходных текстов проекта "Cilk Plus". В рамках проекта реализован набор расширений для языков Си и Си++ с реализации новой эффективной методики параллельного программирования, позволяющий существенно упростить разработку программ, части которых выполняются параллельно с задействованием разных процессорных ядер.

Одновременно, на основе кода Cilk Plus и набора компиляторов GCC 4.7 создана ветка cilkplus, которая может быть использована разработчиками GCC для упрощения интеграции Cilk Plus в состав основной ветки GCC. Компания Intel заявила, что ищет пути сотрудничества с разработчиками открытого ПО, как в плане развития исходных текстов, так и в направлении усовершенствования спецификаций Cilk Plus, которые распространяются в соответствии с принципами открытых технологий.

В представленном коде реализованы три простых ключевых слова и специальная нотация для работы с массивами, которые позволяют быстро задействовать в приложениях на Си и Си++ возможности современных CPU, имеющих несколько процессорных ядер и векторные сопроцессоры (Vector Units). Для управления генерацией кода с улучшенной векторизацией предусмотрена pragma simd.

Поддерживается два метода увеличения производительности - параллелизм данных и параллельное выполнение подпрограмм. В первом случае, обеспечиваются механизмы прозрачного распараллеливания типовых операций над массивами данных и автоматическое задействование SIMD-инструкций. Для организации параллелизма на уровне подпрограмм в обиход вводится три ключевых слова: _Cilk_spawn - запуск функции в параллельном режиме, _Cilk_sync - ожидание завершения параллельно выполняемой функции, и _Cilk_for - организация работы цикла в параллельном режиме.

При проведение тестирования на 16-ядерном CPU реализация метода Монте-Карло при использовании Cilk Plus показала прирост производительности в два раза, в случае задействования режима параллельной обработки данных, и в 11.6 раз при использовании режима выполнения параллельных задач.

Отдельно распространяется специальная runtime-библиотека Intel Cilk Plus, код которой открыт под лицензией BSD. Runtime-библиотека протестирована в Linux (теоретически нет никаких ограничений по использованию в других ОС) на системах с архитектурами x86_32 и x86_64. Представители Intel надеются, что при помощи сообщества удастся портировать runtime-компоненты и для других архитектур. Так как в библиотеке совсем не много специфичного для архитектур x86_32 и x86_64 кода, такое портирования не составит труда.

©  OpenNet