과학 컴퓨팅에서 병렬화로 해결할 수없는 유명한 문제 / 알고리즘이 있습니까?


27

과학 컴퓨팅에서 병렬화로 속도를 낼 수없는 유명한 문제 / 알고리즘이 있습니까? CUDA에 관한 책을 읽는 동안 대부분의 일이 가능할 것 같습니다.


메모리 계층을 고려할 때에도 이진 검색을 신속하게 수행 할 수 없습니다 (즉, 요인에 의해).


3
@Anycorn No, 왼쪽으로 보이는 클래식 Gram-Schmidt와 오른쪽으로 보이는 수정 된 Gram-Schmidt는 병렬로 잘 작동합니다. 최근 대중화 된 TSQR을 포함하여 다른 많은 병렬 QR 알고리즘이 있습니다.
Jed Brown

@Raphael : ist는 factor log (n), n = # processors에 의한 이진 검색 속도를 높일 수 있다고 생각합니다. 대신 검색 간격을 부품으로 나누고 계속할 위치를 확인하는 대신 간격을 n 부분으로 나눕니다. 아마도 더 효율적인 방법이있을 것입니다.
miracle173

답변:


32

중심 문제는 총 계산량 ( T) 에 대한 임계 경로 ( )의 길이이다 . 경우 C는 비례 T 최선을 일정한 속도 업, 다음 병렬 제공. 경우 C는 보다 작은 점근 T 문제 크기가 증가함에 따라 더 많은 병렬 처리를위한 공간이 존재한다. 입력 크기 N 에서 T 가 다항식 인 알고리즘의 경우 로그 시간보다 적은 양으로 유용한 양을 계산할 수 없기 때문에 가장 좋은 경우는 C ~ log T 입니다.CTCTCTTNClogT

  • 표준 알고리즘을 사용한 3 각형 해법의 경우 C = T 모든 작업은 이전 작업 완료에 따라 다르므로 병렬 처리의 기회가 없습니다. 3 차 문제는 고조파 확장을 사용하여 구성된 기본 함수를 사용하여 중첩 된 해부 직접 해석, 다중 레벨 도메인 분해 또는 멀티 그리드를 사용하여 병렬 컴퓨터에서 대수 시간으로 로그 시간으로 해결할 수 있습니다 (이러한 세 가지 알고리즘은 여러 차원에서 고유하지만 1D에서 정확하게 일치 할 수 있음).C=T
  • 행렬을 사용한 밀도가 낮은 삼각 삼각 해 는 T = N = O ( m 2 ) 이지만 임계 경로는 C = m = √입니다.m×mT=N=O(m2) 이므로 일부 병렬 처리가 유리할 수 있습니다.C=m=T
  • 멀티 그리드와 FMM은 모두 길이가 C = log T 인 임계 경로를 가진 입니다.T=NC=logT
  • 도메인 ( 0 , 1 ) d 의 정규 메시 에서 시간 에 대한 명시 적 전파 는 k = τ / Δ t τ N 1 / d 시간 단계 (안정성을 위해)를 요구하므로 임계 경로는 적어도 C = k입니다. . 전체 작업 시간은 T = k는 N = τ N ( D + 1 ) / D를 . 유용한 최대 프로세서 수는 P = T입니다.τ(0,1)dk=τ/ΔtτN1/dC=kT=kN=τN(d+1)/dP=T/C=N 이면 증가 된 병렬 처리로 나머지 요소 를 복구 할 수 없습니다.N1/d

공식적인 복잡성

NC 복잡도 클래스 (polylogarithmic시기, IE) 병렬로 효과적으로 해결 될 수있는 이러한 문제를 특성화. 인지는 알려져 있지 않지만, 거짓으로 널리 가정되어있다. 이것이 사실이라면, P- 완료 는 "내재적으로 순차적 인"문제를 특징 짓고 병렬 처리에 의해 크게 발전 될 수 없습니다.NC=P


13

이것에 대한 이론적 측면을 제공하기 위해, NCO ( n k ) 병렬 프로세서 를 갖는 시스템 에서 시간으로 해결할 수있는 복잡성 클래스로 정의된다 . 그것은 아직도 알 수없는 여부 P = N C (대부분의 사람들은 그렇지 않은 생각하지만) P는 다항식 시간에 풀 수있는 문제의 집합입니다. 병렬화하는 "가장 어려운"문제는 P의 모든 문제 가 다음을 통해 P 완료 문제 로 감소 될 수 있다는 점 에서 P 완료 문제라고합니다.O(logcn)O(nk)P=NCPPPP 감소. 단일 P- 완전 문제가 N C 에 있음을 보여 주면 P = N C 임을 증명할 수 있습니다(위에서 언급 한 것처럼 아마도 거짓 임).NCPNCP=NC

따라서 완료된 모든 문제 는 직관적으로 병렬화하기가 어렵습니다 (큰 속도 향상이 여전히 가능하더라도). P 우리는 심지어 아주 좋은 일정 인자 속도 향상을 갖고 있지 않은 - 완전한 문제는 선형 계획법 (참조입니다 또는 교환에 댓글을 추가).PP


9

암달의 법칙을 시작하여 시작하십시오 . 기본적으로 많은 일련의 단계가있는 것은 병렬 처리에서 크게 도움이되지 않습니다. 몇 가지 예에는 구문 분석, 정규식 및 가장 높은 비율 압축이 포함됩니다.

그 외에도 중요한 문제는 종종 메모리 대역폭의 병목 현상입니다. 특히 대부분의 GPU에서 이론적 인 플롭은 ALU에 도달 할 수있는 부동 소수점 수를 훨씬 능가합니다. 산술 강도 (플롭 / 캐시 미스)가 낮은 알고리즘은 RAM을 기다리는 데 많은 시간이 소요됩니다.

마지막으로, 코드 조각에 분기가 필요한 경우에는 ALU의 논리 수가 일반적으로 많기 때문에 좋은 성능을 얻지 못할 수 있습니다.

결론적으로 GPU에서 속도 향상을 얻기 어려운 실제 예제는 정수 배열에서 0의 수를 세는 것입니다. 하나) 0을 찾은 경우 작업 당 하나 이상의 메모리 페치를 만듭니다.

분기 문제가없는 예는 다른 벡터의 누적 합인 벡터를 계산하는 것입니다. ([1,2,1]-> [1,3,4])

이것이 "유명한"것으로 여겨지는지는 모르겠지만 병렬 컴퓨팅이 도움이되지 않는 많은 문제가 있습니다.


3
: 당신이 준 "분기 무료 예는"실제로는 좋은 병렬 알고리즘을 가진 접두사 합이다 http.developer.nvidia.com/GPUGems3/gpugems3_ch39.html 비슷한 이유로 효율적이어야한다 0의 수를 계산. 그러나 산술 강도에 대한 방법은 없습니다 ...
Max Hutchinson

시원한. 나는 그 중 하나를 고쳤습니다.
meawoppl

8

아이코 날 방정식을 풀기위한 (고명 한) 빠른 행진 방법은 병렬화로 속도를 낼 수 없습니다. 병렬화에 더 적합한 아이코 날 방정식을 풀기위한 다른 방법 (예 : 빠른 스위핑 방법)이 있지만 여기서도 (병렬) 속도 향상의 가능성은 제한적입니다.

Eikonal 방정식의 문제점은 정보의 흐름이 솔루션 자체에 달려 있다는 것입니다. 느슨하게 말해서 정보는 특성 (광학의 광선)을 따라 흐르지 만 특성은 솔루션 자체에 따라 다릅니다. 그리고 이산 된 아이코 날 방정식에 대한 정보의 흐름은 더 나빠서 병렬 속도 향상이 필요한 경우 추가 근사치 (고속 스위핑 방법에 암시 적으로 존재 함)가 필요합니다.

병렬화의 어려움을 보려면 Sethian 웹 페이지 의 예제와 같이 멋진 미로를 상상해보십시오 . 미로를 통한 최단 경로상의 세포의 수는 (아마도) 상응하는 문제를 해결하는 임의의 (병렬) 알고리즘의 최소 단계 / 반복의 수에 대한 하한이다.

