php教程 php手册 多核编程中的负载平衡难题

多核编程中的负载平衡难题

Jun 21, 2016 am 08:57 AM
cpu

  多核CPU中,要很好地发挥出多个CPU的性能的话,必须保证分配到各个CPU上的任务有一个很好的负载平衡。否则一些CPU在运行,另外一些CPU处于空闲,无法发挥出多核CPU的优势来。


  要实现一个好的负载平衡通常有两种方案,一种是静态负载平衡,另外一种是动态负载平衡。


  1、静态负载平衡


  静态负载平衡中,需要人工将程序分割成多个可并行执行的部分,并且要保证分割成的各个部分能够均衡地分布到各个CPU上运行,也就是说工作量要在多个任务间进行均匀的分配,使得达到高的加速系数。


  静态负载平衡问题从数学上来说是一个NP完全性问题,Richard M. Karp, Jeffrey D. Ullman, Christos H. Papadimitriou, M. Garey, D. Johnson等人相继在1972年到1983年间证明了静态负载问题在几种不同约束条件下的NP完全性。


  虽然NP完全性问题在数学上是难题,但是这并不是标题中所说的难题,因为NP完全性问题一般都可以找到很有效的近似算法来解决。


  2、动态负载平衡


  动态负载平衡是在程序的运行过程中来进行任务的分配达到负载平衡的目的。实际情况中存在许多不能由静态负载平衡解决的问题,比如一个大的循环中,循环的次数是由外部输入的,事先并不知道循环的次数,此时采用静态负载平衡划分策略就很难实现负载平衡。


  动态负载平衡中对任务的调度一般是由系统来实现的,程序员通常只能选择动态平衡的调度策略,不能修改调度策略,由于实际任务中存在很多的不确定因素,调度算法无法做得很优,因此动态负载平衡有时可能达不到既定的负载平衡要求。


  3、负载平衡的难题在那里?


  负载平衡的难题并不在于负载平衡的程度要达到多少,因为即使在各个CPU上分配的任务执行时间存在一些差距,但是随着CPU核数的增多总能让总的执行时间下降,从而使加速系数随CPU核数的增加而增加。


  负载平衡的困难之处在于程序中的可并行执行块很多要靠程序员来划分,当然CPU核数较少时,比如双核或4核,这种划分并不是很困难。但随着核数的增加,划分的粒度将变得越来越细,到了16核以上时,估计程序员要为如何划分任务而抓狂。比如一段顺序执行的代码,放到128核的CPU上运行,要手工划分成128个任务,其划分的难度可想而知。


  负载划分的误差会随着CPU核数的增加而放大,比如一个需要16个时间单位的程序分到4个任务上执行,平均每个任务上的负载执行时间为4个时间单位,划分误差为1个时间单位的话,那么加速系数变成 16/(4+1)=3.2,是理想情况下加速系数 4的80%。但是如果放到一个16核CPU上运行的话,如果某个任务的划分误差如果为0.5个时间单位的话,那么加速系数变成16/(1+0.5) = 10.67,只有理想的加速系数16的66.7%,如果核数再增加的话,由于误差的放大,加速系数相比于理想加速系数的比例还会下降。


  负载划分的难题还体现在CPU和软件的升级上,比如在4核CPU上的负载划分是均衡的,但到了8核、16核上,负载也许又变得不均衡了。软件升级也一样,当软件增加功能后,负载平衡又会遭到破坏,又需要重新划分负载使其达到平衡,这样一来软件设计的难度和麻烦大大增加了。


  如果使用了锁的话,一些看起来是均衡的负载也可能会由于锁竞争变得不平衡起来。


  4、负载平衡的应对策略


  对于运算量较小的软件,即使放到单核CPU上运行速度也很快,负载平衡做得差一些并没有太大影响,实际中负载平衡要考虑的是大运算量和规模很大的软件,这些软件需要在多核上进行负载平衡才能较好地利用多核来提高性能。


  对于大规模的软件,负载平衡方面采取的应对策略是发展划分并行块的宏观划分方法,从整个软件系统层面来进行划分,而不是象传统的针对某些局部的程序和算法来进行并行分解,因为局部的程序通常都很难分解成几十个以上的任务来运行。


   另外一个应对策略是在工具层面的,也就是编译工具能够协助人工进行并行块的分解,并找出良好的分解方案来,这方面Intel已经作出了一些努力,但是还需要更多的努力让工具的功能更强大一些才能应对核数较多时的情况。



