OpenMp多线程编程计时问题

在使用OpenMP进行矩阵乘法并行化时,通过<time.h>的clock()函数计时发现结果与预期不符。串行程序耗时26秒,而开启2个线程的OpenMP程序耗时理论上应减半,但实际计时仍为26秒。进一步使用time命令观察,发现user时间是所有线程时间之和,而非实际执行时间。结论是在多线程环境下,应使用time命令来获取准确的运行时间。
摘要由CSDN通过智能技术生成

在做矩阵乘法并行化测试的时候,在利用<time.h>的clock()计时时出现了一点问题。

首先看串行的程序:

// matrix_cpu.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM 2048

void matrixMul(float *A, float *B, float *C, int M, int K, int N)
{
    int i, j, k;
    for(i = 0; i < M; i++)
    {
        for(j = 0; j < N; j++)
        {
            float sum = 0.0f;
            for(k = 0; k < K; k++)
            {
                sum += A[i*k+k] * B[k*N+j];
            }
            C[i*N+j] = sum;
        }
    }
}

i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值