2012-11-25 3 views
1

그래프의 정점마다 계산을 수행하는 응용 프로그램을 개발하고 있습니다. 여기서 주요한 문제는 각각의 계산이 다소 작기 때문에 대기 시간 문제입니다. 예를 들어, 각 계산은 단독으로 실행하기 위해 10ms가 걸릴 수 있으므로 PGBL은 프로세스에 중요한 대기 시간을 추가해서는 안됩니다.병렬 bgl 대기 시간 및 성능

이 작업을 수행하기 위해 내 자신의 베어 본 그래프 루틴을 코딩 할 수 있습니다. 물론 PBGL은 가지고있는 것이 더 좋을 많은 기능을 가지고 있습니다. 예를 들어 대기 시간이 문제가 아닌 경우 "클라우드"에 일부 계산을로드하지 않을 수도 있습니다.

그래서 기본적으로 CPU 또는 멀티 코어 CPU에서 벡터를 통한 계산의 오버 헤드는 얼마입니까? 또한 앞으로 gpu에 버텍스 계산을로드하는 것이 가능할까요?

나는 PGBL을 한번도 사용해 본 적이 없지만, 부스트 라이브러리를 통해 도망 쳤으며 잠재적 인 대기 시간 문제를 제외하고는 내 응용 프로그램에 거의 완벽 할 수 있다고 생각했습니다.

예를 들어 n 분기로 나뉘어 진 아주 간단한 트리와 각 분기의 계산이 별도의 코어에서 PBGL을 사용하여 실행되는 것 사이의 성능 차이는 무엇입니까? (계산 시간이 짧을 때 계산 값이 클수록 계산 값은 커집니다.)

답변

1

병렬 BGL은 주로 분산 메모리 라이브러리입니다. 공유 메모리 병렬 처리가 통합 된 연구 버전이 있습니다. 장기적으로 우리는 가속기 메모리 모델이 내부 커널에있는 원자학, 출력 쓰기 세트 중첩 및 다른 종류의 병렬화에 도움이되는 그래프 알고리즘을 지원하는 데 필요한 기타 복잡한 동작을 지원한다고 추측하여 가속기 지원을 추가 할 수 있습니다. 기본 목표는 다양한 하드웨어를 사용하여 표현 된 그래프 알고리즘을 병렬화 할 수있는 단일 병렬 추상화를 찾는 것입니다.

필자는 Parallel BGL이 적합하지 않은 주로 공유 메모리 병렬 그래프 라이브러리를 찾는 것처럼 보입니다. 현재로서는 '낮은 대기 시간'제약 조건을 충족시키지 못하는 여러 MPI 등급을 실행해야합니다. 몇 년 동안 BGL의 공유 메모리 및/또는 SIMD 버전에 관심이 있었지만 그 어떤 것도 나오지 않았습니다. Boost (Lockfree, 다양한 SIMD 구현 및 컨테이너 등)에 더 많은 공유 메모리 병렬 라이브러리가 추가됨에 따라 일종의 공유 메모리 병렬 BGL을 구현하는 데 필요한 노력이 상당히 줄어들어 요즘 중 하나가 발생할 수 있습니다 .