相关疑难解决方法(0)

C/C++中简单快速的矩阵向量乘法

我需要经常使用matrix_vector_mult()矩阵与向量相乘,下面是它的实现.

问题:是否有一种简单的方法可以使它显着,至少两倍,更快?

备注:1)矩阵的大小约为300x50.它在运行期间不会改变.2)它必须适用于Windows和Linux.

double vectors_dot_prod(const double *x, const double *y, int n)
{
    double res = 0.0;
    int i;
    for (i = 0; i < n; i++)
    {
        res += x[i] * y[i];
    }
    return res;
}

void matrix_vector_mult(const double **mat, const double *vec, double *result, int rows, int cols)
{ // in matrix form: result = mat * vec;
    int i;
    for (i = 0; i < rows; i++)
    {
        result[i] = vectors_dot_prod(mat[i], vec, cols);
    }
}
Run Code Online (Sandbox Code Playgroud)

c c++ matrix

19
推荐指数
2
解决办法
3万
查看次数

如何优化矩阵乘法运算

我需要在我的应用程序中执行大量的矩阵运算.最耗时的是矩阵乘法.我这样实现了它

template<typename T>
Matrix<T> Matrix<T>::operator * (Matrix& matrix)
{


    Matrix<T> multipliedMatrix = Matrix<T>(this->rows,matrix.GetColumns(),0);

    for (int i=0;i<this->rows;i++)
    {
        for (int j=0;j<matrix.GetColumns();j++)
        {
            multipliedMatrix.datavector.at(i).at(j) = 0;
            for (int k=0;k<this->columns ;k++)
            {
                multipliedMatrix.datavector.at(i).at(j) +=  datavector.at(i).at(k) * matrix.datavector.at(k).at(j);
            }
            //cout<<(*multipliedMatrix)[i][j]<<endl;
        }
    }
    return multipliedMatrix;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法以更好的方式写它?到目前为止,矩阵乘法运算占用了我的应用程序的大部分时间.也许是有好/快的库来做这种事情?但是我宁愿不能使用使用图形卡进行数学运算的库,因为我在带有集成显卡的笔记本电脑上工作.

c++ matrix matrix-multiplication

7
推荐指数
2
解决办法
2万
查看次数

如何优化矩阵乘法(matmul)代码以在单个处理器内核上快速运行

我正在研究并行编程概念,并尝试在单核上优化矩阵乘法示例。到目前为止,我想到的最快的实现是:

/* This routine performs a dgemm operation
 *  C := C + A * B
 * where A, B, and C are lda-by-lda matrices stored in column-major format.
 * On exit, A and B maintain their input values. */    
void square_dgemm (int n, double* A, double* B, double* C)
{
  /* For each row i of A */
  for (int i = 0; i < n; ++i)
    /* For each column j of B */
    for (int j = …
Run Code Online (Sandbox Code Playgroud)

c c++ parallel-processing optimization matrix-multiplication

6
推荐指数
2
解决办法
2175
查看次数