2012-01-30 2 views
1

boost::numeric::ublas::vector<double> (http://www.boost.org/doc/libs/1_41_0/libs/numeric/ublas/doc/vector.htm)을 사용하고 있습니다.boost :: numeric :: ublas :: vector 내부 데이터 저장소 포인터

어떻게 내부 데이터 포인터를 이중으로 가져올 수 있습니까? 벡터를 CUDA (i.e. using cudaMemcpy)에 복사하고 싶기 때문에 내부 포인터가 필요합니다. 아니면 내 부스트 벡터/행렬을 복사하는 우아한 방법이 있습니까?

boost::numeric::ublas::vector<double> vector; 
double* ptr = &vector[0]; 

하지만 더 우아한 방법이 :

나는 내가 좋아하는 뭔가를 할 수있어? unbounded_array 반복자가 있기 때문에이 작동

cudaMemcpy(device_dest, 
      vector.data().begin(), 
      vector.data().size(), 
      cudaMemcpyHostToDevice); 

:

vector<double, unbounded_array<double,n_elements>> vector; 

다음이 같은 작업을 수행 할 수 있습니다

답변

1

나는 스토리지 모델과 같은 unbounded_array를 사용하여 벡터를 인스턴스화하면 생각 저장되고있는 타입에 대한 표준 C++ 포인터.

관련 문제