- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

So I am trying to get accustomed to linking my f90 code to the MKL library and I decided to start with the $dot function. I have included my compile command and my code below; please note that I set and environment variable for MKLROOT to save space and time.

My problem is that when I try to compile this, I keep getting the following error: /tmp/ifortdoYMJ3.o: In function `MAIN__':

DotProd.f90:(.text+0x4b7): undefined reference to `sdot_f95_'

I have been trying to figure out where this problem is coming from, without any luck. I was wondering if someone could provide some insight into this problem? I am working on ubuntu, on a 64 bit system.

Any help is appreciated!

----------------------------------Compile Command

ifort DotProd.f90 -L$MKLROOT/lib/intel64/libmkl_blas95_ilp64.a -i8 -I$MKLROOT/include/intel64/ilp64 -I$MKLROOT/include -Wl,--start-group $MKLROOT/lib/intel64/libmkl_intel_ilp64.a $MKLROOT/lib/intel64/libmkl_core.a $MKLROOT/lib/intel64/libmkl_sequential.a -Wl,--end-group -lpthread -lm -ldl

--------------------------------- Code

program DotProd

use f95_precision

use blas95

implicit none

! This program was constructed to learn how to use the BLAS library of the MKL

! The BLAS routine used will be the ?dot routine.

real, dimension(:), allocatable :: a,b ! Define two vectors

real res

integer :: size_of_vectors, ent

! Prompt the user for input

print *, 'Please input the size of the vectors in question'

read *, size_of_vectors

! Define size of vectors

allocate (a(1:size_of_vectors))

allocate (b(1:size_of_vectors))

! Prompt user for vector entries

print *, 'Please input the entries for vector a'

do ent = 1, size_of_vectors

read *, a(ent)

end do

print *, 'Please input the entries for vector b'

do ent = 1, size_of_vectors

read *, b(ent)

end do

! Output vectors

print *, 'Vector a ='

do ent = 1, size_of_vectors

print *, a(ent)

end do

print *, 'Vector b ='

do ent = 1, size_of_vectors

print *, b(ent)

end do

res = dot(a,b)

print* , 'a dot b =', res

end program DotProd

Link Copied

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page