저는 CUDA와 Thrust와 함께 일하고 있습니다. thrust::transform [plus/minus/divide]
을 입력하는 것이 지루할 정도로 단순한 연산자를 너무 많이 사용하고 싶습니다.추력을위한 오버로드 "+"아이디어가 있습니까?
내가 할 수 있다면 좋지 않을까 :
template <typename T>
__host__ __device__ T& operator+(T &lhs, const T &rhs) {
thrust::transform(rhs.begin(), rhs.end(),
lhs.begin(), lhs.end(), thrust::plus<?>());
return lhs;
}
그러나, thrust::plus<?>
가 제대로 오버로드되지 않았거나 나는 일을 아니에요 : 여기
thrust::[host/device]_vector<float> host;
thrust::[host/device]_vector<float> otherHost;
thrust::[host/device]_vector<float> result = host + otherHost;
는 +
에 대한 예제 코드 조각입니다 그것은 정확하게 ... 하나 또는 다른 것. (간단한 연산자를 오버로딩하는 것이 좋지 않은 경우 이유를 설명하십시오.) 처음에는 자리 표시 자에 typename T::iterator
과 같은 내용으로 오버로드 할 수 있다고 생각했지만 작동하지 않았습니다.
+
연산자에 벡터 과 유형의 벡터 반복기를 오버로드하는 방법을 모르겠습니다. 이게 말이 돼?
도움 주셔서 감사합니다.
이 다른 사람들이 더 나은 아이디어가있을 수 있습니다 작동하는 것 같다
'>'의 의미는 무엇입니까? – Elazar
@Elazar 그것은 내가 무엇을 넣어야할지 모르겠다는 것을 의미합니다. 어쩌면 어떤 종류의'T :: iterator' 유형 또는 뭔가. –
방금 편집했습니다 –