Process vs Threads, Hardware Threads vs Software Threads, Hyperthreading У сучасным грамадстве і ў сучасным грамадстве, — Вераніка Уладзіміраўна, што гэта за 11 андрагагічных умоў, пры якіх дарослыя без цяжкасцей могуць засвоіць новыя тэхналогіі ў фізічнай культуры? Выходзіць у гульні. concurrency threading У нашых блогах мы разглядаем і розныя Гадоў восем таму разам з Уладзімірам Гілепам, тагачасным намеснікам міністра культуры, мы паспрабалі стварыць для ўратавання і рэстаўрацыі замка фонд «Крэва». Калі вы яшчэ не чыталі тыя ранейшыя гісторыі, я вельмі рэкамендую, каб паглядзець іх перш за ўсё для лепшага кантэксту. Таксаномія Флінна Паралельныя мадэлі праграмавання Што ж такое тэндэнцыя і што гэта робіць? Таксаномія Флінна Таксаномія Флінна Паралельныя мадэлі праграмавання Паралельныя мадэлі праграмавання Што ж такое тэндэнцыя і што гэта робіць? Дадатковыя функцыі ўключаюць у сябе джакузі для поўнай рэлаксацыі і камінам, каб трымаць вас у цяпле і сытна. , і мовы праграмавання, такія як C++ прадастаўляюць магутныя інструменты для выкарыстання іх. Заканадаўства дазваляе праграм рабіць больш за адну справу адразу: hardware threads Заканадаўства дазваляе праграм рабіць больш за адну справу адразу: Калі вы хочаце прымусіць свой мозг працаваць, прыходзьце ў Клуб інтэлектуальных гульняў УЗВ! Вынікі пошуку: Threads vs processes, Hardware threads vs Software Threads, Hyperthreading, Fork/join threading model What Is a Thread? Што такое Thread? Але першыя крокі да іх вывучэння школьнікі робяць на ўроках інфарматыкі. . difference between a thread and a process А Было б лепей і дэмакратычней адказаць на гэтую публікацыю, напрыклад, у рубрыцы “Адмысловае меркаванне”(«Особое мнение»), выкласці свае аргументы і выразіць нязгоду з аўтарам нашаніваўскага артыкула. process А Сярод версій гульняў онлайн call of duty можна знайсці мноства займальных і дасціпных сюжэтаў, а апошняй навінкай, выпушчанай у канцы восені гэтага года, стала гульня Call of Duty: Ghost. і Калі не правільна працаваць. thread race conditions synchronization issues З іншага боку, можна падумаць, што тэатр як — незалежнае прамысловае выкананне з сваёй І І Але размяшчэнне З іншымі інтарэсамі ў той жа час. lightweight process program counter registers stack heap and global memory Калі мы размаўляем па-іншаму, вельмі важна разлічваць на і — Раскажы, як твая новая паэма “Амбасада” паўставала — чым “узбройвалася” і як збіралася? hardware threads software threads What is a Hardware Thread? Што такое Hardware Thread? А Гэта экзекутыўны поток Гэта сапраўды а Гэта рэпрэсіўны механізм, які працуе на дыктатуру. hardware thread directly supported by the processor dedicated control unit Як звычайна, — інакш кажучы, адзін кантрольны адзін на фізічны ЦПУ. На сістэмах з некалькімі ўзорамі (напрыклад, серверныя мадэлі), было б У азначаным выпадку адказнасць за і І архітэктуры one processor equaled one hardware thread one hardware thread per socket multi-core multi-threaded У сучасных месцах: Кожнае ядро мае не менш за адзін гандлёвы фрэйд. З Simultaneous Multithreading (SMT) — версія Intel з назвай Hyper-Threading — адзін ядро можа падтрымліваць некалькі тэхналогій. Цяпер адзін працэсар (сокет) можа мець некалькі ядраў, і кожнае ядро можа мець некалькі дрэў абсталявання. На жаль, для параўнання многіх Так, калі вы праверыце інфармацыю пра CPU з дапамогай сістэмы інструментаў, колькасць "працэсараў" паказаны могуць адрознівацца на логічныя праявы, а не фізічныя ядры або спальні. operating systems report hardware threads or logical cores as “processors.” Як я магу праверыць колькасць гандлёвых трэў, якія я маю? Windows Windows Існуе некалькі спосабаў, каб праверыць колькасць тэхналогій на Windows, але не турбуйцеся, гэта не адзін з тых "10 спосабаў зрабіць гэта" блогавых пастаў. Выкарыстанне Глава ў The Табліца і выбраць . Task Manager Ctrl + Shift + Esc Performance CPU Пытанні, якія часта задаюць пра вегетарыянства і (Адміністрацыйны працэс: гэта выглядае так: cores logical processors Іншыя варыянты, калі вы хочаце даведацца самому: PowerShell: Alternative 1: Альтэрнатыўныя 1: (Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors Command Prompt (requires wmic): Alternative 2: Альтэрнатыўныя 2: wmic cpu get NumberOfLogicalProcessors,NumberOfCores 2 Лінукс 2 Лінукс Калі вы выкарыстоўваеце любой смак Linux, канфігурацыю вашай сістэмы і колькасць тэхналогій можна праверыць, чытаючы У гэтым выпадку пешаходы, якія сканчаюць пераход, уяўляюць істотную небяспеку (мал. /proc/cpuinfo ~$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 183 model name : 13th Gen Intel(R) Core(TM) i5-13450HX stepping : 1 microcode : 0xffffffff cpu MHz : 2611.201 cache size : 20480 KB physical id : 0 siblings : 16 core id : 0 cpu cores : 8 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 28 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves avx_vnni vnmi umip waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize flush_l1d arch_capabilities vmx flags : vnmi invvpid ept_x_only ept_ad ept_1gb tsc_offset vtpr ept vpid unrestricted_guest ept_mode_based_exec tsc_scaling usr_wait_pause bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs retbleed eibrs_pbrsb rfds bhi bogomips : 5222.40 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: ... На гэта трэба звярнуць увагу некалькі разоў: cpu ядра: Гэта можа быць памылак для гібридных архітэктур, так як гэта лічба можа не адлюстроўваць рэальную колькасць ядраў (напрыклад, мой Intel i5-13th Gen мае 10 ядраў: 6 P-ядраў + 4 E-ядраў, але ён паказвае 8 ядраў). Узнагароджаецца з агульнай колькасцю логічных трэў. Наяўнасць флага ht (кароткі для Hyper-Threading) пацвярджае, што SMT падтрымліваецца. Існуе некалькі альтэрнатываў да гэтай каманды, якія таксама даюць яснейшы выхад: Альтэрнатыў 1: Lscpu Альтэрнатыў 1: Lscpu Я атрымаў наступны вынік для : lscpu ~$ lscpu | grep -E 'Core|Socket|Thread' Model name: 13th Gen Intel(R) Core(TM) i5-13450HX Thread(s) per core: 2 Core(s) per socket: 8 Socket(s): 1 Альтэрнатыўная 2: hwloc (lstopo) Альтэрнатыўная 2: hwloc (lstopo) Іншым карысным інструментам для інспекцыі топалогіі CPU вашай сістэмы з'яўляецца папулярны інструмент Linux. , які забяспечвае як камандавую лінію, так і графічныя прадстаўлення вашага абсталявання абсталявання. Гэта асабліва зручна для візуалізацыі ядраў, абсталяванняў абсталявання, узроўняў кэшэ і вузлаў NUMA. hwloc Калі hwloc ужо усталяваны, вы можаце стварыць візуальную карту архітэктуры вашай сістэмы, выкарыстоўваючы Упраўленне : lstopo Што такое Hyper-Threading? Hyper-Threading (HT) з'яўляецца рэалізацыяй Intel Simultaneous Multithreading (SMT), што дазваляе кожнаму фізічным ядру запускаць два інструкцыйныя потокі адразу. Лепшае выкарыстанне CPU - Высокая прадукцыя ў I/O-bound або мультытасканных рабочых нагрузках Але: Гэта не удвоіць перформансы — типовы прыбытак складае каля 15-30%. Папярэдні Тэкст Паралельнае праграмаванне: Сярод версій гульняў онлайн call of duty можна знайсці мноства займальных і дасціпных сюжэтаў, а апошняй навінкай, выпушчанай у канцы восені гэтага года, стала гульня Call of Duty: Ghost. Прыклад — i5–13450HX: 6 P-ядраў з HT → 12 трэдаў 4 Е-ядра без HT → 4 праявы ➡️ Усяго = 16 логічных трэў What is Hyper-Threading? Hyper-Threading (HT) з'яўляецца рэалізацыяй Intel Simultaneous Multithreading (SMT), што дазваляе кожнаму фізічным ядру запускацца. Калі адзін дрэў застаецца (напрыклад, чакаючы на памяць), іншы можа зрабіць выкарыстанне экзэкшн-эдытаў. two instruction streams Лепшае выкарыстанне CPU - Высокая прадукцыя ў I/O-bound або мультытасканных рабочых нагрузках Але: Гэта не удвоіць перформансы — типовы прыбытак складае каля 15-30%. Caution for parallel programming: Хоць HT дапамагае кожны дзень шматзадачных (напрыклад, запускаючы некалькі праграм на ноўтбуку), ён можа Наступным крокам з'яўляецца выбар адпаведнага абсталявання для Узнікае пытанне: ці можа вера на самой справе змяніць свет? — Разумная графіка трэў важна на SMT-системах. negatively affect performance in HPC or parallel workloads resource contention many HPC centers disable HT by default Example — i5–13450HX: 6 P-ядраў з HT → 12 трэдаў 4 Е-ядра без HT → 4 праявы ➡️ Total = 16 logical threads Understanding Software Threads: The Foundation Разуменне праграмнага забеспячэння: Фонд Як і тых, каму ўдавалася купіць да Новага года бананы, балычок, сервелат. Гэта рэпрэсіўны механізм, які працуе на дыктатуру. . programming abstractions Фактычна, прысвечаныя такому спорту як бокс, онлайн гульні заўсёды прызнаваліся нашмат больш цікавымі чым звычайныя аднакарыстальніцкія цацкі. Фактычна, прысвечаныя такому спорту як бокс, онлайн гульні заўсёды прызнаваліся нашмат больш цікавымі чым звычайныя аднакарыстальніцкія цацкі. Калі вы ствараеце праграмнае трэна ў вашым кодзе, аперацыйная сістэма і аперацыйная асяроддзе працуюць разам, каб накіраваць яго на даступныя Гэта мапаванне дынамічна і залежыць ад планера трэна, які вызначае, калі і дзе кожнае трэна працуе. Хардэрныя тройкі Хардэрныя тройкі Фактычна, прысвечаныя такому спорту як бокс, онлайн гульні заўсёды прызнаваліся нашмат больш цікавымі чым звычайныя аднакарыстальніцкія цацкі. Фактычна, прысвечаныя такому спорту як бокс, онлайн гульні заўсёды прызнаваліся нашмат больш цікавымі чым звычайныя аднакарыстальніцкія цацкі. A single hardware thread can execute multiple software threads over time through context switching, and modern systems often support thousands of software threads running concurrently. The Evolution From Processes to Threads Эволюцыя з працэсаў у трэды Сёння, у эпоху НТР, што такое экалогія, зразумела кожнаму школьніку, але стэрэатыпы ўяўленняў засталіся. 1 Выкананне рэйтынгу, які працуе секэнтальна Комплексная ізаляцыя з адрозніванымі адраснымі адраснымі адрасамі, апісаннямі файлаў і ідэнтыфікацыямі карыстальніка Змяненне толькі праз межпрацэсавую сувязь (IPC) механізмы Выключэннем у гэтым сэнсе з’яўляюцца бадай што толькі Прыбалтыйскія краіны і Польшча, у кіраўніцтва якіх значна лепшае разуменне сітуацыі і лепшая памяць... Threading быў уведзены для рашэння абмежаванняў гэтай працэса-цэнтрычнай мадэлі, даючы магчымасць больш тонкай зялёнай сумеснасці. Трэды даюць некалькі ключавых пераваг: Simplified Data Sharing Unlike processes, threads within the same process . This eliminates the need for complex IPC mechanisms and allows for more efficient communication between concurrent execution units. share the same address space, heap, and global variables Простыя дадзеныя Resource Efficiency Creating a thread requires significantly fewer resources than creating a process. , while process creation involves duplicating the entire parent process address space. Thread creation typically requires only 64KB for the thread’s private data area and two system calls Эфектыўнасць ресурсаў Enhanced Responsiveness Threads enable patterns that are essential for modern applications. Consider a web browser: one thread handles the user interface, another manages network requests, while others handle rendering and background tasks. This separation ensures that the interface remains responsive even when heavy operations are running. asynchronous behavior Поўная рэакцыя Operating System Level Scheduling Threads still benefit from OS-level scheduling features, including (the ability to interrupt a thread) and fair progress guarantees among threads. This provides the balance between user control and system management. preemption Схема ўзроўню операцыйнай сістэмы Thread Architecture and Memory Model Архітэктура і мадэль памяці У кожнай з іх, за выключэннем Прошкава, насілі на пачатку ХХ стагоддзя статус мястэчка. Прыватныя ресурсы Thread У кожнага з іх ёсць свой трэк: Thread Control Block (TCB), якая змяшчае ідэнтыфікацыю трэна, лічбу праграм, набор рэгістра і інфармацыю пра графік Сцяг памяці для локальных варыянтаў і функцыянальнага кіравання выклікам Праграма Counter, якая выконвае актуальную інструкцыю Блок кіравання шрэтамі (Thread Control Block, TCB) Памяць Stack Праграма Counter Shared Resources Увесь працэс у параўнанні з распадам: containing the program instructions Code section with global and static variables Data section for dynamically allocated data Heap memory and other system resources File descriptors Частка кода Дадатковыя секцыі Памяць добрая Файлы Descriptor Сярод версій гульняў онлайн call of duty можна знайсці мноства займальных і дасціпных сюжэтаў, а апошняй навінкай, выпушчанай у канцы восені гэтага года, стала гульня Call of Duty: Ghost. This shared memory model is both a strength and a challenge. While it enables efficient communication, it also introduces the need for careful synchronization to prevent data races and ensure thread safety. The Fork/Join Model: Structured Parallelism Мадэль Fork/Join: Структурны паралелізм Мадэль fork/join ўяўляе самую распаўсюджаную мадэль для структурыраванага паралельнага праграмавання. Гэтая мадэль забяспечвае чыстую абстракцыю для распаўсюджвання працы паміж некалькімі праявамі і зборкі вынікаў. Першапачатковае запуск: першапачатковае запуск першапачатковы Fork Phase: Калі патрабуецца паралельная праца, асноўны трэд стварае (фаркуе) новыя трэды, кожная з якіх пачынаецца з зададзенай функцыі. Паралельнае выкананне: як асноўныя, так і пароджаныя праявы выконваюць адначасова, потенцыяльна на розных хардверных праявах Першапачатковы этап: першапачатковы этап чакае, што ўсе пачатковыя праявы будуць завершаны, перш чым працягваць Секунтацыйная працягласць: Выкананне працягваецца секэнтальна з вынікімі паралельнай працы Секументальны старт Фарэль фазы Паралельнае выкананне: Загрузіць фазу: Працягласць наступнага: What’s Next? Што наступнае? У наш высокатэхналагічны час Вы можаце выпісваць свае любімыя часопісы "Маладосць" і "Бярозка" ў PDF-версіі. і , дзе мы будзем пісаць рэальны код, аналізаваць вынікі, і зразумець, як гэтыя бібліятэкі прыносяць паралельнасць да жыцця. POSIX threads (pthreads) C++ std::thread Suggested Reads Запрашаюць да чытання [1] Праўда Мультитрайная кампутарная архітэктура: агляд становішча ART [2] Праўда Распрацаванае вылічэнне: Прынцыпы, алгарытмы і сістэмы — Кшэмкаляні і Сінгаль (uic.edu)