2012-08-22 3 views
2

그냥 몇 가지 사실 :정적 추력 사용자 지정 할당 기? 설정을위한

  • 추력은 그것의 모든 조작에 적절한 작동하지 않습니다.
  • 사용자 지정 할당자를 thrust::device_vectors에 제공 할 수 있습니다.

나는 thrust::systemthrust::system::cuda을보고 정적 시스템 할당 자처럼 보이는 것을 찾지 못했습니다. 내 말은, 추력이 내부적으로 사용하는 할당자를 out-of-place 알고리즘에 여분의 메모리를 할당하는 대신 교체 할 수는 없다는 것입니다.

또한 할당자가 작업 메모리에 주어진 thrust::device_vectors에 대해 할당자를 사용한다고 생각하기가 어렵습니다.

질문 : thrust에는 내부 할당자를 사용자 정의 된 것으로 바꾸는 방법이 있습니까?

관련 질문 :

implies that thrust operates out-of-place

example of custom thrust allocator

답변

3

추력의 custom_temporary_allocation 예는 추력 알고리즘에 의해 내부적으로 사용하는 임시 저장을 위해 자신 만의 할당을 구축하는 방법을 보여줍니다. 이 예제는 캐싱 체계를 사용하여 할당을 수행하지만 원칙적으로 원하는 전략을 사용할 수 있습니다.

기본적으로 할당을 사용자 지정하기 위해 CUDA 백엔드에서 파생 된 사용자 지정 백엔드를 만드는 것이 아이디어입니다. 그런 다음 사용자 정의 할당자를 사용하여 알고리즘을 사용하려면 알고리즘을 호출 할 때 사용자 정의 백엔드에서 Thrust를 가리 킵니다.

이 기능에는 1.6 이상의 트러스트가 필요합니다.

+0

감사합니다. 이 예제는 의미가 있지만 1.4를 밀어 내면 작동하지 않습니다. 추력 내부가 추력의 이전 버전에서 적절한 할당기를 사용하고 있는지 확인하는 방법이 있습니까? – maxywb

+0

"적절한 할당 자"가 무슨 뜻인지 잘 모르겠습니다. 1.6보다 오래된 추력 버전은 임시 할당을 사용자 정의 할 수 없습니다. –

+0

그래, 나도 그래. 사용자 정의 할당자를 가진 device_vector를 추력 함수에 전달할 때 추력이 할당되는 방식을 완전히 이해하지 못했습니다. 위의 할당 자 예제를 사용하면 저에게 답변 해줍니다. 다시 한번 감사드립니다. – maxywb

관련 문제