On 7/31/14 17:27 , Mark Brethen wrote:
Why does numpy and cvxopt use Apple's Accelerate framework by default and DSDP use macport's ATLAS?On Jul 31, 2014, at 3:10 PM, Jonathan Stickel <jjstic...@gmail.com> wrote:On 7/29/14 19:48 , Mark Brethen wrote:On Jul 28, 2014, at 11:56 AM, Jonathan Stickel <jjstic...@gmail.com> wrote:Date: Sun, 27 Jul 2014 13:47:20 -0500 From: Mark Brethen <mark.bret...@gmail.com> Subject: py-cvxopt +DSDP py-cvxopt installed fine without any errors. However, when I tried running example code it reports: Symbol not found: _ATL_cGetNB Referenced from: /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/cvxopt/lapack.so
Ticket #37097 describes issues building DSDP and other ports that depend on it (like cvxopt) due to linker issues with building against macports' ATLAS. I uninstalled DSDP and ATLAS and then patched DSDP as suggested in the ticket, but when I tried to install DSDP again it failed because it could not find Apple's Accelerate framework: :info:build /usr/bin/clang -O3 -arch x86_64 -o maxcut maxcut.o /opt/local/var/macports/build/_Users_marbre_ports_math_DSDP/DSDP/work/DSDP5.8/lib/libdsdp.a
-latlas -lm :info:build ld: library not found for -latlas
:info:build clang: error: linker command failed with exit code 1 (use -v to see invocation) I guess if you do this, you also need to provide the path to Apple's Accelerate framework?It seems that DSDP does not work with Apple's Accelerate framework, and hence if you use the +dsdp variant for py-cvxopt (not required), then you must use also use the +atlas variant for py-cvxopt. I suppose it is a bug that this conflict is not flagged in the py-cvxopt portfile. You could open a ticket for that part, if you like. In the meantime, just reinstall with consistent variants (I recommend using +atlas for all of the above, including numpy and scipy). Regards, JonathanI was able to build DSDP with Apple's Accelerate.framework by patching 'make.include' at this line: -LAPACKBLAS = -llapack -lblas -lg2c -lm +LAPACKBLAS = -Wl,-framework -Wl,Accelerate -lm and test that it works with the following python program: from cvxopt.base import matrix,spmatrix from cvxopt import solvers clst=[0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0, 2.0] hlst=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0] Gr=[0, 7, 14, 21, 28, 1, 5, 8]+[35]*5 Gc=[0, 1, 2, 3, 4, 5, 6, 7]+range(5) Gmtr=spmatrix([1.0]*8+[-1.0]*5,Gr,Gc,(36,8)) c=-matrix(clst) Gs=[-Gmtr] h=[-matrix(hlst,(6,6))] try: sol=solvers.sdp(c,Gs=Gs,hs=h,solver='dsdp') print 'optimal value: %.2f'%(1+(matrix(clst,(1,8))*sol['x'])[0],) except: print 'could not use dsdp' sol=solvers.sdp(c,Gs=Gs,hs=h) print 'optimal value: %.2f'%(1+(matrix(clst,(1,8))*sol['x'])[0],) raise which returns: 'optimal value: 2.00' I'd suggest updating the port to use Apple's accelerated.framework by default (as does numpy and cvxopt). MarkBased on this info, I patched the DSDP portfile to use accelerate framework by default (i.e., no variants) and then to have an atlas variant. I uploaded patches to the ticket: https://trac.macports.org/ticket/37097 JonathanWas there a particular reason you added the reinplace in the octave variant? Won't this be replaced by the patch?
Its not in the octave variant block (the way trac shows the patch makes it look that way). See the ticket for more text. I suggest you cc your email on the ticket, and we can continue to discuss (as needed) there.
Thanks, Jonathan _______________________________________________ macports-users mailing list macports-users@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-users