рдкреЗрд╢ рд╣реИ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдлреЛрд░рдЯреНрд░рд╛рди: рдХреНрдпрд╛ рд╣рдо рд╕рдорд╛рдирд╛рдВрддрд░ рд╣реЛрдВрдЧреЗ?

рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдореИрдВ рдЙрд╕ рдордВрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬрд┐рд╕ рдкрд░ рдЖрдЬ рдкреНрд░рдЪрд▓рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ "рдкреВрд░реНрд╡рдЬреЛрдВ" рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рд╣рд╛рдВ, рдореИрдВ рдлреЛрд░реНрдЯреНрд░рд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдорди рдореЗрдВ рдореМрдЬреВрдж рд░реВрдврд╝рд┐рд╡рд╛рджрд┐рддрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ - рдХрд┐ рдлреЛрд░рдЯреНрд░рд╛рди рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рдПрдХ рдкреНрд░рд╛рдЪреАрди рднрд╛рд╖рд╛ рд╣реИ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдИ рдФрд░ рдЗрд╕ рдкрд░ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдмрд╣реБрдд рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рддреНрдордХрддрд╛рдУрдВ рдХреЗ рдПрдХ рд╕рдореГрджреНрдз рд╕реЗрдЯ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдорд╛рдирдХреЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рд╡реИрд╕реЗ, рдЙрд╕реА рд╕реА / рд╕реА ++ рдХреЗ рдмрд░рд╛рдмрд░ред
"рдкреБрд░рд╛рдиреЗ" 77 рд╡реЗрдВ рдлреЛрд░рдЯреНрд░рд╛рди рдореЗрдВ рдЗрддрдирд╛ рдХреБрдЫ рдирд╣реАрдВ рдмрдЪрд╛ рд╣реИ ... 95 рдорд╛рдирдХ рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░, рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдФрд░ рд╕реНрдкрд╖реНрдЯ рдореЗрдореЛрд░реА, рдкреЙрдЗрдВрдЯрд░реНрд╕, рдЕрдзрд┐рднрд╛рд░ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдЕрдкрдиреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕реЗрдЯ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рднрд╛рд╖рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ - рдпрд╣ рджрд░реНрд╢рди рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдлреЛрд░рдЯреНрд░рд╛рди рдЗрдВрдЯреЗрд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рдмрд╣реБрдд рдорд╛рдВрдЧ рдореЗрдВ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдорд╛рди рд╕реА ++ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рдкреЛрд╕реНрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рд╣реИред рджрд░рдЕрд╕рд▓, рдлреЛрд░рдЯреНрд░рд╛рди рдЖрдЬ рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рднрд╛рд╖рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдлреЛрд░рдЯреНрд░рд╛рди 2008 рдХреЗ рдорд╛рдирдХ рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рд╣реЛ рдЧрдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдпрд░реНрд░реЗ рджрд┐рдЦрд╛рдИ рджрд┐рдПред

рддреЛ, рдкрд╣рд▓реЗ рдЪреАрдЬреЗрдВ рдкрд╣рд▓реЗред рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЙрдбрд▓ SPMD (рд╕рд┐рдВрдЧрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдорд▓реНрдЯреАрдкрд▓рдбреЗрдЯрд╛) рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдЖрдк MPI рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рд╕рд╛рд░ рдПрдХ рд╣реА рд╣реИ - рд╣рдо рдЕрдкрдирд╛ рдЖрд╡реЗрджрди рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреА рдкреНрд░рддрд┐рдпреЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХрд╛ рдЕрдкрдирд╛ рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИред рд╡реЗ рдбреЗрдЯрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рддрд┐рдпреЛрдВ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╢реЗрд╖ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреЙрд░реНрд░реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдПрдХ рд╕рд░рд▓ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдЙрджрд╛рд╣рд░рдг рджреЗрдВ:

program hello write(*,*) "Hello world" end program hello 


рджрд░рдЕрд╕рд▓, рд╕рдмрд╕реЗ рдЖрдо рдХреЛрдбред рдмрд╕ -рдХреЛрд░реЗ рдХреА (рдЗрдВрдЯреЗрд▓ рдХрдВрдкрд╛рдЗрд▓рд░) рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рддрд┐рдпреЛрдВ рд╕реЗ, рдпрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ Image'eys (рдЫрд╡рд┐рдпреЛрдВ) рд╕реЗ, рдореЛрдЯреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, "рдЕрднрд┐рд╡рд╛рджрди" рджреЗрдЦреЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП тАУcoarray-num-images = x рд╕реНрд╡рд┐рдЪ, рдпрд╛ FOR_COARRAY_NUM_IMAGES рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХрд┐рд╕ рддрд░реАрдХреЗ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░реЗрдВ:

 program hello_image write(*,*) "Hello from image ", this_image(), "out of ", num_images()," total imagesтАЬ end program hello_image 


рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж, рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦреЗрдВрдЧреЗ:

 Hello from image 1 out of 4 total images Hello from image 4 out of 4 total images Hello from image 2 out of 4 total images Hello from image 3 out of 4 total images 


рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЛ 4 рдмрд╛рд░ (4 рдкреНрд░рддрд┐рдпрд╛рдВ / рдЫрд╡рд┐) рдЪрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореЛрдЯреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдбреЗрдЯрд╛ рд╣реЛрдиреЗ рдкрд░, рд╣рдо, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╛рдирд╛рдВрддрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред

