Поставщики новых компьютерных архитектур регулярно пытаются представить новые модели программирования, например, недавно CUDA / OpenCL для GPGPU, и заменяют C / POSIX в качестве интерфейса управления для параллелизма платформы. (Poss & Koening, AM3: на пути к аппаратному ускорителю Unix для многоядерных процессоров, 2015 г.)
Почему разработчики архитектуры пытаются разработать новые модели программирования для замены C / POSIX для параллельных вычислений? Не подходит ли C / POSIX для многопроцессорных систем, или у первоначальных авторов C / POSIX не было необходимости в параллельных вычислениях во время разработки C / POSIX? Или это тот случай, когда программистам нужно больше возможностей, чем может предоставить C / POSIX, и поэтому они прибегают к новым проектам, например, CUDA / OpenCL и т. Д.?
источник
Ответы:
Сравните потоки POSIX и Grand Central Dispatch, например. У меня есть код, который отправляет четыре потока в восемь строк кода. С POSIX это было бы настоящим кошмаром.
С другой стороны, CUDA / OpenCL - это вовсе не многопоточность, а использование массивных векторных возможностей. (Они также могут выполнять многопоточность, но векторизация важна).
источник
Существует различие между параллельным программированием SIMD и более традиционной моделью параллельного программирования, которую использует POSIX.
SIMD - это модель, которую используют CUDA, OpenCL и т. Д. Существует один набор инструкций, которые выполняются одновременно многими потоками, каждый из которых работает со своим собственным пулом данных. Это очень полезно для таких вещей, как трехмерная графика, где одни и те же преобразования применяются к большому количеству точек.
Модель POSIX предполагает, что каждый поток работает асинхронно, и каждый поток потенциально может выполнять совершенно другой код.
Обе модели имеют свои сильные и слабые стороны - поэтому они разные. POSIX гораздо более гибок, но CUDA / OpenCL / и т. Д. может использовать преимущества специализированного оборудования, запускающего тысячи (обычно более простых) потоков одновременно.
источник