numpy比pandas运算快,numpy速度快的原因

  numpy比pandas运算快,numpy速度快的原因

  要使用数字报创建简单的矩阵向量乘法:

  从数字报进口库达

  来自数字迷情导入*

  导入编号为公证人

  导入匹配

  fromtimeitimportdefault _ timerastime

  n=100

  @cuda .JIT(void ) float 32 [ : ]、float 32 [ : ]、float 32 [ : ])

  EFCu_matrix_vector(a,b,c):

  y,x=cuda.grid (2((2)2)))))))))))))。

  如果是n:

  c[y]=0.0

  如果x n和y n:

  forIinrange(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=cuda.to_device(b)

  DC=cuda。至_设备(三)

  Cu_matrix_vector(da,dB,dC))。

  dC.to_host()

  e=time())

  tcuda=e - s

  但是,我得到了以下错误:

  numba pro。cuda drv。错误。cudadrivererror:cuda _ error _ launch _ failedfailedtocopymemoryd-h

  我不知道为什么主机复制的设备失败了。请帮帮我

  解决方法:

  代码有多个问题。

  b向量和c向量是Nx1 2D矩阵而不是1D向量,但在内核类型签名中列为"浮舟32[:]”——1D向量。此外,还使用单个索引创建索引,从而导致国家政治保卫局。参见国家政治保卫局上的运行时错误()

  你的内核假设是2D网格,但只使用那一列。这意味着许多线程进行相同的计算,并相互覆盖

  由于未给出运行配置,NumbaPro正在启动包含一个线程的内核(nvprof是你的朋友!)

  这是有效的代码。请注意,这是使用1D网格的1D网格,在矩阵列中循环。因此,在向量/矩阵行数较多的情况下进行了优化。针对短矩阵和宽矩阵优化的内核需要不同的方法(并行缩小)。但是,我要用库布拉斯斯盖姆夫。(

  从数字报进口库达

  来自数字迷情导入*

  导入编号为公证人

  导入匹配

  fromtimeitimportdefault _ timerastime

  m=100000

  n=100

  @ cuda .JIT (void (F4 [ : ]、F4 [ : ]、F4 [ : ]))

  EFCu_matrix_vector(a,b,c):

  row=cuda.grid(1)))))。

  if(rowm):

  总和=0

  forIinrange(n):

  sum=A[row,i] * b[i]

  c[行]=总和

  a=NP.array(NP.random.random ) (m,n))、dtype=np.float32)。

  b=NP.array(NP.random.random(m),dtype=np.float32))。

  c=NP.empty_like(b)

  s=time())

  da=cuda.to_device(a)

  db=cuda.to_device(b)

  DC=cuda。至_设备(三)

  Cu _ matrix _ vector [ [ m511 ]/512,512 ] [ da,dB,DC]

  dC.to_host()

  打印C

  e=time())

  tcuda=e - s

  标签:python、numpy、cuda、numba、numba-pro

  资料来源https://codeday.me/bug/2019 05 17 1120484。超文本标记语言

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: