parallel_executionイントロダクション

parallel_executionイントロダクション

Gears/Gearsの中心的なプロジェクトparallel_executionの入門

# 例題を追加したい

parallel_executionの例題はCMakeでビルドされている。

新しい例題(プロジェクト)を追加したい場合は、CMakeLists.txtに追記する必要がある。

# CMakeLists.txtへの追記

ファイル末尾に次のような記述をする。

1
2
3
4
5
6
GearsCommand(
  TARGET
     sample
  SOURCES
   examples/sample/main.cbc  TaskManagerImpl.cbc CPUWorker.cbc SynchronizedQueue.cbc AtomicReference.cbc
)

GearsCommandはCMakeのマクロであり、ここにターゲット名と必要なソースを列挙することでビルド対象に加わる。 マクロの意味は次の通り。

  • TARGET
    • プロジェクトの名前。 make sampleなどでビルド出来るようになり、生成されたバイナリの名前にもなる
  • SOURCES
    • プロジェクトに含める.cbc.cなどのCファイル
    • ヘッダはここに含めない

# 必ずいれないといけないCbCのソース

ContextやTaskManager関連の操作で必須となる

  • TaskManagerImpl.cbc
  • CPUWorker.cbc
  • SynchronizedQueue.cbc
  • AtomicReference.cbc

# プロジェクトを始める

examplesの下にディレクトリを作成し、その中にmain.cbcを置く

  • 別にmain.cbcである必要は無いけれど、わかりやすい
  • 他の.cbcもそのディレクトリ中に置く
    • Gears全体に関わるものはトップディレクトリ(CMakeLists.txtがあるディレクトリ)に置く

# Interfaceを書く

Interfaceを使いたい場合は(当然だけど)型定義から始める必要がある

  • context.hへは自動で付け加えられる

生成用のPerlスクリプトがあるので、それを使うと最低限の雛形が生成される

  • perl tools/static_gen_header.pl --interface ExampleInterface
    • -wをつけるとファイル生成してくれる
    • -oの後にファイル名とパスを指定できる
    • static_gen_header.plが置いてある場所はプロジェクトごととかで異なるので頑張って探す

Interfaceの詳しい書き方はInterface入門を見ること

# Interfaceの実装の型

生成用のPerlスクリプトがあるので、それを使うと(ry

  • perl tools/static_gen_header.pl --interface ExampleInterface --impl ExampleInterfaceImpl
    • -wをつけるとファイル生成してくれる
    • -oの後にファイル名とパスを指定できる
    • static_gen_header.plが置いてある場所はプロジェクトごととかで異なるので頑張って探す

# 実装のcbcを作る

生成用のPerlスクリプトがあるのd(ry

  • perl tools/trans_impl.pl examples/sample/ExampleInterfaceImpl.h
    • 実装のヘッダファイルを入力する
    • オプションはtrans_implと同じ様な世界観
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy