如何使用OpenMP并行化此矩阵时间矢量运算
How can I parallelize this Matrix times Vector operation using OpenMP?
我试图在下面的代码中并行化for循环,但我不确定应该在for循环之前添加什么类型的OpenMP指令,我需要首先以私有或公共形式声明这些变量吗?
#include <stdio.h>
#include <time.h>
#include <omp.h>
void mxv_row(int m, int n, double *A, double *B, double *C)
{
int i, j;
# pragma omp parallel private(?)shared (?)
for (i=0; i<m; i++)
# pragma omp for
{
A[i] = 0.0;
for (j=0; j<n; j++)
A[i] += B[i*n+j]*C[j];
}
}
当您在循环外声明j
时,它应该是私有的。如果您在第二个for
循环中声明它,那么就可以了。
其余部分可以共享(i
除外,因为它是并行循环索引(,但不必共享,因为它只有大小和指针。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 从持续时间构造std::chrono::system_clock::time_point
- 使用C++中的模板和运算符重载执行矩阵运算
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 使用简单类型列表实现的指数编译时间.为什么
- GCC本机矩阵运算库
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 在已经使用Git的情况下减少编译时间
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 从文本文件中读取时钟时间和事件时间并进行处理
- 具有未知值时的时间复杂性
- 如何减少花费的时间
- C++在变量给定的指定时间内关闭电脑
- rcpp函数中的清理时间很长
- C++:floor unix时间戳到UTC月份
- 如何使用OpenMP并行化此矩阵时间矢量运算
- 如何使用升压运算处理过去的时间偏移
- C++计时系统时间(以毫秒为单位),时间运算