質問

私は事業主につの方法を通して学位プログラムがPHP経験を有するとともに、入門C++クラス、武器として選んだ事業プログラミング、コンピュータサイエンス。

私の学習に興味をもっているより高度なプログラミング具体的には、最終的に進んでいるのCUDAのための建築人工ニューラルネットワークデータを分析していく所存でありまAIビジョン、音声処理が発見との関係データ-ポイント大量のデータや一般的なデータ-統計解析する。

アドバイスをどう学ぶ。どのアン/ベイズ分析技術データはもらえますか?が本当にありがとうございましたがどうなるかはわからないを選択します。

以来、CUDAでありない学習者向け(dumbedダウン)の材料です。ある学習資源のためのCUDAのNVIDIA書類?

さらに、どんな資源をお勧めになります私の話のGPGPU計算や大規模並列プログラミングといった。

役に立ちましたか?

解決

CUDAは新しいテクノロジーであり、プログラミングのバックグラウンドがあまりないため、最初にCUDAを習得することはお勧めしません。

C(またはC ++)の経験があまりないため、CUDAは成熟度、ライブラリ、素晴らしいエラーメッセージなどが不足しているため、学ぶのが苦痛になります。

CUDAは、Cに精通し(C ++の経験も役立ちます)、よく知られている問題の解決を再コーディングまたは再考することによってパフォーマンスの改善が必要な問題を抱えている人々を対象としています。

「ANN / Bayesian」を解決しようとしている場合問題C ++またはCでソリューションを作成することをお勧めします。スレッドの作成やマルチスレッドについて悩まないでください。次に、評価後、シリアルソリューションの応答時間は、OpenMP、Boostスレッド、w / eを使用して並列化を試みます。この後、さらにパフォーマンスが必要な場合は、CUDAを学ぶことをお勧めします。

CUDAにはかなり不可解なエラーがあり、デバッグが難しく、まったく異なるアーキテクチャなどがあるため、これらは有効なポイントだと思います。

まだ興味がある場合は、CUDAを学習するためのリンクを次に示します。

オンラインコース:

フォーラム(最適な情報源):

ツール:

CUDAで解決した問題:

他のヒント

3つの異なる目標を表明しました:

  • Cでのプログラミングの学習
  • CUDAプラットフォーム用のコードを書くことを学ぶ
  • ベイズのネットおよび/またはニューラルネットを使用したデータ分析の学習

第一に、これらのことは、すでにフィールドで数度の学位を持っている人にとっては簡単ではありません。 1つだけを行う場合は、ベイジアン推論について学習してください。これは、データに関する推論に利用できる最も強力なフレームワークであり、それを知る必要があります。 MacKayの本(下部に記載)をご覧ください。あなたは確かに自分自身に挑戦的な仕事を設定しました-私はあなたに最高を望みます!

あなたの目標はすべてかなり異なる魚のケトルです。 Cでプログラミングすることを学ぶのはそれほど難しくありません。可能な限り" Intro to Algorithms&データ構造" (通常、CSメジャーの最初のコース)大学で(おそらくJavaで教えられています)。これは非常に便利です。Cでの基本的なコーディングは、単に構文を学ぶだけの問題になります。

CUDAプラットフォーム用のコードを書くことを学ぶことは、かなり困難です。上記で推奨されているように、まずOpenMPIをチェックしてください。一般に、コンピューターアーキテクチャに関するいくつかの記事(Patterson& Hennessyがいい)を読むだけでなく、並列アルゴリズムに関する本も読むことができます。並行性を見たことがない場合(つまり、セマフォについて聞いたことがない場合)、それを調べると便利です(オペレーティングシステムコースの講義ノートがおそらくそれをカバーします-MIT Open Coursewareを参照してください)。最後に、前述のように、GPUプログラミングは新しい分野であるため、GPUプログラミングに関する優れたリファレンスはほとんどありません。したがって、最善の策は、サンプルのソースコードを読んで、その方法を学習することです。

最後に、ベイジアンネットとニューラルネット。まず、これらは非常に異なることに注意してください。ベイジアンネットワークは、(通常は多数の)変数にわたる結合確率分布を表すグラフィカルな(ノードとエッジ)方法です。 「ニューラルネットワーク」という用語は、やや曖昧ですが、一般に、単純な処理要素を使用して、データポイントを分類するための非線形関数を学習することを指します。 Bayesのネットとニューラルネットの両方を紹介する本は、David J.C. MacKayの情報理論、推論、学習アルゴリズムです。本は http://www.inference.phyから無料でオンラインで入手できます。 .cam.ac.uk / mackay / itila / 。この本は、このトピックに関する私のお気に入りです。博覧会は非常に明確であり、演習は明るくなっています(ほとんどが解決策を持っています)。

並列プログラミングのわかりやすい紹介を探している場合は、代わりに MPIを開くまたはCPUクラスターでのPosixスレッド。これを始めるために必要なのは、単一のマルチコアプロセッサです。

一般的なコンセンサスは、これらの新しいアーキテクチャ(gpu、cellなど)でのマルチプログラミングには、プログラミングモデルとAPIの成熟度の観点から進む方法があるということです。逆に、Open MPIとPThreadsはかなり前から存在しており、それらを学習するためのリソースがたくさんあります。これらに慣れたら、新しいテクノロジーを試すことを検討してください。

他の多くの言語用のプログラミングインターフェイスは確かにありますが、Cはおそらく高性能コンピューティングで使用される最も一般的な現代言語です(FortranとPascalはまだこの分野で動き回っています)。 C ++もかなり人気がありますが、いくつかのバイオインフォマティクスパッケージがこれを使用しています。いずれにせよ、Cは確かに良い出発点であり、より多くの言語機能またはライブラリが必要な場合はC ++にアクセスできます(ただし、パフォーマンスが低下する可能性があります)。

ご興味のある方はデータマイニングがしたいのは、オープンソースと呼ばれるシステムオープンする。で実施したC++でも対応はエンドユーザプログラミングにはPythonのイメージをリンクやノードの言語です。

わからない場合にも対応NNsんの人々と知り合うことがでの使用のための学習マイニング技術です。うもののようにクラスタリングや協会規則等

(も深く関わっていないウェブサイトの広告を誰かにB-学校な業務を管理です。について興味のある方はもちろんCSマイニング、が考えを同じくすにあります。)

リンク: gpgpu.org 興味深い議論があります

最新のCUDAリリース(3.1、3.2)には、単一カードのセットアップでマルチコアマトリックス演算を処理するCuBLASと呼ばれる機能のフルセットがあります。バックプロパゲーションの並列化はもう少し困難ですが、私は取り組んでいます。

iTunesUでスタンフォード大学から無料で素晴らしいビデオコースを見つけることができました

プログラミング方法(CS106A) プログラミングの抽象化(CS106B) プログラミングパラダイム(CS107) 機械学習(CS229) CUDAを使用した超並列プロセッサのプログラミング

これらのコースにはそれぞれ約20の講義がありますので、価値のあるコースをすべて見るのは投資です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top