【发布时间】:2021-05-03 06:33:06
【问题描述】:
查找所有 Flynn 的 C/C++ 分类示例代码或 Python 代码以供理解
任何代码都可以,我只是想学点东西。我试图找到其中一些但没有结果。
SIMD
SISD
MISD
MIMD
【问题讨论】:
标签: python c parallel-processing mpi openmp
查找所有 Flynn 的 C/C++ 分类示例代码或 Python 代码以供理解
任何代码都可以,我只是想学点东西。我试图找到其中一些但没有结果。
SIMD
SISD
MISD
MIMD
【问题讨论】:
标签: python c parallel-processing mpi openmp
查找 C/C++ 或 Python 代码的所有 Flynn 分类示例代码 为了理解
分类法更多地是关于计算机体系结构本身。
让我们开始 SIMD,从Wikipedia 可以阅读:
单指令多数据(SIMD)是一类并行 弗林分类法中的计算机。它描述了 具有执行相同功能的多个处理元件的计算机 同时对多个数据点进行操作。这样的机器 利用数据级并行性,但不利用并发性:有 同时(并行)计算,但只有一个进程 (指令)在给定的时刻。
在 OpenMP 中你可以使用SIMD 指令,即:
#pragma omp simd
for ( i = 0; i < n; i++ )
a[i] = b[i] * c[i];
关于SISD,可以从Wikipedia阅读:
在计算中,SISD(单指令流,单数据流)是 一种计算机体系结构,其中执行单个单核处理器 单个指令流,对存储在单个指令流中的数据进行操作 记忆。
这太多与代码有关,而是它如何在底层架构中执行。反映这一概念的代码是:
for(int i = 0; i < N; i++)
a[i]++;
关于 MISD,从Wikipedia 可以阅读:
在计算中,MISD(多指令单数据)是一种 许多功能单元执行的并行计算架构 对同一数据进行不同的操作。管道架构属于 对于这种类型,尽管纯粹主义者可能会说数据不同 在流水线中的每个阶段处理之后。
for(int i = 0; i < N; i++)
a[i] = 10 * a[i] + a[i] / 2;
关于 MIMD,从Wikipedia 可以阅读:
在计算中,MIMD(多指令多数据)是一种 用于实现并行性的技术。使用 MIMD 的机器具有 异步和独立运行的处理器数量。
为此,您可以拥有一个具有两个进程的 MPI 应用程序,每个进程执行两个不同的应用程序。
【讨论】: