3

セットアップのためのいくつかの事実:

  • Thrust は、そのすべての操作に対してインプレースで動作するわけではありません。
  • にカスタム アロケータを指定できますthrust::device_vectors

調べてthrust::systemthrust::system::cudaましたが、静的システム アロケータのようなものは見つかりませんでした。つまり、スラストが内部的に使用するアロケーターを置き換えて、場違いなアルゴリズムに追加のメモリを割り当てる方法がわかりません。

また、インプレースではない関数が、割り当てられthrust::device_vectorsたアロケーターの作業メモリにアロケーターを使用しているとは信じがたいです。

質問:thrust内部アロケータをユーザー定義のものに置き換える方法はありますか?

関連する質問:

推力が場違いに動作することを意味します

カスタムthrustアロケータの例

4

1 に答える 1

3

Thrust のcustom_temporary_allocation例は、Thrust アルゴリズムによって内部的に使用される一時ストレージ用に独自のカスタム アロケーターを構築する方法を示しています。この例では、キャッシング スキームを使用して割り当てを実行していますが、原則として、任意の戦略を使用できます。

基本的には、特に割り当てをカスタマイズする目的で、CUDA バックエンドから派生したカスタム バックエンドを構築するという考え方です。次に、カスタム アロケータでアルゴリズムを使用する場合は、アルゴリズムを呼び出すときにカスタム バックエンドで Thrust を指定します。

この機能には、Thrust 1.6 以降が必要であることに注意してください。

于 2012-08-22T17:45:13.867 に答える