WOLFRAM

技术

WSTPServer

连接和重新连接到长期运行的预初始化 Wolfram 引擎

WSTPServer 运行一个或多个 Wolfram 引擎池,供本地或网络上的任何客户端通过 WSTP 进行连接。

WSTPServer 是一种服务器程序,负责将来自客户端的所有通信转发给其管理的内核,使得与 WSTPServer 的连接如同直接连接到内核一样。WSTPServer 内核可在网络上被发现,因此可以在一台或多台机器上运行多个内核池。由于 WSTPServer 内核支持连接、断开及重新连接,您可以维护一个长效会话,并从不同的程序或机器连接到该会话。

功能

WSTPServer 提供了多种内核管理、连接和发现功能,以满足您的各种需求。

运行多个预初始化内核池

WSTPServer 可以运行多个内核池,每个池共享用户可配置的属性。内核会根据其所属池的属性进行预初始化。

在网络上可见

在默认配置下,WSTPServer 可在局域网内访问,允许用户从其他机器进行连接。

在网络上可被发现

WSTPServer 使用 DNS 服务发现(DNS-SD)在网络上广告自己,使客户端容易发现可用的 WSTPServer 实例和内核。

维持长效会话

WSTPServer 允许您重新连接到之前连接过的内核,即使是从另一台不同的机器发起连接也不受影响。

在专用机器上运行内核

WSTPServer 实例可以部署在专用机器上,从而确保仅由这些机器处理内核进程。由于 WSTPServer 实例可以在网络上被轻松发现,在多台专用机器上运行 WSTPServer 实例的配置过程非常简单。

从任意 WSTP 客户端连接

任何支持 WSTP 的程序均可连接到 WSTPServer。Wolfram 生态系统中的多个产品(包括 WolframScript、笔记本前端、并行计算框架及 J/Link)均明确支持 WSTPServer。

为并行计算提供内核

WSTPServer 能够启动并行内核并将其提供给 Wolfram 语言的并行计算功能使用。配置并行计算框架以使用这些内核非常简单。

便捷管理与所需内核的连接

WSTPServer 提供了配置文件系统,让您可以轻松管理与所需内核的连接。您可以在配置文件中指定内核的特定属性,并追踪之前连接过的内核详情,从而实现轻松重连。

查询 WSTPServer 状态

通过 WSTP 连接,您可以轻松查询 WSTPServer 的当前状态并获取诊断信息。

示例

WolframScript

在可用的 WSTPServer 中计算 Wolfram 语言代码 2+2:

$ wolframscript -wstpserver -code 2+2
            4

使用可用的 WSTPServer,在交互式 REPL 中运行 Wolfram 语言:

$ wolframscript -wstpserver
In[1]:= 2+2
                
                            Out[1]= 4
            
                            In[2]:=
                

笔记本前端

使用笔记本前端连接到 WSTPServer。获取已连接的 WSTPServer 内核的 ID 及其所属内核池的名称,并对一个测试表达式求值:

并行计算功能

从 Wolfram 语言连接到 WSTPServer 并行内核,并在并行计算中使用它们:

WSTP C 程序

使用 WSTP C 程序连接至 WSTPServer,并运算 Wolfram 语言代码 2+2:

file.wls
[link = MLOpenString(env, "-linkmode connect -linkname 31415 -linkprotocol TCPIP -linkoptions 4", &error);
                
                MLNextPacket(link); MLNewPacket(link);

                MLPutFunction(link, "EvaluatePacket", 1);
                MLPutFunction(link, "Plus", 2);
                MLPutInteger(link, 2);
                MLPutInteger(link, 2);
                MLEndPacket(link);
             

技术信息

  • WSTPServer 支持运行 Windows、macOS 或 Linux 的 x64 系统。在 Linux 上支持 ARM 32 位架构。
  • WSTPServer 随 Wolfram 语言 12.2 及更高版本一同发布,并兼容 Wolfram 语言 11 及更高版本。