gpt4 book ai didi

c++ - 在 windows eclipse 中使用 DGEMM BLAS

转载 作者:行者123 更新时间:2023-11-30 17:46:24 28 4
gpt4 key购买 nike

我正在尝试在 Eclipse 中执行此代码,但我不知道如何使用 dgemm。我知道它是 BLAS 的一部分,但我不明白如何在 Windows 中使用它。如果还有其他可用于高性能计算的库或算法,您能给我推荐吗?预先非常感谢您

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

#define DIM1 2000
#define DIM2 2000
#define DIM3 2000

#define DGEMM dgemm_

int main()
{
int i, j, k;

double *A;
double *B;
double *C;

long dim1 = DIM1;
long dim2 = DIM2;
long dim3 = DIM3;

char transa = 'N';
char transb = 'N';

double alpha = 1.0;
double beta = 0.0;

clock_t tic, toc;
double maxr;

A = (double*)malloc(sizeof(double)*(dim1*dim2));
B = (double*)malloc(sizeof(double)*(dim2*dim3));
C = (double*)malloc(sizeof(double)*(dim1*dim3));

srand(86456);
maxr = (double)RAND_MAX;

for (i = 0; i < dim1; i++)
for (j = 0; j < dim2; j++)
A[i + j*dim1] = rand()/maxr;

for (i = 0; i < dim2; i++)
for (j = 0; j < dim3; j++)
B[i + j*dim2] = rand()/maxr;

tic = clock();

DGEMM(&transa,&transb,&dim1,&dim3,&dim2,&alpha,A,&dim1,B,&dim2,&beta,C,&dim1);

toc = clock();

printf("time for C(%d,%d) = A(%d,%d) B(%d,%d) is %fs\n",
dim1, dim3, dim1, dim2, dim2, dim3,((float)toc -(float)tic)/(float)CLOCKS_PER_SEC);

free(A);
free(B);
free(C);

return EXIT_SUCCESS;
}

最佳答案

要使用 BLAS 例程,您需要在代码中包含 BLAS 库。其中两个库 OpenBLAS 和 Intel MKL 都在 Windows 中受支持,并且具有非常好的性能。

http://www.openblas.net/

http://software.intel.com/en-us/intel-mkl

您可以阅读他们的文档以获取有关如何安装和使用的更多信息。

关于c++ - 在 windows eclipse 中使用 DGEMM BLAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19305438/

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