2

アプリケーションの設計方法について一般的な質問があります。Cuda のドキュメントを読みましたが、何を調べればよいかわかりません。誰かがそれに光を当てることができれば、本当に感謝しています。

株式についてリアルタイムで分析したいと考えています。たとえば、100 株とします。そして、更新された市場価格でストリーミングされるリアルタイムの市場データ フィードがあります。私がやりたいことは次のとおりです。

  1. cudaカードの各ストックにメモリブラックを事前に割り当て、日中はメモリを保持します。

  2. 新しいデータが入ってくると、Cuda カードの対応するメモリを直接更新します。

  3. 更新後、シグナルまたはトリガイベントを発行して解析計算を開始します。

  4. 計算が終了したら、結果を CPU メモリに書き戻します。

ここに私の質問があります:

  1. CPU メモリから GPU メモリにデータをストリーミングする最も効率的な方法は何ですか? 私はリアルタイムでそれをしたいので、メモリ スナップショットを CPU から GPU に毎秒コピーすることは受け入れられません。

  2. CPU と GPU の両方で 100 株分のメモリ ブロックを割り当てる必要があるかもしれません。CPU メモリ セルを各 GPU メモリ セルにマッピングする方法を教えてください。

  3. 新しいデータが Cuda カードに到着したときに分析計算をトリガーする方法は?

Windows XP で Cuda 3.2 を搭載した Tesla C1060 を使用しています。

ご提案いただきありがとうございます。

4

1 に答える 1

2

あなたの要件に異常はありません。

アプリケーションが実行されている限り、GPU メモリに情報を保持し、小さな更新を行って、CPU にあるデータとデータの同期を保つことができます。cudaMalloc()を使用して GPU メモリをcudaMemcpy()割り当て、割り当てられたメモリのセクションに更新されたデータを書き込むことができます。または、 などの Thrust 構造体にデータを保持できますthrust::device_vector。を更新するとdevice_vector、CUDA メモリのコピーがバックグラウンドで行われます。

データを更新したら、カーネルを再実行するだけで、計算の更新された結果を取得できます。

質問 (2) について詳しく教えてください。

于 2012-04-24T22:41:14.220 に答える