如何解决在本机python中加速Hausdorff?
我有两个用于描述3D模型的Numpy数组,每个数组的形状均为(471843,3)
,其中的“ 3”表示空间坐标值,x,y和z和“ 471843”是顶点。
我正在尝试使用https://github.com/mavillan/py-hausdorff中的Hausdorff函数来计算两者之间的Hausdorff距离。
该函数正在执行,但似乎没有停止。它运行了将近40分钟,仍然没有任何停止的迹象。这是因为需要很长时间还是其他原因?另外,从我收集到的它的可并行化功能开始,那么如何将执行导出到CUDA GPU来加快处理速度?
解决方法
Q :“这是因为需要很长时间还是其他原因?”
测试!
在( 1E1,1E2,1E3,1E4 )
数据点上运行相同的功能,您可以轻松得出4.7E5
数据点的ETA。公平,不是吗?
from zmq import Stopwatch; aClk = Stopwatch()
SIZINGs = ( 1E1,2E1,5E1,2E2,5E2,2E3,5E3,1E4,2E4,5E4
)
MASK = "INF: a problem-size {0:>5d} took {1:>12d} [us] to process"
TIMINGs = {}
#-------------------------------------------------------------------------
print( 80*"_" )
for aSize in SIZINGs:
aClk.start()
_ = 3D_wrapper_for_HausdorfDistance( data = DATA[:int(aSize),:],distance = aCustomHausdorfDistance_in3D
)
TIMINGs[aSize] = aClk.stop()
print( MASK.format( aSize,TIMINGs[aSize] )
print( 80*"_" )
#-------------------------------------------------------------------------
Q :“ ...如何将执行导出到CUDA GPU以加快处理速度?”
首先解决,如果设计和执行CUDA内核有意义,以便在性能方面有意义就可以使用。如果显示,则没有比本地N x 3+ [GHz]
- LARGE-Cache -设备更快的执行速度的机会,然后才开始努力移植算法,以有效利用受限精度的当代GPU SMX SIMD处理器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。