入力の16の組み合わせを実行する単一のVBAサブルーチンを持つ2010Excel64ビットモデルがあります。これらはすべて同じExcelモデル計算を使用して処理され、結果をモデルのタブに出力します。ハイパフォーマンスクラスター(HPC)にアクセスでき、HPCで現在のシーケンシャルプロセスの代わりに、16の組み合わせを並行して実行できるようにVBAコードを実行したいと考えています。これにどのようにアプローチすればよいですか?たとえば、各組み合わせを個別のサブルーチンに入れ、各組み合わせを呼び出すためのメインVBAサブルーチンを用意する必要がありますか?HPCでモデルを実行するために含める必要があるフロントエンドとバックエンドのVBAコードはありますか?
質問する
722 次
1 に答える
0
Excel VBAはマルチスレッドを直接許可していないため、残念ながらこれに対する簡単な VBA ソリューションはありません。
ここでいくつかのオプションを見ることができます。それらを使用できるかどうかは、問題によって異なります。
Excel 2007 および 2010 では、ワークシート関数を並列で実行できます。VBA コードがサブルーチンではなく関数であり、ほとんどのデータがワークシートから取得されている場合は、それを利用することができます。
マルチスレッドを処理する DLL を自分で作成し、それを Excel から呼び出すことができます。このためには、コードを VB 6 または VB.NET に移植し (または C/C++ で直接書き直して)、マルチスレッドを手動で処理する必要があります。
于 2012-08-01T02:29:20.913 に答える