MKL不使用使用EGIN和OpenMP的C++代码
我有一个具有以下结构的代码:MKL不使用使用EGIN和OpenMP的C++代码,c++,eigen,intel-mkl,C++,Eigen,Intel Mkl,我有一个具有以下结构的代码: Eigen::MatrixXd function1(args) { #pragma omp parallel for for (args) //filling a matrix element-wise return matrix; } Eigen::MatrixXd function2(argument is function1 matrix) { #pragma omp parallel for for
Eigen::MatrixXd function1(args)
{
#pragma omp parallel for
for (args)
//filling a matrix element-wise
return matrix;
}
Eigen::MatrixXd function2(argument is function1 matrix)
{
#pragma omp parallel for
for (args)
//element-wise probabilities calculations on matrix from function1
return matrix;
}
Eigen::MatrixXd global_function(args)
{
Eigen::MatrixXd ident; //identity matrix
for (args)
{
Eigen::MatrixXd mat = function1(args);
Eigen::MatrixXd mat2 = function2(mat);
ident = ident * mat2;
}
return matrix;
}
有更多的功能,但方案是相同的。矩阵尺寸为500x500至1000x1000
代码使用库:EGIN建立矩阵并促进对函数2的一些概率计算,使用Visual Studio 2013或英特尔C++编译器15编译的两者都具有类似的性能,这是我的情况< /P>
我正在尝试为矩阵乘法实现“英特尔MKL”:
因此,在我的代码中实现它之前,我建立了一个简单的项目,用Eigen测试MKL,它的工作矩阵是用Eigen构建的,而矩阵乘法使用MKL,它将计算时间减少了一半。然后我在我的代码中实现了MKL,但这一次不起作用,计算时间没有减少,原因是什么?Eigen可以在引擎盖下使用MKL,所以你可以使用Eigen接口处理矩阵,让Eigen处理MKL。
在包含任何特征头之前,您所要做的就是定义特征头 Eigen可以在引擎盖下使用MKL,因此您可以使用矩阵的Eigen接口,让Eigen处理MKL。
在包含任何特征头之前,您所要做的就是定义特征头 我已经知道了,问题是,它没有任何明显的原因。但是它在第二天起作用了,所以要么我愚蠢到相信它不起作用,要么系统重启出于某种原因解决了问题。我已经知道了,问题是,它没有任何明显的原因。但是它在第二天起作用了,所以要么我愚蠢到相信它不起作用,要么因为某种原因系统重启解决了问题