问题标签 [numba]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
42755 浏览

python - 为 python 安装 numba

我正在尝试为 python 安装numba,但是在按照主页的说明进行操作后,我收到了无法找到 extension_types 页面的错误。

如果有人知道我做错了什么或者我错过了应该安装的东西,我将不胜感激。

非常感谢您提前。

编辑:我通过以下方式安装了 numba:

当我尝试通过 pip 安装它时,出现以下错误:

0 投票
1 回答
1328 浏览

python - 用于矢量化函数的 Python 和 Numba

美好的一天,我正在为一些数字工作编写一个 Python 模块。由于发生了很多事情,我最近几天一直在优化代码以缩短计算时间。但是,我有一个关于 Numba 的问题。基本上,我有一个包含一些字段的类,这些字段是 numpy 数组,我通过以下方式对其进行初始化:

因此,代码是矢量化的,并且使用 Numba 的 JIT 会带来一些改进。但是,有时我需要从类外部访问 calculate_vibr_energy 函数,并传递一个整数而不是数组来代替 i。据我了解,如果我在 calculate_vibr_energy 上使用 Numba 的 JIT,它必须始终将数组作为参数。

那么,以下哪个选项更好: 1) 创建一个新函数 calculate_vibr_energy_single(i),它只接受一个整数,并在其上使用 Numba 2) 替换与此类似的函数的所有用法:

有了这个:

还是有其他更有效(或至少更 Python-ic)的方法来做到这一点?

0 投票
2 回答
1983 浏览

python - Anaconda 的 NumbaPro CUDA 断言错误

我正在尝试使用 NumbaPro 的 cuda 扩展来乘以大型数组矩阵。我最终想要的是将大小为 NxN 的矩阵乘以一个对角矩阵,该对角矩阵将作为一维矩阵输入(因此,a.dot(numpy.diagflat(b)) 我发现它是 a 的同义词* b)。但是,我收到一个不提供任何信息的断言错误。

如果我将两个一维数组矩阵相乘,我只能避免这个断言错误,但这不是我想要做的。

这是我的终端吐出的内容:

0 投票
0 回答
411 浏览

python-3.3 - Python 3.3 64 的 Numba 崩溃

我正在尝试复制此博客文章中的示例:

http://jakevdp.github.io/blog/2013/06/15/numba-vs-cython-take-2/

在我实现 Numba 后,我得到以下回溯:

我对python很陌生,所以我自己无法处理。在第一次运行中,我使用的是 scipy 包 + numba 和从此处下载的依赖项:http : //www.lfd.uci.edu/~gohlke/pythonlibs/,在 winpython 上尝试了相同的操作(完全重新安装了 python),结果仍然相同. Python版本是3.3 64

0 投票
1 回答
600 浏览

python - 需要帮助矢量化代码或优化

我试图通过首先对数据进行插值来制作一个曲面来进行双积分。我正在使用 numba 来尝试加快这个过程,但这需要的时间太长了。

这是我的代码,运行代码所需的图像位于此处此处

0 投票
1 回答
263 浏览

makefile - Numba 安装和“make check-all”

我一直在尝试在虚拟环境中安装 numba。Numba 需要 llvm 以及似乎是 llvmpy 的 Python 包装器。我使用以下步骤成功安装了它:

但是,我想知道正确的程序是什么。例如,在 and 行REQUIRES_RTTI=1 makesudo REQUIRES_RTTI=1 make install,变量 REQUIRES_RTTI 被重复。有必要吗?

根据 numba 的文档,它建议执行REQUIRES_RTTI=1 make install和 llvmpy 建议REQUIRES_RTTI=1 make,所以略有不同。我真的不知道每个步骤在做什么,所以我希望能对正在发生的事情进行一般性解释,以及所有这些步骤是否都是绝对必要的。

此外,什么是make check-all?我已经看到它在与 llvm 相关的问题中特别相关,但我不知道它的目的是什么。

