Fix compilation of BLAS backend and frontend
This commit is contained in:
		
							parent
							
								
									97f1e1d89f
								
							
						
					
					
						commit
						459b2bcc08
					
				| @ -40,7 +40,7 @@ namespace internal { | ||||
| template <typename Index, typename Scalar, int AStorageOrder, bool ConjugateA, int ResStorageOrder, int UpLo> | ||||
| struct general_matrix_matrix_rankupdate : | ||||
|        general_matrix_matrix_triangular_product< | ||||
|          Index,Scalar,AStorageOrder,ConjugateA,Scalar,AStorageOrder,ConjugateA,ResStorageOrder,UpLo,BuiltIn> {}; | ||||
|          Index,Scalar,AStorageOrder,ConjugateA,Scalar,AStorageOrder,ConjugateA,ResStorageOrder,1,UpLo,BuiltIn> {}; | ||||
| 
 | ||||
| 
 | ||||
| // try to go to BLAS specialization
 | ||||
| @ -48,9 +48,9 @@ struct general_matrix_matrix_rankupdate : | ||||
| template <typename Index, int LhsStorageOrder, bool ConjugateLhs, \ | ||||
|                           int RhsStorageOrder, bool ConjugateRhs, int  UpLo> \ | ||||
| struct general_matrix_matrix_triangular_product<Index,Scalar,LhsStorageOrder,ConjugateLhs, \ | ||||
|                Scalar,RhsStorageOrder,ConjugateRhs,ColMajor,UpLo,Specialized> { \ | ||||
|                Scalar,RhsStorageOrder,ConjugateRhs,ColMajor,1,UpLo,Specialized> { \ | ||||
|   static EIGEN_STRONG_INLINE void run(Index size, Index depth,const Scalar* lhs, Index lhsStride, \ | ||||
|                           const Scalar* rhs, Index rhsStride, Scalar* res, Index resStride, Scalar alpha, level3_blocking<Scalar, Scalar>& blocking) \ | ||||
|                           const Scalar* rhs, Index rhsStride, Scalar* res, Index resIncr, Index resStride, Scalar alpha, level3_blocking<Scalar, Scalar>& blocking) \ | ||||
|   { \ | ||||
|     if ( lhs==rhs && ((UpLo&(Lower|Upper))==UpLo) ) { \ | ||||
|       general_matrix_matrix_rankupdate<Index,Scalar,LhsStorageOrder,ConjugateLhs,ColMajor,UpLo> \ | ||||
| @ -59,8 +59,8 @@ struct general_matrix_matrix_triangular_product<Index,Scalar,LhsStorageOrder,Con | ||||
|       general_matrix_matrix_triangular_product<Index, \ | ||||
|         Scalar, LhsStorageOrder, ConjugateLhs, \ | ||||
|         Scalar, RhsStorageOrder, ConjugateRhs, \ | ||||
|         ColMajor, UpLo, BuiltIn> \ | ||||
|       ::run(size,depth,lhs,lhsStride,rhs,rhsStride,res,resStride,alpha,blocking); \ | ||||
|         ColMajor, 1, UpLo, BuiltIn> \ | ||||
|       ::run(size,depth,lhs,lhsStride,rhs,rhsStride,res,resIncr,resStride,alpha,blocking); \ | ||||
|     } \ | ||||
|   } \ | ||||
| }; | ||||
|  | ||||
| @ -125,7 +125,7 @@ struct product_triangular_matrix_matrix_trmm<EIGTYPE,Index,Mode,true, \ | ||||
|        BlasIndex aStride = convert_index<BlasIndex>(aa_tmp.outerStride()); \ | ||||
|        gemm_blocking_space<ColMajor,EIGTYPE,EIGTYPE,Dynamic,Dynamic,Dynamic> gemm_blocking(_rows,_cols,_depth, 1, true); \ | ||||
|        general_matrix_matrix_product<Index,EIGTYPE,LhsStorageOrder,ConjugateLhs,EIGTYPE,RhsStorageOrder,ConjugateRhs,ColMajor,1>::run( \ | ||||
|        rows, cols, depth, aa_tmp.data(), aStride, _rhs, 1, rhsStride, res, resStride, alpha, gemm_blocking, 0); \ | ||||
|        rows, cols, depth, aa_tmp.data(), aStride, _rhs, rhsStride, res, 1, resStride, alpha, gemm_blocking, 0); \ | ||||
| \ | ||||
|      /*std::cout << "TRMM_L: A is not square! Go to BLAS GEMM implementation! " << nthr<<" \n";*/ \ | ||||
|      } \ | ||||
|  | ||||
| @ -359,21 +359,21 @@ int EIGEN_BLAS_FUNC(syrk)(const char *uplo, const char *op, const int *n, const | ||||
| { | ||||
| //   std::cerr << "in syrk " << *uplo << " " << *op << " " << *n << " " << *k << " " << *palpha << " " << *lda << " " << *pbeta << " " << *ldc << "\n";
 | ||||
|   #if !ISCOMPLEX | ||||
|   typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, const Scalar&, internal::level3_blocking<Scalar,Scalar>&); | ||||
|   typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, DenseIndex, const Scalar&, internal::level3_blocking<Scalar,Scalar>&); | ||||
|   static const functype func[8] = { | ||||
|     // array index: NOTR  | (UP << 2)
 | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,ColMajor,Conj, Upper>::run), | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,ColMajor,Conj, 1, Upper>::run), | ||||
