c++ - 如何设置矩阵的值与 mex 和 openmp 并行?
问题描述
我在处理 mex 中的巨大矩阵时遇到问题。这是我的代码。我想在索引相同时对值求和。
#pragma omp parallel for schedule(static)
for( i=0; i<n; i++ ) {
C[(mwSize)*Ar++ - 1] += *Av++;
}
它得到了分段错误。我认为这是因为我们并行更新了矩阵。但我不确定如何处理它,因为尺寸太大(800000x1)。请帮帮我,谢谢。
已编辑。这是完整的代码。
#include <omp.h>
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
mwSize i, n, m ;
double *Ar, *Av, *C ;
n = mxGetNumberOfElements(prhs[0]);
m = mxGetNumberOfElements(prhs[2]);
Ar = mxGetPr(prhs[0]);
Av = mxGetPr(prhs[1]);
plhs[0] = mxCreateDoubleMatrix(m,1,mxREAL);
C = mxGetPr(plhs[0]);
#pragma omp parallel for schedule(static)
for( i=0; i<n; i++ ) {
C[(mwSize)Ar[i] - 1] += Av[i];
}
}
解决方案
推荐阅读
- compiler-errors - 我不明白为什么会收到 C4700 错误
- cypress - 赛普拉斯仪表板用户的用例是什么?
- dataset - 从 glass.data 中提取类标签?
- java - ZK 框架:从 Servlet 将 xls 加载到 ZK Spreadseet
- react-native - Detox + Jest - 应用没有响应下面的网络请求
- java - 带有 Selenium 的 Java 和 Tor 浏览器
- google-sheets - Google表格中从第一行到该行的总计-1
- django - 提交表单时,DJANGO 中的 POST 方法返回“None”
- javascript - 不同模式的不同CSS?
- asp.net-core - 有没有办法使用 Razor Pages 进行动态路由?