주로 멀티 코어 CPU에 쓰루 GPU 라이브러리를 사용하여 작성한 코드를 이식하는 데 관심이 있습니다. 고맙게도 the website은 추력 코드가 OpenMP/Intel TBB와 같은 스레딩 환경에서 사용될 수 있다고 말합니다.openmp에서 추진력 사용 : 실질적인 속도 향상 없음
최대 16 개의 MP 스레드를 지원할 수있는 컴퓨터를 사용하여 큰 배열을 정렬하기위한 간단한 코드를 작성했습니다. 크기의 임의의 배열을 정렬이 시스템에서 얻은
타이밍 16000000
이STL 있습니다 : 1.47의
추력 (16 개 스레드) : 1.21의
거의 모든 속도 -이있는 것 같습니다 쪽으로. GPU와 마찬가지로 OpenMP를 사용하여 배열을 정렬하는 속도를 높이는 방법을 알고 싶습니다.
코드는 아래에 있습니다 (sort.cu 파일).
NVCC -O2 -o 정렬 sort.cu -Xcompiler -fopenmp -DTHRUST_DEVICE_SYSTEM = THRUST_DEVICE_BACKEND_OMP -lgomp
NVCC 버전이 사용되는 스러스트 라이브러리 버전 5.5 V1 이며 다음과 같이 편집을 실시 하였다. 7.0
clock()을 사용하지 말고'omp_get_wtime()'을 사용하십시오. 정렬은 내가 본 것을 의미하지만, nlog (n)이기 때문에 연산은 메모리 대역폭에 제한되어 있으므로 여러 개의 빠른 코어에서 많은 이점을 얻을 수 없다고 생각합니다. "코어"속도와 메모리 속도 간의 비율이 훨씬 낮기 때문에 GPU (또는 XeonPhi)의 상황은 다릅니다. –