【回答編】Keras(TensorFlowバックエンド)でのマルチコア・マルチプロセッサ並列化、GPU並列化はどんな実装になっているのだろう?


どうも ryo_grid です。
回答編としているものの、クエスチョンに関する記事は自分のブログに書いていたので、ちょっとアレですが、その点はご容赦下さい(Qiitaで共有しても意味のない内容は自分のブログに書くようにしている、という事情です)。
 
というわけで、自身のブログで恐縮ですが、以下の記事への一部回答ともなっている記事を、
【Need Help!】Keras(TensorFlowバックエンド)でのマルチコア・マルチプロセッサ並列化、GPU並列化はどんな実装になっているのだろう? - Ryoの開発日記 Neo!

先日Qiitaに書きました。
Kerasのfit_generatorのプロセス並列化の実装を読んでみた(おまけ: GPUはじめ並列化実装のもろもろの話) - Qiita
 
加えて、上のQiita記事では継続調査となっていた、マルチコア(マルチプロセッサでも同様だと思いますが)での並列化については、自分でTFのコードを読むまでもなく以下の記事が回答で良さそうです(上のブログ記事を書いた時点で、インターネッツを漁った時にはヒットしなかったんだよなあ・・・)。
マルチスレッドに関するTensorFlowの内部構造について - Qiita
 
上のスレッド並列実装に関する記事は2016年のものなので、TF1.x時代だと思われますが、該当するコードは現在のTFのgithubリポジトリのmaster(のHEAD)にもありました。
tf.compat.v1.xxxx という形で1.x系のコードが動かせるように残してあるコードも2.x系にはあって、そこに残っているコード、という可能性もゼロではありませんが(2.x系に取り込まれたKerasのfitやpredictが該当コードの呼び出しをしているかまではコードを追っていません)、当時のバージョンでもfit_generator(上にリンクした私が書いたQiita記事等ご参照)などはあったはずで、それと同様のマスタ・ワーカ型というのも検討されたでしょうし、現時点での最新あたりのTFで利用できる tf.distribute.Strategy モジュールに含まれるStrategy が採用している設計での並列化というのも検討されたであろうと思います。で、その上で、スレッド並列で動作する行列演算ライブラリを叩くという実装が選択されたはずで、それが、4年経ったとはいえ、変わっているとは考えにくいと個人的には思います(細かい実装は変わっているかもしれないですが、大枠の設計は変わっていないはず)。
 
以上!