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:
[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 及更高版本。