x10 - 在 x10 中调用此排序功能的正确方法是什么?
问题描述
我正在尝试使用 qsort() 对 x10 中的数组进行排序。
首先我正在编写顺序代码,所以没有问题。现在,我正在尝试并行化我的代码。现在我需要从不同的地方运行这个排序功能。
public def qsort_cmp_idx(var a:Long,var b:Long):Int
{
if(item_order(a)<item_order(b)) return x10.lang.Int.operator_as(-1);
else if (item_order(a)>item_order(b))
return x10.lang.Int.operator_as(1);
else return x10.lang.Int.operator_as(0);
}
x10.util.RailUtils.qsort(jump,jt,jump_siz-1,(i:Long,j:Long)=>qsort_cmp_idx(i,j));
item_order 是地点 0 的 Rail[Long],而 jump 是其他地点 x 的 Rail[Long]。
实现这一目标的最佳方法是什么?
解决方案
在您的代码片段中,将在地点 x 运行的 qsort_cmp_idx 函数需要访问地点 0 的数据(item_order Rail)。在 X10 中,活动只能访问其当前运行的地点中的数据。因此,您需要 (a) 在调用 qsort 之前将 item_order 复制到 Place x 或 (b) 使用 qsort_cmp_idx 中的 at 构造临时转移到 Place 0 以访问 item_order。选项 (a) 很可能是最好的方法,因为在 qsort 中的每个比较操作中从 Place x 转移到 Place 0 会非常慢。
推荐阅读
- java - 如何在抛出 FILENOTFOUNDEXCEPTION 后恢复我离开的代码
- python - 检查使用 ETRS89 或 WGS84 的十进制纬度经度是否处于形状中
- android - 设置中的一个字段可以依赖于xml中的另外两个吗?
- angular - 剑道下拉列表弹出高度不起作用
- kubernetes - 为什么要在 kubernetes 清单文件前加上数字?
- android - 无法在 android Pie 中创建通知
- java - Flink BoundedOutOfOrdernessGenerator 水印问题
- python - 谷歌 API。导入的库没有属性
- python - 如何在文本小部件上禁用 I-Beam 光标
- java - 如何使 MINA 客户端消息事件触发?