рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдХреНрд░рдорд┐рдХ рд╡рд┐рдХрд╛рд╕ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╣реБрдЖред
рдЕрдиреБрджрд╛рди рдХреЗ рддрд╣рдд рдкреНрд░рд╛рдкреНрдд рдзрди рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд▓рд┐рдП, рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХрдВрдкреНрдпреВрдЯрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмреЗрдбрд╝реЗ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдирддреАрдЬрддрди, рдЧрдгрдирд╛ рдЕрдм рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреАрдбрд╝рд┐рдд рд▓реИрдкрдЯреЙрдк рдкрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдмреЛрд░реНрдб рдкрд░ рдПрдХ рдЫрджреНрдо-рдЖрда-рдХреЛрд░ рдЗрдВрдЯреЗрд▓ рдХреЛрд░ i7-2600 рдФрд░ 8 рдЬреАрдмреА рд░реИрдо рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдорд╢реАрди рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИред рдФрд░ рд╡рд┐рдХрд╛рд╕ рдЗрдВрдЯреЗрд▓ рдлреЛрд░рдЯреНрд░рд╛рди рдХрдВрдкрд╛рдЗрд▓рд░ 12 / рдЗрдВрдЯреЗрд▓ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕реНрдЯреВрдбрд┐рдпреЛ XE 2011 рдХрдиреЗрдХреНрдЯреЗрдб рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2005 (рдбреНрд░реАрдорд╕реНрдкрд╛рд░реНрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд) рдХреЗ рддрд╣рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ рд╕рдм рд╡рд┐рди 7 рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред OpenMP рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ API рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдЙрдкрд▓рдмреНрдз рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╡реГрджреНрдзрд┐ рдХреЗ рдорджреНрджреЗрдирдЬрд░, рдкрд╣рд▓реЗ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдирдИ рдирдХрд╛рд░рд╛рддреНрдордХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХреА рдЧрдИ рдереАред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдорд╛рд░реНрдЪ рдХреЗ рдмрд╛рдж рд╕реЗ, рдХреЛрдб рдХреЗ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рднрд╛рдЧ рдХрд╛ рдЧрд╣рд░рд╛ рдЕрдиреБрдХреВрд▓рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдиреЗ рд╣рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд▓рдЧрднрдЧ 70% рдЬреАрддрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдереАред рдЗрд╕ рддрд░рд╣ рдХреА рд╡реГрджреНрдзрд┐ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдЙрдиреНрдореВрд▓рди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкреВрд░реНрд╡-рдкрд░рд┐рдХрд▓рд┐рдд рдЪрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХреА рдЧрдИ рдереАред
рдЕрдкрдбреЗрдЯ: рдкреЛрд╕реНрдЯ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдПрдХ рдЧреНрд░реЗ рд╡рд░реНрдХрд┐рдВрдЧ рдбреЗрд▓реА рд░реВрдЯреАрди рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ рднреА рдЦреЛрдЬ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдЧрдВрджреА рдЧрдВрджреА рдЪрд╛рд▓
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдареАрдХ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд┐рдП рдЧрдП рдереЗ, рдЬрдм рддрдХ рдХрд┐ рдПрдХ рдареАрдХ рджрд┐рди рддрдХ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдХреИрд╕реЗ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░, рдЙрдореНрдореАрдж рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рд╣реИ, рдПрдХ рдзрд╛рдЧреЗ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдФрд╕рдд рд╕реЗ рджреЛ рдмрд╛рд░ рддреЗрдЬреА рд╕реЗ рдирд┐рдХрд▓рд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдорд▓реНрдЯреАрдереНрд░реЗрдб рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдзрд╛рдЧреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ред
рдЬрд╡рд╛рдм, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рддрд╣ рдкрд░ рд╣реЛрддрд╛ рд╣реИред рдЧрдгрд┐рддреАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрддрдирд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рдирд┐рдХрд▓рд╛ рдХрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдЗрд╕рдХреА рдЕрдбрд╝рдЪрди рдмрди рдЧрдпрд╛, рдЬрд┐рд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдЗрдВрдЯреЗрд▓ Vtune рдПрдореНрдкрд▓реАрдлрд╛рдпрд░ рдореЗрдВ рддреНрд╡рд░рд┐рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рднреА рдХреА рдЧрдИ рдереАред рдереНрд░реЗрдбреНрд╕ рдФрд░ рдЙрдирдХреЗ рд╕реНрдерд╛рдиреАрдп рд╡реИрд░рд┐рдПрдмрд▓реЛрдВ рдХреА рд╢реБрд░реВрдЖрдд, рд╕рд╛рде рд╣реА рд╕рд╛рдЭрд╛ рдЪрд░ рдФрд░ рд╕рд░рдгрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ, рд╕рдордп рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рд░рд╛рд╢рд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдкреНрд░рдХрдЯ рдЧрдВрджрдЧреА рдХреА рджреГрд╢реНрдпрддрд╛ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдЗрд╕ рддрдереНрдп рд╕реЗ рднреА рдирд┐рднрд╛рдИ рдЧрдИ рдереА рдХрд┐ рдЕрдм рддрдХ рдПрдХ рдореЛрдЯреЗ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧреНрд░рд┐рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ 3 ├Ч 200 рд╕реНрдерд╛рдирд┐рдХ рдиреЛрдбреНрд╕ (рдПрдХ рдЖрдпрд╛рдореА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдирдХрд▓), рдФрд░ рдЧрдгрдирд╛ рдХрд╛ рд╕рдордп рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯрд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛ред
рдорд╛рдореВрд▓реА рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ
рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХрдХреНрд╖рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢ рдФрд░ рдЪрд░ рдХреЗ рдкреГрдердХреНрдХрд░рдг рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореБрдЦреНрдп рдХрд╛рд░реНрдпрд╢реАрд▓
THREADPRIVATE
рдЬреЛ рдЙрди рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИрдВ рдЬреЛ рдЧрдгрдирд╛ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╣реИрдВ,
SHARED
рд╕реЗ
THREADPRIVATE
рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ
COMMON
рд╡рд┐рд╢реЗрд╖рддрд╛ (рдЬреЛ рдПрдХ рд╕рд╛рде рдореЗрдореЛрд░реА рдореЗрдВ рдЙрдирдХреЗ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреА рд╣реИ) рдФрд░
COPYIN
рдирд┐рд░реНрджреЗрд╢ рдХреЛ
COPYIN
ред рдкрд░рд┐рдХрд▓рд┐рдд рдЪрд░ рдХреЛ
SHARED
, рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ
FIRSTPRIVATE
рдпрд╛
COPYIN
рдХреЗ рдЖрд╡реЗрджрди рдиреЗ рди рдХреЗрд╡рд▓ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рднрд╛рд╡ рджрд┐рдпрд╛, рдмрд▓реНрдХрд┐ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рднреА рдЦрд░рд╛рдм рдХрд░ рджрд┐рдпрд╛ред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЪрдХреНрд░реЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
!$OMP PARALLEL DO NUM_THREADS(Threads_number) SCHEDULE(DYNAMIC) & !$OMP PRIVATE(...) & !$OMP COPYIN(...) & !$OMP DEFAULT(SHARED)
рдЪрд░реЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдпрд╣рд╛рдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЙрдирдХреЗ рд╕рд╛рде, рдХреЛрдб рд▓рдЧрднрдЧ рдПрдХ рджрд░реНрдЬрди рд▓рд╛рдЗрдиреЗрдВ рд▓реЗрддрд╛ рд╣реИред
рдХреЛрдб рдореЗрдВ рдРрд╕реА рдиреМ рдЬрдЧрд╣реЗрдВ рд╣реИрдВред рдиреМ рдЕрдбрд╝рдЪрдиреЗрдВ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдоред рдПрд╡реНрдбреЛрдХрд┐рдореЛрд╡ рдХреЗ рд╣рд╡рд╛рд▓реЗ рд╕реЗ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо "рдЭрд╛рдВрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИред"
рд╡рд┐рднрд┐рдиреНрди рдЪрд░ рдХреЛ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдлреЗрдВрдХрдирд╛ рдПрдХ рд╢рд╛рдо рддрдХ рдЪрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдо рдХреА рдЗрд╖реНрдЯрддрдорддрд╛ рдХрд╛ рдХреЛрдИ рд╕рд╡рд╛рд▓ рд╣реА рдирд╣реАрдВ рдерд╛ред рдкреВрд░реНрдг рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рдкрд░ рдЪрд▓рдиреЗ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рдордп рдореЗрдВ рдФрд╕рддрди рдХреЗрд╡рд▓ 2.1 - 2.3 рдзрд╛рдЧреЗ рдореМрдЬреВрдж рд╣реИрдВред рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рд╕рдордп рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЖрда рдЧреБрдирд╛ рдЖрдХрд╛рд░ рдореЗрдВ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, 3x200 рдЧреНрд░рд┐рдб рдХреЗ рд▓рд┐рдП VTune рдПрдореНрдкрд▓реАрдлрд╛рдпрд░ рд╕реЗ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо

100x100 рдХреЗ рд▓рд┐рдП:

200x200 рдХреЗ рд▓рд┐рдП:

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЧрдгрдирд╛ рдХреА рд╣рд┐рд╕реНрд╕реЗрджрд╛рд░реА рдмрдврд╝рддреА рд╣реИ, рдкрд░рд┐рдгрд╛рдо рдмреЗрд╣рддрд░ рд╣реЛрддреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕реА рдЗрдЪреНрдЫрд╛ рдХреЛ рдмреБрд▓рд╛рдиреЗ рдХреА рдХреЛрдИ рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред
KMP_BLOCKTIME рдорд╛рди рдХреЛ 200 ms рд╕реЗ рдмрдврд╝рд╛рдХрд░ 10 рд╕реВрддреНрд░ рддрдХ рдиреАрдВрдж рдХреА рдХрдореА рдХреЛ рдПрдХ рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдорджрдж рдорд┐рд▓реАред
рдЫреЛрдЯреА рдмрдХрд╡рд╛рд╕ рджреБрд░реНрд▓рдн рд╣реИ
рдЕрдЪрд╛рдирдХ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдкреНрд░рд╡рд╛рд╣ рджреНрд╡рд╛рд░рд╛ рдЧрдард┐рдд "рд╕реНрдкреИрдЯреЛ-рдЯреЗрдореНрдкреЛрд░рд▓" рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдПрдХ рдХрдареЛрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реА рдЧрдИ рдереАред рдФрд░ рд╕рднреА рдПрдХ рдмрд╛рд░ рдЬрдЧрд╣ рдореЗрдВ рдЧрд┐рд░ рдЧрдПред рдХрдордЬреЛрд░ рдмрд┐рдВрджреБ рдирд┐рд░реНрджреЗрд╢ рдерд╛
!$OMP PARALLEL DO NUM_THREADS(Threads_number) SCHEDULE(DYNAMIC)
рд╕рдорд╛рдирд╛рдВрддрд░ рдФрд░ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдХреЛрдб рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рд▓рд┐рдП,
PARALLEL
рдХреАрд╡рд░реНрдб рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЗрд╕рдХреА рдЙрдкрд▓рдмреНрдзрд┐ рдкрд░, рдирдП рдзрд╛рдЧреЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрдирдХреА рд╕реНрдореГрддрд┐ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХрд╛ рдкреБрдирд░реНрд╡рд┐рддрд░рдг, рдФрд░ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдХрд╛рдлреА рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕реА рдиреМ рдЬрдЧрд╣реЗрдВ рдереАрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдиреМ рдмрд╛рд░ рдкреНрд░рд╡рд╛рд╣ рдмрдирд╛рдП рдЧрдП рдФрд░ рдирд╖реНрдЯ рдХрд░ рджрд┐рдП рдЧрдП, рдЬрдмрдХрд┐ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЙрдирдХреЗ рдмреАрдЪ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХреНрд░рдорд┐рдХ рдЦрдВрдб рднреА рдирд╣реАрдВ рдереЗред рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рдРрд╕реА рддрд╕реНрд╡реАрд░ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рд╣рд┐рд╕реНрд╕реЗ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкреВрд░реНрдг рдкреБрдирд░реНрдЧрдарди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдм рдкреНрд░рд╡рд╛рд╣ рдЖрд░реЗрдЦ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдзрд░рд╛рд╢рд╛рдпреА рд▓рд╛рдЗрдиреЗрдВ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдЫреЛрд░реЛрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИрдВ, рдФрд░ рдЕрдВрдд рдХреЗ рдХрд░реАрдм,
SINGLE
рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╡рд╣рд╛рдВ рдЧрдгрдирд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдбрд┐рд╕реНрдХ рдкрд░ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдкреНрд░рд╡рд╛рд╣ рдирд┐рд▓рдВрдмрд┐рдд рд╣реИрдВред рдЗрд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд░рдирд╛ рдХрдо рд╕реЗ рдХрдо рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдзрд╛рд░рд╛ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдФрд░ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдЖрдЧреЗ рдЪрдХреНрд░ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбрд┐рд╕реНрдХ рдкрд░ рд▓рд┐рдЦрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпреЗ рдРрд╕реЗ рд╡рд┐рд╡рд░рдг рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдорд╛рдорд▓реЗ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред
рдФрд░ рд╕реНрд░реЛрдд рдкрд╛рда рдореЗрдВ, рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
Time_cycle: do n = 0, Nt, 1 !$OMP PARALLEL NUM_THREADS(Threads_number) & !$OMP PRIVATE(...) & !$OMP COPYIN(...) & !$OMP DEFAULT(SHARED) !$OMP DO SCHEDULE(DYNAMIC) ... !$OMP END DO ... 7 !$OMP SINGLE ... !$OMP END SINGLE !$OMP DO SCHEDULE(DYNAMIC) ... !$OMP END DO !$OMP END PARALLEL enddo Tyme_Cycle
рдпрд╣реА рд╣реИ, рд╕рдордп рдореЗрдВ рдЪрдХреНрд░ рдХрд╛ рдкреВрд░рд╛ рд╢рд░реАрд░ (рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣рд╛рдЗрдбреНрд░реЛрдбрд╛рдпрдирд╛рдорд┐рдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕рд┐рдореБрд▓реЗрд╢рди рдХрд░рддрд╛ рд╣реИ) рдЕрдм рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИ, рдкреНрд░рд╡рд╛рд╣ рдкреНрд░рд╡рд╛рд╣ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рд░-рдмрд╛рд░ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдЕрдм рд╕рдорд╛рдирд╛рдВрддрд░ рдХреНрд╖реЗрддреНрд░ рдФрд░ рд╕рдордп рдЪрдХреНрд░ рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд┐рдЫрд▓реЗ рдПрдХ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ (
рдХреГрдкрдпрд╛ рд╕рд╣реА рд╣реИ, рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдореЗрд░рд╛ рддрд░реНрдХ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЦрд░рд╛рдмреА рджреЗрддрд╛ рд╣реИ )ред
рдХрд╛рдо рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдЕрдВрддрд┐рдо рд╕реБрдзрд╛рд░ рдХреБрдЫ рдЪрдХреНрд░реЛрдВ рдореЗрдВ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмреАрдЪ рдмрд╛рдзрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдерд╛, рдЬрд╣рд╛рдВ рдпрд╣ рдмрд╛рдж рдХреА рдЧрдгрдирд╛рдУрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдирддреАрдЬрддрди, рдХреЛрдб рдХреЗ рд╕рд╣реА рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдордп рдмрдврд╝ рд░рд╣рд╛ рд╣реИред 3x200 рдЧреНрд░рд┐рдб рдкрд░, VTune рдиреЛрдб рдЗрд╕ рдкрд░рд┐рдгрд╛рдо рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:

