5

Strategiesを使って並列Haskellプログラムを書いています。本来の機能を果たしていないので、関数が実行されているHaskell実行コンテキスト(HEC)を調べたいと思います。

デバッグ出力で使用できるgetHEC呼び出しまたは同様のものはありますか?

4

1 に答える 1

4

threadCapabilityから呼び出すことで、Haskellスレッドが実行されている機能(つまりCPUコア)を見つけることができますControl.Concurrent

を使用してプログラムを実行している場合+RTS -N、コアごとに1つのOSレベルスレッド(HEC)が生成されるため、によって返される機能番号から、グリーンスレッドが実行されているthreadCapabilityOSスレッドがわかります。forkIOただし、OSスレッドの数を明示的に指定している場合(+RTS -Nnシステムn上のコアの数以外の整数)、これはおそらくあまり役​​に立ちません。

また、ThreadScopeは、並列プログラムの実行をデバッグおよび視覚化するのに役立つ場合があります。

于 2012-04-11T12:15:12.363 に答える