C로 작성된 더 작은 프로그램을 openCL로 번역하려고합니다. 일부 입력 데이터를 GPU로 전송 한 다음 연속적인 커널 호출을 사용하여 장치에서 모든 계산을 수행하기로되어 있습니다.C 코드를 OpenCL로 변환
그러나 데이터 양이 많아서 CPU와 GPU간에 데이터를주고받는 것을 피해야하기 때문에 병렬 처리에 적합하지 않은 코드 부분에 어려움을 겪고 있습니다.
커널의 일부를 병렬 처리하지 않고 실행할 수있는 방법이 있습니까?이 코드를이 코드로 대체 할 수 있습니까? 글로벌 작업 규모를 1로 설정하면됩니까?
답변 해 주셔서 감사합니다. 나는 openCL에 익숙하다. 어리석은 질문이라면 용서해 주겠다.하지만 두 개의 맥락 (Intel CPU와 nVidia GPU)을 가지고 있다면 데이터를 앞뒤로 보내야한다는 뜻은 아니다. – user1894442
메모리 매핑과 함께 고정 메모리를 사용할 수 있습니다 : CPU는 메모리에 직접 액세스 할 수 있으며 GPU는 필요한 부분을 전역 메모리에 복사 할 수 있습니다. 처리에 비해 많은 데이터 이동이있는 경우 알고리즘을 수정해야 할 수 있습니다. 이상적인 경우 CPU와 GPU를 동시에 실행할 수 있습니다. – Pragmateek