标签: numba-pro

Julia性能与Python + Numba LLVM/JIT编译代码相比

到目前为止我已经看过Julia的性能基准,例如http://julialang.org/,将Julia与纯Python或Python + NumPy进行比较.与NumPy不同,SciPy使用BLAS和LAPACK库,在这里我们获得了最佳的多线程SIMD实现.如果我们假设Julia和Python在调用BLAS和LAPACK函数时是相同的(在引擎盖下),当使用Numba或NumbaPro代码不调用BLAS或LAPACK函数时,Julia的性能与CPython相比如何?

我注意到的一件事是Julia使用LLVM v3.3,而Numba使用llvmlite,它建立在LLVM v3.5上.Julia的旧LLVM是否会阻止在较新的体系结构上实现最佳的SIMD实施,例如Intel Haswell(AVX2指令)?

我对意大利面条代码和小DSP循环的性能比较感兴趣,以处理非常大的向量.由于将数据移入和移出GPU设备内存的开销,后者由CPU为我更有效地处理GPU.我只对单个Intel Core-i7 CPU的性能感兴趣,因此集群性能对我来说并不重要.我特别感兴趣的是创建DSP功能的并行化实现的轻松和成功.

这个问题的第二部分是Numba与NumbaPro的比较(忽略了MKL BLAS).target="parallel"鉴于Numba装饰师的新nogil论点,NumbaPro 真的需要@jit吗?

python performance julia numba numba-pro

13
推荐指数
2
解决办法
3388
查看次数

PyCUDA和NumbaPro CUDA Python有什么区别?

我是CUDA的新手,我正在试图弄清楚PyCUDA(免费)NumbaPro CUDA Python(非免费)对我来说会更好(假设图书馆成本不是问题).

两者似乎都要求您使用各自的Python方言.但是,似乎PyCUDA要求你在C代码中编写一个内核函数,这比使用NumbaPro更麻烦,NumbaPro似乎为你做了所有艰苦的工作.

确实如此吗?会有显着的性能差异吗?

python cuda pycuda numba numba-pro

12
推荐指数
2
解决办法
8982
查看次数

如何在Colaboratory中使用numba

有人试图在谷歌合作中使用numba吗?我只是无法弄清楚如何在这种环境中进行设置.目前,我坚持错误library nvvm not found.

numba numba-pro google-colaboratory

6
推荐指数
1
解决办法
1309
查看次数

Anaconda Acclerate/NumbaPro CUDA链接错误OSX

总体目标是使用NumbaPro在GPU上运行某些功能(在OSX 10.8.3上).

在开始之前,我只想设置一切.根据这个页面,我安装了CUDA,注册为CUDA开发人员,下载了Compiler SDK并设置了NUMBAPRO_NVVM =/path/to/libnvvm.dylib环境变量.

但是,运行此基本测试功能:

from numbapro import autojit

@autojit(target='gpu')
def my_function(x):
    if x == 0.0:
        return 1.0
    else:
        return x*x*x

print my_function(4.4)
exit()
Run Code Online (Sandbox Code Playgroud)

出现此错误:

File ".../anaconda/lib/python2.7/site-packages/numba/decorators.py", line 207, in compile_function
    compiled_function = dec(f)
File "...lib/python2.7/site-packages/numbapro/cudapipeline/decorators.py", line 35, in _jit_decorator
File "...lib/python2.7/site-packages/numbapro/cudapipeline/decorators.py", line 128, in __init__
File "...lib/python2.7/site-packages/numbapro/cudapipeline/environment.py", line 31, in generate_ptx
File "...lib/python2.7/site-packages/numbapro/cudapipeline/environment.py", line 186, in _link_llvm_math_intrinsics
KeyError: 1
Run Code Online (Sandbox Code Playgroud)

我试过@ vectorize'ing而不是autojit,同样的错误.@autojit本身没有目标工作正常.

有任何想法吗?

python jit gpu anaconda numba-pro

5
推荐指数
1
解决办法
1122
查看次数

Numba矩阵向量乘法

我正在尝试使用numbapro编写一个简单的矩阵向量乘法:

from numbapro import cuda
from numba import *
import numpy as np
import math
from timeit import default_timer as time

n = 100

