loongarch64: Add buffer offset for target LOONGSON3R5
This commit is contained in:
parent
6017ad7146
commit
637c650f4f
|
@ -1074,13 +1074,10 @@ fprintf(STDERR, "Server[%2ld] Calculation started. Mode = 0x%03x M = %3ld N=%3l
|
|||
main_status[cpu] = MAIN_RUNNING1;
|
||||
#endif
|
||||
|
||||
//For Loongson servers, like the 3C5000 (featuring 16 cores), applying an
|
||||
//offset to the buffer is essential for minimizing cache conflicts and optimizing performance.
|
||||
#if defined(LOONGSON3R5) && !defined(NO_AFFINITY)
|
||||
char model_name[128];
|
||||
get_cpu_model(model_name);
|
||||
if ((strstr(model_name, "3C5000") != NULL) || (strstr(model_name, "3D5000") != NULL))
|
||||
if (sa == NULL) sa = (void *)((BLASLONG)buffer + (WhereAmI() & 0xf) * GEMM_OFFSET_A);
|
||||
//For target LOONGSON3R5, applying an offset to the buffer is essential
|
||||
//for minimizing cache conflicts and optimizing performance.
|
||||
#if defined(ARCH_LOONGARCH64) && !defined(NO_AFFINITY)
|
||||
if (sa == NULL) sa = (void *)((BLASLONG)buffer + (WhereAmI() & 0xf) * GEMM_OFFSET_A);
|
||||
#endif
|
||||
if (sa == NULL) sa = (void *)((BLASLONG)buffer + GEMM_OFFSET_A);
|
||||
|
||||
|
@ -1157,4 +1154,4 @@ if (queue -> mode & BLAS_PTHREAD) {
|
|||
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -521,15 +521,10 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANS
|
|||
|
||||
buffer = (XFLOAT *)blas_memory_alloc(0);
|
||||
|
||||
//For Loongson servers, like the 3C5000 (featuring 16 cores), applying an
|
||||
//offset to the buffer is essential for minimizing cache conflicts and optimizing performance.
|
||||
#if defined(LOONGSON3R5) && !defined(NO_AFFINITY)
|
||||
char model_name[128];
|
||||
get_cpu_model(model_name);
|
||||
if ((strstr(model_name, "3C5000") != NULL) || (strstr(model_name, "3D5000") != NULL))
|
||||
sa = (XFLOAT *)((BLASLONG)buffer + (WhereAmI() & 0xf) * GEMM_OFFSET_A);
|
||||
else
|
||||
sa = (XFLOAT *)((BLASLONG)buffer + GEMM_OFFSET_A);
|
||||
//For target LOONGSON3R5, applying an offset to the buffer is essential
|
||||
//for minimizing cache conflicts and optimizing performance.
|
||||
#if defined(ARCH_LOONGARCH64) && !defined(NO_AFFINITY)
|
||||
sa = (XFLOAT *)((BLASLONG)buffer + (WhereAmI() & 0xf) * GEMM_OFFSET_A);
|
||||
#else
|
||||
sa = (XFLOAT *)((BLASLONG)buffer +GEMM_OFFSET_A);
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue