빌더(TWx) 님이 쓰신 글 :
: 뽀뽀중 님이 쓰신 글 :
: : 계산시간이 오래 걸려서, 시간을 줄이기 위해 Parallel을 사용하려 합니다.
: :
: :
: :
: : 검색을 해보니...C++Builder Parallel Programming Library 가 있던데,,,
: :
: : 어떻게 사용을 해야하는지 이해가 잘 안됩니다.
: :
: :
: :
: : Parallel For, Parallel Task, Parallel Future 등이 있던데,,
: :
: : 언제, 어떻게 사용하는지 궁금 합니다.
: :
: :
: :
: : 간단한 예제로 설명 부탁 드립니다.
:
:
:
: 답변:
:
: Parallel For는 for 루프문장 안의 코드들을 루프를 쪼개서 쓰레드 몇개로 할당해서
: 루프를 나눠서 처리하는 것을 의미하고....
:
: Parallel Task는 펑터나 람다 같은 작업 실행단위를 쓰레드 풀로 부터 할당 받은
: 쓰레드들로 분산 처리하는 것을 의미하고...
:
: Parallel Future는 쓰레드 풀로 부터 할당 받아 나뉘어서 처리되는 작업들로 부터
: 최종적인 결과 값을 리턴 받을 수 있도록 추상화 되어있는 인터페이스를 의미 합니다.
:
:
: 엄밀하게 C++Builder Parallel Programming Library 가 아니고
: 델파이로 구현되어 있는 것을 사용하는거라 C++ 템플릿 파워를 발휘할 수도 없고
: 퍼포먼스에서도 유리할게 없습니다. 델파이 PPL 내부 구현 구조에 이유가 있음.
:
: 올해는 C++20 이 화두가 될텐데...
: 엠바 컴파일러는 아직까지 C++17도 지원하지 않고 있으니...
:
: 앞으로 나올 Rad 10.3 에서는 C++17 지원한다고 하던데
: 어느정도 퀄리티를 갖고 나올지는...
:
: 기다렸다가 C++17 지원되는 Rad 10.3 나오면 그때 가서 작업하세요.
: C++17에선 STL 알고리즘 패러랠도 지원합니다.
:
: 계산해야할 데이타 양이 상당히 많은 케이스라면 VC++ 컴파일러 AMP 기능 이용해서
: 쓰레드 풀이 아닌 GPU를 이용해서 처리하면 비약적인 퍼포먼스가 나옵니다.
:
:
잘설명을 해주셔서 이해가 잘 되었습니다. 어느경우 무엇을 사용해야할지 몰라 고민을 하고 있었습니다.
감사합니다
|