@cuda.jit('void(float32[:,:], float32[:], float32[:])')
def cu_matrix_vector(A, b, c):
    y, x = cuda.grid(2)
    if y < n:
        c[y] = 0.0

    if x < n and y < n:
        for i in range(n):
            c[y] += A[y, i] * b[i]


A = np.array(np.random.random((n, n)), dtype=np.float32)
B = np.array(np.random.random((n, 1)), dtype=np.float32)
C = np.empty_like(B)

s = time()
dA = cuda.to_device(A)
dB …
Run Code Online (Sandbox Code Playgroud)

python cuda numpy numba numba-pro

5
推荐指数
1
解决办法
3177
查看次数

如何正确使用anaconda加速GPU

我试图用anaconda加速快速计算矩阵.我从非常基本的例子开始:乘以2个矩阵.

我的目标是以某种方式获得GPU倍增,这比通常的numpy.dot更好

这是我的基本示例,基于此文档.

from numbapro import guvectorize
from numpy import arange

@guvectorize(['void(float32[:,:], float32[:,:], float32[:,:])'], '(m,n),(n,p)->(m,p)', target='gpu')
def matmul(A, B, C):
    m, n = A.shape
    n, p = B.shape
    for i in range(m):
        for j in range(p):
            C[i, j] = 0
            for k in range(n):
                C[i, j] += A[i, k] * B[k, j]

import numpy as np
import time

for dim in [50, 100, 200]:
    rnd = np.random.RandomState(0)
    a = rnd.rand(dim, dim).astype(np.float32)
    b = rnd.rand(dim, dim).astype(np.float32)
    resgpu = np.zeros_like(a) …
Run Code Online (Sandbox Code Playgroud)

numpy anaconda python-3.4 numba-pro

5
推荐指数
1
解决办法
1万
查看次数

cuda python GPU numbapro 3d loop poor performance

I am trying to set up a 3D loop with the assignment

 C(i,j,k) = A(i,j,k) + B(i,j,k)
Run Code Online (Sandbox Code Playgroud)

using Python on my GPU. This is my GPU:

http://www.geforce.com/hardware/desktop-gpus/geforce-gt-520/specifications

The sources I'm looking at / comparing with are:

http://nbviewer.ipython.org/gist/harrism/f5707335f40af9463c43

http://nbviewer.ipython.org/github/ContinuumIO/numbapro-examples/blob/master/webinars/2014_06_17/intro_to_gpu_python.ipynb

It's possible that I've imported more modules than necessary. This is my code:

import numpy as np
import numbapro
import numba
import math
from timeit import default_timer as timer
from numbapro import cuda
from numba import *

@autojit
def myAdd(a, b):
  return …
Run Code Online (Sandbox Code Playgroud)

python cuda gpu pycuda numba-pro

5
推荐指数
1
解决办法
1761
查看次数

函数名和参数之间的Python方括号:func [...](...)

我正在学习如何从这款笔记本上加速GPU上的py​​thon计算,其中一行令我困惑:

mandel_kernel[griddim, blockdim](-2.0, 1.0, -1.0, 1.0, d_image, 20)
Run Code Online (Sandbox Code Playgroud)

在此,mandel_kernel是一个装饰(通过cuda.jit)的功能,griddimblockdim是长度为2的元组:griddim=(32,16),blockdim=(32,8).

这个方括号是在python语法的函数名和参数列表部分之间,还是特定于cuda.jit装饰的东西?

python python-decorators numba numba-pro

4
推荐指数
1
解决办法
913
查看次数

删除 numba.lowering.LoweringError: 内部错误

我正在使用 numba 来加速我的代码,该代码在没有 numba 的情况下运行良好。但是在使用@jit 后,它会因以下错误而崩溃:

Traceback (most recent call last):
  File "C:\work_asaaki\code\gbc_classifier_train_7.py", line 54, in <module>
    gentlebooster.train(X_train, y_train, boosting_rounds)
  File "C:\work_asaaki\code\gentleboost_c_class_jit_v7_nolimit.py", line 298, in train
    self.g_per_round, self.g = train_function(X, y, H)  
  File "C:\Anaconda\lib\site-packages\numba\dispatcher.py", line 152, in _compile_for_args
    return self.jit(sig)
  File "C:\Anaconda\lib\site-packages\numba\dispatcher.py", line 143, in jit
    return self.compile(sig, **kws)
  File "C:\Anaconda\lib\site-packages\numba\dispatcher.py", line 250, in compile
    locals=self.locals)
  File "C:\Anaconda\lib\site-packages\numba\compiler.py", line 183, in compile_bytecode
    flags.no_compile)
  File "C:\Anaconda\lib\site-packages\numba\compiler.py", line 323, in native_lowering_stage
    lower.lower()
  File "C:\Anaconda\lib\site-packages\numba\lowering.py", line 219, in lower
    self.lower_block(block)
  File "C:\Anaconda\lib\site-packages\numba\lowering.py", line …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy numba numba-pro

