Re: Bindings with ACML MSVC example project? I have linking problems.

George Slavov <[email protected]>
Newsgroups gmane.comp.lib.boost.ublas
Message-ID <CALNdZVJGUizYf=sZnLD1Q4WP92H_ETMpqii857kcnTGv0nu0QQ@mail.gmail.com>
Thanks for your response Thomas. I really should have mentioned my build
environment. I'm on Windows 7, 64-bit as you guessed, using MSVC 2010 and
Acml 5.1.0. I was really hoping the integer 8 macro will do the trick, but
it didn't seem to change anything. I really want to use 64-bit versions of
things because I'll be using pretty large data sets, so I'm not sure I even
want to get the 32-bit version of Acml working.

I traced the ublas bindings call I have

boost::numeric::bindings::blas::gemv(1.0f,A,x,0,blasResult);

all the way to the Acml call

BLAS_SGEMV( &blas_option< Trans >::value, &m, &n, &alpha, a, &lda, x,
&incx, &beta, y, &incy );

and my debugger shows the first parameter (blas_option< Trans >::value)
contains 'N' as a char, so that looks right. But something here confuses
me. Acml.h shows the signature of sgemv is

extern void sgemv(char transa, int m, int n, float alpha, float *a, int
lda, float *x, int incx, float beta, float *y, int incy);

Note the first param is not a pointer to a char, but the char itself. So
what's with all the reference operators in the ublas bindings code?

Best,
George

Any other thoughts on what else I can try?

On Sat, Jun 30, 2012 at 5:30 AM, Thomas Klimpel <[email protected]
> wrote:

> George Slavov wrote:
> > If no one can help me with that, I could describe the issue I'm having.
> > My minimal test program involves calling gemv, really simple,
> > but I get a linker error: unresolved external symbol sgemv_.
> > I am positive that I'm linking to the right libs from ACML.
> > I actually included all the libs I could find in the lib folder.
> > I used dumpbin to show the symbols in libacml_mp.lib and
> > I couldn't find sgemv with an underscore in the end so I decided to
> >
> > #define BIND_FORTRAN_LOWERCASE
> >
>
> I can confirm that I also need to define this for ACML + MSVC.
>
> > But then I got a compilation error because ublas bindings define ilaenv
> which
> > forwards to LAPACK_ILAENV which ends up being named the same.
> > So the ublas binding function seems to be trying to call itself and it
> has the wrong signature for that.
>
> I just tested this, and your analysis is probably correct. Here is what I
> did and the result:
>
> C:\nobackup\numeric_bindings\libs\numeric\bindings\lapack\test>%BOOST_ROOT%\b2
> numbind=acml-msvc include_test
> Das System kann den angegebenen Pfad nicht finden.
> ...patience...
> ...patience...
> ...found 1190 targets...
> ...updating 2 targets...
> compile-c-c++
> ..\..\..\..\..\bin.v2\libs\numeric\bindings\lapack\test\include_test.test\msvc-9.0express\debug\numbind-acml-msvc\threading-multi\include_test.obj
> include_test.cpp
> C:\nobackup\numeric_bindings\boost/numeric/bindings/lapack/auxiliary/ilaenv.hpp(32)
> : error C2660: 'boost::numeric::bindings::lapack::ilaenv' : function does
> not take 9 arguments
>    call "C:\Programme\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86
> >nul
> cl /Zm800 -nologo
> @"..\..\..\..\..\bin.v2\libs\numeric\bindings\lapack\test\include_test.test\msvc-9.0express\debug\numbind-acml-msvc\threading-multi\include_test.obj.rsp"
> ...failed compile-c-c++
> ..\..\..\..\..\bin.v2\libs\numeric\bindings\lapack\test\include_test.test\msvc-9.0express\debug\numbind-acml-msvc\threading-multi\include_test.obj...
> ...failed updating 1 target...
> ...skipped 1 target...
>
>
> > So then I decided to rename the ublas binding function just to see what
> happens (haha) and everything magically compiled and linked. But then at
> runtime I got
> >
> >
> > *** ACML error: on entry to SGEMV parameter number 1 had an illegal value
> >
> >
> > That's when I decided to give this a rest and ask for help. Any help
> would be appreciated!
>
> I can't reproduce this one, but I tested only on a 32-bit windows-xp with
> MSVC-9.0 express edition (while writing this email). If you are on a 64-bit
> windows, it might help to
>
> #define BIND_FORTRAN_INTEGER_8
>
> (or link against the variant with 32-bit integers, which is probably also
> provided by ACML)
>
> Regards,
> Thomas
> _______________________________________________
> ublas mailing list
> [email protected]
> http://lists.boost.org/mailman/listinfo.cgi/ublas
> Sent to: [email protected]
>

_______________________________________________
ublas mailing list
[email protected]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.