2016-11-22 13 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() 매크로 적응 구조체 (부재 사이, 즉 어떠한 패딩 바이트)에 충전되지 않도록 필요 기억.

출처 : 나 POD 배열 구조체의 배열에서, 동일한 구조의 배열을 복사 참조 boost/compute/types/struct.hpp

+0

. 하지만 다른 구조의 배열을 복사하는 방법을 알지 못합니다. 하나의 구조체를 다른 구조체로 변환하는 고유 한 부스트 연산 함수를 작성하는 유일한 방법입니까? – DikobrAz

+0

아, 질문을 이해하지 못해 죄송합니다. 이제이 코드를 살펴보면 boost :: compute :: copy()를 사용하여 다른 구조의 벡터를 복사하는 것이 불가능하다고 생각합니다. boost :: compute :: transform()을 사용하여 복사하고 다른 것을 변환하는 커스텀 부스트 계산 함수를 전달하는 것이 가능해야한다고 생각합니다. – haahh

+0

감사합니다. @haahh, 아마도 사용자 지정 함수가 갈 수있는 방법입니다. 귀하의 유형이 비록 템플릿이라면 다소 어렵습니다. – DikobrAz