2016-11-22 58 views
3

是否有可能使用boost :: compute複製定製結構數組?例如。boost :: compute copy定製結構

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陣列。但我不明白我如何複製不同結構的數組。編寫自己的boost計算函數將一個結構轉換爲另一個結構的唯一方法是? – DikobrAz

+0

哦,我很抱歉沒有理解你的問題......現在,當我看到這段代碼時,我認爲使用'boost :: compute :: copy()'複製不同結構的向量是不可能的。我認爲應該可以使用'boost :: compute :: transform()'複製它們,並傳遞一個自定義的boost計算函數,它將一個轉換爲另一個。 – haahh

+0

謝謝@haahh,可能自定義函數是一種方法。如果你的類型是模板雖然有些困難。 – DikobrAz