Я провожу некоторые исследования многоядерных процессоров; В частности, я рассматриваю написание кода для многоядерных процессоров, а также компиляцию кода для многоядерных процессоров.
I» В дополнение к определению определенных программных конструкций, он также, кажется, имеет функции, которые говорят компилятору оптимизировать код для многоядерных архитектур)
В общем, из того небольшого опыта, который у меня есть с многопоточным программированием , я знаю что программирование с учетом параллелизма и параллелизма, безусловно, является сложной концепцией. Мне также известно, что многопоточное программирование и многоядерное программирование - это две разные вещи. в многопоточном программировании вы гарантируете, что ЦП не остается бездействующим (в системе с одним ЦП. Как отметил Джеймс, ОС может планировать запуск разных потоков на разных ядрах - но меня больше интересует описание параллельных операций из сам язык или через компилятор). Насколько я знаю, вы не можете по-настоящему выполнять параллельные операции. В многоядерных системах вы должны иметь возможность выполнять действительно параллельные операции.
Поэтому мне кажется, что в настоящее время проблемы, стоящие перед многоядерным программированием:
Мне интересно знать, какие еще могут быть проблемы, и если есть какие-либо решения в работах по решению этих проблем. Ссылки на научные статьи (и тому подобное) были бы полезны. Спасибо!
РЕДАКТИРОВАТЬ
Если бы мне пришлось свести мой вопрос к одному предложению, это было бы так: с какими проблемами сегодня сталкиваются многоядерные программы и какие исследования проводятся в этой области для решения этих проблем?
ОБНОВЛЕНИЕ
Мне также кажется, что есть многоуровневое отношение к многоядерности:
Я искал в ACM и IEEE и нашел несколько статей. Большинство из них говорят о том, как трудно думать одновременно, а также о том, что современные языки не имеют надлежащего способа выражения параллелизма. Некоторые зашли настолько далеко, что утверждают, что имеющаяся у нас модель параллелизма (потоков) не является хорошим способом управления параллелизмом (даже для нескольких ядер). Мне интересно услышать другие взгляды.