如何使用Dask在GPU上运行python代码?

如何使用Dask在GPU上运行python代码?,python,dask,dask-distributed,Python,Dask,Dask Distributed,我有一些使用Numba cuda.jit的代码,以便在gpu上运行,如果可能的话,我想将dask层放在上面 示例代码 #/usr/bin/env蟒蛇3 #-*-编码:utf-8-*- 来自njit numba import cuda 将numpy作为np导入 来自dask.distributed import Client,LocalCluster @cuda.jit() def addingNumbersCUDA(大数组、大数组2、保存数组): i=cuda.grid(1) 如果i

我有一些使用Numba cuda.jit的代码,以便在gpu上运行,如果可能的话,我想将dask层放在上面

示例代码

#/usr/bin/env蟒蛇3
#-*-编码:utf-8-*-
来自njit numba import cuda
将numpy作为np导入
来自dask.distributed import Client,LocalCluster
@cuda.jit()
def addingNumbersCUDA(大数组、大数组2、保存数组):
i=cuda.grid(1)
如果i

如果我的函数
addingNumbersCUDA
没有使用任何CUDA,我只会将
client.submit
放在我的函数前面(以及后面的gather),它就会工作。但是,由于我正在使用CUDA,将submit放在函数前面不起作用。dask文档中说,您可以将gpu作为目标,但实际上如何设置它还不清楚。如果可能的话,我将如何设置我的函数,使其与目标gpu和cuda.jit一起使用dask?

您可能需要仔细查看

但是,由于我正在使用CUDA,将submit放在函数前面不起作用


这种情况没有特别的原因。所有Dask都会在不同的计算机上运行您的函数。它不会以任何方式更改或修改您的函数。

我已经为gpu设置了dask worker,并将我的函数设置为“x=client.submit(addingNumbersCUDA[blockspergrid,threadsperblock],big_数组,big_数组2,save_数组,resources={gpu':1})”,但当我收集它时,返回“none”。你知道为什么吗?你的函数没有返回值。看起来您正在存储一个out参数作为副作用。我建议构建一个可重新运行值的函数。我不能专门从numba cuda函数返回值。“内核无法显式返回值;所有结果数据都必须写入传递给函数的数组。”是否可以从dask获取存储在我的数组中的结果?您可以在Numba函数周围创建另一个函数来处理突变和就地行为。Dask不支持就地操作。通常,您的新函数将分配一个输出数组,调用您的就地操作函数,然后正常返回输出数组。