2017-11-15 21 views
1

thrust::device_vector<T> 안에 행렬 (행 지향)이 있습니다. 해당 벡터의 슬라이스/뷰를 얻을 수있는 방법이 있습니까 (즉, thrust::device_vector<T> 유형일까요?). 나는 새로운 벡터를 만들고 메모리를 사용하기 때문에 복사 생성자에 관심이 없다.추력 벡터 슬라이스 /보기

기본적으로 우리는 벡터 thrust::device_vector<int> vec = {1,2,3,4,5,6}을 가지고 있다고 가정하고 {3,4}을 가리키는보기가 될 thrust::device_vector<int> vec_view = vec.slice(2,4)을하고 싶습니다.

배치에서 특정 계산을 실행해야하고 사용하는 방법은 thrust:device_vector<T> (반복기 없음 등) 만 사용합니다.

답변

1

내가 알고있는 이것을 할 방법이 없습니다.

추력은 device_pointer을 허용하는 device_vector 생성자를 노출시키지 않습니다. 그 경우, 당신은 strided access 나 slicing 등을 지원하는 device_pointer를 구현할 수 있습니다. 그러나 멋진 반복자에 의존하지 않고 여러분이 상상 한 것을 성취 할 수있는 방법을 알지 못합니다. 그리고 분명히 그것들은 여러분의 사용을 위해 실행 가능하지 않습니다. 케이스.

+0

네, 그게 제가 두려웠 던 것입니다. 어떻게 든 그것없이해야 할 것 같아요. 그것이 단지 '추력'단점인지 또는 다른 우려로 인해 완료되지 않았는지 궁금합니다. –

+0

모든 추진 컨테이너는 SGI STL/C++ 표준 라이브러리를 모델로 작성되었으며 이와 같은 기능을 제공하지 않습니다. 명백한 모델은'boost :: range'와 같은 것이지만 여전히 컨테이너가 아닌 반복자입니다. 문제는 실제로 사용하는 API와 관련이있는 것 같습니다. iterators를 받아들이 기 위해 작성된 것이라면, 우리는이 대화를 가지고 있지 않을 것입니다 ..... – talonmies