Fix expectation values for CblasRowMajor order

This commit is contained in:
Martin Kroeker 2024-10-10 20:39:29 +02:00 committed by GitHub
parent 9762464718
commit 550bc77832
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 74 additions and 1 deletions

View File

@ -81,6 +81,28 @@ static void cgemmt_trusted(char api, enum CBLAS_ORDER order, char uplo, char tra
ldc *= 2; ldc *= 2;
#ifndef NO_CBLAS
if (order == CblasRowMajor) {
if (uplo == 'U' || uplo == CblasUpper)
{
for (i = 0; i < m; i++)
for (j = i * 2; j < m * 2; j+=2){
data_cgemmt.c_verify[i * ldc + j] =
data_cgemmt.c_gemm[i * ldc + j];
data_cgemmt.c_verify[i * ldc + j + 1] =
data_cgemmt.c_gemm[i * ldc + j + 1];
}
} else {
for (i = 0; i < m; i++)
for (j = 0; j <= i * 2; j+=2){
data_cgemmt.c_verify[i * ldc + j] =
data_cgemmt.c_gemm[i * ldc + j];
data_cgemmt.c_verify[i * ldc + j + 1] =
data_cgemmt.c_gemm[i * ldc + j + 1];
}
}
} else
#endif
if (uplo == 'L' || uplo == CblasLower) if (uplo == 'L' || uplo == CblasLower)
{ {
for (i = 0; i < m; i++) for (i = 0; i < m; i++)

View File

@ -77,6 +77,21 @@ static void dgemmt_trusted(char api, enum CBLAS_ORDER order, char uplo, char tra
else else
cblas_dgemm(order, transa, transb, m, m, k, alpha, data_dgemmt.a_test, lda, cblas_dgemm(order, transa, transb, m, m, k, alpha, data_dgemmt.a_test, lda,
data_dgemmt.b_test, ldb, beta, data_dgemmt.c_gemm, ldc); data_dgemmt.b_test, ldb, beta, data_dgemmt.c_gemm, ldc);
if (order == CblasRowMajor) {
if (uplo == 'U' || uplo == CblasUpper)
{
for (i = 0; i < m; i++)
for (j = i; j < m; j++)
data_dgemmt.c_verify[i * ldc + j] =
data_dgemmt.c_gemm[i * ldc + j];
} else {
for (i = 0; i < m; i++)
for (j = 0; j <= i; j++)
data_dgemmt.c_verify[i * ldc + j] =
data_dgemmt.c_gemm[i * ldc + j];
}
}else
#endif #endif
if (uplo == 'L' || uplo == CblasLower) if (uplo == 'L' || uplo == CblasLower)

View File

@ -77,6 +77,21 @@ static void sgemmt_trusted(char api, enum CBLAS_ORDER order, char uplo, char tra
else else
cblas_sgemm(order, transa, transb, m, m, k, alpha, data_sgemmt.a_test, lda, cblas_sgemm(order, transa, transb, m, m, k, alpha, data_sgemmt.a_test, lda,
data_sgemmt.b_test, ldb, beta, data_sgemmt.c_gemm, ldc); data_sgemmt.b_test, ldb, beta, data_sgemmt.c_gemm, ldc);
if (order == CblasRowMajor) {
if (uplo == 'U' || uplo == CblasUpper)
{
for (i = 0; i < m; i++)
for (j = i; j < m; j++)
data_sgemmt.c_verify[i * ldc + j] =
data_sgemmt.c_gemm[i * ldc + j];
} else {
for (i = 0; i < m; i++)
for (j = 0; j <= i; j++)
data_sgemmt.c_verify[i * ldc + j] =
data_sgemmt.c_gemm[i * ldc + j];
}
} else
#endif #endif
if (uplo == 'L' || uplo == CblasLower) if (uplo == 'L' || uplo == CblasLower)

View File

@ -80,7 +80,28 @@ static void zgemmt_trusted(char api, enum CBLAS_ORDER order, char uplo, char tra
#endif #endif
ldc *= 2; ldc *= 2;
#ifndef NO_CBLAS
if (order == CblasRowMajor) {
if (uplo == 'U' || uplo == CblasUpper)
{
for (i = 0; i < m; i++)
for (j = i * 2; j < m * 2; j+=2){
data_zgemmt.c_verify[i * ldc + j] =
data_zgemmt.c_gemm[i * ldc + j];
data_zgemmt.c_verify[i * ldc + j + 1] =
data_zgemmt.c_gemm[i * ldc + j + 1];
}
} else {
for (i = 0; i < m; i++)
for (j = 0; j <= i * 2; j+=2){
data_zgemmt.c_verify[i * ldc + j] =
data_zgemmt.c_gemm[i * ldc + j];
data_zgemmt.c_verify[i * ldc + j + 1] =
data_zgemmt.c_gemm[i * ldc + j + 1];
}
}
}else
#endif
if (uplo == 'L' || uplo == CblasLower) if (uplo == 'L' || uplo == CblasLower)
{ {
for (i = 0; i < m; i++) for (i = 0; i < m; i++)