Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

PARDISO and MINGW64

3rav
Beginner
1,047 Views

Hi,

 

I am trying to compile CalculiX (ccx) using INTEL MKL PARADISO static libraries .a in mingw but I have this error:

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ccx_PardisoMKL_gcc.a(pardiso.o): in function `pardiso_factor':
C:\msys64\usr\local\CalculiX\ccx_2.15\src/pardiso.c:288: undefined reference to `pardiso_'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ccx_PardisoMKL_gcc.a(pardiso.o): in function `pardiso_solve':
C:\msys64\usr\local\CalculiX\ccx_2.15\src/pardiso.c:319: undefined reference to `pardiso_'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ccx_PardisoMKL_gcc.a(pardiso.o): in function `pardiso_cleanup':
C:\msys64\usr\local\CalculiX\ccx_2.15\src/pardiso.c:341: undefined reference to `pardiso_'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ccx_PardisoMKL_gcc.a(pardiso_as.o): in function `pardiso_factor_as':
C:\msys64\usr\local\CalculiX\ccx_2.15\src/pardiso_as.c:161: undefined reference to `pardiso_'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ccx_PardisoMKL_gcc.a(pardiso_as.o): in function `pardiso_solve_as':
C:\msys64\usr\local\CalculiX\ccx_2.15\src/pardiso_as.c:184: undefined reference to `pardiso_'

 

I would like to add that I managed to compile the Linux version with the same Makefile. I also compiled in the "mingw" environment with the .dll libraries but now I want to compile with .a library.

 

ccx_PardisoMKL_gcc: $(OCCXMAIN) ccx_PardisoMKL_gcc.a \
./date.pl; $(CC) $(CFLAGS) -c ccx_2.15.c; \
$(FC) $(OPT) $(FFLAGS) -o $@ $(OCCXMAIN) ccx_PardisoMKL_gcc.a $(LIBS) $(LDFLAGS) \
-Wl,--start-group \
$(MKL_LIB)/libmkl_gf_lp64.a \
$(MKL_LIB)/libmkl_gnu_thread.a \
$(MKL_LIB)/libmkl_core.a \
-Wl,--end-group \
-lgomp -lpthread -lm -ldl

 

When I delete the library libmkl_gf_lp64.a on LinuxI have similar error:

 

ccx_2.15.c:61:22: warning: ‘nxstate’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     *ipoinpc=NULL,mt,nxstate,nload0,iload,*iuel=NULL;
                      ^~~~~~~
ccx_PardisoMKL_gcc.a(pardiso.o): In function `pardiso_factor':
/usr/local/ccx_2.15/src_t1/pardiso.c:288: undefined reference to `pardiso_'
ccx_PardisoMKL_gcc.a(pardiso.o): In function `pardiso_solve':
/usr/local/ccx_2.15/src_t1/pardiso.c:319: undefined reference to `pardiso_'
ccx_PardisoMKL_gcc.a(pardiso.o): In function `pardiso_cleanup':
/usr/local/ccx_2.15/src_t1/pardiso.c:341: undefined reference to `pardiso_'
ccx_PardisoMKL_gcc.a(pardiso_as.o): In function `pardiso_factor_as':
/usr/local/ccx_2.15/src_t1/pardiso_as.c:161: undefined reference to `pardiso_'
ccx_PardisoMKL_gcc.a(pardiso_as.o): In function `pardiso_solve_as':
/usr/local/ccx_2.15/src_t1/pardiso_as.c:184: undefined reference to `pardiso_'
ccx_PardisoMKL_gcc.a(pardiso_as.o):/usr/local/ccx_2.15/src_t1/pardiso_as.c:200: more undefined references to `pardiso_' follow
collect2: error: ld returned 1 exit status
Makefile_mkl:43: recipe for target 'ccx_PardisoMKL_gcc' failed
make: *** [ccx_PardisoMKL_gcc] Error 1

0 Kudos
8 Replies
ShanmukhS_Intel
Moderator
1,012 Views

Hi,

 

Thank you for posting on Intel communities.

 

Could you please let us know if you are able to execute the code successfully on oneAPI command prompt? In addition, could you please cross-verify if the dependent libraries were linked correctly using Intel link line advisor? (if you are not able to link using oneAPI command prompt) For more help regarding details and usage of Intel link line advisor, please refer to the below link.

https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-link-line-advisor.html

 

Regarding the compatibility of Intel oneAPI MKL, please refer to the below link.

https://www.intel.com/content/www/us/en/developer/articles/system-requirements/oneapi-math-kernel-library-system-requirements.html

 

In addition, We would like to request you to share your environment details as well.

 

Best Regards,

Shanmukh.SS

 

0 Kudos
ShanmukhS_Intel
Moderator
965 Views

Hi,


A gentle reminder:

Has the information provided helped? Could you please get back to us with the required details so that we could look further into your issue?


Best Regards,

Shanmukh.SS


0 Kudos
3rav
Beginner
946 Views

Yes, I have used this tool, but please note that there is no combination for:

 

Select OS: Windows and Select compiler: GCC/gfortran  (mingw)

 

I also wrote on the mingw forum: https://github.com/msys2/MINGW-packages/issues/12282

0 Kudos
ShanmukhS_Intel
Moderator
933 Views

Hi,


Please refer to the below link regarding the compatibility and system requirements of Intel oneMKL.


https://www.intel.com/content/www/us/en/developer/articles/system-requirements/oneapi-math-kernel-library-system-requirements.html


Best Regards,

Shanmukh.SS


0 Kudos
ShanmukhS_Intel
Moderator
898 Views

Hi,


A gentle reminder:

Has the information provided helped? Kindly let us know if we could close this thread at our end.


Best Regards,

Shanmukh.SS


0 Kudos
ShanmukhS_Intel
Moderator
859 Views

Hi,


We assume that your issue is resolved. If you need any additional information, please post a new question as this thread will no longer be monitored by Intel. 


Best Regards,

Shanmukh.SS




0 Kudos
3rav
Beginner
388 Views

I'm going to add the CalculiX package to the msys2/mingw repository by PKGBUILD:  https://github.com/msys2/MINGW-packages .
I would like the CalculiX program (ccx: https://www.calculix.de/) to be compiled to use the oneMKL libraries, more precisely PARDISO (required files for compilation: mkl_rt.lib and mkl.h).
My question is whether I can add the required files to build the package, and if so, what is the best way to add them (copy them, is it possible to somehow download individual files from your website)?

 

MKL=/usr/local/mkl/2022.1.0

CFLAGS=-I$(MKL)/include

LIBS=$(MKL)/lib/intel64/mkl_rt.lib

 

Later, the end user will have to download the oneAPI package for the program to work properly (required libraries for operation: mkl_gf_lp64.dll, mkl_gnu_thread.dll, mkl_core.dll and mkl_rt.dll).

 

Maybe Intel itself will add the oneAPI/oneMKL package to the msys2/mingw repo,  header files and libraries only "linking" (like mkl_rt)?

0 Kudos
3rav
Beginner
315 Views

Similar like this (only for msys2/mingw -> Windows version -> .dll): https://pypi.org/project/mkl/2024.0.0/#files

0 Kudos
Reply