프로그래밍/랩뷰 기술자료

랩뷰에서의 멀티프로세싱과 하이퍼스레딩

에이티에스 2023. 3. 28. 10:27
728x90

하이퍼스레드를 지원하는 컴퓨터는 단일 프로세서를 가지지만 멀티프로세서를 가진 컴퓨터와 같이 동작합니다. (Windows) 하이퍼스레딩은 일부 Intel Pentium 4 및 이후 버전에서 지원하는 기능입니다. 하이퍼스레드를 지원하는 컴퓨터에서 Windows 작업 관리자를 실행하고 성능 탭을 클릭하면, Windows 작업 관리자는 두 개의 CPU의 사용 히스토리를 디스플레이합니다. (macOS) Activity Monitor를 시작하여 성능을 점검합니다.

 

하이퍼스레드를 지원하는 프로세서는 같은 마이크로칩에 내장된 여러 프로세서처럼 동작합니다. 레지스터 세트와 같은 칩의 일부 리소스는 복사됩니다. 실행 유닛 및 캐시와 같은 다른 리소스는 공유됩니다. 작은 작업을 저장하는 버퍼와 같은 일부 리소스는 여러 부분으로 분할되며, 각 논리적 프로세서가 한 부분씩을 받습니다.

 

하이퍼스레딩을 이용한 어플리케이션의 최적화는 멀티프로세서 시스템(멀티코어,여러 CPU 또는 SMP 시스템으로도 불림)의 어플리케이션 최적화와 유사하지만, 일부 차이점이 있습니다. 예를 들면 하이퍼스레딩 컴퓨터는 실행 단위를 공유하며, 두 개의 프로세서를 가진 컴퓨터는 두 개의 완전한 실행 단위를 가집니다.

 

그러므로, 부동소수로 실행 단위가 제한된 모든 어플리케이션의 경우 실행 단위를 공유할 필요가 없기 때문에 멀티프로세서를 가진 컴퓨터쪽이 성능이 좋습니다. 캐시 쟁탈에도 같은 원리가 적용됩니다. 두 개의 스레드가 캐쉬에 접근하려 하는 경우, 각 프로세서가 각각 완전한 크기의 캐시를 가지고 있는 멀티프로세서 컴퓨터가 성능이 더 좋습니다.

 

LabVIEW 실행 개요

LabVIEW 실행 시스템은 이미 멀티프로세싱을 지원하도록 만들어져 있습니다. 텍스트 기반의 프로그래밍 언어에서 멀티스레드를 사용한 어플리케이션을 만들기 위해서는 멀티스레드를 생성하고 스레드간의 통신을 위한 코드를 작성해야 합니다. 하지만 LabVIEW는 VI에서 멀티스레딩 기회를 인식할 수 있으며, 실행 시스템이 대신 멀티스레딩 통신을 처리해줍니다.

다음 예제는 LabVIEW 멀티스레드 실행 시스템을 이용합니다.

이 VI에서, LabVIEW는 멀티프로세싱 또는 하이퍼스레딩 환경에서 두 개의 루프를 동시에 독립적으로 실행할 수 있다는 것을 인식합니다.

 

소수 병렬 예제

다음 예제는 2보다 큰 소수를 계산합니다.

블록다이어그램은 3과 숫자 항 사이의 모든 홀수를 계산하고 소수인지 결정합니다. 안쪽의 For 루프는 임의의 숫자를 나눈 나머지가 제로일 때 참값을 반환합니다.

바깥쪽 For 루프의 반복은 서로 의존하지 않습니다. For 루프의 반복이 순서에 관계없이 실행될 수 있는 경우, For 루프에서 루프 반복 병렬 처리를 활성화해서 성능을 향상시킵니다. 예를 들어 바깥쪽의 For 루프는 각각의 반복루프마다 많은양의 연산을 처리하기 때문에 반복 병렬 처리를 하기에 좋은 대상입니다.

이 VI에서 병렬 처리를 활성화하려면, For 루프에서 마우스 오른쪽 버튼을 클릭한 후, 바로 가기 메뉴에서 반복 병렬 처리 설정을 선택합니다. 이렇게 하면 For 루프 반복 병렬 처리 대화 상자가 나타납니다.

 

멀티프로세서 컴퓨터에서 병렬 루프 반복을 사용하면, LabVIEW가 여러 프로세서를 활용하여 For 루프를 더 빨리 실행하도록 할 수 있습니다. 이 예의 병렬 버전은 LabVIEW가 동시에 여러 다른 코드를 실행할 수 있기 때문에 더욱 효율적입니다.

이러한 두 개의 예제 VI에는 명확한 스레드 관리를 위한 코드를 가지지 않습니다. LabVIEW 데이터 흐름 프로그래밍 패러다임은 LabVIEW 실행 시스템이 반복 루프 인스턴스를 다른 스레드에서 실행하도록 허용합니다.

 

하이퍼스레드 또는 멀티프로세서 시스템을 위한 프로그래밍

하이퍼스레드를 지원하는 컴퓨터를 위한 어플리케이션의 성능 최적화는 멀티프로세서 컴퓨터의 성능 최적화와 거의 같습니다. 그러나, 하이퍼스레드를 지원하는 컴퓨터는 두 개의 논리적인 프로세서 사이에 캐시 및 실행 단위와 같은 일부 리소스를 공유하기 때문에 차이점은 존재합니다. 하이퍼스레드를 지원하는 컴퓨터의 공유된 리소스가 어플리케이션에 제한이 된다고 생각하는 경우, Intel VTune과 같은 고급 샘플링 성능 분석기로 어플리케이션을 테스트합니다.

 

LabVIEW에서의 멀티프로세싱과 하이퍼스레딩 - NI

728x90
반응형
그리드형