рдореИрдВрдиреЗ
"рдбрдордореАрдЬрд╝ рдХреЗ рд▓рд┐рдП MPI рдХреЗ рдлрдВрдбрд╛рдореЗрдВрдЯрд▓" рд▓реЗрдЦ рдкрдврд╝рд╛ рдФрд░ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдХрд╛ рд▓реЗрдЦ рдЙрд╕реЗ рдбрд░рд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд┐рджреНрдзрд╛рдВрдд
рд╢реБрд░реВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЛ
рдкрд╣рд▓реЗ, рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрдХрд▓ рдорд╛рдирдХ (рдПрдкреАрдЖрдИ) рдирд╣реАрдВ рдерд╛, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдерд╛ред рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рддрд░реНрдХрд╕рдВрдЧрдд рд▓реЛрдЧ рд╣реИрдВ рдФрд░ рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рдорд╛рдирдХреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ (рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз
рдПрдордкреАрдЖрдИ , рдУрдкрдирдПрдордкреА рд╣реИрдВ)ред
MPI - рд╕рдВрджреЗрд╢ рдкрд╛рд╕рд┐рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ API рд╣реИ рдЬреЛ рдХреНрд▓рд╕реНрдЯрд░ рдирд┐рд░реНрдорд╛рддрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛрдб рд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдмрд┐рдирд╛ рд╕реЛрд░реНрд╕ рдХреЛрдб (!) рдХреЗ рдПрдХ рднреА рдмрд╛рдЗрдЯ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ред
рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ рдФрд░ рд╕рдВрдЪрд╛рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред MPI рдореЗрдВ, рдиреЛрдбреНрд╕ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд▓реЛрдб рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рд░рд╛ рдХрд╛рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдкрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХрддрдо рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрддрд╛ рд╣реИред MPI рдмрд╣реБрдд рд╣реА рд╡рд┐рдирдореНрд░рддрд╛ рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ: рд╕рдВрдЪрд╛рд░рдХреЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рд╣реИрдВ - рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рдореВрд╣ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЧрд┐рдиреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕рдХреЗ рд▓рд┐рдП
MPI_Cart_create рдлрд╝рдВрдХреНрд╢рди рдХрд╛
рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЬреЛ рдЖрдк рдЧреНрд░рд┐рдб рд╕реЗ рд╣рд╛рдЗрдкрд░рдХреНрдпреВрдм рддрдХ рдХрд┐рд╕реА рднреА рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
рд╕рдорд╛рдВрддрд░рддрд╛ рдХреА рд╡реНрдпрд╡рд╣рд╛рд░реНрдпрддрд╛
рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рд╣реА рд╕рдВрд╢реНрд▓рд┐рд╖реНрдЯ рд╣реИрдВ - рд╡реЗ рдХреБрдЫ рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЛ рдорд╛рдирдХ рдкреНрд░рдХрд╛рд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреЛрд╣рд░реЗ) рдХреЗ рднреАрддрд░ рдЧрд┐рдирддреЗ рд╣реИрдВ, рдЬреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрд┐рд╕реА рдЪреАрдЬ рдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЦрд░реНрдЪ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╣реИ (рд╕рдВрдЦреНрдпрд╛ pi рдХреА рдЧрдгрдирд╛ рдХрд░рдХреЗ) рдЧреАрдЧрд╛рдмрд┐рдЯ рдИрдерд░рдиреЗрдЯ рдХреЗ рд╕рд╛рде рджреЛ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ рдбрдмрд▓ рд▓рдЧрднрдЧ рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ рджреЛрдЧреБрдирд╛ рд╣реИ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдордкреАрдЖрдИ рдорд▓реНрдЯреА-рдХреЛрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ (рдЬреЛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдХрдИ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдХреЛрд░ рдХреЗ рдмреАрдЪ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреА рдЧрддрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХреНрд░рдо рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ
рд╣рдореЗрд╢рд╛ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ред
рдЕрднреНрдпрд╛рд╕
рдЖрдк рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреНрдпрд╛рд╕ рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╕рдордЭрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ MPI рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред MPI рдХреЗ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ MPICH (
MPI рдЧрд┐рд░рдЧрд┐рдЯ ) рд╣реИред
рд╕реНрдерд╛рдкрдирд╛
рдСрдмрдВрдЯ рдореЗрдВ рдПрдХ рд▓рд╛рдЗрди рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
sudo apt-get install mpich2
рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рд╕рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЙрдкрдпреЛрдЧреА рди рд╣реЛ:
#include <stdio.h>
#include <mpi.h>
int main ( int argc, char* argv[])
{
int errCode;
if ((errCode = MPI_Init(&argc, &argv)) != 0)
{
return errCode;
}
int myRank;
MPI_Comm_rank(MPI_COMM_WORLD, &myRank);
if (myRank == 0)
{
printf( "It works!\n" );
}
MPI_Finalize();
return 0;
}
* This source code was highlighted with Source Code Highlighter .
рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ:
mpicc -o test.bin ./test.c
рдЖрдЗрдП рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:
mpirun ./test.bin
рдФрд░ (рдпрджрд┐ рдЖрдкрдиреЗ рдЕрднреА рддрдХ mpd рдбреЗрдореЙрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ), рддреЛ рд╣рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ mpd рдбреЗрдорди рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
mpiexec: cannot connect to local mpd (/tmp/mpd2.console_valery); possible causes:
1. no mpd is running on this host
2. an mpd is running but was started without a "console" (-n option)
In case 1, you can start an mpd on this host with:
mpd &
and you will be able to run jobs just on this host.
For more details on starting mpds on a set of hosts, see
the MPICH2 Installation Guide.
рдПрдордкреАрдбреА рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреЛрдИ рд╕реЗрдЯрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ (рдХреНрдпреЛрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдбреЗрдореЙрди рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)
configuration file /home/valery/.mpd.conf not found
A file named .mpd.conf file must be present in the user's home
directory (/etc/mpd.conf if root) with read and write access
only for the user, and must contain at least a line with:
MPD_SECRETWORD=<secretword>
One way to safely create this file is to do the following:
cd $HOME
touch .mpd.conf
chmod 600 .mpd.conf
and then use an editor to insert a line like
MPD_SECRETWORD=mr45-j9z
into the file. (Of course use some other secret word than mr45-j9z.)
рдЧреБрдкреНрдд рд╢рдмреНрдж рдХреЗрд╡рд▓ рдиреЛрдбреНрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рд╣рдо рдЕрдзрд┐рдХ рдХрдВрдкреНрдпреВрдЯрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЙрди рдкрд░ MPICH рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рд╣рдореЗрдВ рдиреЛрдб рдХреЛ рдиреЛрдбреНрд╕ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ ssh рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд╖реНрдХрд░реНрд╖ рдорд┐рд▓рддреЗ рд╣реИрдВ:
$ mpirun ./test.bin
It works!
MPI_Init - рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ MPI рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред
MPI_COMM_WORLD - рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╡рд╛рд▓реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрдЪрд╛рд░рдХ рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ред
MPI_Comm_rank - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЪрд╛рд░рдХ рдХреЗ рднреАрддрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (рд╕рдВрдЦреНрдпрд╛, рд░реИрдВрдХ) рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рд╣рдо рдХреЗрд╡рд▓ 0 рдХреЗ рдмрд░рд╛рдмрд░ рд░реИрдВрдХ рдХреЗ рд╕рд╛рде рд╣реА рдкреНрд░рджрд░реНрд╢рди рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ? рдмрд╕ рдпрд╣ рдХрд┐ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрд╕реА рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдЙрд╕ рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдХрдВрд╕реЛрд▓ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ рдЬрд╣рд╛рдВ рд╕реЗ рдЗрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдо рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмрдЬрд╛рдп
рдЖрдк рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рднрд╛рд╡реА рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдирд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЪреБрдирдиреЗ рдФрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ, рдЗрд╕реЗ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдлрд┐рдЯ рдХрд░рдиреЗ, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рдПрдХ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рд╕рд░рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реА рд╕рдордп рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (рдЙрдирдХреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░, рд╕рдВрдЪрд╛рд░ рд╡рд╛рддрд╛рд╡рд░рдг, рдЖрджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ) рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдФрд░ рд╕рд╛рд╣рд┐рддреНрдп рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рд╕рдордп рдХреЗ рд╕рд╛рде,% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо%, рдЖрдк рд╕реВрдЪреА рдореЗрдВ рдЙрди рдЬреИрд╕реА рдбрд░рд╛рд╡рдиреА рдорд╢реАрдиреЛрдВ рдХреЛ рднреА рдЕрдзреАрди рдХрд░ рдкрд╛рдПрдВрдЧреЗред
рд╢реАрд░реНрд╖ 500