2010-12-27 12 views
2

私はForth Mandelbrotフラクタルプロッタを書いています。何か他の技術的な練習と同じように、いくつかの並列処理を高速化しようと考えています。Gforth並列処理

私のコアの両方を使うことができれば、私は幸せになれるでしょう(一つのコアでイメージの半分ともう一つの半分にイメージを半分にします)。

私は、Windows XPが2つのインスタンスGforthを非常にうまく管理し、できるだけ多くのプロセッサ容量を使用しようとしていることに気づいたので、2つのプロセスを実行することが始まる可能性があります。しかし、私は彼らがメモリを共有できるかどうか、あるいは同時にファイルに書き込むことができるかどうか、あるいは、あるプロセスにファイルの先頭からxバイトで書き込みを開始するように指示できるかどうかはわかりません。

要するに、Windows XPでGforthを使用して並列処理を行うにはどうすればよいですか?

答えて

0

GForth Pipesを参照してください。

+0

これはおそらく私の理解の隙間ですが、パイプを使ってどのように役立てることができますか? – sheepez

+0

@sheepez実行中のGForthからGForthインスタンスを生成し、それらをパイプで接続し、パイプを通じて通信させることができます。したがって、信頼性の低い共有メモリー/ファイルのアプローチを避けることができます。 –

+0

@ Vijay Mathewこれまでのところ、私のコードはピクセルの色を計算し、これをビットマップファイルに書き込みます。私はそれが有用にパイプを組み込むために動作する方法を変更する必要がありますか、私は物事を同期させるように見えるトリッキー。 – sheepez

2

個々のプログラムで1つのピクセルではなくピクセルのグリッドを作成し、最後にそれらを再結合させることができます。

AFAIK、Mandelbrotセットのピクセルは互いに独立していますが(私が間違っていると誰かが私を修正します)、それぞれの計算が非決定論的なので、適切に並列化するのが難しい中央のディスパッチスレッドの(そして再びあなたは競合の潜在的な問題に遭遇します)。

+1

ピクセルの独立性についてはあなたが正しいと思いますが、どのようにそれらが非決定論的であるかはわかりません。いずれにしても、gforthがWindows上でシステムコールを正しく実行しないので、私はちょっと立ち往生しています。 – sheepez