pthread를 만들 수 있고 각 pthread 내부에서 opencl 환경을 만들고 동일한 커널을 호출 할 수 있습니까? 내가하려고하는 일은 동일한 장치에서 opencl 커널을 병렬로 실행하는 것입니다. 이것이 가능한가?pthreads와 opencl
답변 해 주셔서 감사합니다.
pthread를 만들 수 있고 각 pthread 내부에서 opencl 환경을 만들고 동일한 커널을 호출 할 수 있습니까? 내가하려고하는 일은 동일한 장치에서 opencl 커널을 병렬로 실행하는 것입니다. 이것이 가능한가?pthreads와 opencl
답변 해 주셔서 감사합니다.
첫눈에이 솔기는 불필요합니다.
clEnqueueNDRange() API 호출을 사용하여 OpenCL 커널을 시작하면 필요한만큼의 커널을 시작할 수 있습니다. 각각은 동일한 장치의 자체 스레드로 사용됩니다. OpenCL 모델은 하나의 컨텍스트/명령 대기열이 GPU에서 100 - 1000s의 경량 커널 스레드를 실행할 수 있다는 것입니다.
Tim이 지적했듯이 OpenCL이 많은 스레드/커널을 지원할 때 opencl을 사용하여 pthreads로 들어가기를 원할 것입니다. GPU의 추가 스레드는 pthread와 비교하여 매우 가볍습니다. Pthread는 문맥 전환에 많은 비용이 소요되며 실제로 성능을 크게 떨어 뜨릴 수 있습니다.
그러나 동일한 명령 대기열로 많은 커널을 시작하면 커널이 순차적으로 실행됩니다. 커널마다 다른 명령 대기열이 있어야합니다. 나는 커널을 병렬로 실행하는 데있어 단일 컨텍스트가 문제가되어서는 안된다고 믿습니다 ...
6970에서 지원되는 병렬로 여러 커널을 시작할 수 있습니까? 내가 사용 해야하는 opencl 버전이 있습니까, 내가 묻는 이유는 두 개의 명령 대기열을 만들었고 속도 향상을 보지 못했지만 선형 속도 향상을 기대하지는 않지만 다시 .... 나는 opencl 버전 1.1을 사용하고 있습니다. . – user1459175
글쎄, 왜 여러 커널이 6970에서 지원되어서는 안되는 지 알지 못합니다.이 질문에 대답하기는 다소 어려울 지 모르지만 입력 데이터 크기가 다양하고 성능이 좋지는 않을 것입니다. – Nike
감사합니다. 더 큰 매트릭스를 시도해보십시오. 1024 * 1024 크기의 매트릭스 전치를 시도했습니다. – user1459175
감사합니다. – user1459175