2014-11-25 2 views
1

스도쿠 해법에서 멀티 스레딩을 구현하는 클래스 프로젝트 작업 중입니다. 나의 현재 솔버가 솔버는 9x9의 세포에있는 스도쿠 퍼즐을최고의 멀티 스레딩 구현 C++

설정을 작동하는 방법 퍼즐의 왼쪽 상단에서 시작, ...

을 다음과 같이 스레드 하나의 작품과 3 명 확인 (행 검사를 수행, 열 검사, 상자 검사) 각 셀은 0-8의 크기를 가질 수 있습니다. 검사 중 하나가 검사에서 숫자를 찾으면 해당 배열 요소를 1로 설정합니다 (이것은 위치가 그 상자의 대답 가능성). 배열에 요소가 1 개 남았을 때 그 셀은 대답으로 채워집니다. 나는 가장 빠른 스도쿠 솔버를 만들려고 아니에요하지만 난 그냥 멀티 스레드 대 단일 스레드에서 시간 차이를 보여주고 싶은

내 질문. 어떤 스레드 라이브러리가이 용도로 사용하는 것이 가장 좋을까요? 각각의 수표 중 하나를 처리하고 여러 개의 퍼즐을 통해 실행하는 3 개의 스레드를 실행하는 것이 가장 좋습니다. 아니면 여러 개의 스레드가 자신의 퍼즐을 실행하고 해결하는 것이 좋습니다. 생각해 볼 수있는 더 좋은 방법이 있습니까?

답변

0

나는이 중 하나를 시도 할 것입니다 :
부스트
OpenMP를
또는 인텔

당신은 당신의 코드 위에 몇 가지의 #pragma를 추가 할 필요가 있기 때문에 OpenMP를이다 사용하기 쉬운 TBB

.

부스트 또는 인텔 TBB는 코드를 수정해야한다는 것을 의미합니다. 여기

몇 가지 링크입니다 : http://openmp.org/wp/

https://www.threadingbuildingblocks.org/

http://www.boost.org/

다른 CPU의 다른 implmentation 당신은 또한 더 나은 이해를 위해 당신에게 프로파일 러를 필요
다른 결과가 당신에게 줄 것이라는 점을 알고있다하십시오 최적화가 도움이되는 곳.

Visual Studio에서 실행중인 경우 성능을 위해 프로파일 러가 내장되어 있습니다.

시작하는 것이 도움이되기를 바랍니다.