|     // array index: TR    | (UP << 2)
 | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,false,Scalar,ColMajor,ColMajor,Conj, Upper>::run), | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,false,Scalar,ColMajor,ColMajor,Conj, 1, Upper>::run), | ||||
|     // array index: ADJ   | (UP << 2)
 | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,ColMajor,false,Upper>::run), | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,ColMajor,false,1, Upper>::run), | ||||
|     0, | ||||
|     // array index: NOTR  | (LO << 2)
 | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,ColMajor,Conj, Lower>::run), | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,ColMajor,Conj, 1, Lower>::run), | ||||
|     // array index: TR    | (LO << 2)
 | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,false,Scalar,ColMajor,ColMajor,Conj, Lower>::run), | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,false,Scalar,ColMajor,ColMajor,Conj, 1, Lower>::run), | ||||
|     // array index: ADJ   | (LO << 2)
 | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,ColMajor,false,Lower>::run), | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,ColMajor,false,1, Lower>::run), | ||||
|     0 | ||||
|   }; | ||||
|   #endif | ||||
| @ -426,7 +426,7 @@ int EIGEN_BLAS_FUNC(syrk)(const char *uplo, const char *op, const int *n, const | ||||
|   internal::gemm_blocking_space<ColMajor,Scalar,Scalar,Dynamic,Dynamic,Dynamic> blocking(*n,*n,*k,1,false); | ||||
| 
 | ||||
|   int code = OP(*op) | (UPLO(*uplo) << 2); | ||||
|   func[code](*n, *k, a, *lda, a, *lda, c, *ldc, alpha, blocking); | ||||
|   func[code](*n, *k, a, *lda, a, *lda, c, 1, *ldc, alpha, blocking); | ||||
|   #endif | ||||
| 
 | ||||
|   return 0; | ||||
| @ -566,19 +566,19 @@ int EIGEN_BLAS_FUNC(herk)(const char *uplo, const char *op, const int *n, const | ||||
| { | ||||
| //   std::cerr << "in herk " << *uplo << " " << *op << " " << *n << " " << *k << " " << *palpha << " " << *lda << " " << *pbeta << " " << *ldc << "\n";
 | ||||
| 
 | ||||
|   typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, const Scalar&, internal::level3_blocking<Scalar,Scalar>&); | ||||
|   typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, DenseIndex, const Scalar&, internal::level3_blocking<Scalar,Scalar>&); | ||||
|   static const functype func[8] = { | ||||
|     // array index: NOTR  | (UP << 2)
 | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,Conj, ColMajor,Upper>::run), | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,Conj, ColMajor,1,Upper>::run), | ||||
|     0, | ||||
|     // array index: ADJ   | (UP << 2)
 | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,false,ColMajor,Upper>::run), | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,false,ColMajor,1,Upper>::run), | ||||
|     0, | ||||
|     // array index: NOTR  | (LO << 2)
 | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,Conj, ColMajor,Lower>::run), | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,Conj, ColMajor,1,Lower>::run), | ||||
|     0, | ||||
|     // array index: ADJ   | (LO << 2)
 | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,false,ColMajor,Lower>::run), | ||||
|     (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,false,ColMajor,1,Lower>::run), | ||||
|     0 | ||||
|   }; | ||||
| 
 | ||||
| @ -620,7 +620,7 @@ int EIGEN_BLAS_FUNC(herk)(const char *uplo, const char *op, const int *n, const | ||||
|   if(*k>0 && alpha!=RealScalar(0)) | ||||
|   { | ||||
|     internal::gemm_blocking_space<ColMajor,Scalar,Scalar,Dynamic,Dynamic,Dynamic> blocking(*n,*n,*k,1,false); | ||||
|     func[code](*n, *k, a, *lda, a, *lda, c, *ldc, alpha, blocking); | ||||
|     func[code](*n, *k, a, *lda, a, *lda, c, 1, *ldc, alpha, blocking); | ||||
|     matrix(c, *n, *n, *ldc).diagonal().imag().setZero(); | ||||
|   } | ||||
|   return 0; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Gael Guennebaud
						Gael Guennebaud