Dyalog APL 中的并行会话

Lur*_*Bee 4 apl dyalog

至少有一种单字母语言(当然q)具有进程间通信的功能,这是一种在多台计算机上并行执行长时间运行的进程的方法。这些会话可以位于同一台计算机上,也可以位于不同大陆的服务器上。

使用 q,我只需启动一个服务器来侦听特定端口(例如 )q -p 8510,然后从另一个 q 会话或其他软件访问它。令人印象深刻的简单。

我记得,在很遥远的过去,我使用大型机 APL 系统,Shared Variables可以与其他用户共享变量。这可能是IBM APL.SV。当时我并没有想太多,但几十年后的今天,这Shared Variables听起来像是并行会议的基础。与另一台计算机共享变量。

我今天如何能够或将使用 Dyalog APL 或任何其他 APL 来做到这一点,我可以

  • 在另一台物理计算机上调用 APL 会话

  • 向其发送命令或表达式

  • 收到结果

  • 可能会在许多其他计算机上并行执行此操作

Mor*_*erg 5

事实上,Microsoft Windows 下的 Dyalog APL 中仍然通过 DDE 协议支持“老式”共享变量,但它们已被视为已弃用。

Dyalog APL 的最新版本支持通过isolates并行或异步执行,isolates 是作为活动工作区的扩展出现的单独进程。在isolate 中执行的任何表达式都会立即返回future。Future 可以作为参数传递给函数,并且可以通过结构原语进行操作而不会阻塞;如果它们被传递给需要知道值的原始函数,它们将自动阻塞,直到结果计算完成。

futures 和isolates 的文档是在线的,并且有许多在线视频 - 例如,这里有在Dyalog'14上介绍它们的演讲:

视频缩略图
YouTube 上使用 Dyalog 14.0 进行并行编程

在 17.0 版本中,我们将包括对 APLSSH 类的支持,这将使在远程计算机上启动隔离变得简单。

最后,如果您想在已经运行的 APL 进程之间进行通信,TCP 库“Conga”(也包含在标准 Dyalog 安装中)允许您使用 TCP/IP 在进程之间传递 APL 数组,即使进程是运行在不同的机器架构上。Conga 的文档也在线