gpt4 book ai didi

c - 我在 matmul 函数上使用了 openMP 指令,它不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 02:25:23 24 4
gpt4 key购买 nike

我正在尝试在 matmul 函数中使用 openMP,但它不起作用...

在这部分我尝试了所有的方法,但它需要 60 多分钟才能完成,而且不会减少任何时间。
我该怎么办?

int matmul( int l, int m, int n, float *A, float *B, float *C )
{
int i, j, k;
omp_set_dynamic(0);
#pragma omp parallel for shared(A,B,C) private(i, k, j) num_threads(4)
for( i=0; i<l; i++ ) // Loop over the rows of A and C.
for( k=0; k<n; k++ ) // Loop over the columns of B and C
{
// Initialize the output element for the inner
// product of row i of A with column j of B
C[i*n+k] = 0;
for( j=0; j<m; j++ ) // Loop over the columns of A and C
{
C[i*n+k] += A[i*m+j] * B[j*n+k]; // Compute the inner product
}
}
}
} // Added by edit!

谁能帮我解决这个问题?

最佳答案

What am I supposed to do?

使用来自 BLAS library 的优化矩阵乘法,而不是尝试自己编写。

优化矩阵乘法并非易事(您还没有考虑向量化或平铺,但两者都是获得高性能所必需的)。

如果您使用的是英特尔处理器,Intel Math Kernel Library现在任何人都可以免费使用并且已经过高度优化,或者还有其他免费的实现。

我意识到阅读手册不如编写代码有趣,但在这种情况下它也更有效!

(如果这对任何人都重要,我在英特尔工作,但这个建议完全是一般性的:-))

关于c - 我在 matmul 函数上使用了 openMP 指令,它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52208729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com