首页 > 解决方案 > APGAS框架中places和workers的区别以及workers是如何在Java中实现的?

问题描述

我一直在阅读 Lifeline 全球负载平衡论文(该论文可在链接http://www.cs.columbia.edu/~martha/courses/4130/au12/p201-saraswat.pdf上找到)。我是 x10 语言的新手。我实际上对地方工人的术语感到困惑。据我了解,地点是分布式系统中的不同节点,工作人员是这些地点上的线程(或进程,我不知道)。我对吗?

另外,除此之外,环境变量X10_NUM_THREADS和? 之间的核心区别是什么X10_STATIC_THREADS?我知道这些是在 x10 中实现工人的方法。但是我们如何在 Java 的 APGAS 框架中实现这一点呢?我们是否也在 Java 中使用相同的变量?

提前致谢

标签: theorylanguage-implementationx10-language

解决方案


您认为地方是分布式系统中的节点而工作人员是线程的理解基本上是正确的。这篇论文有点令人困惑,因为它对每个地方的一名工人进行了任意限制。

环境变量X10_NUM_THREADS控制每个 X10 位置应该有多少工作线程处于活动状态。X10 运行时可能会在某个地方启动额外的线程来替换等待长时间运行的阻塞操作的线程,例如,使用at(Place(p)) { ... }. 一旦阻塞操作完成,运行时将尝试减少活动线程的数量,以确保X10_NUM_THREADS每个地方始终有活动执行(或可执行)的活动。

如上所述,环境变量X10_STATIC_THREADS阻止 X10 创建额外的工作线程。这在一些不支持动态线程创建的架构上是必要的,例如基于生命线的全局负载平衡论文中使用的 Blue Gene/P。对于更典型的体系结构,例如基于 x86 的节点集群,通常不会设置此变量。

在 Java 的 APGAS 库中,环境变量APGAS_THREADS控制每个位置的线程数。我不相信有任何等价于X10_STATIC_THREADS.


推荐阅读