рдпрд╣рд╛рдВ рд╕рд┐рд░реНрдл рдмрд╣реБрдд рдмреЗрд╡рдХреВрдл рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЦреНрдп рд╕рд╡рд╛рд▓ рдХрд╛ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВ рд╣реИ - рдбреЗрдЯрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 real, codimension[*] :: x real :: y[*] 


рд╕реНрдХреНрд╡рд╛рдпрд░ рдХреЛрд╖реНрдардХ рд╣рдореЗрдВ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдореЛрдЯреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпреЗ рдХреЗрд╡рд▓ рд╕реНрдХреЗрд▓рд░ рд╣реИрдВ рдЬреЛ рдЕрднреА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдЗрд╕ рд╕реНрдХреЗрд▓рд░ рдХреЗ рдореВрд▓реНрдп рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдЙрд╕ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ (рдЫрд╡рд┐) рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, y [2] рд▓рд┐рдЦрддреЗ рд╣реБрдП, рд╣рдо рдЪрд┐рддреНрд░ 2 рдореЗрдВ y рдХреЗ рдорд╛рди рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИред

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдХреЙрд░реНрд░реЗ рдкрд░ рдХрдИ рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдП рдЧрдП рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдПрдХ рдореЛрдЯреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реА рдХреЛрдб рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЛрдЯреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдкреНрд░рдпрд╛рд╕ред
рдЖрдЗрдП рдХреБрдЫ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдЧреМрд░ рдХрд░реЗрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рджреЗрдЦрддреЗ рд╣реБрдП рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЪрд░ x рдХреЛ рдореЛрдЯреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ:

 x = 42.0 


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдЪрд░ x рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЬреИрд╕реЗ рд╣реА рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рдЪрд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЫрд╡рд┐ рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ:

 x[3] = 42.0 !     42   3 x = x[1] !           1 x[i] = x[j] !     I      j 


рдореЛрдЯреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд╢реБрджреНрдз рдПрдордкреАрдЖрдИ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╣рдо рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХрдВрдзреЛрдВ рдкрд░ рд╣реИ (рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╣реА рдПрдордкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рд╣рдо "рдЗрд╕рд╕реЗ рдКрдкрд░" рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдб рд╡рд┐рддрд░рд┐рдд рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдФрд░ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рджреЛрдиреЛрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдмрд╕ рдореЛрдЯреЗ = рд╕рд╛рдЭрд╛ рдпрд╛ рдореЛрдЯреЗ = рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдмрджрд▓реЗрдВред

рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рддрд┐рдпреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдорд╛рдирдирд╛ тАЛтАЛрддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдзрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдмреЗрд╢рдХ рд╡реЗ рд╣реИрдВред рдпрд╣, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, SYNC ALL рдирд┐рд░реНрдорд╛рдг рд╣реИ, рдЬреЛ рд╕рднреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред SYNC IMAGES () рднреА рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг:

 integer, codimension[*] :: fact integer :: i, factorial fact = this_image() SYNC ALL if ( this_image() == 1 ) then factorial = 1 do i = 1, num_images() factorial = factorial * fact[i] end do write(*, *) num_images(), 'factorial is ', factorial end if 


рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рддрдереНрдп рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдореЛрдЯреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рддрдереНрдп рдХреЛ рдореЛрдЯреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдЫрд╡рд┐ рдореЗрдВ рд╣рдо рдЫрд╡рд┐ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЧреБрдгрд╛ рдХрд░реЗрдВ, рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо SYNC ALL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдирдВрдмрд░ 1 рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рдореЗрдВ, рдЬреИрд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ "рдорд╛рд╕реНрдЯрд░ рдЫрд╡рд┐", рд╣рдо рднрд╛рдЬреНрдп рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред

рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡реА рдЙрдкрдХрд░рдг рдорд┐рд▓рд╛ - рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдЬреЛ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдореЗрдореЛрд░реА рд╕рдВрдЧрдарди рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдЖрд╡реЗрджрди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдХреЙрдЗрд▓рд░ рд╕рдорд░реНрдерди рдФрд░ рд╕рдВрдХрд▓рдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдореБрдЦреНрдп рдХрдард┐рдирд╛рдИ рдкреНрд░рджрд░реНрд╢рди рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рдпрд╣ рдЕрднреА рднреА рд╕рдмрд╕реЗ рдордЬрдмреВрдд рдмрд┐рдВрджреБ рдирд╣реАрдВ рд╣реИ ... рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВред

рдореИрдВ рдЕрдкрдирд╛ рдирдпрд╛ рд╡рд┐рд╡рд░рдг рдЕрдВрддрд┐рдо рдЕрдкрдирд╛рдпрд╛ рдорд╛рдирдХ рд╕реЗ "рдирдИ рдЕрдЪреНрдЫрд╛рдЗрдпреЛрдВ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдлреЛрд░рдЯреНрд░рд╛рди рдХреЛрдб рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдЙрдмрд╛рдК рдирд╣реАрдВ рдерд╛ред рдпрджрд┐ рд╕рдореАрдХреНрд╖рд╛ рд╡рд┐рдкрд░реАрдд рджрд┐рдЦрд╛рддреА рд╣реИ рдФрд░ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЬреАрд╡рдВрдд рд░реБрдЪрд┐ рдЬрдЧрд╛рддреА рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдЦреБрд╢реА рд╕реЗ рдордирд╛ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдФрд░ рд╡рд┐рд╖рдп рдХреЛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред рдФрд░ рдЕрдм рдЖрдк рд╕рднреА рдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

Source: https://habr.com/ru/post/In203618/


All Articles