二月 23

ARM下使用openmp库

上篇文章介绍了如何在ARM使用MPICH构建并行计算集群。我们知道,mpi这个库擅长进行多计算机的并行计算,而openmp这个库则擅长进行多核共享内存的并行计算。也就是说,如果将多台计算机连在一起进行并行计算,那么应该使用mpi库,而如果是一台计算机,拥有多个核心,那么使用openmp会更好(使用mpi也可以)。

笔者在此简单说说如何在ARM环境下使用openmp。

想要使用openmp这个库的话,在头文件加上一句:

#include"omp.h"

在PC上可以使用gcc编译:

gcc -fopenmp -o a a.c

与编译一般c程序不同的是这里加上了参数-openmp。然后直接运行就可以了:

./a

如果想要在ARM上运行,则gcc应该改为arm-linux-gcc:
Continue reading

二月 22

ARM板通过MPICH实现并行计算

对于并行计算大家应该从名字上就能明白究竟是个什么东西,字面上理解就是同时,一起进行计算。假想有这样一个场景,有四个人,现在需要完成四件 事,A、B、C、D。这四件事只能交给一个人做,而这个人只能做完一件事后才能做另一件。我们一般编写的程序都是串行的,而串行程序就是这样,程序执行时 是从头到尾一步一步的,只有完成了前面的计算才能进行后面的计算,也不允许别的进程加以干涉,纵使你电脑有四个核心,也只有一个核心在工作,而不关剩下的 三个核心的事。显然,如果有一种方法,能够让这四个人每人分别做一件事,那效率就高了。这就是并行计算。

对于并行计算,实现的方法有很多种,本人对此也不熟悉,就不多说了。最常用到的是MPI库,超级计算机很多都是用这种方法实现并行的。对MPI的实现有两种软件,OpenMPI和MPICH,两者差不多。本文使用的是MPICH。

在 PC上实现非常地容易,只需要按照手册里的步骤一步一步安装就行了。但是,现在服务器和PC的处理器基本上使用的是英特尔的X86架构,性能强大但同时功 耗也高。反观我们使用的手机等使用ARM架构的设备,功耗却很小。所以,在ARM架构下建立一个低功耗的并行计算集群就变得有价值了。
Continue reading