あなたは3つの異なる目標を表明しました:
- Cでのプログラミングを学ぶ
- CUDAプラットフォームのコードを書くことを学ぶ
- データ分析にベイズのネットやニューラルネットを使用する方法を学ぶ
第一に、これらのことは、すでにフィールドで数度の学位を持っている人にとっては簡単ではありません。1つだけ行う場合は、ベイズ推定について必ず学習してください。これは、データについて推論するために利用できる最も強力なフレームワークであり、あなたはそれを知る必要があります。MacKayの本(下部に記載)をチェックしてください。あなたは確かにあなた自身に挑戦的な仕事を設定しました-私はあなたにすべての最高を願っています!
あなたの目標はすべてかなり異なる魚のやかんです。Cでプログラミングすることを学ぶことはそれほど難しくありません。可能であれば、あなたの大学(おそらくJavaで教えられている)で「アルゴリズムとデータ構造の紹介」(通常はCS専攻の最初のコース)を受講したいと思います。これはあなたにとって非常に便利であり、Cでの基本的なコーディングは単に構文を学ぶことの問題になります。
CUDAプラットフォーム用のコードを書くことを学ぶことは、かなり難しいことです。上記で推奨されているように、最初にOpenMPIをチェックしてください。一般に、並列アルゴリズムに関する本だけでなく、コンピューターアーキテクチャー(Patterson&Hennessyは素晴らしい)について何かを読むのに役立ちます。並行性を見たことがない場合(つまり、セマフォについて聞いたことがない場合)、それを調べると便利です(オペレーティングシステムコースの講義ノートでおそらくカバーされます。MITオープンコースウェアを参照してください)。最後に、前述のように、GPUプログラミングは新しい分野であるため、利用できる優れたリファレンスはほとんどありません。したがって、最善の策は、サンプルのソースコードを読んで、それがどのように行われるかを学ぶことです。
最後に、ベイジアンネットとニューラルネット。まず、これらはまったく異なることに注意してください。ベイジアンネットワークは、(通常は多数の)変数の同時確率分布を表すグラフィカルな(ノードとエッジ)方法です。「ニューラルネットワーク」という用語はやや曖昧ですが、一般に、単純な処理要素を使用してデータポイントを分類するための非線形関数を学習することを指します。ベイズネットとニューラルネットの両方を非常によく紹介している本は、David JC MacKayの情報理論、推論、学習アルゴリズムです。この本は、 http://www.inference.phy.cam.ac.uk/mackay/itila/からオンラインで無料で入手できます。この本は、このトピックに関して私のお気に入りです。説明は非常に明確であり、演習は明るくなっています(ほとんどが解決策を持っています)。