4
推荐指数
1
解决办法
2991
查看次数

为什么numba cuda多次调用后运行缓慢?

我正在尝试如何在numba中使用cuda。但是,我遇到了与期望不同的事情。这是我的代码

from numba import cuda
@cuda.jit
def matmul(A, B, C):
"""Perform square matrix multiplication of C = A * B
"""
d=cuda.local.array((3,3),dtype=numba.float64)
i, j = cuda.grid(2)
if i < C.shape[0] and j < C.shape[1]:
    tmp = 0.
    for k in range(A.shape[1]):
        tmp += A[i, k] * B[k, j]
    C[i, j] = tmp
Run Code Online (Sandbox Code Playgroud)

这是我为使用numba.cuda进行测试而自定义的矩阵函数。在运行测试之前,我还通过以下代码加载了数组:

import numpy as np
a=np.random.rand(2000,2000)
b=np.random.rand(2000,2000)
c=np.empty((2000,2000))
a1=cuda.to_device(a)
b1=cuda.to_device(b)
c1=cuda.to_device(c)
Run Code Online (Sandbox Code Playgroud)

然后,我将以下代码用于实验:

from time import time
count =0
start=time()
for i in range(2000):
  matmul[(256,256),(16,16)](a1,b1,c1)
  count +=1
  print(count)
Run Code Online (Sandbox Code Playgroud)

for循环在第一个1028年运行非常快。但是在1028年之后它运行非常缓慢,究竟是什么原因造成的,以及如何解决它。顺便说一下,我在win10上运行。 …

cuda python-3.x pycuda numba numba-pro

2
推荐指数
1
解决办法
350
查看次数

Anaconda加速check_cuda()

什么是正确的anaconda加速功能来检查cuda?

使用numba-pro,您可以使用:

>>> from numbapro import check_cuda
numbapro:1: ImportWarning: The numbapro package is deprecated in favour of the accelerate package. Please update your code to use equivalent functions from accelerate.
>>> check_cuda()
CUDA is not available...
Run Code Online (Sandbox Code Playgroud)

要么

>>> numbapro.check_cuda()
------------------------------libraries detection-------------------------------
Finding cublas
    located at /home/usr/miniconda3/envs/cuda/lib/libcublas.so.7.0.28
    trying to open library...   ok
Finding cusparse
    located at /home/usr/miniconda3/envs/cuda/lib/libcusparse.so.7.0.28
    trying to open library...   ok
Finding cufft
    located at /home/usr/miniconda3/envs/cuda/lib/libcufft.so.7.0.35
    trying to open library...   ok
Finding curand
    located at /home/usr/miniconda3/envs/cuda/lib/libcurand.so.7.0.28
    trying to open library... …
Run Code Online (Sandbox Code Playgroud)

python python-3.x anaconda numba-pro accelerate

1
推荐指数
1
解决办法
1559
查看次数

没有名为numbapro的模块

我运行了这个我在CUDA Python简介页面上阅读的代码: -

import numpy as np
from timeit import default_timer as timer
from numbapro import vectorize

@vectorize(["float32(float32, float32)"], target='gpu')
def VectorAdd(a, b):
        return a + b

def main():
    N = 32000000

    A = np.ones(N, dtype=np.float32)
    B = np.ones(N, dtype=np.float32)
    C = np.zeros(N, dtype=np.float32)

    start = timer()
    C = VectorAdd(A, B)
    vectoradd_timer = timer() - start

    print("C[:5] = " + str(C[:5]))
    print("C[-5:] = " + str(C[-5:]))

    print("VectorAdd took %f seconds" % vectoradd_timer)

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

我在终端上收到以下错误: -

dtn34@dtn34-ubuntu:~/Python$ …
Run Code Online (Sandbox Code Playgroud)

python numba-pro

0
推荐指数
1
解决办法
2202
查看次数