首先介绍下多核并行计算的场景,及测试方法:
(1)并行计算运用在特定大型服务器之上,其硬件水平很高,可能有多几百到上千个cpu。
(2)这些cpu分成了2类,一类是控制cpu,作为主控,用于发起计算,与其他CPU交互,发起计算通知,分析并统计结果等作用;第二类是计算cpu(占大多数)。系统中绝大多数cpu属于计算cpu,因为整个系统就是为了高性能计算。由于计算量大,所以需要很多很多的cpu进行并行计算。每个cpu计算完后,将计算结果传回主控CPU。
(3)系统发起一次计算通知后,每个CPU核心会绑定一个进程开始进行实时运算。不同的CPU上运行着不同的实时进程,计算的通知和计算的结果,需要进程间通信,进行消息传递。并而且要求进程间通信的性能要足够的高,因为当cpu数量上涨到几百上千的时候,进程间通信的性能会影响到整个计算的结果收集。某些实时场景下,系统不允许某一次计算超期完成,这将导致整个业务的失败。
并行计算有知名的MPI库,如果不使用MPI,使用传统方式的linux IPC通信机制,比如管道,信号量,共享内存,消息队列等进程间通信方式。性能会是怎样的呢?下面对这几种IPC通信,进行性能研究。查看每种IPC之间的性能差距,及与MPI库做对比。形成性能分析报告。
首先采用管道方式来进行高性能密集并行计算。
#include <stdio.h>
#include <stdlib.h>
#include <