【TensorFlow】カーネル作成プロセスからGPU(CUDA)のアタッチまでの大まか流れを解析し, Multi CPU, Multi GPUの現状を調査

最終更新日:

1. TensorFlowのカーネル起動の仕組みについて

TensorFlowでは、以下の仕組みとなっていました。
– 静的なグローバル変数を定義することでプロセス起動と同時に自動でスレッドを作成し、自動でカーネル環境を作成する
– GPUの言語は、CUDAを使用しておりNVIDIAのGPUを使用している事を前提としている (Dual対応)
– C++ 11のコード規約に基づいた記述となっている。(auto型など)
– コマンドを見る限りでは、Linux Kernel環境を想定した作りとなっている
CUDAについて補足:

NVIDIA製の並列計算アーキテクチャの総称である。
詳細は、以下の通り
URL: CUDA

2. 大まかなシーケンス

現状のソースで、大まかなシーケンスをソースで追っていきます。
C++のクラス設計に結構活かせるノウハウも詰まっているので、順番に見ていきましょう。
コードリーディングが、貴方のコーディング力アップに繋がることは間違いないです。
※クラスポインタなどの概念も普通に出てきますが、変数のポインタと同じ考え方で捉えると分かりやすいでしょう。
実際に、関数名は変数名の用に扱えます。
簡単なケースでは、以下の通りになります。

sample.cpp
// 何の変哲もないfunc1です。
void func1(void* pData) {
func1(“func1”);
}
// 何の変哲もないfunc2です。
void func2(void* pData) {
func1(“func2”);
}
// 共通の形式の関数をポインタを使って纏めます
void (*pFuncList[])(void* pData) = {
func1, // func1を指定することで、func1の関数ポインタが渡されます。
func2 // func2を指定することで、func2の関数ポインタが渡されます。
}
void main(void) {
char* pBuffer = “Test”;
for(int i = 0; i この記事の続きを読む

サイト名: Qiita - C++
2016年1月4日 2016年6月20日更新

無料メールマガジン登録

週1回、注目のAIニュースやイベント情報を
編集部がピックアップしてお届けしています。

こちらの規約にご同意のうえチェックしてください。

規約に同意する


Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.