質問: ガウス過程回帰を用いた学習済みモデルを用いて,並列計算を全てのcpuで行う方法を教えて下さい。 並列計算を行うコードを書いており,今までは160の論理プロセッサ全てで並列計算が行えましたが,プログラムの一部にガウス過程回帰を用いた学習済みモデルを含めると,40の論理プロセッサ(1つのソケット)だけの動作になってしまいます。きれいに,ノード0のソケットだけ全ての論理プロセッサが負荷100%で,その他の論理プロセッサは負荷が0%から数%となってしまいます。学習済みモデルを使わないようにすると,問題なく全ての論理プロセッサで並列計算をします。学習済みモデルを使って,全ての論理プロセッサで並列計算を行う方法を教えて下さい。
回答: 詳細情報ありがとうございます。 二乗指数 gpr と matern5/2 カーネルそれぞれいくつかのパラメタで作成した学習済みモデルを使って、parfor ループ内で predict 関数を使った予測を並列にされているという認識をしています。 例えば、回帰学習器アプリで出力したそれぞれのコンパクトモデルを save 関数を用いて save('mdl1.mat', mdl) のように mdl1.mat, mdl2.mat, ..., mdl12.mat まで保存していたとして、例えば以下のような流れで並列計算されていますでしょうか。(変数名など細かい点について確認しておらず実際に動作するかは不明で、流れだけを書いた擬似コードです) num_model = 12; parfor i=1:num_model % 並列ループ gprmdl = ['mdl', int2str(i)]; load(gprmdl) % モデルのロード yfit = mdl.predictfcn(xnew); % xnew はテストデータ end もし理解に間違いがありましたら補足いただければと思います。