1000*1000的矩陣A、B、C,C=A*B

字號(hào):

效率可以對(duì)比matlab int m;
    int i, j, k;
    double r;
    double *A, *B, *C;
    m = 1000;
    A = new double[m*m];
    B = new double[m*m];
    C = new double[m*m];
    //置初值
    for (i=0; i    A[i] = 1;
    B[i] = 1;
    C[i] = 0;
    }
    int bf; // blocking factor
    int jj, kk, im;
    int minj, mink;
    bf = 48; // 可以修改
    for (jj=0; jj    for (kk=0; kk    for ( i=0; i    minj = (jj+bf)    for (j=jj; j    r = 0;
    im = i*m;
    mink = (kk+bf)    for (k=kk; k    r += A[im+k]*B[k*m+j];
    }
    C[im+j] += r;
    }
    }
    delete[] A;
    delete[] B;
    delete[] C;
    這個(gè)程序比matlab要慢1倍,我曾到網(wǎng)上搜索到一個(gè)fortran程序(分塊dgemm),其速度比matlab慢0.5倍左右,不知道有誰能寫一個(gè)能與matlab媲美的程序?