본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

게임할 때 CPU 사용률은 얼마나 되어야 합니까? 게임할 때 CPU 사용률은 얼마나 되어야 합니까? Feb 19, 2024 am 11:21 AM

게임이 많은 리소스를 소비하기 때문에 컴퓨터 속도가 느려지는 것은 흔한 일입니다. 게임을 할 때 CPU 사용량을 이해하여 과부하를 방지하는 것이 중요합니다. 따라서 적절한 CPU 사용량을 추적하는 것이 게임 경험을 원활하게 유지하는 데 중요합니다. 이 문서에서는 게임이 실행되는 동안 달성해야 하는 적절한 CPU 사용량을 살펴보겠습니다. 게임 중 CPU 사용률 CPU 사용률은 프로세서 작업 부하를 나타내는 중요한 지표이며 CPU의 성능 사양에 따라 달라집니다. 더 강력한 CPU는 일반적으로 사용량이 더 높습니다. 코어와 스레드가 더 많은 CPU는 시스템의 전반적인 성능을 향상시킬 수 있습니다. 멀티스레딩 지원은 CPU의 잠재력을 최대한 활용하는 데 도움이 됩니다. 게임에서 CPU 사용량은 프로세서 활용도에 따라 달라지며, 이는 게임에 영향을 미칠 수 있습니다.

Win11에서 CPU 성능을 최대로 설정하는 방법 Win11에서 CPU 성능을 최대로 설정하는 방법 Feb 19, 2024 pm 07:42 PM

많은 사용자는 Win11 시스템을 사용할 때 컴퓨터가 원활하게 실행되지 않는다는 사실을 발견합니다. 그들은 CPU 성능을 향상시키고 싶지만 어떻게 해야 하는지 모릅니다. 다음은 Win11 시스템에서 CPU 성능을 최고 수준으로 설정하여 컴퓨터를 더욱 효율적으로 만드는 방법을 자세히 소개합니다. 설정 방법: 1. 바탕 화면에서 "내 PC"를 마우스 오른쪽 버튼으로 클릭하고 옵션 목록에서 "속성"을 선택합니다. 2. 새 인터페이스로 들어간 후 "관련 링크"에서 "고급 시스템 설정"을 클릭합니다. 3. 창이 열리면 상단의 '고급' 탭을 클릭한 후, '성능' 하단의 &를 클릭하세요.

Intel XTU를 사용하여 CPU를 언더볼팅하고 오버클럭하는 방법 Intel XTU를 사용하여 CPU를 언더볼팅하고 오버클럭하는 방법 Feb 19, 2024 am 11:06 AM

Intel XTU는 컴퓨터 성능을 쉽게 관리할 수 있는 강력한 응용 프로그램입니다. CPU 전압을 조정하여 과열 문제를 해결하거나 오버클러킹을 통해 성능을 높일 수 있습니다. 이 기사에서는 Intel XTU를 활용하여 전압 조정이나 오버클러킹 등 컴퓨터 성능을 최적화하는 방법을 살펴보겠습니다. 언더볼팅과 오버클러킹은 CPU에 어떤 영향을 미치나요? CPU 언더볼팅 및 오버클럭 방법을 계속 배우기 전에 먼저 CPU가 무엇인지 이해해야 합니다. 언더볼팅은 CPU에 필요한 전압을 점진적으로 낮추는 것을 말합니다. 높은 전압으로 인해 온도가 높아지므로 이 프로세스는 열 방출을 줄이는 데 도움이 됩니다. CPU에 공급되는 전압을 줄임으로써 온도를 효과적으로 낮출 수 있습니다. 노트북이 뜨거워진 후 속도가 느려지기 시작하면 즉시 문제를 해결해야 합니다.

컴퓨터 CPU의 클럭 주파수를 높이는 방법 컴퓨터 CPU의 클럭 주파수를 높이는 방법 Feb 20, 2024 am 09:54 AM

컴퓨터 CPU를 오버클럭하는 방법 기술이 지속적으로 발전함에 따라 컴퓨터 성능에 대한 사람들의 요구도 점점 더 높아지고 있습니다. 컴퓨터 성능을 향상시키는 효과적인 방법은 오버클럭을 통해 CPU의 작동 주파수를 높이는 것입니다. 오버클러킹을 사용하면 CPU가 데이터를 더 빠르게 처리하여 더 높은 컴퓨팅 성능을 제공할 수 있습니다. 그렇다면 컴퓨터 CPU를 오버클럭하는 방법은 무엇입니까? 다음은 오버클러킹의 기본 원리와 구체적인 작동 방법을 소개합니다. 먼저 오버클러킹이 어떻게 작동하는지 이해해 보겠습니다. CPU의 작동 주파수는 마더보드의 수정 발진기에 의해 결정됩니다.

