Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何利用GPU将大型dask阵列(numpy.ndarray)写入Zarr文件?_Python_Python 3.x_Dask_Cupy_Zarr - Fatal编程技术网

Python 如何利用GPU将大型dask阵列(numpy.ndarray)写入Zarr文件?

Python 如何利用GPU将大型dask阵列(numpy.ndarray)写入Zarr文件?,python,python-3.x,dask,cupy,zarr,Python,Python 3.x,Dask,Cupy,Zarr,我正在尝试使用dask将一个大型dask数组(46 GB,124--370 MB块)写入一个zarr文件。如果我的dask数组名为dask_data,那么一个简单的dask_data.to_zarr(“my_zarr.zarr”)就可以了。但据我所知,这是一个同步的、CPU受限的进程 我想做的是使用并行处理分配给Quadro GV100 GPU的大部分工作。我试图通过dask\u data\u cupy=dask\u data.map\u块(cupy.asarray)将numpy.ndarray

我正在尝试使用dask将一个大型dask数组(46 GB,124--370 MB块)写入一个zarr文件。如果我的dask数组名为
dask_data
,那么一个简单的
dask_data.to_zarr(“my_zarr.zarr”)
就可以了。但据我所知,这是一个同步的、CPU受限的进程

我想做的是使用并行处理分配给Quadro GV100 GPU的大部分工作。我试图通过
dask\u data\u cupy=dask\u data.map\u块(cupy.asarray)
将numpy.ndarray转换为cupy.ndarray,并将其写入一个zarr文件,但我收到:

值错误:object\uu数组\uuuuuuu方法不生成数组(坦白说,我也没有看到性能提升)。

如何使用GPU并行地将dask数组写入zarr文件


谢谢

我认为在调用
到\u zarr
之前,您需要添加
dask\u data.map\u块(cupy.asnumpy)


CuPy试图确保用户打算进行设备到主机的传输(因为这些传输可能很昂贵)。因此,在CuPy数组上调用
numpy.asarray
时(正如在本次编写过程中所发生的那样)会故意引发问题。

我认为在调用
到\u zarr
之前,您需要添加
dask\u data.map\u块(CuPy.asnumpy)

CuPy试图确保用户打算进行设备到主机的传输(因为这些传输可能很昂贵)。因此,在CuPy数组上调用
numpy.asarray
时,会故意引发此问题(在写入过程中会发生这种情况)

但据我所知,这是一个同步的、CPU受限的进程

这可能不是真的,您的瓶颈可能是存储设备。在任何情况下,每个块都会写入一个单独的文件,并在线程和/或进程之间并行(取决于您的设置)。这就是zarr设计的全部要点,即应用程序可以独立地与每个块交互

如果选择使用各种压缩编码,可能会受到CPU的限制;然而,这些并不一定适合GPU操作

简而言之,除非您的数据已经在GPU上生成,否则如果在写入文件之前将其传输到GPU进行处理是值得的,我会感到惊讶。如果有一个直接读/写cupy数组到zarr的函数,并且你也在GPU上处理,那就不同了——但我不相信有

但据我所知,这是一个同步的、CPU受限的进程

这可能不是真的,您的瓶颈可能是存储设备。在任何情况下,每个块都会写入一个单独的文件,并在线程和/或进程之间并行(取决于您的设置)。这就是zarr设计的全部要点,即应用程序可以独立地与每个块交互

如果选择使用各种压缩编码,可能会受到CPU的限制;然而,这些并不一定适合GPU操作

简而言之,除非您的数据已经在GPU上生成,否则如果在写入文件之前将其传输到GPU进行处理是值得的,我会感到惊讶。如果有一个直接读/写cupy数组到zarr的函数,并且你也在GPU上处理,那就不同了——但我不相信有