Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MPI是一个范例还是一组库?_Mpi - Fatal编程技术网

MPI是一个范例还是一组库?

MPI是一个范例还是一组库?,mpi,Mpi,我目前正在学习一门关于并行计算的入门课程,课堂讲师将MPI描述为:- 另一种多重处理范式 一套图书馆 原料药 我不明白MPI到底是什么。如果它是一组库或API,那么为什么它仍然被称为范例?以上3个术语中哪一个最准确地解释了MPI是什么?MPI是处理数据的一种方式(通常是int或double等普通类型的数组)。它是一个API(在接口中,而不是在库中),描述了可用于在一组计算节点(可能在单独的机器上)之间以特定“模式”传输和接收数据的函数 它还描述了一种启动程序的方法,这些程序以某种支持上述操作的方

我目前正在学习一门关于并行计算的入门课程,课堂讲师将MPI描述为:-

  • 另一种多重处理范式
  • 一套图书馆
  • 原料药

  • 我不明白MPI到底是什么。如果它是一组库或API,那么为什么它仍然被称为范例?以上3个术语中哪一个最准确地解释了MPI是什么?

    MPI是处理数据的一种方式(通常是int或double等普通类型的数组)。它是一个API(在接口中,而不是在库中),描述了可用于在一组计算节点(可能在单独的机器上)之间以特定“模式”传输和接收数据的函数

    它还描述了一种启动程序的方法,这些程序以某种支持上述操作的方式相互连接,并描述了一种让每个启动的进程知道它有多少对等点的方法

    MPI有多种相互竞争的实现,如OpenMPI和MPICH。如果您根据MPI规范编写程序,则可以将其与计算平台上可用的任何MPI实现一起使用。但是一个作业中的所有进程都必须使用相同的MPI实现,因为它只是一个API,并且不保证在运行时实现之间的互操作性


    MPI之所以被称为范例,是因为它需要以一种大多数程序员都不熟悉的特定方式来思考分布式计算。一旦您将其用于一个“真正”的程序,您就会发现它需要一种思考数据结构和算法的方式,这与使用套接字或消息队列编程不同。

    MPI是一种处理数据的方式(通常是int或double等普通类型的数组)。它是一个API(在接口中,而不是在库中),描述了可用于在一组计算节点(可能在单独的机器上)之间以特定“模式”传输和接收数据的函数

    它还描述了一种启动程序的方法,这些程序以某种支持上述操作的方式相互连接,并描述了一种让每个启动的进程知道它有多少对等点的方法

    MPI有多种相互竞争的实现,如OpenMPI和MPICH。如果您根据MPI规范编写程序,则可以将其与计算平台上可用的任何MPI实现一起使用。但是一个作业中的所有进程都必须使用相同的MPI实现,因为它只是一个API,并且不保证在运行时实现之间的互操作性

    MPI之所以被称为范例,是因为它需要以一种大多数程序员都不熟悉的特定方式来思考分布式计算。一旦你将它用于一个“真正”的程序,你就会发现它需要一种不同于使用套接字或消息队列编程的数据结构和算法的思考方式。

    最纯粹的是,MPI是通过消息传递为并行计算勾勒出一个模型(或者说“范例”(如果你愿意的话)。该标准还为某些语言(出于历史原因,C和Fortran)定义了API。然后,第三方可以自由编写库,以他们喜欢的任何语言实现上述标准,使用他们喜欢的任何实现细节(只要不与标准冲突)

    <>这有点类似于C++语言和C++编译器之间的区别。该语言只是一组规则,指定程序的行为应该被赋予特定的输入。编译器是任何可以接受输入并产生语言规范要求的所有结果的程序。类似地,MPI实现是可以链接到项目并用于生成MPI标准规定的所有结果的任何库。

    最纯粹的MPI是一种通过消息传递为并行计算勾勒模型(或者如果愿意的话,是“范例”)的库。该标准还为某些语言(出于历史原因,C和Fortran)定义了API。然后,第三方可以自由编写库,以他们喜欢的任何语言实现上述标准,使用他们喜欢的任何实现细节(只要不与标准冲突)

    <>这有点类似于C++语言和C++编译器之间的区别。该语言只是一组规则,指定程序的行为应该被赋予特定的输入。编译器是任何可以接受输入并产生语言规范要求的所有结果的程序。同样,MPI实现是可以链接到项目并用于生成MPI标准规定的所有结果的任何库。

    API 这最适合MPI。最重要的是,MPI是消息传递接口。MPI的主要内容是(应用程序编程)接口的定义及其语义。然而,MPI超越了纯API,例如,它还指定MPI应用程序的启动

    多重处理范式 有两种与MPI相关的范例信息传递作为一种沟通形式SPMD单程序、多数据作为最常用的执行方案。尽管MPI也支持MPMD(多程序、多数据)

    一套图书馆 MPI实现,如OpenMPIMPICH是一个库。然而,它们超越了简单的库。例如,它们提供编译器包装以简化编译和链接,并提供复杂的启动基础设施。

    API 这最适合MPI。最重要的是,MPI是消息传递接口。MPI的主要内容是(应用程序编程)接口的定义及其语义。然而,MPI goe