Я не думаю, что мы должны основываться на вики-определениях, формулировка там недостаточно точна, чтобы заслужить поиск противоречий.
Во-первых, я бы описал параллелизм задач как форму параллелизма, присущую некоторому алгоритму.или проблема, в которой может быть функциональная декомпозиция на несколько задач различной природы, которые могут выполняться одновременно.Альтернативные формы параллелизма включают, например, пространственную декомпозицию или декомпозицию данных, где проблема может быть разбита на различные части данных или макет ввода (например, диапазоны массивов, фрагменты матрицы, части изображения ...).
Параллелизм на уровне потоков - это другая таксономия, это любая форма параллелизма, которая может быть извлечена для использования многопоточной системой.Требуется, чтобы декомпозиция была достаточно крупнозернистой, чтобы позволить различным потокам работать независимо (в противном случае требуемые издержки синхронизации сделали бы ее бесполезной).Альтернативой для этого является, например, ILP (параллелизм на уровне команд), когда однопотоковый контекст может извлекать параллелизм в коде, работая на машине с глубоким нарушением порядка, которая может планировать на основе готовности.Это допускает более мелкозернистый параллелизм и меньшее участие программиста, но ограничивает параллелизм до глубины окна OOO.
По смежной теме - будьте осторожны, чтобы не перепутать одновременное и параллельное выполнение.
Параллелизм на уровне потоков может быть использован путем извлечения параллелизма на уровне задач или других форм декомпозиции алгоритма из кода.Затем он может быть запущен в одноядерной (вытесняющей) системе или многопоточной.Последний тип может быть реализован с помощью многоядерных систем, одновременной многопоточности или обоих (обычные процессоры обычно имеют много ядер, и, кроме того, могут поддерживать SMT).