Strategiesを使って並列Haskellプログラムを書いています。本来の機能を果たしていないので、関数が実行されているHaskell実行コンテキスト(HEC)を調べたいと思います。
デバッグ出力で使用できるgetHEC呼び出しまたは同様のものはありますか?
Strategiesを使って並列Haskellプログラムを書いています。本来の機能を果たしていないので、関数が実行されているHaskell実行コンテキスト(HEC)を調べたいと思います。
デバッグ出力で使用できるgetHEC呼び出しまたは同様のものはありますか?
threadCapability
から呼び出すことで、Haskellスレッドが実行されている機能(つまりCPUコア)を見つけることができますControl.Concurrent
。
を使用してプログラムを実行している場合+RTS -N
、コアごとに1つのOSレベルスレッド(HEC)が生成されるため、によって返される機能番号から、グリーンスレッドが実行されているthreadCapability
OSスレッドがわかります。forkIO
ただし、OSスレッドの数を明示的に指定している場合(+RTS -Nn
システムn
上のコアの数以外の整数)、これはおそらくあまり役に立ちません。
また、ThreadScopeは、並列プログラムの実行をデバッグおよび視覚化するのに役立つ場合があります。