做并行
为啥强制昵称
这个作者很懒,什么都没留下…
展开
-
方阵操作方法集
方阵的生成 读写文件 转置和显示#include #include #include #include #include using namespace std;templateint inline size(T type,char *file) { ifstream in(file); in.seekg(0,ios::end); int size=in.tellg()原创 2013-04-01 15:49:55 · 825 阅读 · 0 评论 -
pthread 快排 失败的优化版
为了改善快排并行度的问题,我设计了如下改进算法:用第一个元素做pivot,其余元素平均分配给可用线程,并行进行局部的快排(都与pivot做比较)。在作完比较之后,使用额外空间将所有数据归并到一起(使用memcpy)。进行下一次迭代。然后就出现了一系列的问题,其一就是for循环中声明的变量,在一次迭代结束后会被释放变量所占用内存(貌似是个栈),如果传递指向这块内存的指针,会出错。而且for循原创 2013-04-15 20:41:58 · 981 阅读 · 1 评论 -
pthread 快排 基础版
快排是一个很适合做并行的算法,因为一次划分相当于一次反归并,把数据划分为两个不相关的部分,可以并行处理。但是快排,包括归并排序都有一个缺点:并行度是变化的,而且最终会是1,即有一次迭代需要纯串行。经过一番思考,我拿出了一个改进版方案,由于对pthread不熟悉,还有懒,代码写的很烂。改进版见:pthread 快排 失败的优化版本文是基础的快排并行化,用算法导论的快排伪码改成。可以通过一个给原创 2013-04-15 20:24:56 · 1359 阅读 · 0 评论 -
MPI_File_read 读不出数据
昨天写程序,MPI_File_read读不出数据,error code和status.count都是很不正常的大数。查了很久似乎没人遇到过,但是明显不靠谱啊。。。最后明白了,文件的访问权限不够,需要用root运行才能读root创建的文件。。。原创 2013-04-18 20:05:09 · 941 阅读 · 0 评论 -
MPI 带状划分矩阵转置
MPI矩阵操作分两部分:1.读文件2.操作读文件的时候可以使用MPI_File_read来直接分配数据。矩阵存储的格式:连续内存空间,头两个int表示行列数,后续位置使用double表示数据,行优先存储。文件使用二进制方式直接存储矩阵内存块。转置非方阵,使用新申请的内存。如果使用O(1)的内存,并没有规则的交换的过程,所以不大现实,逻辑太复杂,太慢。#include原创 2013-04-19 14:28:49 · 2573 阅读 · 1 评论 -
torque 机群上 openmp+mpi混搭程序的提交
首先,程序编写与mpi单独要有区别,MPI_Init()要改为MPI_Init_thread(),还需要判断一下环境是否满足需求。其次,程序不能使用默认openmp 的线程数,因为,torque不能用qsub脚本设置计算节点的环境变量。而openmp默认线程数是由OMP_NUM_THREADS环境变量设置的。为了更好的适用性和可移植,把线程数用参数传入,使用omp_set_num_thread原创 2013-05-09 17:00:26 · 1956 阅读 · 0 评论 -
在Phi与host之间使用socket
Phi是intel推出的x86协处理器,运行轻量级linux,使用PCI-E与主机通信。但是,Phi上的print需要等到程序运行完才能显示,等程序运行完,黄花菜都凉了。而且瞬间几百行输出,谁有心思看啊。由此就有这个问题:实时显示。之前做过这方面的调研。不过是单机上的,这种类多机的没有试过,简单的解决方案是用socket,而双方都是linux,很容易开发。Host:#include原创 2014-04-01 22:02:56 · 954 阅读 · 0 评论 -
Linux IPC,FIFO和shm
偶尔发现了调试函数需要的一个功能:根据反馈的信息,调整一些简单的参数。有两个要求:1、不中断程序,又不会每次都需要暂停等待输入;2、不需要重新编译,程序运行。这样需求基本上就是多进程、监听加IPC就ok。首先想到的是使用环境变量。基本使用的是getenv()函数,获得相应的环境变量即可。在使用过程中,发现根本就不可能。因为环境变量是用户级别的,而每个console都相当于一个用户,不能进行原创 2014-02-26 21:27:13 · 2742 阅读 · 0 评论 -
自己实现的水版MPI_Bcast(使用binomial tree,跟mpich2实现思路一样)
二项树见http://hi.baidu.com/isswangqing/item/8e0908273e773d54c38d59bc非常适合bcast这个过程,因为没有额外的通信开销,集合的增加通信并行度。之前想到的,实现完了发现mpi也用了这个,而且还有其他的方法。过两天分析一下源码。#include #include #include int mpiSize, mpiRank;v原创 2013-05-23 22:16:05 · 1706 阅读 · 1 评论 -
[源码]Concurrent包之BlockingQueue、BlockingDeque
Java程序员不懂concurrent包可能很难说的过去,准备搞一系列文章,按照某外国小哥的思路看一遍concurrent包。小哥的文章主要是用法,我就主要看源码了。BlockingQueue同步的FIFO容器,主要方法: 实现有五种:ArrayBlockingQueue、DelayQueue、LinkedBlockingQueue、PriorityBlockingQueue、Synchron原创 2017-03-29 17:58:57 · 502 阅读 · 0 评论