WSTPServer는 하나 이상의 Wolfram Engine 풀을 실행하여, 로컬 또는 네트워크를 통해 모든 클라이언트가 WSTP 연결로 접근할 수 있도록 제공합니다.
WSTPServer는 클라이언트로부터 오는 모든 트래픽을 관리하는 커널로 라우팅하는 서버 프로그램으로, WSTPServer에 대한 연결이 커널에 직접 연결된 것처럼 동작하도록 합니다. WSTPServer 커널은 네트워크 상에서 검색 가능하므로, 하나 이상의 컴퓨터에서 커널 풀을 실행할 수 있습니다. WSTPServer 커널은 연결, 연결 해제, 재연결이 가능하므로, 서로 다른 프로그램이나 컴퓨터에서 접속할 수 있는 장기 세션을 유지할 수 있습니다.
기능
WSTPServer는 사용자의 요구에 최적화된 커널 관리, 연결 및 검색 기능을 다양하게 제공합니다.
사전 초기화된 다수의 커널 풀 실행
WSTPServer는 다수의 커널 풀을 실행할 수 있으며, 각 풀은 사용자가 구성할 수 있는 속성을 공유합니다. 커널은 해당 풀의 속성에 따라 사전 초기화됩니다.
네트워크에서 가시화
WSTPServer는 기본 설정으로 로컬 네트워크에서 접근 가능하며, 다른 컴퓨터에서도 연결할 수 있습니다.
네트워크에서 검색 가능
WSTPServer는 DNS 서비스 검색(DNS-SD)을 통해 네트워크에서 자신을 광고하므로, 클라이언트가 사용 가능한 WSTPServer 인스턴스와 커널을 쉽게 발견할 수 있습니다.
장기 세션 유지
WSTPServer를 사용하면, 이전에 연결한 커널에 다른 머신에서도 다시 연결할 수 있어 장기 세션을 유지할 수 있습니다.
전용 머신에서 커널 실행
WSTPServer 인스턴스를 전용 머신에 배치하여 해당 머신만 커널 프로세스를 처리하도록 할 수 있습니다. 여러 전용 머신에서 WSTPServer 인스턴스를 실행하는 것도 간단하며, 네트워크 상에서 쉽게 검색할 수 있습니다.
모든 WSTP 클라이언트에서 연결 가능
WSTP를 지원하는 모든 프로그램은 WSTPServer에 연결할 수 있습니다. Wolfram 생태계 내 여러 제품이 WSTPServer를 명시적으로 지원하며, 여기에는 WolframScript, 노트북 프런트엔드, 병렬 계산 프레임워크, J/Link 등이 포함됩니다.
병렬 계산을 위한 커널 제공
WSTPServer는 Wolfram 언어의 병렬 계산 기능을 위해 커널을 실행하고 제공할 수 있습니다. 병렬 계산 프레임워크가 이러한 커널을 활용하도록 구성하는 것도 간단합니다.
원하는 커널 연결 편리하게 관리
WSTPServer는 프로필 시스템을 통해 원하는 커널에 대한 연결을 쉽게 관리할 수 있습니다. 특정 속성을 가진 커널은 프로필에서 요청할 수 있으며, 이전에 연결한 커널의 세부 정보도 프로필에서 추적할 수 있어, 손쉽게 재연결할 수 있습니다.
Wstpserver 상태 확인
WSTPServer는 WSTP 연결을 통해 현재 상태를 쉽게 조회하고, 진단 정보를 얻을 수 있도록 지원합니다.
예시
WolframScript
사용 가능한 WSTPServer에서 Wolfram 언어 코드 2+2를 평가하려면 다음과 같이 표현할 수 있습니다:
$ wolframscript -wstpserver -code 2+2
4
사용 가능한 WSTPServer를 이용해 Wolfram 언어를 대화형 REPL 환경에서 실행합니다:
$ 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 시스템을 지원합니다. ARM 32비트는 Linux에서 지원됩니다.
- WSTPServer는 Wolfram 언어 12.2 버전 이상과 함께 배포되며, Wolfram 언어 11 버전 이상과 호환됩니다.