Parallel merging two sorted arrays。解决这个问题,需要从以下几个方面思考:
balancing the load among compute cores -minimizing the extra work brought about by parallelization -minimizing inter-thread synchronization -Efficient use of memory 其中,矩阵是这样构建的:若A[i] >= B[i], 则matrix[i][j] = 1, or matrix[i][j] =0; 其中,路径就是1与0的交界线(线上有一些点组成,pair(x, y)的集合)。在上一步构造出merge path后,每个线程平均分配任务,如,第i个线程从第j个元素开始处理,则每个线程的起始pair是这样获得的:x+y = j。  algo:
 其中,矩阵是这样构建的:若A[i] >= B[i], 则matrix[i][j] = 1, or matrix[i][j] =0; 其中,路径就是1与0的交界线(线上有一些点组成,pair(x, y)的集合)。在上一步构造出merge path后,每个线程平均分配任务,如,第i个线程从第j个元素开始处理,则每个线程的起始pair是这样获得的:x+y = j。  algo:  example:
 example:它的实验结果是多线程与单线程比的。(起始单线程效果是比串行差很多的,一方面计算对角线与mergepath交点需要开销,另一方面omp开启有开销。)
n个线程,相比单线程,大约能获得n倍的加速比。

新闻热点
疑难解答