cgglse and LAPACK

Open discussion for MAGMA library (Matrix Algebra on GPU and Multicore Architectures)
Post Reply
joshua
Posts: 7
Joined: Tue Jul 24, 2018 3:22 pm

cgglse and LAPACK

Post by joshua » Thu Aug 02, 2018 2:10 pm

Hi all,

I'm running MAGMA on windows through Visual Studios. I'm attempting to run the magma_cgglse function and I'm receiving the following errors.

1>magma.lib(cgglse.obj) : error LNK2001: unresolved external symbol caxpy_
1>magma.lib(cgglse.obj) : error LNK2001: unresolved external symbol ccopy_
1>magma.lib(cgglse.obj) : error LNK2001: unresolved external symbol cgemv_
1>magma.lib(cgglse.obj) : error LNK2001: unresolved external symbol ctrmv_
1>magma.lib(cgglse.obj) : error LNK2001: unresolved external symbol ctrsv_
1>magma.lib(cggrqf.obj) : error LNK2001: unresolved external symbol cgerqf_
1>magma.lib(cgeqrf_mgpu.obj) : error LNK2001: unresolved external symbol clarft_
1>magma.lib(cgeqrf2_gpu.obj) : error LNK2001: unresolved external symbol clarft_
1>magma.lib(cunmrq.obj) : error LNK2001: unresolved external symbol clarft_
1>magma.lib(cunmqr.obj) : error LNK2001: unresolved external symbol clarft_
1>magma.lib(cgeqrf.obj) : error LNK2001: unresolved external symbol clarft_
1>magma.lib(cgeqrf_ooc.obj) : error LNK2001: unresolved external symbol clarft_
1>magma.lib(cunmrq.obj) : error LNK2001: unresolved external symbol cunmrq_
1>magma.lib(cunmqr.obj) : error LNK2001: unresolved external symbol cunmqr_
1>magma.lib(magma_cauxiliary.obj) : error LNK2001: unresolved external symbol slamch_
1>magma.lib(cgeqrf.obj) : error LNK2001: unresolved external symbol cgeqrf_
1>magma.lib(cgeqrf_m.obj) : error LNK2001: unresolved external symbol cgeqrf_
1>magma.lib(cgeqrf_mgpu.obj) : error LNK2001: unresolved external symbol cgeqrf_
1>magma.lib(cgeqrf2_gpu.obj) : error LNK2001: unresolved external symbol cgeqrf_

From what I can tell these unresolved externals are from LAPACK. Upon installing MAGMA, I did not have any BLAS or LAPACK libraries at the time. If I rebuild MAGMA through CMake and include the locations of both libraries will that solve this problem?

On another note, I have attempted to download LAPACK but I do not have access to a Fortran compiler. Is there a way to download LAPACK without Fortran like there is for MAGMA?

Thank you,
Josh

mgates3
Posts: 897
Joined: Fri Jan 06, 2012 2:13 pm

Re: cgglse and LAPACK

Post by mgates3 » Fri Aug 03, 2018 12:23 am

Yes, you need BLAS and LAPACK libraries. Try OpenBLAS, which comes with LAPACK. (I mean, get a prebuilt OpenBLAS, so you don’t need the Fortean compiler.)

Mark

joshua
Posts: 7
Joined: Tue Jul 24, 2018 3:22 pm

Re: cgglse and LAPACK

Post by joshua » Fri Aug 03, 2018 3:21 pm

Thank you! I downloaded prebuilt BLAS and Lapack libraries and that removed those errors. However, my code will now build correctly but will experience the following error when I attempt to launch:

The code execution cannot proceed because libgfortran_64-3.dll was not found. Reinstalling the program may fix this problem.
The code execution cannot proceed because libgcc_s_seh_64-1.dll was not found. Reinstalling the program may fix this problem.

After some more research I downloaded MinGW-w64 for Windows to obtain these two dll files. I am attempting to launch on a 64 bit platform but I can only seem to find the 32 bit versions of these two files within MinGW-w64.

Thank you,
Josh

mgates3
Posts: 897
Joined: Fri Jan 06, 2012 2:13 pm

Re: cgglse and LAPACK

Post by mgates3 » Sat Aug 04, 2018 5:48 pm

These seem to be DLLs that OpenBLAS requires on Windows. We're not very familiar with the issues on Windows — sorry. Alternatively, you can get a free community version of Intel MKL which will have both BLAS and LAPACK.
See: https://software.intel.com/en-us/articl ... -libraries

-mark

joshua
Posts: 7
Joined: Tue Jul 24, 2018 3:22 pm

Re: cgglse and LAPACK

Post by joshua » Wed Aug 08, 2018 1:58 pm

Gotcha, I've since remedied the problem by downloading the free version of MKL but I have now run into a different problem.

I am attempting to use the magma_cgglse function and have run into the following problem. The size of the matrices that I am attempting to input to the function cannot satisfy some of the input constraints. I have two 1090 x 990 matrices, which cause the corresponding input parameters to need to be set. M = Rows of Matrix A = 1090, N = Columns of Matrix A and B = 990, and P = Rows of Matrix B = 1090. These three parameters must satisfy the following condition according to the function documentation:

0 <= P <= N <= M+P
0 <= 1090 <= 990 <=1090+990

With my input matrices, I cannot satisfy this condition. Is there a process I should be using on my input matrices before inputting them to magma_cgglse? I am somewhat unfamiliar with preparing data for input to a LSE solver.

Thank you,
Joshua E. Collins

Post Reply