[Ipopt] Matlab Build with -framework Accelerate

Tony Kelman kelman at berkeley.edu
Tue Jan 13 15:08:32 EST 2015

There is some code that’s specific to the Matlab interface that deals with -framework vecLib, since the mex compiler wrapper doesn’t understand that flag. I would actually recommend just doing -lblas and -llapack because I believe the end result should be the same.

From: Ted Ralphs 
Sent: Tuesday, January 13, 2015 9:13 AM
To: Marco Rozgic 
Cc: ipopt at list.coin-or.org 
Subject: Re: [Ipopt] Matlab Build with -framework Accelerate

I made a new BuildTools release just a few days ago that should address this issue. Here is the changeset: 


For this change to propagate, though, we would need to make new releases of all the dependent projects. I would guess that re-running autoconf on all dependencies to produce new configure scripts would  fix the issue. We'll try to do this as quickly as possible. I believe a new stable version of Ipopt is also in the works and that should be available within about 2 weeks, but Stefan can confirm this. 

If you need this to be fixed quickly, I can tell you what to try yourself in more detail.



On Tue, Jan 13, 2015 at 8:14 AM, Marco Rozgic <marco.rozgic at hsu-hh.de> wrote:

  Hi everybody, 

  I am currently building Ipopt 3.11.9 on MacOS 10.10 with Matlab2014b. I managed to get a working mex file with some effort that I am willing to share. However, afterwards I was trying to build a mex file that incorporates the MacOS blas and lapack, wich are now given by the framework Accelerate and not anymore by the vecLib framework. I used the configure site script and added the following to the configure command:

  ../configure --enable-matlab-ma57 --with-blas='-framework Accelerate' --with-lapack='-framework Accelerate‘ 

  Afterwards I run

  make test
  make install

  All good up to now. I create a mexopt.sh file, edit the SDKs to the newest versions and modify the makefile for the Matlab interface. Now make gives the following error:

  Undefined symbols for architecture x86_64:

  Followed by some lapack and blas routines that are not found, e.g., 

  "_dgemm_", referenced from:
        Ipopt::IpBlasDgemm(bool, bool, int, int, int, double, double const*, int, double const*, int, double, double*, int) in libipopt.a(IpBlas.o)
        _ma57td_ in libcoinhsl.a(ma57d.o)
        _ma57rd_ in libcoinhsl.a(ma57d.o)
        _ma57qd_ in libcoinhsl.a(ma57d.o)
        _ma57od_ in libcoinhsl.a(ma57d.o)

  So I figure that the Acceleration framework is not passed correctly or included correctly.
  Does anybody have an idea how to work around that issue or resolve the problem?



  Dipl.-Math. Marco Rozgic
  Department of the Theory of Electrical Engineering at the
  Helmut Schmidt University
  University of the Federal Armed Forces Hamburg
  Tel: +49 (0) 40 6541 3647
  Location: Holstenhofweg 85, 22043 Hamburg Building H3 Room 007

  Ipopt mailing list
  Ipopt at list.coin-or.org


Dr. Ted Ralphs
Professor, Lehigh University
(610) 628-1280
ted 'at' lehigh 'dot' edu

Ipopt mailing list
Ipopt at list.coin-or.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/ipopt/attachments/20150113/9e8c4231/attachment.html>

More information about the Ipopt mailing list