Несколько причин, по которым программистам сложно писать код для многоядерных и многопоточных процессоров:
- Проблема последовательного выполнения. intuit.ru Одно или более ядер в какой-то момент не могут выполнять код параллельно с другими ядрами. intuit.ru Это может происходить из-за блокировок при доступе к ресурсам, необходимости синхронизации процессов или потоков на различных ядрах, поддержания когерентности кэш-памяти и неравномерности загрузки. intuit.ru
- Накладные расходы на синхронизацию. intuit.ru Они ведут к понижению эффективности параллельной работы. intuit.ru
- Зависимость глобальной структуры алгоритма от топологии вычислительной платформы. intuit.ru Процесс создания максимально эффективного алгоритма практически не автоматизируется и связан с большими трудозатратами на поиск специфической структуры. intuit.ru
- Совместимость старых библиотек. intuit.ru www.osp.ru Если библиотеки физически не поддерживают параллельное исполнение, то распараллеливание алгоритма может привести к ошибке. intuit.ru www.osp.ru
Для решения этих проблем от разработчика требуются специальная подготовка, особый образ мышления и высокая квалификация. www.osp.ru