(追記:完全にグダグダなただの日記なので、タイトルに「日記」と付け足しました)
ここまで、UCXのディストリビューションに含まれている uct_hello_world.c
を自作C++ラッパーに移植するという目標で勉強をしてきたのですが、C++ラッパーの実装の方針を大幅に変更することにしました。
これまではC++での完全なラッパーを目指していたので、コンポーネントの論理的な階層とC++のクラスクラス階層を一致させ、メモリ管理は std::shared_ptr
を使うという方針でした。
しかし、
* コンポーネント間の依存性が複雑で循環参照を避けるのが面倒なこと
* 単一の shared_ptr
のインスタンスをあちこちコピーし回す必要があり、関数の関数の引数が増えたり、クラスのメンバ関数が不必要に増えたりして却って複雑になってしまうこと
などの事情が見えてきました。
なので、よりシンプルな、非常に薄いラッパーに路線変更するか、そもそもC++ラッパーを作るのをやめるという方針のどちらかに方向転換するよていです。
実際にアプリを書きながら、考えてみようと思います。
とりあえずは、ディープラーニングで定番である Allreduce
関数の実装でもしてみようかと思っています。