рдПрдХ 100x100 рдЧреНрд░рд┐рдб рдкрд░ - рдпрд╣:

рдЕрдВрдд рдореЗрдВ, 200x200 рдкрд░ - рдпрд╣:

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЪрд▓реА рдЖ рд░рд╣реА рд╕рдЪреНрдЪрд╛рдИ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдмрдбрд╝реЗ рдЧреНрд░рд┐рдбреЛрдВ рдкрд░, рдЬрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЧрдгрдирд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╡реЗ рдЕрдзрд┐рдХрддрд░ рд╕рдордп рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рд╕рдорд╛рдирддрд╛ рдкреНрд░рднрд╛рд╡реА рд╣реЛрддреА рд╣реИред рдЫреЛрдЯреЗ рдЧреНрд░рд┐рдбреЛрдВ рдкрд░, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╡рд┐рдирд┐рдордп рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдкрд░рд┐рдгрд╛рдо рд╣рд░реНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдХреНрд░рдорд┐рдХ рдЪрд░рдг рдХрд╛рдо рдХреЗ рд╕рдордп рдХреЗ рдкреНрд░рдореБрдЦ рднрд╛рдЧ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВред
рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЛ рдЖрда рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧреНрд░рд┐рдб рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рд╕рдордп рдорд╛рдкрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдВрджреБ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧреНрд░рд┐рдб рдХреЗ рдмреАрдЪ рдкреВрд░реНрдг рд╢рдмреНрджреЛрдВ рдореЗрдВ рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╕рд╣реА рдирд╣реАрдВ рд╣реЛрдЧрд╛ - 3 x 200 рдХреЗ рд▓рд┐рдП 1 рдорд┐рд▓рд┐рдпрди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ, 100 x 100 рдХреЗ рд▓рд┐рдП 500 рд╣рдЬрд╛рд░ рдФрд░ 200 x 200 рдиреЛрдб рдХреЗ рд▓рд┐рдП 200 рд╣рдЬрд╛рд░ред рдХреЛрд╖реНрдардХ рдореЗрдВ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдореЗрдВ рд╕рд╛рдкреЗрдХреНрд╖ рдЕрдВрддрд░ рджрд┐рдЦрд╛рддреА рд╣реИред
рдЧреНрд░рд┐рдб рдЖрдХрд╛рд░ | рд▓реАрдб рд╕рдордп, рдПрд╕ |
---|
рдЕрдиреБрдХреВрд▓рди рд╕реЗ рдкрд╣рд▓реЗ 3 x 200 | 94.4 |
3 x 200, рдЕрдиреБрдХреВрд▓рд┐рдд | 70.0 (-26%) |
рдЕрдиреБрдХреВрд▓рди рд╕реЗ рдкрд╣рд▓реЗ 100 x 100 | 352 |
100 x 100, рдЕрдиреБрдХреВрд▓рд┐рдд | 285 (-19%) |
рдЕрдиреБрдХреВрд▓рди рд╕реЗ рдкрд╣рд▓реЗ 200 x 200 | 543 |
200 x 200, рдЕрдиреБрдХреВрд▓рд┐рдд | 436 (-19%) |
рдпрд╣ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХрд┐рдП рдЧрдП рдЕрдиреБрдХреВрд▓рди рдиреЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдмрдврд╝рд╛рдпрд╛ рд╣реИред
рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ, рд╣рдо рд╕рдорд╛рдирд╛рдВрддрд░ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВрдЧреЗ, рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рдпрд╣ рддреБрд░рдВрдд рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рдзрд╛рдЧреЗ рдкрд░ рдЧрдгрдирд╛ рджреЛ рдпрд╛ рддреАрди рд╕реЗ рдЕрдзрд┐рдХ рддреЗрдЬ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдХрдореА, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдЯрд░реНрдмреЛрдмреЛрд╕реНрдЯ рдХрд╛ рдХрд╛рдо, рдЬреЛ рдШрдбрд╝реА рдХреА рдЖрд╡реГрддреНрддрд┐ 400 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рддрдХ рдмрдврд╝рд╛рддрд╛ рд╣реИред рд╣рдо рдпрд╣ рднреА рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдХреЗрд╡рд▓ 4 рднреМрддрд┐рдХ рдХреЛрд░ рд╣реИрдВ, рдФрд░ 8 рдереНрд░реЗрдбреНрд╕ рдкрд░ рддреНрд╡рд░рдг рд╣рд╛рдЗрдкрд░-рдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред
3x200 рдЧреНрд░рд┐рдб, 1 рдорд┐рд▓рд┐рдпрди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ:
рдЕрдиреБрдХреВрд▓рди рд╕реЗ рдкрд╣рд▓реЗ рдзрд╛рдЧреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ | рд▓реАрдб рд╕рдордп, рдПрд╕ |
---|
1 | 80.9 |
2 | 88.7 |
3 | 84.4 |
4 | 83.7 |
8 | 94.4 |
рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рдж рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ | рд▓реАрдб рд╕рдордп, рдПрд╕ |
---|
1 | 87.9 |
2 | 145 |
3 | 113 |
4 | 97.8 |
8 | 70.0 |
рдЧреНрд░рд┐рдб 100x100, 500 рд╣рдЬрд╛рд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ:
рдЕрдиреБрдХреВрд▓рди рд╕реЗ рдкрд╣рд▓реЗ рдзрд╛рдЧреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ | рд▓реАрдб рд╕рдордп, рдПрд╕ |
---|
1 | 918 |
2 | 736 |
3 | 536 |
4 | 431 |
8 | 352 |
рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рдж рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ | рд▓реАрдб рд╕рдордп, рдПрд╕ |
---|
1 | 845 |
2 | 528 |
3 | 434 |
4 | 381 |
8 | 285 |
рдпрджрд┐ рдереЛрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдиреЛрдбреНрд╕ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рд╣рд▓реНрдХреЗ рдврдВрдЧ рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдФрд░ рд╕рдлрд▓ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЧрд╡рд╛рд╣реА рджреЗрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЙрдирдореЗрдВ рд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖? рдореБрдЦреНрдп рдирд┐рд╖реНрдХрд░реНрд╖ рдПрдХ рд╣реИ - рдпрд╣ рджреЗрдЦреЗрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдзрд╛рдЧреЗ рдХреИрд╕реЗ рдкреИрджрд╛ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдорд░ рдЬрд╛рддреЗ рд╣реИрдВред рдЙрдирдХреЗ рдЬреАрд╡рди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдЕрдиреБрдкрд╛рдд-рд▓реМрдХрд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╣реИ:
OpenMP * рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмреАрдЪ рдХреБрд╢рд▓ рд▓реЛрдб рд╕рдВрддреБрд▓рди ред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдкрдврд╝рд╛ рдЧрдпрд╛ рдерд╛ред
рдореИрдВ рдХреБрдЫ рджрд┐рди рдмрдЪрд╛ рд▓реЗрддрд╛, рдПрд╣ред