首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行矩阵计算

并行矩阵计算
EN

Stack Overflow用户
提问于 2015-09-25 07:33:05
回答 1查看 47关注 0票数 0

所以我试图以这样一种方式并行化我的矩阵,即矩阵行除以提供的线程数,然后它们计算分配给它们的行数。关键是每次迭代都会减小矩阵的大小。

所以在主矩阵中,我将对子矩阵进行计算,并将该矩阵划分为多个线程。

为了使其更易于可视化,我将提供一些伪代码。

代码语言:javascript
复制
for (i = 0; i < matrixSize; i++)
{
     begin = (((matrixSize - i)/numOfThreads) * threadNum + i);
     end = (((matrixSize - i)/numOfThreads) * (threadNum + 1) + i - 1);

        for(j = begin ; j < end; j++) {
            // get which row to calculate within the main matrix
            for (k = i + 1; k < nsize; k++) {
                // calculations for the columns
            }
         }    
}

问题是设置begin和end的值。因为矩阵的大小可能是质数,比方说991,所以计算的第一个“块”将不得不做额外的一行。

EN

回答 1

Stack Overflow用户

发布于 2015-09-25 07:38:11

问题是设置begin和end的值。因为矩阵的大小可能是质数,比方说991,所以计算的第一个“块”将不得不做额外的一行。

您可以计算每个线程的行数为

代码语言:javascript
复制
rowSize = (matrixSize - i)/numOfThreads

这可能会给您留下一些剩余的行。您可以确定剩余的数量为

代码语言:javascript
复制
extraRows = (matrixSize - i) % numOfThreads

您可以将额外的行赋给其中一个线程,或者在某些线程之间平均分配这些行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32772574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档