macOSマシンおよびLinuxマシンでリモートカーネルを使う方法
背景情報
Mathematicaにおける並列化では,制御カーネルがいくつかの従属カーネル(サブカーネル)を管理するハブアンドスポークモデルが使われています.このため,ローカルのサブカーネルに加えて,Mathematicaがインストールされているリモートコンピュータが追加のサブカーネルを提供することもできます.
サブカーネルを提供するリモートコンピュータはホスト,制御カーネルを実行するコンピュータはクライアントと呼ばれます.ホストコンピュータがLinuxまたはmacOSオペレーティングシステムを実行している場合,MathematicaはSSHを使ってリモートのWolframカーネルに接続することができます.
設定
- ホストコンピュータとクライアントコンピュータの間にパスワードのない秘密鍵/公開鍵のペアを設定します.設定について不明点がある場合は,ご所属機関のシステム管理者にお問い合せ ください.
- クライアントコンピュータ上でMathematicaを起動し,新規のノートブックを開きます.
-
そのノートブックの中で,KernelConfigurationを使ってリモートマシン上のSSHカーネルを指定します.
kernel = KernelConfiguration["ssh://remote-host-name", "KernelCommand" -> "full path to kernel"]
例えば,MathematicaをデフォルトインストールしたmacOSのリモートマシンでは,以下のようにSSHカーネルを指定します.
In[1]:= kernelConfigMacOS = KernelConfiguration["ssh://myRemoteMac", "KernelCommand" -> "/Applications/Mathematica.app/Contents/MacOS/WolframKernel"]
MathematicaをデフォルトインストールしたLinuxのリモートマシンでは,以下のように指定します.
In[1]:= kernelConfigLinux = KernelConfiguration["ssh://myRemoteLinux", "KernelCommand" -> "/usr/local/Wolfram/Mathematica/13.1/SystemFiles/Kernel/Binaries/Linux-x86-64/WolframKernel"]
-
LaunchKernels[]を使ってリモートカーネルを起動し,任意の並列計算機能を使って並列計算を実行します.
例えば,macOSのリモートマシン上で起動した4個のカーネルを使って並列計算を行います.
In[2]:= kernelsOnMacOS = LaunchKernels[kernelConfigMacOS, 4]; ParallelEvaluate[{$KernelID,$MachineName,$Version}, kernelsOnMacOS] Out[3]= {{9, myRemoteMac, 13.1.0 for Mac OS X ARM (64-bit) (June 16, 2022)}, {10, myRemoteMac, 13.1.0 for Mac OS X ARM (64-bit) (June 16, 2022)}, {11, myRemoteMac, 13.1.0 for Mac OS X ARM (64-bit) (June 16, 2022)}, {12, myRemoteMac, 13.1.0 for Mac OS X ARM (64-bit) (June 16, 2022)}}
Linuxのリモートマシン上で起動した4個のカーネルを使って並列計算を行います.
In[2]:= kernelsOnLinux = LaunchKernels[kernelConfigLinux, 4]; ParallelEvaluate[{$KernelID,$MachineName,$Version}, kernelsOnLinux] Out[3]= {{17, myRemoteLinux, 13.1.0 for Linux x86 (64-bit) (June 16, 2022)}, {18, myRemoteLinux, 13.1.0 for Linux x86 (64-bit) (June 16, 2022)}, {19, myRemoteLinux, 13.1.0 for Linux x86 (64-bit) (June 16, 2022)}, {20, myRemoteLinux, 13.1.0 for Linux x86 (64-bit) (June 16, 2022)}}
[English]