하한은 증명하기가 어렵고 종종 알고리즘에서 사용되는 연산에 대한 합리적인 가정이 필요하기 때문에 "(아마도)는"라고 쓴다.


좋은 예이지만, 귀하의 주장 하한은 믿지 않습니다. 특히, 멀티 그리드 방법을 사용하여 아이코 날 방정식을 해결할 수 있습니다. 고주파 Helmholtz를위한 멀티 그리드와 마찬가지로, 도전은 주로 적합한 거친 공간을 설계하는 데 있습니다. 미로의 경우, 미로의 세그먼트에 대한 국부적 (따라서 독립적 인) 문제를 해결함으로써 대략적인 표현으로 결정된 그래프 집계 전략이 효과적이어야한다.
Jed Brown

일반적으로 멀티 그리드 방법이 제대로 작동하는 경우 문제의 세분성이 설명보다 낮으며 코스 해결 단계에서 비례하지 않는 "정답의 양"이 발생 함을 의미합니다. 단지 관찰이지만, 그런 종류의 하한은 까다 롭습니다!
meawoppl

@JedBrown 실용적인 관점에서, 고주파 Helmholtz에 대한 멀티 그리드는 귀하의 의견이 암시하는 것과는 대조적으로 상당히 도전적입니다. 그리고 eikonal 방정식에 멀티 그리드를 사용하는 것은 "흔치 않은"것입니다. 그러나 나는 제안 된 하한에 대한 당신의 "이론적"이의를 본다 : 미로 내부의 다양한 지점들로부터의 시간 오프셋들은이 지점들에 도달하기까지의 시간이 알려지기 전에 계산 될 수 있고, 누락 된 정보가 이용 가능 해지면 병렬로 추가된다. 그러나 실제로는 병렬 병렬 eikonal 솔버가 실제로 한계에 가까워지면 행복합니다.
토마스 클림 펠

나는 그것이 쉽다는 것을 의미하지는 않았고, 웨이브 레이 거친 공간은 실제로 매우 기술적입니다. 그러나 개방 된 지역에는 이미 병렬 처리의 기회가 있지만 좁은 "미로"(표준 방법으로 거의 병렬화되지 않음)에서는 업 스케일링 문제가 더 다루기 쉽다고 생각합니다.
Jed Brown

@JedBrown Slide 39 of www2.ts.ctw.utwente.nl/venner/PRESENTATIONS/MSc_Verburg.pdf(2010 년부터)는 "솔버를 2D에서 3D로 확장"및 "매우 다양한 파수 문제에 대한 방법 조정"과 같은 것을 말합니다. 따라서 wave-ray 멀티 그리드는 유망 할 수 있지만 "아직 성숙하지 않은"것은 현재 문제를 설명하는 "매우 기술적 인"것보다 더 적합한 것으로 보입니다. 그리고 이것은 실제로 고주파수 Helmholtz 솔버가 아닙니다 ( "전파"솔버이기 때문에). "성공적으로 성숙 된"멀티 그리드 Helmholtz 솔버 ( "풀 웨이브"솔버)도 있지만 여전히 "능동적 인 연구"입니다.
Thomas Klimpel

1

실제로 병렬화하기 어려운 또 다른 종류의 문제는 반올림 오류에 민감한 문제이며, 여기서 직렬화에 의해 수치 안정성이 달성됩니다.

예를 들어 Gram–Schmidt 프로세스 및 일련의 수정을 고려하십시오 . 이 알고리즘은 벡터와 함께 작동하므로 병렬 벡터 연산을 사용할 수 있지만 확장 성이 떨어집니다. 벡터 수가 많고 벡터 크기가 작은 경우 병렬 클래식 Gram-Schmidt를 사용하고 직교 화하는 것이 단일 수정 된 Gram–Schmidt보다 안정적이고 빠를 수 있지만 몇 배 더 많은 작업이 필요합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.