2016-11-22 9 views
3

boost :: computeを使用してカスタム構造体の配列をコピーすることはできますか?例えば。boost :: computeコピーのカスタム構造

struct A { float a; }; 
struct AB { float a; float b; }; 

BOOST_COMPUTE_ADAPT_STRUCT(A, A, (a)) 
BOOST_COMPUTE_ADAPT_STRUCT(AB, AB, (a, b)) 

boost::compute::vector<A> va(100); 
boost::compute::vector<AB> vab(100); 
boost::compute::copy(va.begin(), va.end(), vab.begin()); 

答えて

4

はい、Boost.Computeテストからthis exampleをご覧ください。それを覚えている:

によりホストコンパイラと デバイスコンパイラとの間の構造体のパディングの違い、BOOST_COMPUTE_ADAPT_STRUCT()マクロは、適合構造体が充填され こと(メンバー間すなわちパディングバイト)を必要としません。

出典:boost/compute/types/struct.hpp

+0

私は構造体の配列からPODアレイに、同じ構造体の配列をコピーすることができます参照してください。しかし、私はどのように私は異なる構造の配列をコピーすることはできません。ある構造体を別の構造体に変換するための独自のブースト計算関数を書く唯一の方法はありますか? – DikobrAz

+0

ああ、あなたの質問を理解できないのは残念です...今このコードを見ると、 'boost :: compute :: copy()'だけを使って異なる構造のベクトルをコピーすることは不可能だと思います。私は 'boost :: compute :: transform()'を使ってそれらをコピーし、あるものを別のものに変換するカスタムブースト計算関数を渡すことが可能であるべきだと思います。 – haahh

+0

ありがとう@haahh、おそらくカスタム機能は行く方法です。あなたのタイプがテンプレートだとしたらやや難しいです。 – DikobrAz

関連する問題