大規模なデータセットで回帰を実行すると、複数のスレッド間で共有したい巨大な読み取り専用マトリックスがあります。これを行うさまざまな方法を調べたところ、sharedmatrix
ツールキットがまさに必要なものであることがわかりました。チュートリアルを読んで、次のセットアップを思いつきました。
Session 0
- マトリックスをロードして利用可能にするだけですSession 1..n
- ワーカー セッション
問題はSession 0
、他の n 個のセッションがすべて終了した後にのみ終了する必要があることです。セッションを待機させる方法を知っていますか? 最善の解決策は、リモートの Linux システムでスクリプトを実行していて、常に接続しているわけではないため、強制終了するまで待機させることです。
更新: チュートリアルのこの部分を読んだ後、最終的に問題へのアプローチを変更しました:
「free」ディレクティブは、削除対象の共有メモリ セグメントをマークします。注: 接続されているすべてのセッションが明示的に切り離されるか終了されるまで、実際には削除されません。最後のセッションが切り離されるとすぐに、システムは割り当てられたセグメントを再利用します。
これは、マトリックスをロードして利用可能にし、独自の計算を開始する 1 つの「マスター」セッションと、共有マトリックスを使用するいくつかの「スレーブ」セッションを作成したことを意味します。マスター セッションが先に終了した場合でも、共有マトリックスは、それを使用する最後のプロセスが終了するまでメモリ内に残るため、スレーブ セッションには問題が発生しません。