CUDA에는 워프 내에서 모든 레인 (일반적으로 32의 크기)에 걸쳐 워프 투표 작업을 수행하기 위해 __ballot()
, __any()
, __all()
, __popc()
및 일련의 lanemask 기능이 있습니다. 하나의 wavefront 내에서 동일한 작업을 수행하기 위해 OpenCL에 구현 된 그러한 함수가 있는지 궁금합니다. 그러한 함수가 없다면, 내 프로젝트에서 사용할 인라인 함수로 직접 구현해야 할 수도 있습니다.OpenCL에 워프 투표 기능이 있습니까?
4
A
답변
3
OpenCL v. 1.1 specification, 6.11 "기본 제공 함수"섹션에 따르면, 대답은 '아니오'라고 생각합니다.
그러나 NVIDIA GPU에서는 인라인 PTX를 사용하여 이러한 작업을 구현할 수 있습니다 (또는 적어도 this blogger was able to use inline PTX 이상).
2
실제로 OpenCL subgroups을 확인하십시오. 그들은 sub_group_all()
및 sub_group_any()
과 같은 몇 가지 교차 차선 기능뿐만 아니라 다른 흥미로운 것을 정의합니다.
하위 그룹은 비교적 새로운 그룹이며 누구나 지원합니다. Intel GPU 구현 (실제로 확장)에는 명시 적 블록 쓰기 및 읽기뿐 아니라 (레지스터 파일 내에서) 레인을 바꾸기위한 몇 가지 더 흥미로운 shuffling functions이 있습니다. AMD가 서브 그룹도 지원할 것이라고 확신하지만, NVidia에 대해서는 확신하지 못합니다.
관련 문제
- 1. 워프 투표 기능 정보
- 2. CUDA 워프 투표 기능으로 인해 코드가 느려 집니까?
- 3. OpenCL에 데이터 보관
- 4. iPhone에서 워프 이미지 애니메이션
- 5. 페이스 워프 응용 프로그램
- 6. , 액션 이미지 모프/워프
- 7. 워프 창 바탕 화면
- 8. 보기 iPhone에 "워프"iOS
- 9. 투표 - 투표 수 대 투표 퍼센트?
- 10. 투표 중복 투표
- 11. PHP 투표 시스템에 세션이 있습니까?
- 12. CUDA 워프 발산 및 클럭주기
- 13. Drupal 코드를 통한 투표 API에서 투표 작성하기
- 14. 투표 시작부터
- 15. C++에서 워프/리퀴드 도구 구현
- 16. 익명의 변경 가능하고 안전한 투표 알고리즘이 있습니까?
- 17. PHP 및 MySQL 투표 수 문제가 있습니까?
- 18. AJAX로 얼마나 빨리 투표 할 수 있습니까?
- 19. 큰 투표 스키마 : 어떻게 할 수 있습니까?
- 20. VB에서 "coroutine"기능이 있습니까?
- 21. GIS에이 기능이 있습니까?
- 22. While 루프 기능이 있습니까?
- 23. php에 "지도"기능이 있습니까?
- 24. 역지도 기능이 있습니까?
- 25. Ext.ux.Livegrid와 비슷한 기능이 있습니까?
- 26. 플렉스에 수면 기능이 있습니까?
- 27. PyroCMS에 검색 기능이 있습니까?
- 28. Graphiti에 툴팁 기능이 있습니까?
- 29. xpath에 분할 기능이 있습니까?
- 30. 어떤 기능이 호출되고 있습니까?
실제로이 질문을 제기 한 후에 OpenCL의 크로스 플랫폼 기능으로 인해 이러한 내장 함수가 없을 것임을 깨달았습니다. 모든 하드웨어 특정 기능 구현은 받아 들일 수 없을 것입니다. 그러나 당신의 마지막 코멘트는 나에게 희망을 준다. AMD의 하드웨어를 위해 AMD의 일리노이를 사용하여 인라인 함수를 만들었다면 행복 할 것입니다 :-P – gpunerd
예,하지만 아마도 nvidia에서는 인라인 어셈블러를, 다른 모든 경우에는 opencl을 사용할 수 있습니다 –