Особенностью всех суперкомпьютеров является возможность создания алгоритмов,
выполняющих несколько действий (задач) одновременно и независимо друг от
друга (параллелизм) с последующим обменом информации между процессами. Число процессоров у разных суперкомьютеров различно и будет неуклонно расти.
Поэтому создаваемые программы должны быть масштабируемыми (то есть гибкими
к числу процессоров). В многопроцессорной системе процессоры могут делить между собой
некоторые аппаратные ресурсы: память, соединительную сеть и т. д. За счет использования
общих ресурсов добавление каждого нового процессора может приводить к замедлению работы остальных
процессоров. В этом случае говорят об ограниченной масштабируемости системы.
Проектирование параллельных алгоритмов является творческим
процессом. Лучшие результаты будут при учете особенностей как самой задачи,
так и архитектуры суперкомпьютера.
Общая задача делится на подзадачи меньшего размера, и затем определяется требуемая коммуникация между подзадачами. От конкретного числа процессоров желательно абстрагироваться.