행렬 벡터 제품에서 OpenMP를 사용하는 가장 좋은 방법은 무엇입니까? 지시문으로 충분합니까 (그렇다면 어디에서 배치해야합니까? 외부 루프가 더 효율적이라고 가정) 또는 일정이 필요할 것 같은가?행렬 및 벡터가있는 OpenMP
또한이 m-v 제품을 가장 효율적으로 사용하기 위해 다른 알고리즘을 어떻게 활용할 수 있습니까?
감사
행렬 벡터 제품에서 OpenMP를 사용하는 가장 좋은 방법은 무엇입니까? 지시문으로 충분합니까 (그렇다면 어디에서 배치해야합니까? 외부 루프가 더 효율적이라고 가정) 또는 일정이 필요할 것 같은가?행렬 및 벡터가있는 OpenMP
또한이 m-v 제품을 가장 효율적으로 사용하기 위해 다른 알고리즘을 어떻게 활용할 수 있습니까?
감사
수행해야하는 첫 번째 단계는 분명 하나입니다, 지시어를위한 병렬로 가장 바깥 쪽 루프를 포장. 가정 할 때. 그것은 (그리고 내) 가정을 뒷받침 할 어떤 증거를 얻기 위해 항상 약간의 실험을 해보는 것이 좋지만, 만약 당신이 오직 하나의 변화만을 만들 수 있다면 그렇게 할 가치가 있습니다.
캐시 훔침 알고리즘에 대해서는 잘 알지 못하지만, 일반적으로 문제를 하위 문제로 재귀 적으로 나눔으로써 작동한다는 것을 알고 있습니다. 이것은 지시어에 대한 병렬 적용에 적합하지 않은 것 같습니다. 나는 당신이 OpenMP의 작업으로 그러한 알고리즘을 구현할 수 있다고 생각하지만,이 작업의 오버 헤드가 합리적인 차원의 모든 m-v 제품에 대한 실행 개선보다 중요 할 것으로 생각됩니다.
(당신이 크기 NI의 MV 제품이 인수의 거짓을 입증하는 경우 레토르트 'N 합리적인 차원이 아니다'것입니다. 이제까지로 이러한 성능 질문, 증거마다 인수를 압도.)마지막으로, 따라 컴파일러와 라이브러리의 가용성에 따라 mv 계산을 위해 OpenMP를 사용할 필요가 없을 수도 있습니다. 자동 병렬화가 효율적으로 작동하거나 이미 이러한 종류의 계산을 멀티 스레드하는 라이브러리 구현이있을 수 있습니다.
감사합니다. 일정 지시문이나 다른 OpenMP 지시문은 어떻게됩니까? 그 밖의 다른 OpenMP 지시어 제안을 시도해보십시오. –
매트릭스 - 벡터 제품에 대해서는 그렇지 않습니다. 평행선 너머로 보면 스케줄 조항은 가치가 있다고 확신하지는 않습니다. 그러나 그것은 내 경험에 근거한 나의 견해입니다. 병렬 프로그래밍에서는 자신의 견해를 실제로 개발해야하기 때문에 자체 교육을 위해서는 다른 지침을보고 싶을 수도 있습니다. 나는 당신이 얻는 어떤 다른 반응들, 특히 평평한 것들이 나의 것을 모순되게 만들고,지지하는 증거를 제공하는 것에 흥미가있을 것입니다. –
HPM, 아마도 이것에 대해 언급 했어야 만하지만 엄청나게 거대한 행렬과 벡터를 100,000 개 요소의 순서로 실행할 계획입니다 ... 이것이 당신의 대답을 바꾸겠습니까? –