diff --git a/control/context.c b/control/context.c
index 91b5434aa2035aac1cdc521aaaa4e86c17bfa084..c511b4bd9060ec42c7ed711a5a97bcf093b91ff5 100644
--- a/control/context.c
+++ b/control/context.c
@@ -83,7 +83,6 @@ MORSE_context_t *morse_context_create()
     morse->parallel_enabled     = MORSE_FALSE;
     morse->profiling_enabled    = MORSE_FALSE;
     morse->progress_enabled     = MORSE_FALSE;
-    morse->gemm3m_enabled       = MORSE_FALSE;
 
     morse->householder        = MORSE_FLAT_HOUSEHOLDER;
     morse->translation        = MORSE_OUTOFPLACE;
@@ -170,7 +169,7 @@ int MORSE_Enable(MORSE_enum option)
             break;
         case MORSE_GEMM3M:
 #ifdef CBLAS_HAS_ZGEMM3M
-            morse->gemm3m_enabled = MORSE_TRUE;
+            set_coreblas_gemm3m_enabled(1);
 #else
             morse_error("MORSE_Enable", "cannot enable GEMM3M (not available in cblas)");
 #endif
@@ -241,7 +240,7 @@ int MORSE_Disable(MORSE_enum option)
             morse->progress_enabled = MORSE_FALSE;
             break;
         case MORSE_GEMM3M:
-            morse->gemm3m_enabled = MORSE_FALSE;
+            set_coreblas_gemm3m_enabled(0);
             break;
         case MORSE_PARALLEL_MODE:
             morse->parallel_enabled = MORSE_FALSE;
diff --git a/coreblas/compute/core_zgemm.c b/coreblas/compute/core_zgemm.c
index b5b7e4d4bc37ac0f8ac8d0203d3a91b2060f5182..1871af48962d98a21f6ab3d1ac7ea77f07190cf8 100644
--- a/coreblas/compute/core_zgemm.c
+++ b/coreblas/compute/core_zgemm.c
@@ -43,8 +43,7 @@ void CORE_zgemm(MORSE_enum transA, int transB,
                 MORSE_Complex64_t beta, MORSE_Complex64_t *C, int LDC)
 {
 #ifdef CBLAS_HAS_ZGEMM3M
-  MORSE_context_t *morse = morse_context_self();
-  if (morse->gemm3m_enabled)
+  if (get_coreblas_gemm3m_enabled())
     cblas_zgemm3m(
         CblasColMajor,
         (CBLAS_TRANSPOSE)transA, (CBLAS_TRANSPOSE)transB,
diff --git a/coreblas/compute/global.c b/coreblas/compute/global.c
index 69842845c6389718df8bc17fdb190595c9465a22..fb59b345eed9fe16570a165b08a07ef44522ab55 100644
--- a/coreblas/compute/global.c
+++ b/coreblas/compute/global.c
@@ -23,6 +23,15 @@
  *
  **/
 
+static int coreblas_gemm3m_enabled=0;
+
+void set_coreblas_gemm3m_enabled(int v) {
+  coreblas_gemm3m_enabled=v;
+}
+int get_coreblas_gemm3m_enabled(void) {
+  return coreblas_gemm3m_enabled;
+}
+
 /*******************************************************************************
  *  LAPACK Constants
  **/
diff --git a/coreblas/include/coreblas.h b/coreblas/include/coreblas.h
index a241074a7dbed4ddfe6d4ab07398ebfdf26904e1..b8fcc1c7fdc2e817fc1f337ec09250c5c227f276 100644
--- a/coreblas/include/coreblas.h
+++ b/coreblas/include/coreblas.h
@@ -94,6 +94,9 @@ extern "C" {
 extern char *morse_lapack_constants[];
 #define morse_lapack_const(morse_const) morse_lapack_constants[morse_const][0]
 
+void set_coreblas_gemm3m_enabled(int v) ;
+int get_coreblas_gemm3m_enabled(void) ;
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/morse_struct.h b/include/morse_struct.h
index 397d96e1e332171a8e2eef5eb7eff4073b43ca52..2958ce3d021bc68e2b5a91195b1b8dd7580a43b0 100644
--- a/include/morse_struct.h
+++ b/include/morse_struct.h
@@ -132,7 +132,6 @@ typedef struct morse_context_s {
     MORSE_bool         parallel_enabled;
     MORSE_bool         profiling_enabled;
     MORSE_bool         progress_enabled;
-    MORSE_bool         gemm3m_enabled;
 
     MORSE_enum         householder;        // "domino" (flat) or tree-based (reduction) Householder
     MORSE_enum         translation;        // In place or Out of place layout conversion