카테고리 없음

랩뷰 Loop별 CPU 할당하여 멀티스레딩 구현

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

LabVIEW로는 병렬 또는 파이프라인을 사용하여 쉽게 여러 CUP(멀티코어, 멀티프로세서 또는 SMP 시스템으로도 불림)를 활용할 수 있습니다. 일부 경우, 특정한 프로세서에 특정한 스레드를 수동으로 할당하여 CPU 효율성을 더욱 높일 수도 있습니다.

(Real-Time, Windows) Timed 루프를 사용하여 수동으로 CPU 할당을 컨트롤할 수 있습니다.

 

예를 들어 2 개의 CPU가 있는 시스템에서 병렬 Timed 루프 X, Y, Z를 가진 어플리케이션을 가정해봅니다. Timed 루프는 실행하는데 각각 100 ms, 100 ms, 200 ms가 소요됩니다. Timed 루프가 모두 기본 우선순위로 설정된 경우, CPU 스케줄러는 Timed 루프 X와 Z가 하나의 CPU에서, Timed 루프 Y가 다른 하나의 CPU에서 작동하도록 할당할 수 있습니다.

 

그 결과 다음 그림과 같이 전체 실행 시간은 300 ms가 됩니다.

 

다음 블록다이어그램에서 보이는 것처럼 수동으로 Timed 루프 X와 Y를 하나의 CPU에 할당하고, Timed 루프 Z를 다른 하나의 CPU에 할당하여 VI를 최적화할 수도 있습니다.

 

이 경우, 수동 CPU 할당은 다음 설명에서 보이는 것처럼 전체 실행 시간을 200 ms로 단축시킵니다.

  노트  Real-Time Module은 기본 프로세서(CPU 0)에서 시스템 스레드를 실행합니다.
정확성을 가지는 Timed 루프를 기본 CPU가 아닌 전용 CPU에 할당하여 지터를 줄일 수도 있습니다. 또한 다른 CPU 세트를 수동 CPU 할당을 위해 예약하는 동안 하나의 CPU 세트에 자동 로드 균형을 사용할 수 있습니다.
Real-Time Module CPU 스케줄러는 Timed 구조 스레드를 시스템 스레드와 개별적으로 처리하며, 기본으로 두 스레드 모두에 모든 CPU의 자동 로드 균형을 수행합니다. 

 

 

수동으로 CPU 할당하기 - NI

728x90
반응형
그리드형