我正在探索三维交互式体积卷积与一些简单的模板使用dask。 让我解释一下我的意思:
现在最重要的部分是:
你认为有可能吗?
为了用图像来解释这一点,请将其视为三维区域分解(这是来自DWT的,但有利于说明from here):
illistration of domain decomposition
假设有一个函数可以使用dask计算整个体积的三维变换。 但我想得到的是转换后的3D数据的2D图像,它由LLL1、LLH1、HLH1、HLL1平面组成(基本上是一个单切片)。在
重要的部分不是计算整个子立方体,而是让dask以某种方式自动跟踪计算图中的依赖关系并只计算那些依赖关系。
请不要担心compute v.s.复制时间。 假设它有完美的比率。在
如果需要更多的澄清请告诉我! 谢谢你的帮助!在
不是为了贬低@MRocklin精心设计的答案,而是为了补充更多内容。在
我也经常发现自己需要做一些事情,如边缘检测和其他图像处理技术的大规模数组数据。由于Dask是一个非常好的库,可以在大型数组数据上构建和探索这样的计算工作流,因此我们在一个名为dask-image的GitHub组织中为一些常见的图像处理技术组合了一些实用程序库。它们在很大程度上被设计成模仿SciPy的ndimageAPI。在
至于在Dask中使用Sobel运算符,可以使用来自dask-ndfilters(许可证)的^{} 函数在Dask数组上执行此操作。它在引擎盖下的方块上处理适当的光环,返回一个新的达斯克阵列。在
由于SciPy的^{} 函数(以及dask ndfilters的
sobel
)在一维上运行,因此需要映射到每个轴和堆栈上以获得完整的Sobel运算符结果。也就是说,这是很简单的。下面是一个简短的片段,展示了如何在随机Dask数组上执行此操作。还包括沿XZ平面切一片。尽管可以很容易地获取其他切片或对数据执行附加操作。在希望这有帮助。:)
我听到一些问题。我会一一回答
是的。延迟Dask操作生成依赖关系图。在下列情况下磁盘阵列此图是按块显示的。如果您的输出只依赖于图的一个子集,那么Dask将删除不必要的任务。这方面的深入文档是here,特别是cull优化。在
以这个100000乘100000数组为例
假设我从中添加了几个1d切片
^{pr2}$得到的优化图只足够计算输出
我们可以很快计算出结果:
现在,这并不完美。它必须生产出我们两个切片接触到的所有1000x1000块。但你可以在那里控制粒度。在
简短回答:Dask将自动检查图形,只运行评估输出所需的任务。你不需要做任何特别的事来做这件事。在
也许吧。相关文档页在Overlapping Blocks with Ghost Cells上。磁盘阵列有方便的功能,便于写下来。但是它将创建内存中的副本。很多处在你这种地位的人觉得memcopy太慢了。Dask通常不支持就地计算,所以我们不能像正确的MPI代码那样高效。不过,我还是把性能问题留给你。在
相关问题 更多 >
编程相关推荐