parallel edt论文 (maurer and mejuster)

MJ

intro

两个phase,

  • 扫描(x,y)所在的列,也就是x固定。计算列上每一个点到(x,y)的直线距离。
  • 扫描行,计算距离。

phase 1

就是双向扫描,
在这里插入图片描述

phase 2

scan 3:

先解释一下抛物线。固定y=y0,给定obs坐标(i,j),那么y0这条线上的点到obs就是抛物线。
在这里插入图片描述
在这里插入图片描述

u在x轴递增(0–>m-1),先不考虑i>u处的obstacle。
case b:
如果u处的obs和y0上所有点的距离(用t[q]来代表),比所有点与其之前计算过的最近obs距离都要小,那么u将之前的obs都dominant了,现在只有一个seg,那就是u对y0的距离抛物线。
如果不是case b,那么计算x轴上转折点,也就是u可以dominant多少。算出的转折点是w,如果w>m,那么就是case a,不符合。
case c: 在x>w的时候,u dominant其他obs,此时进行更新。
增加一段seg;
增加的seg最近的obs为u;
增加一个转折点。

scan 4:

从后向前计算dt.遇上一个分界点,将obs切换到左边一个。

实现细节

github cutt
CUTT: A HIGH-PERFORMANCE TENSOR TRANSPOSE LIBRARY FOR GPUS

cutt将_g拷贝到_h并进行旋转

代码中使用了4个phase。每个phase之间有tensor transpose,进行坐标变换。顺便sync threads,为下一个Phase做准备。
cutt_plan我是真不知道,所以坐标变换顺序是瞎说的,还要问问shupeng才能搞清楚。
可以参考swap axis–permutation
phase1:双向扫描。 坐标:xyz(mnp)
phase2: scan3 和scan4,生成二维EDT。 坐标:y’x’z’(nmp)。
在这里插入图片描述
这里的x其实是变换后的y。在这个thread上,变换后的y被看作常量,是Phase1计算好的g(现在叫h)。在x上iter
phase 3: 在z轴上进行scan3 和scan 4,生成三维EDT。按照初始状况来看,坐标:z’‘x’‘y’’(npm)。此时变换后的z被看作常量。在y’'上iter
phase 4: 更新seen map。局部地图加上偏置,就可以更新全局地图。
此时坐标转回xyz。

  • 如果要用dynamic parallism需要额外链接步骤
    在这里插入图片描述

maurer

利用3 remarks:

remark 1

vironoi sites in this dimension can be compisited by vironoi sites in lower dimension .
–> dim reduction

remark 2

单调性,有了一系列VCd的集合,可以根据他们在d维度上的坐标值,用一遍扫描来决定Rd上点对应的VC。

remark 3

有u,v,w三个VC,根据他们之间垂直平分线在Rd上的交点坐标顺序,可以判断中间点v是否intersect Rd.

Lau

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值