Языковая дискриминация как зеркало многопоточных технологий?

Интересная дискуссия развернулась тут у нас на форуме. В двух словах: сейчас проходит конкурс Threading Challenge, который заключается в поиске удачных параллельных имплементаций классических алгоритмов (например - поиск простых чисел). В соответствии с правилами, участники, использующие библиотеку Intel® TBB, получают дополнительные баллы, и как следствие - серьезное преимущество в конкурсе. С другой стороны, использование TBB ограничивает участников в выборе языка, так как в данный момент TBB существует только для C++.Посетители форума задают резонный вопрос: а не проводит ли компания Intel политику «языковой дискриминации», начисляя дополнительные баллы участникам, использующим TBB и как следствие - C++?

Что тут скажешь, в любом состязании организаторы преследуют какие-то определенные цели (говорят, даже олимпиады устраивают нынче не за «просто так» :)). Надеюсь, я никого не удивлю, если раскрою главный «буржуинский» секрет данного конкурса – мы хотим узнать, насколько востребованы многопоточные технологии, какие именно инструменты используются разработчиками в данный момент, и каких инструментов на рынке не хватает.

Существуют категории программного обеспечения, где производительность оправдывает любые средства, например какая-нибудь сложная математика, [де]кодирование медиа данных и т.п. В данном случае выбор С++ почти очевиден. Интел прилагает серьезные усилия, чтобы помочь разработчикам такого рода софта. В том числе, выпускает компиляторы и библиотеки вроде TBB.

В то же время есть приложения, ориентированные на бизнес – сервера приложений, веб-сервера и прикладные задачи «офисного» класса. И я совершенно согласен с мнением, что таких приложений намного больше. В то же время, намного больше и поставщиков инструментов для задач такого рода. Если взять, к примеру, тот же .Net, то можно упомянуть Parallel FX с TPL, или упомянутый на нашем форуме MC#.

Что делает Интел для разработчиков бизнес-приложений на новых языках, в том числе MRTE? Во-первых, устоявшиеся продукты, такие как библиотеки IPP и профилировщик VTune поддерживают все основные языки. Я сейчас специально проверил, в IPP есть примеры для C# а VTune по-прежнему профилирует .NET и Java приложения. Вероятно, придет время и для относительно новых продуктов, таких как TBB.

С другой стороны, TBB – проект с исходным кодом, и я не вижу никаких проблем использовать все преимущества TBB (включая структуру библиотеки) в любом другом проекте. Например, можно создать сборки для .NET на основе TBB и получится библиотека для нужной вам платформы. Я даже слышал мнение, что многое в том же Parallel FX позаимствовано из TBB.

Однако, вернемся к конкурсу. Если статистика конкурса покажет, что большинство участников предпочитают решения на том же .NET и считает их более элегантными, вопреки дополнительным баллам – думаю, это будет серьезным поводом для ребят из команды TBB задуматься о создании .NET клона. Хотя на этом рынке уже Parallel FX… Короче, тут есть над чем голову поломать…

Для получения подробной информации о возможностях оптимизации компилятора обратитесь к нашему Уведомлению об оптимизации.
Теги: