막연한 주제의 질문에 대해 유감스럽게 생각합니다.하지만 일부 학술 동영상 처리 루틴을 연구 중입니다. 알고리즘은 MATLAB로 작성되었으며, 개발 목적으로는 괜찮지 만 약 60spf 또는 약 0.0166fps로 비디오를 처리했습니다. 말할 필요도없이, 이것은 데모 등으로는 충분하지 않습니다. 그래서 여름 방학은 일과를 급격하게 더 빨리 할 수있는 것으로 바꾸는 것입니다.당황스러운 병렬 문제에 가장 적합한 솔루션은 무엇입니까?
nvidia의 GPGPU 솔루션 인 CUDA의 코드 중 가장 느린 부분을 다시 작성했습니다. 그러나 상대적으로 연속적이기 때문에 CPU에서 더 잘 수행되는 것으로 보이는 코드의 상당 부분이 있습니다. 문제는 내가받은 머신에 총 8 개의 논리 코어가있는 2 개의 제온 프로세서가 있으며 단일 코어 만 코딩하여 병목 현상을 일으키는 것은 수치 스럽습니다. 비디오 변환 프로세스는 각 프레임이 다른 프레임에 의존하지 않는다는 점에서 기능적입니다. 그래서 어떤 종류의 비동기식 큐/스트림이 최선이라고 생각했습니다.
내 질문은 거짓말 : 수율을 높이기위한 최선의 노력으로 이러한 유형의 병렬 처리를 구현하는 가장 좋은 방법은 무엇입니까?
내가 본 솔루션 중 일부는 OpenMP, .net TPL 및 간단한 pthreads입니다.
비동기 프로그래밍에 대한 기본 노출 만 있기 때문에 뮤텍스 및 장벽을 무너 뜨리는 대신 라이브러리 또는 무언가를 사용하여 여러 번 발을 쏠 수 있습니다. 이번 여름의 목표 중 하나이기 때문에 배우는 것도 괜찮습니다. 그러나 동시에 병렬 처리는 입니다. 그러나, 속도 차이가 실제로 매우 두드러지면, 나는 2 주 동안 내 머리카락을 꺼내려고합니다. : P
미리 감사드립니다.
잘 정의 된 동기화 포인트를 사용하여 간섭없이 작업 할 수있는 여러 부분으로 문제를 해결할 수 있다면 사용 된 "라이브러리"는 단지 설탕이어야합니다 ... 한 가지 간단한 방법은 쓰레드 풀, 동시 큐 (하나는 입력 용, 다른 하나는 출력용), 그리고 그 쓰레드가 소유하고있는 객체/데이터에만 접근 할 수 있습니다 (이것은 변경할 수없는 외부 구조로 확대 될 수 있습니다). –