llvmpy 文档中的另一个建议是使用不同的目录(--prefix)进行安装。为什么这是推荐的方法?

非常感谢

0 投票
1 回答
1539 浏览

python - 无法导入 numba

好的,我正在使用 python 3.3。我安装了 numpy、llvm、llvmpy、llpyhton、llvm_array、llvm_cbuilder 和 llvmath。我也安装了numba。

但是,尝试通过 导入时import numba,会出现以下错误。我不知道可能缺少什么:

有任何想法吗?

0 投票
3 回答
2438 浏览

python - 分配给数组时Numba慢吗?

Numba 似乎是加速数字代码执行的绝佳解决方案。但是,当对数组进行赋值时,Numba 似乎比标准 Python 代码慢。考虑这个例子,比较四个替代方案,有/没有 Numba,写入一个数组/标量:

(计算故意保持非常简单,以关注问题,即分配给标量与分配给数组单元)

使用 IPython 的 %timeit 来评估我得到的四个备选方案:

使用Numba编译的 sum_arr 比使用 Numba 编译的 fast_sum_arr 快两倍以上。另一方面,使用 Numba编译的 fast_sum_sclr 比未使用 Numba 编译的 sum_sclr 快两个数量级以上。

所以 Numba 在加速 sum_sclr 的任务上表现得非常好,但实际上使 sum_arr 执行得更慢。sum_sclr 和 sum_arr 之间的唯一区别是前者分配给标量,而后者分配给数组单元。

我不知道是否有任何关系,但我最近在博客http://www.phi-node.com/上阅读了以下内容:

“事实证明,当 Numba 遇到任何它不直接支持的构造时,它会切换到(非常)慢的代码路径。”

博客作者使用 if 语句而不是 Python 的 max() 让 Numba 执行得更快。

对此有何见解?

谢谢,

FS

0 投票
1 回答
1268 浏览

python - 使用python模块numba时出错

我已经安装了LLVM 3.2numba的所有依赖项(Meta 除外):

  • LLVM 3.1 或 3.2
  • llvmpy(来自 llvmpy/llvmpy fork)
  • llvm数学
  • numpy(1.6 或更高版本)
  • Meta(来自 numba/Meta fork(可选))
  • Cython(仅构建依赖项)
  • 鼻子(用于单元测试)
  • argparse(用于 pycc)

我根据此页面https://github.com/llvmpy/llvmpy上的说明安装了 LLVM 3.2 和 llvmpy 。所有其他 python 模块都是使用pip安装的:

接下来,我尝试了此页面上的 numba 示例:http: //jakevdp.github.io/blog/2012/08/24/numba-vs-cython/。我将两者都存储pairwise_pythonpairwise_numba一个名为performance.py. 然后当我跑

在 IPython 中,我收到以下错误:

而且我无法使用pairwise_python 或pairwise_numba。我怎样才能让它工作?

系统信息

  • Linux Mint 13 KDE,64 位
  • 默认 gcc 编译器版本:4.8
  • Python 2.7.3(使用 gcc 4.6.3 编译)
  • LLVM 3.2(使用 gcc 4.8 编译)
  • llvmpy 0.11.2
  • llvmth 0.1.1
  • numpy 1.7.1
  • 赛通 0.19.1
  • 鼻子 1.3.0
  • 参数解析 1.2.1
0 投票
1 回答
675 浏览

python - 尝试 numba 的巨大错误

我在使用 numba 时遇到了大量错误。具有讽刺意味的是,正确的结果是在错误之后打印出来的。我正在使用最新的 Anaconda python 并安装了 numba

conda install numba

一次在 Ubuntu 13、64 位和 anaconda 64 位上,在 Windows 64 位上使用 32 位版本的 anaconda。

我要执行的脚本是:

我得到的错误是:

如您所见,最后会显示正确的结果。

有人知道这是什么原因吗?

谢谢!约翰富兰克林爵士