From 0a4f204c531bf0eb4ca78439e8b70a39bc22d5b6 Mon Sep 17 00:00:00 2001
From: Romain Boman <r.boman@uliege.be>
Date: Sat, 28 May 2022 17:09:15 +0200
Subject: [PATCH] fix runtime problem with MKL when mklvars are loaded

---
 cxxfem/CMakeLists.txt | 18 +++++++-----------
 envs/win-mingw64.cmd  | 16 +++++++---------
 envs/win-msvc.cmd     | 15 ++++++---------
 run.py                | 16 ++++++++--------
 4 files changed, 28 insertions(+), 37 deletions(-)

diff --git a/cxxfem/CMakeLists.txt b/cxxfem/CMakeLists.txt
index be50e64..1dfe56c 100644
--- a/cxxfem/CMakeLists.txt
+++ b/cxxfem/CMakeLists.txt
@@ -59,17 +59,13 @@ IF(FEM_USE_MKL)
     MESSAGE(STATUS "MKL_INCLUDE_DIRS=${MKL_INCLUDE_DIRS}")
     # library (mkl_rt.so) searched using LIBRARY_PATH (Linux/macOS) or LIB (windows)
     FIND_LIBRARY(MKL_LIBRARIES mkl_rt PATHS ENV LIBRARY_PATH)
-    IF(MINGW)
-        FIND_LIBRARY(MKL_LIB1 mkl_intel_lp64_dll PATHS ENV LIBRARY_PATH)
-        FIND_LIBRARY(MKL_LIB2 mkl_intel_thread_dll PATHS ENV LIBRARY_PATH)
-        FIND_LIBRARY(MKL_LIB3 mkl_core_dll PATHS ENV LIBRARY_PATH)
-        FIND_LIBRARY(MKL_LIB4 libiomp5md PATHS ENV LIBRARY_PATH)
-        # MESSAGE(STATUS "MKL_LIB1=${MKL_LIB1}")
-        # MESSAGE(STATUS "MKL_LIB2=${MKL_LIB2}")
-        # MESSAGE(STATUS "MKL_LIB3=${MKL_LIB3}")
-        # MESSAGE(STATUS "MKL_LIB4=${MKL_LIB4}")
-        SET(MKL_LIBRARIES ${MKL_LIB1} ${MKL_LIB2} ${MKL_LIB3} ${MKL_LIB4})
-    ENDIF()
+    # IF(MINGW)
+    #     FIND_LIBRARY(MKL_LIB1 mkl_intel_lp64_dll PATHS ENV LIBRARY_PATH)
+    #     FIND_LIBRARY(MKL_LIB2 mkl_intel_thread_dll PATHS ENV LIBRARY_PATH)
+    #     FIND_LIBRARY(MKL_LIB3 mkl_core_dll PATHS ENV LIBRARY_PATH)
+    #     FIND_LIBRARY(MKL_LIB4 libiomp5md PATHS ENV LIBRARY_PATH)
+    #     SET(MKL_LIBRARIES ${MKL_LIB1} ${MKL_LIB2} ${MKL_LIB3} ${MKL_LIB4})
+    # ENDIF()
     MESSAGE(STATUS "MKL_LIBRARIES=${MKL_LIBRARIES}")
 ENDIF()
 
diff --git a/envs/win-mingw64.cmd b/envs/win-mingw64.cmd
index b18a4a9..b251dca 100644
--- a/envs/win-mingw64.cmd
+++ b/envs/win-mingw64.cmd
@@ -57,15 +57,13 @@ IF NOT DEFINED COMPILERPATH (
     EXIT /B 
 )
 
-:: Intel MKL/TBB
-set INTELPATH="C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows"
-IF NOT EXIST %INTELPATH% (
-    ECHO   - INTEL libraries NOT found in %INTELPATH%!!
-) ELSE (
-    ECHO   - INTEL libraries found.
-    call %INTELPATH%\mkl\bin\mklvars.bat intel64 vs2019
-    call %INTELPATH%\tbb\bin\tbbvars.bat intel64 vs2019
-)
+:: Intel MKL
+set "INTELPATH=C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019.5.281\windows"
+set LIB=%INTELPATH%\mkl\lib\intel64_win;%INTELPATH%\compiler\lib\intel64_win;%LIB%
+set INCLUDE=%INTELPATH%\mkl\include;%INCLUDE%
+:: does not always work 
+@REM call %INTELPATH%\mkl\bin\mklvars.bat intel64 vs2019
+
 
 :: where is gmsh.exe and gmsh-**.dll ?
 set PATH=%GMSHSDK%\bin;%GMSHSDK%\lib;%PATH%
diff --git a/envs/win-msvc.cmd b/envs/win-msvc.cmd
index 1aecc53..6b52ab1 100644
--- a/envs/win-msvc.cmd
+++ b/envs/win-msvc.cmd
@@ -41,15 +41,12 @@ IF NOT EXIST %COMPILERPATH% (
     ECHO   - compiler found.
 )
 
-:: Intel MKL/TBB
-set INTELPATH="C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows"
-IF NOT EXIST %INTELPATH% (
-    ECHO   - INTEL libraries NOT found in %INTELPATH%!!
-) ELSE (
-    ECHO   - INTEL libraries found.
-    call %INTELPATH%\mkl\bin\mklvars.bat intel64 vs2019
-    @REM call %INTELPATH%\tbb\bin\tbbvars.bat intel64 vs2019
-)
+:: Intel MKL
+set "INTELPATH=C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019.5.281\windows"
+set LIB=%INTELPATH%\mkl\lib\intel64_win;%INTELPATH%\compiler\lib\intel64_win;%LIB%
+set INCLUDE=%INTELPATH%\mkl\include;%INCLUDE%
+:: does not always work 
+@REM call %INTELPATH%\mkl\bin\mklvars.bat intel64 vs2019
 
 :: where is gmsh.exe and gmsh-**.dll ?
 set PATH=%GMSHSDK%\bin;%GMSHSDK%\lib;%PATH%
diff --git a/run.py b/run.py
index 4bb9307..56af432 100644
--- a/run.py
+++ b/run.py
@@ -4,14 +4,14 @@
 
 import os, platform
 
-if 'Windows' in platform.uname():
-    # remove tbb from the PATH
-    #   otherwise: "Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll"
-    paths = os.environ['PATH'].split(';')
-    corr_path = [ p for p in paths if not 'tbb' in p]
-    os.environ['PATH'] = ';'.join(corr_path)
-    for p in corr_path:
-        print(p)    
+# if 'Windows' in platform.uname():
+#     # remove tbb from the PATH
+#     #   otherwise: "Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll"
+#     paths = os.environ['PATH'].split(';')
+#     corr_path = [ p for p in paths if not 'tbb' in p]
+#     os.environ['PATH'] = ';'.join(corr_path)
+#     for p in corr_path:
+#         print(p)    
 
 if __name__ == "__main__":
     import sys
-- 
GitLab