Ответ 1
-
MPI - это парадигма передачи сообщений parallelism. Здесь у вас есть корневая машина, которая запускает программы на всех компьютерах в своем MPI WORLD. Все потоки в системе независимы и, следовательно, единственный способ общения между ними - через сообщения по сети. Полоса пропускания сети и пропускная способность являются одним из важнейших факторов производительности MPI. Идея: если на машине есть только один поток, и у вас много ядер, вы можете использовать парадигму общей памяти OpenMP для решения подмножеств вашей проблемы на одной машине.
-
CUDA - парадигма SMT parallelism. Он использует современную архитектуру графического процессора для обеспечения параллельности. Графический блок содержит (блоки (ядра)), работающие с одной и той же инструкцией в режиме блокировки (это похоже на SIMD-модель). Следовательно, если все потоки в вашей системе выполняют такую же работу, вы можете использовать CUDA. Но объем общей памяти и глобальной памяти в графическом процессоре ограничен, и поэтому вы не должны использовать только один GPU для решения огромной проблемы.
-
Hadoop используется для решения крупных проблем на товарном оборудовании с использованием парадигмы Map Reduce. Следовательно, вам не нужно беспокоиться о распространении данных или управлении угловыми случаями. Hadoop также предоставляет файловую систему HDFS для хранения данных на вычислительных узлах.
Hadoop, MPI и CUDA полностью ортогональны друг другу. Следовательно, может быть несправедливо сравнивать их.
Хотя, вы всегда можете использовать (CUDA + MPI) для решения проблемы с помощью кластера графических процессоров. Вам все еще нужно простое ядро для выполнения коммуникационной части проблемы.