伦敦玛丽皇后学院的VAMP插件是一个惊人的BSD许可软件集合.所有这些插件都是Sonic Visualizer软件 的基础.也可以使用插件Sdk来构建插件.
您可以为OSX/Linux/Win32目标构建插件.
Queen Mart大学在这里很好地解释了插件架构以及如何为上面指定的不同平台构建.
Java版本,jVamp也可用.一个Python包装器也.
但是,如何为iOS平台构建?
所以,我尝试将Makefile移植到iOS.
首先我更改了文件
build/osx/Makefile.osx
Run Code Online (Sandbox Code Playgroud)
通过这种方式:
CFLAGS := -O3 -ftree-vectorize -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -arch x86_64 -I../vamp-plugin-sdk -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Headers/ -DUSE_PTHREADS
CXXFLAGS := $(CFLAGS)
LDFLAGS := -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -arch x86_64 -lqm-dsp ../vamp-plugin-sdk/libvamp-sdk.a -framework Accelerate -lpthread -exported_symbols_list=vamp-plugin.list -install_name qm-vamp-plugins.a
PLUGIN_EXT := .a
include build/general/Makefile.inc
Run Code Online (Sandbox Code Playgroud)
然后建立
macbookproloreto:qm-vamp-plugins loreto$ make -f build/osx/Makefile.osx
cc -O3 -ftree-vectorize -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -arch x86_64 -I../vamp-plugin-sdk -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Headers/ -DUSE_PTHREADS -I. -I../qm-dsp -c -o g2cstubs.o g2cstubs.c
c++ -O3 -ftree-vectorize -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个好的(在最好的情况下积极维护)C++矩阵库.因此它应该是模板化的,因为我想使用复数的有理数作为数字类型.我正在处理的矩阵主要是稀疏和单一的.
你能否建议图书馆,并给出一个小解释,为什么要使用它们,因为我知道如何找到它们,但我无法真正决定什么适合我,因为我错过了它们的经验.
编辑:
我正在处理的主要操作是矩阵乘法,带矢量和kronecker乘积的标量乘法.矩阵的大小是指数级的,我想至少能够处理高达1024x1024个条目的矩阵.
我想将一段涉及大量向量和矩阵计算的代码迁移到C或C++,目标是尽可能地加速代码.
forC代码中的循环线性代数计算与使用LAPACK/BLAS的计算一样快,或者使用这些库有一些独特的加速?
换句话说,简单的C代码(使用for循环等)可以像利用LAPACK/BLAS的代码一样快地执行线性代数计算吗?
我使用LAPACK的目的是计算矩阵的cholesky.我在Fedora中使用C/C++进行编程,但是我对使用lapacke或clapack的LAPACK进行安装感到困惑?
我需要优化由2D网格点表示的表面,以产生与提供的目标法向量对齐的表面的法向矢量.网格大小可能介于201x201和1001x1001之间.这意味着变量的数量将是40,000到1,000,000,因为我只修改网格点的z坐标.
我正在使用Ceres框架,因为它应该在大规模非线性优化问题上表现出色.我已经尝试过MATLAB的fmincon,但它使用了大量的内存.我写了一个适用于小网格的目标函数(在3x3和31x31成功).但是,当我尝试编译具有大网格大小(157x200)的代码时,我看到下面的错误.我已经读到这是Eigen的限制.但是,当我告诉Ceres使用LAPACK而不是Eigen时,我得到大型矩阵的相同错误.我试过这些线:
options.dense_linear_algebra_library_type = ceres::LAPACK;
options.linear_solver_type = ceres::DENSE_QR;
Run Code Online (Sandbox Code Playgroud)
这些告诉求解器使用LAPACK和DENSE_QR,因为使用3x3网格的输出显示:
Minimizer TRUST_REGION
Dense linear algebra library LAPACK
Trust region strategy LEVENBERG_MARQUARDT
Given Used
Linear solver DENSE_QR DENSE_QR
Threads 1 1
Linear solver threads 1 1
Run Code Online (Sandbox Code Playgroud)
但是,当我使用大参数时,我仍然会得到Eigen的错误.
无论如何,我真的可以使用一些帮助.如何让Ceres优化大量变量(> 30,000)?提前致谢
链接到Ceres:http://ceres-solver.org
链接到Eigen:http://eigen.tuxfamily.org/dox/
错误:
In file included from /usr/include/eigen3/Eigen/Core:254:0,
from /usr/local/include/ceres/jet.h:165,
from /usr/local/include/ceres/internal/autodiff.h:145,
from /usr/local/include/ceres/autodiff_cost_function.h:132,
from /usr/local/include/ceres/ceres.h:37,
from /home/ubuntu/code/surfaceopt/surfaceopt.cc:10:
/usr/include/eigen3/Eigen/src/Core/DenseStorage.h: In instantiation of ‘Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, Alignment>::plain_array() [with T = double; int Size = 31400; int MatrixOrArrayOptions = …Run Code Online (Sandbox Code Playgroud) 我正在编写一些代码,我有一个占位符matmul,似乎工作得很好,但我想使用一个LAPACK dgemm实现.我现在只使用gfortran并获得非常好的速度matmul,但我想知道我是否可以变得更好.
目前的电话是:
C = transpose(matmul( transpose(A), B))
Run Code Online (Sandbox Code Playgroud)
where A,B和C,是非正方形的double precision矩阵.我可以轻松地为dgemm当前的gfortran实现编写一个包装器LAPACK,但我喜欢我可以将所有这些作为一个函数(而不是担心call一个surbroutine并且必须处理transpose).
我想知道如果我编译ifort和包含MKL,这将matmul神奇地改变MKL dgemm为我没有包装的功能?
我很好奇为什么Julias实现矩阵添加似乎可以复制.下面是一个例子:
foo1=rand(1000,1000)
foo2=rand(1000,1000)
foo3=rand(1000,1000)
julia> @time foo1=foo2+foo3;
0.001719 seconds (9 allocations: 7.630 MB)
julia> sizeof(foo1)/10^6
8.0
Run Code Online (Sandbox Code Playgroud)
分配的内存量与这些维度矩阵所需的内存大致相同.
看起来为了处理foo2 + foo3,内存被分配来存储结果,然后foo1通过引用分配给它.
这是否意味着对于大多数线性代数运算,我们需要直接调用BLAS和LAPACK函数来执行操作?
我正在尝试安装Lapack以使用PHP(http://php.net/manual/en/book.lapack.php),因为它是我发现的唯一包含奇异值计算的PHP库.
我在使用Apache2的Ubuntu 14.04服务器上.
我按照其他网站的指示安装了gfortran和liblapack-dev,但他们都没有描述如何包含它.简而言之,当从Lapack调用静态函数时,我得到一个错误,说它不是一个定义的类.
我认为我的下一步是启用扩展,但是尽管遵循了这个问题(如何检查在Ubuntu Linux 12.04 LTS中启用/禁用了哪些PHP扩展?)我没有提到Lapack.我该如何恢复安装Lapack for PHP?谢谢!
任何人都可以指向一个库/代码,允许我在python(numpy)中对Cholesky分解进行低级更新吗?Matlab将此功能作为一种称为"cholupdate"的功能提供.LINPACK也有这个功能,但它(据我所知)尚未移植到LAPACK,因此不能用于scipy.
我发现scikits.sparse提供了一个基于CHOLMOD的类似函数,但我的矩阵很密集.
有没有可用于python的代码,'cholupdate'的功能与numpy兼容?
谢谢!
我已经阅读了整个ATLAS安装指南,它表示构建共享(.so)库所需的只是将--shared标志传递给configure脚本.然而,当我建,唯一.so出现在我的文件lib夹是libsatlas.so和libtatlas.so,虽然指南说,应该有六人:
libatlas.so, libcblas.so, libf77blas.so, liblapack.so, libptcblas.so, libptf77blas.so
Run Code Online (Sandbox Code Playgroud)
安装后,某些测试失败,因为缺少这些库.此外,FFPACK在安装期间需要这些库.
有没有遇到过这个?我做错了什么?