多核编程中的负载平衡难题_PHP教程
多核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已经作出了一些努力,但是还需要更多的努力让工具的功能更强大一些才能应对核数较多时的情况。

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











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

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

최근 MagicX XU Mini M을 구매하신 분들이라면 이 소식이 의외일 수도 있습니다. 새로 출시된 휴대용 콘솔의 하드웨어 및 소프트웨어 분해 결과, 광고된 RK3562 CPU가 실제로는 사양이 낮은 구형 RK3326 프로세서인 것으로 나타났습니다.

13세대, 14세대 프로세서에서는 게임 충돌, 블루스크린, 컴퓨터 자동 재시작 등의 오류가 발생했는데, 앞서 엔비디아가 문의한 결과 인텔 프로세서의 문제로 의심됐다. 13/14세대 프로세서의 안정성 문제를 마더보드 및 BIOS 시스템 제조업체에 비난했습니다. 이제 인텔도 솔루션을 제안했습니다. 아래의 편집기를 살펴보겠습니다. 13세대 및 14세대 Core 프로세서의 전압, 주파수, 전력 소비 및 안정성과 관련된 600 및 700 시리즈 마더보드의 BIOS 설정 옵션이 잘못 설정되었거나 설정 값이 공식적으로 범위를 벗어났을 가능성이 있습니다. 이는 Intel에서 허용하는 것입니다. Intel에서 권장하는 설정은 다음과 같습니다(아래 그림 참조).

8월 22일 이 사이트의 소식에 따르면 X 플랫폼 사용자 포시포시(@harukaze5719)는 Intel이 공식 웹사이트 DESIGN-iNTOOLSstore에 LGA9324-OKS-AP 플랫폼 전원 공급 장치 테스트에 적합한 어댑터 보드 2개를 나열한 것을 발견했습니다. ▲BLU 버전 어댑터 보드, Intel은 RED 버전 외에도 LGA9324-OKS-APOakStream 플랫폼이 DiamondRapids를 지원한다고 이 두 제품 설명에 썼는데, 이는 Xeon 6 "GraniteRapids" 이후 차세대 Xeon 성능 코어의 존재를 긍정적으로 확인시켜 줍니다. 프로세서 및 해당 플랫폼. DiamondRapids 프로세서 및 OakStream 플랫폼에 대한 최신 정보

Inteli5-12600 이상 CPU, i5-13400 이상 CPU에는 P-Core 성능 코어(대형 코어) 및 E-Core 에너지 효율 코어(소형 코어)가 있습니다. "큰 코어와 작은 코어"의 스케줄링 문제로 인해 일부 게임은 프레임이 떨어질 수 있습니다. 이전 CPU만큼 좋지는 않습니다. 실제로 시스템에서는 현재 상황에 대처하기 위해 더 어린 CPU가 처리할 수 있고 더 오래된 CPU를 파견할 필요가 없다고 생각합니다. 오래된 코어가 쉬고 있고 작동하지 않습니다. 아래 편집자가 이 문제를 해결하는 방법을 알려줄 것입니다. 바탕화면에 새 텍스트 문서를 생성하고, 다음 내용을 복사하여 1.reg로 저장한 후 마우스 오른쪽 버튼을 클릭하여 병합합니다. WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SY

7월 3일 이 웹사이트의 소식에 따르면, 블로거 Jinzhu Upgrade Package는 최근 Weibo 업데이트 아래 답변에서 AMD KrackanPoint 프로세서가 Ryzen AI300 제품 라인의 일부이며 내년에 출시될 것이라고 밝혔습니다. AMD는 2024 타이페이 국제 컴퓨터 쇼에서 RyzenAI300 프로세서를 출시했습니다. 현재 출시된 두 제품은 StrixPoint 시리즈를 기반으로 합니다. AMD RyzenAI9HX370: 12코어(4×Zen5+8×Zen5c) CPU, 16CU. 스케일 RDNA3.5 아키텍처 Radeon890M 코어 디스플레이 AMD RyzenAI9365: 10코어(4×Zen5+6×Zen5c) CPU, 12CU 스케일

AMD는 최근 Granite Ridgedesktop 프로세서 제품군을 출시했지만 Raphael 시리즈의 X3D CPU는 여전히 게임 및 생산성을 위한 최고의 프로세서입니다. Ryzen 7 7800X3D가 좋은 예이지만 이제 사기꾼들이 전체 광고를 찍고 있습니다.