박스형 CPU와 대용량 CPU의 차이점 박스형 CPU와 대용량 CPU의 차이점 Jan 23, 2024 am 09:46 AM

박스형 CPU와 대량 CPU의 차이점: 1. 품질 2. 보증 기간 3. 팬 5. 포장 6. 자세한 소개: 1. 품질은 박스형이든 대량이든 CPU 자체의 품질에는 차이가 없습니다. 모두 동일한 제조업체에서 제조되었으며 동일한 품질 테스트 및 품질 관리 프로세스를 거칩니다. 박스형 CPU 일반적으로 더 긴 보증 기간(보통 3년)이 제공되는 반면, 대량 CPU는 일반적으로 1년만 보증합니다. 이는 박스형 CPU가 일반적으로 공식 또는 공인 딜러 등에서 판매되기 때문입니다.

CPU를 너무 많이 점유하는 WIN10 서비스 호스트의 동작 과정 CPU를 너무 많이 점유하는 WIN10 서비스 호스트의 동작 과정 Mar 27, 2024 pm 02:41 PM

1. 먼저 작업 표시줄의 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 [작업 관리자] 옵션을 선택하거나, 시작 로고를 마우스 오른쪽 버튼으로 클릭한 후 [작업 관리자] 옵션을 선택합니다. 2. 열린 작업 관리자 인터페이스에서 맨 오른쪽에 있는 [서비스] 탭을 클릭합니다. 3. 열린 [서비스] 탭에서 아래의 [서비스 열기] 옵션을 클릭하세요. 4. 열리는 [서비스] 창에서 [InternetConnectionSharing(ICS)] 서비스를 마우스 오른쪽 버튼으로 클릭한 후 [속성] 옵션을 선택하세요. 5. 열리는 속성 창에서 [연결 프로그램]을 [사용 안 함]으로 변경하고 [적용]을 클릭한 후 [확인]을 클릭하세요. 6. 시작 로고를 클릭한 후 종료 버튼을 클릭하고 [다시 시작]을 선택한 후 컴퓨터를 다시 시작합니다.

144코어, 3D 스택 SRAM: Fujitsu, 차세대 데이터 센터 프로세서 MONAKA 자세히 설명 144코어, 3D 스택 SRAM: Fujitsu, 차세대 데이터 센터 프로세서 MONAKA 자세히 설명 Jul 29, 2024 am 11:40 AM

28일 본 홈페이지 소식에 따르면 외신 테크레이더(TechRader)는 후지쯔가 2027년 출하 예정인 FUJITSU-MONAKA(이하 MONAKA) 프로세서를 자세하게 소개했다고 보도했다. MONAKACPU는 "클라우드 네이티브 3D 매니코어" 아키텍처를 기반으로 하며 Arm 명령어 세트를 채택합니다. 이는 데이터 센터, 엣지 및 통신 분야를 지향하며 메인프레임 수준의 RAS1을 구현할 수 있습니다. Fujitsu는 MONAKA가 에너지 효율성과 성능의 도약을 이룰 것이라고 밝혔습니다. 초저전압(ULV) 기술 등의 기술 덕분에 CPU는 2027년에 경쟁 제품보다 2배의 에너지 효율성을 달성할 수 있으며 냉각에는 수냉이 필요하지 않습니다. ; 게다가 프로세서의 애플리케이션 성능도 상대보다 두 배나 뛰어납니다. 지침 측면에서 MONAKA에는 벡터가 장착되어 있습니다.

누출로 Intel Arrow Lake-U, -H, -HX 및 -S의 주요 사양 공개 누출로 Intel Arrow Lake-U, -H, -HX 및 -S의 주요 사양 공개 Jun 15, 2024 pm 09:49 PM

Intel Arrow Lake는 Lunar Lake와 동일한 프로세서 아키텍처를 기반으로 할 것으로 예상됩니다. 즉, Intel의 새로운 LionCove 성능 코어가 경제적인 Skymont 효율성 코어와 결합될 것입니다. Lunar Lake는 Ava에서만 사용할 수 있습니다.

See all articles