Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!
6440 Discussions

## sgels function return different answers for mkl 18.5 and 19.5 Beginner
250 Views

The following code that calls sgels returns different answers depending on whether I link with mkl 18.5 or 19.5. Also mkl 18.5 seems return different results depending on different machines.

/opt/intel/19/bin/ifort reproduce.f90 -Wl,--start-group \${MKLROOT}/lib/intel64/libmkl_intel_lp64.a \${MKLROOT}/lib/intel64/libmkl_intel_thread.a \${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -liomp5 -lpthread -lm -ldl -I\${MKLROOT}/include

``````      program reproduce
implicit none

integer :: row_A, col_A, row_B, col_B, info
integer :: i
real, allocatable :: A(:,:), B(:,:), work(:,:)

! allocate input matrices
row_A = 2
col_A = 2
row_B = 2
col_B = 1

allocate(A(row_A,col_A))
allocate(B(row_B,col_B))
allocate(work(row_A*row_B,col_A*col_B))

A = 1
B = 1490.890

! sgels
call sgels('N', size(A,1), size(A,2), size(B,2), A, size(A,1), B,    &
size(B,1), work, size(work), info)

! check
write(*,*) '--> A matrix'
do i = 1, ubound(A, 1)
write(*,*) A(i, :)
end do
write(*,*) '--> B matrix'
do i = 1, ubound(B, 1)
write(*,*) B(i, :)
end do
write(*,*) '--> Info'
write(*,*) info

deallocate(A, B, work)

end program``````

Output for mkl 19 on skylake (Intel(R) Xeon(R) W-2145 CPU @ 3.70GHz)

--> A matrix
-1.414214 -1.414214
0.4142135 0.0000000E+00
--> B matrix
-2108.437
8.2589657E-05
--> Info

2

Output for mkl 18 on skylake (Intel(R) Xeon(R) W-2145 CPU @ 3.70GHz)

--> A matrix
-1.414214 -1.414214
0.4142135 1.9078982E-08
--> B matrix
-2837.939
4328.829
--> Info
0

Output for mkl 18 on sandybridge  ( Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz)

--> A matrix
-1.414214 -1.414214
0.4142135 0.0000000E+00
--> B matrix
-2108.437
1.2207031E-04
--> Info
2  