
并行计算
wangeen
商业化产品可能是有用的但最好的东西往往是免费的空气水Vim
展开
-
并行计算 写给自己的困惑
首先说一下自己对MPI和多线程区别的认识,一直认为MPI就是一线程池,那既然如此MPI的为什么还要存在?难道仅仅是为了漂亮的接口吗?显然不是,还由一点容易别忽略的就是多台计算机之间的MPI,这个很重要,因为多线程干这个自己管理网络的部分太复杂了,而且容易出错,但是MPI把这些都包了,非常方便,它可以作为整个软件架构的基础。另外OpenMP和OpenMPI是两个完全不同的东西,一个只支持内存共享原创 2013-01-19 22:30:27 · 1763 阅读 · 0 评论 -
Cuda 相关库的介绍
Cuda在努力构造一个类似CPP的完整的编程环境,所以他提供了一系列的库。http://docs.nvidia.com/cuda/index.html1) math API类比C的math库有三角函数、对数、指数等基本的函数。2) thrustSTL类似的Cuda实现,可以实现快速的排序,变换等操作。http://docs.nvidia.com/cuda原创 2013-02-26 10:42:22 · 5861 阅读 · 0 评论 -
并行编程中的设计模式
这篇文章是对这段时间学习并行编程中的设计模式的一个总结。有不当之处,希望得到大家的批评、指正。首先,所谓“并行编程中的设计模式”(patterns in parallel programming)仍处于不断的被发现、发掘的阶段。当前已经有各路人马对这一领域进行了研究,但远远没有达到统一认识的高度。也没有一套业界普遍认同的体系或者描述。这就造成了当前这一领域的现状:从事研究的人有不同的背景,他们转载 2013-02-21 11:01:42 · 1638 阅读 · 1 评论 -
并行计算工具的选择
并行计算是未来的发展趋势,如何选择并行的架构是个重要的问题。首先要发挥集群计算的能力,用MPI是个不二的选择。其次为了充分利用cpu和gpu的多核计算能力,有一系列的库可以选择,openMP openACC CUDA OpenCL ,openMP openACC是同一层次的接口,是share memory并行,openACC比openMP有所扩展,主要是在GPU的方面,这一层的实现比较简单原创 2013-02-10 12:07:34 · 1164 阅读 · 0 评论 -
ssh 无密码登陆设置
假如你Linux Client是客户端, Server为服务器,用户名为user。现在要配置从Client到Server的无密码SSH登录。1:在Client上产生一对密钥,执行ssh-keygen命令,需要输入的地方直接回车,接受缺省值即可,输出如下:[user@Client .ssh]$ ssh-keygen -dGenerating public/private dsa key转载 2013-02-07 09:14:37 · 739 阅读 · 0 评论 -
openCL introduction
http://www.drdobbs.com/parallel/a-gentle-introduction-to-opencl/231002854?queryText=openCLRemeber:CUDA has a better performance than OpenCLopenCL是一个通用标准接口类似于MPI,各个组织都可以实现它比如intel AMD Apple NVi原创 2013-02-06 22:00:10 · 829 阅读 · 0 评论 -
GPU CPU各自的特长比较
http://stackoverflow.com/questions/7091958/cpu-vs-gpu-when-cpu-is-betterBased on my experience, I will summarize the key differences in terms of performance between parallel programs in CPUs and转载 2013-02-06 22:31:32 · 1013 阅读 · 0 评论 -
MPI 使用小结
MPI是分布式计算的基础接口架构,他有很多实现,比如intelMPI openMPI等等,而这些具体实现了这些接口里面的内容,比如一些通信协议。MPI有几个很重要的概念rank, group, communicator, type, pack, spawn, window, 理解了这些概念MPI就算入门了。group是MPI一个很重要的概念,一台电脑可以属于多个group,grou原创 2013-02-01 14:16:19 · 6629 阅读 · 0 评论 -
线程池(thread pool)
过去使用多线程的时候,一直很担心线程创建和销毁对程序造成的负担,最近看到一个线程池的概念,眼前一亮,觉得这个很有用就收集了一些资料在下面。线程池很好的解决了轻量级的线程被频繁调用造成的系统负担的问题。而且用线程池会让代码更加明了,容易读懂,比如我们不要操心每一个小线程本身的生命周期, 试想MPI之流下面应该也有线程池的概念, boost 本身并没有基于线程池的实现,倒是有第三方的在boost基础上原创 2012-12-28 12:27:25 · 1262 阅读 · 0 评论 -
MPI 处理文件
http://www.mcs.anl.gov/research/projects/mpi/usingmpi2/examples/starting/main.htm下面只是贴了一个基于MPI-1的静态版本的文件的broadcast, 文章中还提供了基于MPI-2的动态版本。另外还有很全面的MPI的文件处理样式,比如多个node处理同一文件之类的。master部分的代码转载 2013-01-31 15:42:48 · 2730 阅读 · 0 评论 -
使用 Boost 的 IPC 和 MPI 库进行并发编程
boost MPI有一个好处是和STL的容器支持很好,对一般的class也有自己的allocate,如果从最底层开发所有的部件,从boost MPI 入手是个不错的选择。使用非常流行的 Boost 库进行并发编程非常有意思。Boost 有几个用于并发编程领域的库:Interprocess (IPC) 库用于实现共享内存、内存映射的 I/O 和消息队列;Thread 库用于实现可移植转载 2012-12-20 13:07:12 · 1452 阅读 · 0 评论 -
MPI Collective communication
Collective communication means all processes within a communicatorcall the same routine. Portable applications should assume thatcollective routines include a global synchronization.The following si转载 2013-01-31 09:36:19 · 1426 阅读 · 0 评论 -
MPI 的基本数据结构
http://www.lam-mpi.org/tutorials/one-step/datatypes.phpHeterogeneous computing requires that the data constituting a messagebe typed or described somehow so that its machine representation can bec转载 2013-01-31 09:33:13 · 2732 阅读 · 0 评论 -
MPI master & slave 模式的基本框架
rank 0为master其余都是slavehttp://www.lam-mpi.org/tutorials/one-step/ezstart.php#include #define WORKTAG 1#define DIETAG 2/* Local functions */static void master(void);static void slave(void转载 2013-01-31 09:26:48 · 3996 阅读 · 0 评论 -
MPI 每个rank依次往下一个rank发送消息的循环
https://www.sharcnet.ca/help/index.php/Getting_Started_with_MPI #include #include #define BUFMAX 81 int main(int argc, char *argv[]) { char outbuf[BUFMAX], inbuf[BUFMAX]; int原创 2013-01-31 09:16:23 · 5661 阅读 · 0 评论 -
openMPI配置
在所有的节点上,做下面的1—3操作1,安装openmpihttp://www.open-mpi.org/software/ompi/v1.6/之前系统默认带有openMPI,先把旧的删掉2,配置无密码ssh登录:请参考:如何配置无密码SSH3,在工作目录下编制配置文件(文件名随意),内容包括所有节点的名称,例如:#>cat hostshost1 sl转载 2013-01-28 13:11:02 · 5967 阅读 · 0 评论 -
Using the Intel® MPI Library in a server/client setup
http://www.mpi-forum.org/docs/mpi-20-html/node106.htmhttp://software.intel.com/zh-cn/articles/using-the-intel-mpi-library-in-a-serverclient-setup如何用MPI创建server client架构1) Build 2转载 2013-01-25 09:26:08 · 2039 阅读 · 0 评论 -
Cuda stream programming
Cuda stream programming 是一种优化GPU效率的有效手段,具体有下面6点作用:1. Stream programming (pipeline) is a useful parallel pattern.2. Data transfer from host to device is a major performance bottleneck in GPU原创 2013-03-11 17:44:21 · 1160 阅读 · 0 评论