Как кто-то в мире HPC, который пришел из мира веб-разработки предприятия, мне всегда интересно узнать, как разработчики "реальный мир" использует параллельные вычисления. Это гораздо более актуально сейчас, когда все чипы идут многоядерно, и это будет еще более актуально, если на чипе будут тысячи ядер всего лишь несколько.
Мои вопросы:
- Как это влияет на вашу дорожную карту программного обеспечения?
- Мне особенно интересны реальные истории о том, как многоядерность влияет на разные области программного обеспечения, поэтому укажите, какой вид развития вы выполняете в своем ответе (например, серверная часть, клиентские приложения, научные вычисления и т.д.).
- Что вы делаете с существующим кодом, чтобы воспользоваться преимуществами многоядерных машин и с какими проблемами вы столкнулись? Вы используете OpenMP, Erlang, Haskell, CUDA, TBB, UPC или что-то еще?
- Что вы планируете делать, когда уровни concurrency продолжают увеличиваться, и как вы будете иметь дело с сотнями или тысячами ядер?
- Если вашему домену нелегко воспользоваться параллельным вычислением, объясните, почему это тоже интересно.
Наконец, я сформулировал это как многоядерный вопрос, но не стесняйтесь говорить о других типах параллельных вычислений. Если вы портируете часть своего приложения, чтобы использовать MapReduce, или если MPI на больших кластерах - это парадигма для вас, а затем обязательно укажите это тоже.
Обновление: Если вы ответите # 5, укажите, считаете ли вы, что что-то изменится, если будет больше ядер (100, 1000 и т.д.), чем вы можете использовать доступную пропускную способность памяти (видя как пропускная способность становится все меньше и меньше на ядро). Можете ли вы использовать оставшиеся ядра для своего приложения?