2017-12-13 17 views
0

멍청한 질문 일지 모르지만 나는 수십 개의 GPU 코어를 활용하기 위해 opencl을 사용하고 싶습니다. 며칠 전, opencl로 프로그래밍하는 것에 대해 탐구 할 때, 나는 작업 그룹, 작업 항목, 커널 및 opencl의 논리와 혼동을 느꼈습니다. 이 직원을 다루기 전에 다음과 같은 질문을 던지십시오.OpenCL : 더 많은 멀티 스레드 CPU와 같은 프로그램

멀티 코어 CPU를 프로그래밍 할 때처럼 단일 GPU 컴퓨팅 코어 (또는 지정된 코어)에서 실행되는 코드를 스레드에 할당 할 수 있습니까?

+0

「* 멍청한 질문일지도 모른다」* 추측은 불필요. 귀하의 질문에 대답하고 귀하가 생각하는 것과 그 결론을 이끌어내는 것을 제공하십시오. 또한 당신과 같은 담요 진술로, 당신이 이미 그것을 어떻게 감지했는지, 무엇을 발견했는지, 그리고 그것이 당신의 질문에 대답하지 않는 이유에 대한 논평을하십시오. SO는 코드 문제와 관련이 있습니다. – 8protons

+0

내가 한 검색은 모두 작업 그룹, 작업 항목, 커널에 대해 이야기했습니다. 기본 예제는 이러한 (작업 그룹, 작업 항목, 커널)을 염두에두고 있었고 제 질문에서 설명하는 것을 직접 수행 할 방법을 찾을 수 없었습니다. –

답변

5

아니요, 작동 방식이 아닙니다. OpenCL에서는 단일 작업 항목을 실행하는 커널을 작성합니다. 메모리 사본만큼 간단하거나 원본 이미지에서 픽셀을 읽어서 함께 섞어 출력 이미지에 픽셀을 쓸 수 있습니다. 이 커널은 전체 작업 그룹 (예 : 전체 출력 이미지)에서 실행됩니다. 런타임이 그렇게됩니다. 각 스레드가 다른 작업을 수행하는 다중 스레드 CPU 코드와 다릅니다. 그것은 1000 명의 인턴으로 가득 찬 창고를 갖는 것과 같습니다. 각 직원마다 고유 한 직원 번호가 있으며 창고에 들어있는 물건에는 숫자가 있으므로 "상자 (번호)와 (귀하의 번호 + 1000)를보고 함께 사물을 넣고 새 부품을 넣으십시오 상자 (귀하의 전화 번호 + 2000) ". 한 번 메가폰으로 말하면 1000 파트가 병렬로 만들어집니다.

+0

그래서 opencl은 내가 설명하는 것을 허용하지 않습니다. 예를 들어 설명해 주신 것이 opencl을 통해 gpu를 사용하는 유일한 방법입니까? –

+0

맞습니다. 단일 스레드 실행과 같은 일을하도록 API를 강요 할 수는 있지만 GPU를 사용하는 것은 비효율적 인 방법입니다. – Dithermaster

+0

이 작업을 수행하는 방법에 대한 매우 기본적인 간단한 예제를 제공해 주시겠습니까? (가능하다면 "보통/오른쪽"방식을 사용하는 동일한 예제가 있습니까?) –