当我运行sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})我得到InternalError: Blas SGEMM launch failed 。 这是完整的错误和堆栈跟踪: InternalErrorTraceback (most recent call last) <ipython-input-9-a3261a02bdce> in <module>() 1 batch_xs, batch_ys = mnist.train.next_batch(100) —-> 2 sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) /usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc in run(self, fetches, feed_dict, options, run_metadata) 338 try: 339 result = self._run(None, fetches, feed_dict, options_ptr, –> 340 run_metadata_ptr) 341 if run_metadata: 342 proto_data […]
我正在编写一个包含Cython扩展的Python模块,并使用LAPACK (和BLAS )。 我愿意使用clapack或lapacke ,或者某种f2py或f2py解决scheme。 重要的是,我可以在没有Python调用开销的情况下,在紧密的循环中调用lapack和blas例程。 我在这里find一个例子。 但是,这个例子取决于SAGE。 我希望我的模块可以在不安装SAGE的情况下进行安装,因为我的用户不太可能想要或者不需要SAGE。 我的用户可能会安装像numpy,scipy,pandas和scikit这样的软件包,所以这些都是合理的依赖关系。 什么是使用接口的最佳组合,最小的setup.py文件是什么样的,可以从编译中获取必要的信息(从numpy,scipy等)? 编辑:这是我最终做的。 它适用于我的MacBook,但我不知道它是多么便携。 当然有更好的方法。 from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext import numpy from Cython.Build import cythonize from numpy.distutils.system_info import get_info # TODO: This cannot be the right way blas_include = get_info('blas_opt')['extra_compile_args'][1][2:] includes = [blas_include,numpy.get_include()] setup( cmdclass = {'build_ext': build_ext}, […]
自从几天以来,我一直在使用MATLAB在dlopen某个时刻发生同样的错误。 我对MATLAB很新,这就是为什么我不知道该怎么做。 谷歌似乎也没有帮助我。 当我尝试创build一个特征向量时,我得到这个: Error using eig LAPACK loading error: dlopen: cannot load any more object with static TLS 我也做这个乘法: Error using * BLAS loading error: dlopen: cannot load any more object with static TLS 我当然想find解决这个问题的办法,但我不太了解,不知道该怎么办。 这些是我find的线程: 我如何使用MATLAB提供的BLAS库? http://www.mathworks.de/de/help/matlab/matlab_external/calling-lapack-and-blas-functions-from-mex-files.html 有人能帮助我吗? 函数调用的例子演示了这个错误 >> randn(3,3) ans = 2.7694 0.7254 -0.2050 -1.3499 -0.0631 -0.1241 3.0349 0.7147 1.4897 >> […]
我不明白BLAS,LAPACK和ATLAS是如何相关的,我应该如何将它们一起使用! 我一直在浏览所有的手册,我对BLAS和LAPACK有一个总体的概念,以及如何使用它们,但是我找不到任何使用ATLAS的实际例子来看看它是如何相关的这两个。 我想在matrix上做一些低级别的工作,而我的主要语言是C.首先,我想使用GSL,但是如果你想要最好的性能,你应该使用BLAS和ATLAS。 有没有什么好的网页给出一些如何使用这些(在C中)所有在一起的好例子? 换句话说,我正在寻找关于使用这三个(或他们的任何子集!)的教程。 总之我很困惑!
基于这个步骤,我基于blas和lapack来或多或less地构build了我的numpy / scipy环境。 当我完成后,我该如何检查,我的numpy / scipy函数是否确实使用了先前构build的blas / lapackfunction?
我正在尝试使用点积,matrix求逆和其他基本的线性代数运算,这些运算可以从Cython的numpy中获得。 函数如numpy.linalg.inv (反转), numpy.dot (点积), Xt (matrix/数组的转置)。 调用numpy.*有很大的开销,从Cython函数和其余的函数是用Cython编写的,所以我想避免这种情况。 如果我假设用户安装了numpy ,有没有办法做到这样的事情: #include "numpy/npy_math.h" 作为一个extern ,并且调用这些函数? 或者直接调用BLAS(或者是这些核心操作的numpy调用)? 举一个例子,假设你在Cython中有一个函数做很多事情,最后需要做一个包含点积和matrix求逆的计算: cdef myfunc(…): # … do many things faster than Python could # … # compute one value using dot products and inv # without using # import numpy as np # np.* val = gammaln(sum(v)) – sum(gammaln(v)) + dot((v […]
我正在尝试在Python中实现大量的matrix – matrix乘法。 最初,我认为NumPy会自动使用我的线程化BLAS库,因为我已经针对这些库构build了它。 但是,当我看到顶部或其他东西,似乎代码根本不使用线程。 任何想法什么是错的,或者我能做些什么来轻松使用BLAS的性能?
TL; DR如何在不重build的情况下将ATLAS / MKL链接到现有的Numpy。 我用Numpy来计算大matrix,我发现它很慢,因为Numpy只使用1个核心来进行计算。 做了很多search之后,我发现我的Numpy没有链接到像ATLAS / MKL这样的优化库。 这是我的numpy的configuration: >>>import numpy as np >>>np.__config__.show() blas_info: libraries = ['blas'] library_dirs = ['/usr/lib'] language = f77 lapack_info: libraries = ['lapack'] library_dirs = ['/usr/lib'] language = f77 atlas_threads_info: NOT AVAILABLE blas_opt_info: libraries = ['blas'] library_dirs = ['/usr/lib'] language = f77 define_macros = [('NO_ATLAS_INFO', 1)] atlas_blas_threads_info: NOT AVAILABLE openblas_info: […]
我正在尝试安装OpenBLAS numpy ,但是我不知道如何编写site.cfg文件。 遵循安装过程时,安装完成时没有错误,但是从1(由环境variablesOMP_NUM_THREADS控制)增加OpenBLAS使用的线程数会降低性能。 我不确定OpenBLAS集成是否完美。 任何一个可以提供一个site.cfg文件来实现相同的。 PS:在其他工具包(如基于Python的Theano)中集成OpenBLAS,可以在同一台机器上增加线程数量,大大提高性能。
我不确定这是否会成为一个操作系统问题,但我想我会问在这里,以防有人从Python的一端有所了解。 我一直在尝试使用joblib来并行执行一个CPU joblib循环,但是我发现,不是每个工作进程被分配到不同的内核,而是最终将所有这些进程分配给相同的内核,而且性能没有提高。 这是一个非常微不足道的例子… from joblib import Parallel,delayed import numpy as np def testfunc(data): # some very boneheaded CPU work for nn in xrange(1000): for ii in data[0,:]: for jj in data[1,:]: ii*jj def run(niter=10): data = (np.random.randn(2,100) for ii in xrange(niter)) pool = Parallel(n_jobs=-1,verbose=1,pre_dispatch='all') results = pool(delayed(testfunc)(dd) for dd in data) if __name__ == […]