是否有可能将此python函数矢量化以在gpu上运行?

时间:2018-03-10 01:17:54

标签: python parallel-processing gpu vectorization numba

我有这个函数(见下文),它取一个点坐标元组,如果该点在一个形状多边形(全局变量)内,则返回一个bool。我想将它向量化以获取元组数组并返回等效的bool数组。

它与numpy.vectorize配合得很好,但它很慢(6-7s),特别是因为我在for循环中调用它。

我读到GPU上的运行功能可能比在单核上运行它更快。这是我根据互联网上的例子尝试的,但我在函数装饰器上得到了TypeError: invalid signature: 'str' instance not allowed

功能签名有什么问题,如何解决?

import shapely.geometry as sp
import numba as nb
import numpy as np

#the matrix of tuples:
obj_location = np.empty((800,800), object)
for idx in np.ndindex(maxY,maxX):
    obj_location[idx] = idx

#the polygon
poly=sp.Polygon([(200,200),(200,600),(600,600),(600,200)])

#function definition
@nb.vectorize(['bool(tuple)'], target='cuda')
def inside(point_coordinates):
    (y,x) = point_coordinates
    return poly.contains(sp.Point(x,y))

#call function
inside(obj_location)

0 个答案:

没有答案