c代码 矩阵乘法并行
时间: 2024-10-12 07:02:35 浏览: 13
矩阵乘法通常是计算密集型的任务,在C语言中为了提高效率,特别是在多核处理器上,可以利用并行计算来加速。一种常见的并行化方法是使用OpenMP库,它支持线程级别的并行。
下面是一个简单的例子,展示了如何使用OpenMP并行化矩阵乘法的C代码:
```c
#include <stdio.h>
#include <omp.h>
#define N 4 // 矩阵大小
int a[N][N], b[N][N], c[N][N];
void matrix_multiply(int (*a)[N], int (*b)[N], int (*c)[N]) {
for (int i = 0; i < N; i++) {
#pragma omp parallel for
for (int j = 0; j < N; j++) {
c[i][j] = 0;
for (int k = 0; k < N; k++) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
}
int main() {
// 初始化矩阵...
matrix_multiply(a, b, c);
// 打印结果...
return 0;
}
```
在这个示例中,`#pragma omp parallel for` 表明对内层循环进行了并行化,每个工作线程负责计算一部分的结果。这将任务分布到可用的CPU核心上,从而加快了整个矩阵乘法过程。
阅读全文