Thanks for the link to the document you are following. `make` would generally produce both libmagma.so and libmagma_sparse.so. `make lib` will produce just libmagma.so, which is all you need for call dgesv. `make sparse-lib` will produce libmagma_sparse.so, but you don't need that for solving dense systems. But if there's an error during the compilation, it may only get through building libmagma.so and not get to building libmagma_sparse.so.
Please include the complete input and output of your compile line, as below. A complete minimum example that we can compile is also helpful.
Here's a minimum example that works.
sh methane> gfortran -Wall -o main main.f90 -Wl,-rpath,${MAGMA_DIR}/lib -L ${MAGMA_DIR}/lib -lmagma -Wl,-rpath,${ICL_CUDA_ROOT}/lib64 -L${ICL_CUDA_ROOT}/lib64 -lcublas -lcusparse -lcudart
sh methane> ./main
done
sh methane> cat main.f90
program main
!! lda >= n, ldb >= n
integer, parameter:: n = 10, lda = n, ldb = n, nrhs = 5
integer:: info
integer:: IPIVs( n )
double precision:: A( lda, n ), B( ldb, nrhs )
call magmaf_init()
! call DGESV( n, nrhs, A, lda, IPIVs, B, ldb, info )
! call magma_dgesv( n, nrhs, A, lda, IPIVs, B, ldb, info ) !! can't call C API
call magmaf_dgesv( n, nrhs, A, lda, IPIVs, B, ldb, info ) !! call Fortran API
call magmaf_finalize()
print *, "done"
end program
$MAGMA_DIR and $ICL_CUDA_ROOT are paths to wherever those libraries are installed.
I'm confused by your code that has rows for the n parameter (that's fine) but cols for the lda and ldb parameters. The lda and ldb are really the number of rows in the A and B arrays, not the number of columns. lda and ldb >= rows. Of course, A is square, n x n, but B is presumably tall, n x nrhs.
Mark