Sheet1 1 2 3 .globl main 4 5 main: 6 7 8 9 10 11 12 13 14 .file .text hello.c .type main, @function pushl movl andl subl movl movl movl call movl %ebp %esp, %ebp $-16, %esp $16, %esp $0, 8(%esp) $0, 4(%esp) $main.omp_fn.0, (%esp) GOMP_parallel_start OpenMPのスレッドを生成 $0, (%esp) 15 call main.omp_fn.0 16 17 18 19 20 21 .LC0: 22 23 24 25 main.omp_fn.0: 26 27 28 29 call leave ret .size .section GOMP_parallel_end .string .text .type “hello world from %d of %d\n” pushl movl pushl subl %ebp %esp, %ebp %ebx $20, %esp 30 31 call movl omp_get_num_threads %eax, %ebx 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 call movl movl movl movl call addl popl popl ret .size .ident .section omp_get_thread_num $.LC0, %edx %ebx, 8(%esp) %eax, 4(%esp) %edx, (%esp) printf $20, %esp %ebx %ebp #pragmaで指定したブロックが 、関数として独立させられている OpenMPが生成した全スレッド がjoinして一つに main, .-main .rodata main.omp_fn.0, @function get_num_threads()の呼び出 し。現在の総スレッ数ドが返る get_thread_num()の呼び出し 。自スレッドの番号が返る main.omp_fn.0, .-main.omp_fn.0 GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5 .note.GNU-stack,"",@progbits ページ 1
© Copyright 2024 ExpyDoc