Подтвердить что ты не робот

Альтернативы ppl

В мой предыдущий вопрос Я спросил, я коснулся вопроса parallel_for от ppl.h, предоставленного Microsoft.
Но вскоре после того, как я понял, что, используя это, он делает его приложение неспортивным (если я прав, он специфичен для Microsoft (заголовок ppl.h)).
По-моему, это нарушает очень важный аспект программирования на С++ - переносимость, и я просто не готов это сделать.
Итак, мои вопросы:
1. Правильно ли я говорю, что использование parallel_for от ppl делает ваш код неспортивным (через unportable я имею в виду, что он не может быть скомпилирован другим компилятором, чем тот, который у MS)
2. Правильно ли я говорю, что если на более позднем этапе я хочу предоставить пользовательский интерфейс (сделанный в Qt) для приложения, над которым я работаю в момент, использование parallel_for в моем коде будет препятствием, которое будет означать, что либо я ' ll замените parallel_for какой-либо другой (переносной) альтернативой или я не смогу сделать UI в Qt и ядре в VS?
3. Каковы (переносные) альтернативы ppl?

4b9b3361

Ответ 1

Возможно, вы захотите рассмотреть Intel Блоки по построению темы. В отличие от OpenMP, TBB фактически использует С++, а не просто компилирует под компилятором С++ (т.е. Является библиотекой C, которая может компилироваться как С++). В PPL есть много вещей, которые вы видите в PPL, но это кросс-платформенный.

Существует также Boost.Thread, который является С++ (хотя и не такой прямой, как TBB), и он является кросс-платформенным.

Ответ 2

Люди, работающие над проектом Casablanca, создают портативную версию PPL под названием PPLX. Он лицензирован в соответствии с лицензией Apache 2.0.

Ранее они говорили, что они тесно сотрудничают с командой PPL, чтобы поддерживать обе версии в функции синхронизации и исправления ошибок (см. последний пост в этот поток).

Ответ 4

Я правильно говорю, что используя parallel_for от ppl делает ваш код unportable (непортативный я имею в виду, что он не может быть скомпилирован другими компилятор, отличный от MS)

Unportable, если вы переключите платформу самостоятельно. Может быть переносимым в Windows, если вы хотите использовать другие компиляторы. Но знайте, что PPL является частью Concurrency Runtime, которая помещается в MSVCRT100.DLL, и вам нужно ссылаться на это (или статически ссылаться, не требуя DLL во время выполнения). Я не уверен, как это можно сделать с другими компиляторами/линкерами, но я считаю, что это выполнимо.

Я правильно говорю, что если позже Я хочу предоставить интерфейс (сделанный в Qt) для приложения, над которым я работаю на момент, используя parallel_for in мой код будет препятствием, которое означало бы, что либо я заменю parallel_for с некоторыми другими (переносной) вариант, или я не буду способный делать UI в Qt и ядре в VS

Вы можете написать свою основную структуру при использовании PPL/VС++ и другого графического интерфейса в QT/other-compiler. Для этого просто создайте DLL, которая будет использовать PPL, и ваше приложение GUI будет использовать DLL. Я верю, что вы понимаете, что я имею в виду здесь. Это также снижает нагрузку с вашей головы на переносимость (в Windows).

  • Каковы (переносные) альтернативы ppl?

Многие, но я предпочитаю использовать PPL на Windows/VС++. Вы можете использовать Intel TBB. OpenMP затруднен и не дает преимуществ по сравнению с TBB/ConcRT