相关疑难解决方法(0)

为什么矢量化循环没有性能改进

我正在调查矢量化对程序性能的影响.在这方面,我写了以下代码:

#include <stdio.h>
#include <sys/time.h>
#include <stdlib.h>

#define LEN 10000000

int main(){

    struct timeval stTime, endTime;

    double* a = (double*)malloc(LEN*sizeof(*a));
    double* b = (double*)malloc(LEN*sizeof(*b));
    double* c = (double*)malloc(LEN*sizeof(*c));

    int k;
    for(k = 0; k < LEN; k++){
        a[k] = rand();
        b[k] = rand();
    }

    gettimeofday(&stTime, NULL);

    for(k = 0; k < LEN; k++)
        c[k] = a[k] * b[k];

    gettimeofday(&endTime, NULL);

    FILE* fh = fopen("dump", "w");
    for(k = 0; k < LEN; k++)
        fprintf(fh, "c[%d] = %f\t", k, c[k]);
    fclose(fh);

    double …
Run Code Online (Sandbox Code Playgroud)

c performance simd icc

33
推荐指数
1
解决办法
3851
查看次数

在OpenMP并行代码中,memset并行运行会有什么好处吗?

我的内存块可能非常大(比L2缓存大),有时我必须将它们设置为全零.memset在串行代码中很好,但是并行代码呢?如果从并发线程调用memset实际上加快了大型数组的速度,有经验吗?或者甚至使用简单的openmp并行for循环?

c performance openmp

18
推荐指数
1
解决办法
2234
查看次数

标签 统计

c ×2

performance ×2

icc ×1

openmp ×1

simd ×1