Red de conocimiento del abogados - Preguntas y respuestas jurídicas - ¿Cuál es la diferencia entre la programación MPI y los subprocesos múltiples en lenguaje C? ¿La programación MPI está dirigida a una computadora con múltiples núcleos o a varias computadoras? ¡Gracias!

¿Cuál es la diferencia entre la programación MPI y los subprocesos múltiples en lenguaje C? ¿La programación MPI está dirigida a una computadora con múltiples núcleos o a varias computadoras? ¡Gracias!

MPI (MPI es un estándar con diferentes implementaciones específicas, como MPICH, etc.) es una herramienta para la colaboración en red de múltiples hosts para computación paralela. Por supuesto, también se puede utilizar para múltiples núcleos. / Computación paralela con múltiples CPU en un solo host, pero la eficiencia es baja. Puede coordinar la computación paralela entre múltiples hosts, por lo que es altamente escalable en escala paralela y puede usarse desde computadoras personales hasta las 10 supercomputadoras más importantes del mundo. La desventaja es que la comunicación entre procesos se utiliza para coordinar cálculos paralelos, lo que da como resultado una baja eficiencia paralela, una gran sobrecarga de memoria y una programación poco intuitiva y engorrosa. OpenMP es una herramienta diseñada para computación paralela de múltiples núcleos y múltiples CPU en un solo host. En otras palabras, OpenMP es más adecuado para la computación paralela en una estructura de memoria compartida de una sola computadora. Debido a que utiliza el método de compartir memoria entre subprocesos para coordinar cálculos paralelos, es muy eficiente en estructuras de múltiples núcleos / múltiples CPU, tiene una pequeña sobrecarga de memoria y declaraciones de programación simples e intuitivas, por lo que es fácil de programar e implementar. compilador (ahora la última versión de los compiladores C, C++ y Fortran básicamente tienen soporte OpenMP incorporado). Sin embargo, la mayor desventaja de OpenMP es que solo puede funcionar en un único host y no puede usarse para computación paralela entre múltiples hosts. Si desea utilizar OpenMP en una red de múltiples hosts (como en una supercomputadora), debe tener herramientas adicionales que lo ayuden, como la programación híbrida MPI OpenMP. O virtualice varios hosts en un entorno de memoria compartida (Intel tiene una plataforma de este tipo), pero esto no es tan eficiente como la programación híbrida. La única ventaja es que los programadores no necesitan aprender programación MPI adicional.