рдЬрд▓реНрдж рд╣реА рд╕рд┐рддрдВрдмрд░ рдХрд╛ рдкрд╣рд▓рд╛ред рдХреЛрдИ рд╕реНрдХреВрд▓ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдХреЛрдИ рдХреЙрд▓реЗрдЬ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдФрд░ рд╣рдо рдХреНрд▓реИрдЧ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд░рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдм рдУрдкрдирдПрдордкреА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ!
рдпрд╣рд╛рдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЙрдкрд▓рдмреНрдз
рд╣реИ ред рдЕрдм рдпрд╣ рдХреНрд▓реЗрдВрдЧ 3.3 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдПрдХ рдзреАрдореА рд╕рдореАрдХреНрд╖рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд▓ рд░рд╣реА рд╣реИ, рдФрд░ рдЬрд▓реНрдж рд╣реА рдХреЛрдб рдХреЛ рдХреНрд▓рдЪ рдЯреНрд░рдВрдХ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдЕрдкрдиреА рдирдИ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
OpenMP рдорд╛рдирдХ рд╕рдВрд╕реНрдХрд░рдг 3.1 рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдирд┐рдореНрди рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: OpenUH рд░рд┐рд╕рд░реНрдЪ рдХрдВрдкрд╛рдЗрд▓рд░, рд╡рд┐рд╢реЗрд╖ OMP2012 рдФрд░ Intel рдЖрдВрддрд░рд┐рдХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ OpenMP рд╕рддреНрдпрд╛рдкрди рдХрд┐рдЯред рдХреНрд▓реИрдВрдк рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд рдУрдкрдирдПрдо рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдУрдкрдирдПрдордкреА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХреЗ рдореБрдХрд╛рдмрд▓реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
рдЗрдВрдЯреЗрд▓ OpenMP рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА , рдЬреЛ рдПрдХ рдореБрдлреНрдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ, рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдо рдУрдкрдирдПрдордкреА рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рднреА рд▓рд╛рднреЛрдВ рдХрд╛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджреНрдпреЛрдЧ рдорд╛рдирдХ рд╣реИред рдпрд╣ рдХреНрд▓реИрдВрдЧ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪрд░рдг рдХреА рдЙрдкрд▓рдмреНрдзрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рджрд╛рдпрд░рд╛ рдФрд░ рднреА рд╡реНрдпрд╛рдкрдХ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рдорд╣реЗрд╕рд╛ рдПрдЪрдПрд╕ рдиреЗ рдХреА рдереА рдФрд░ рдЗрд╕реЗ рдореЙрд╕реНрдХреЛ рдХреЗ рдХрдИ рдЗрдВрдЯреЗрд▓ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдиреЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдерд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрд▓реЗрдХреНрд╕реА рдмрд╛рдЯреЗрд╡ рдХреЛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рд╣реЗрд▓ рдлрд┐рдВрдХреЗрд▓, рджрд┐рдорд┐рддреНрд░реА рдЧреНрд░рд┐рдмреЗрдВрдХреЛ рдФрд░ рдбрдЧ рдЧреНрд░реЗрдЧреЛрд░ рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рдереАред
рдХреЛрдб, рдкрд░реАрдХреНрд╖рдг рдпрд╛ рдмрдЧ рдкрд░ рдкрд╛рдП рдЧрдП рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдмреЗрд╣рдж рд╕реНрд╡рд╛рдЧрдд рдпреЛрдЧреНрдп рд╣реИрдВ (рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЧрд┐рддреБрдм рдПрдХ рдЦреБрд▓рд╛ рдХреНрд╖реЗрддреНрд░ рд╣реИ) - рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЖрдкрдХреЗ рдмрд╣реБрдд рдЖрднрд╛рд░реА рд╣реЛрдВрдЧреЗред
рдФрд░ рдЕрдВрдд рдореЗрдВ:
$ cat hello.c #include <stdio.h> int main() { #pragma omp parallel printf("Hello, Habr!\n"); } $ clang -fopenmp hello.c -o ./hello_habr $ ./hello_habr Hello, Habr! Hello, Habr! Hello, Habr! Hello, Habr! Hello, Habr! Hello, Habr! Hello, Habr! Hello, Habr! Hello, Habr! Hello, Habr! Hello, Habr! Hello, Habr! Hello, Habr! Hello, Habr! Hello, Habr! Hello, Habr!