unsigned counter = 0;void *do_stuff(void * arg) {parallel_for (int i = 0 ; i < 200000000 ; ++ i) {counter ++;}return arg;} counter parallel_for (int i = 0 ; i < 200000000 ; ++ i) {counter ++;}lw $t0, counteraddi $t0, $t0, 1sw $t0, counter lw $t0, counter lw $t0, counteraddi $t0, $t0, 1lw $t0, countersw $t0, counter addi $t0, $t0, 1lw $t0, counter addi $t0, $t0, 1addi $t0, $t0, 1sw $t0, countersw $t0, counter sw $t0, countercounter counter ! ! " #" $"# $%&' ( % & counter'( )parallel_for (i = 0; i < N; ++i){counter++;}parallel_for (i = 0; i < N; ++i) private(counter) {counter++; // increment local copy} * +,-. .− . //0 .1) for(i = 0; i < LENGTH - 1; i++) {min = i; // assume ithelement is smallestfor(j = i + 1; j < LENGTH; j++) {if(a[j] < a[min])min = j; // oops, jthelement is smaller}swap(a[min], a[i]);}2) ) 3 4 . . 4 .. 5 4 6764 .. 3775 4 .. 89* $+,for all vertices v {v.color = ∞;v.weight = 0;bag.insert(v);}for(i = 0; i < N; ++i) {v = bag.remove_heaviest();available_colors = {1, 2, ..., N};for all neighbors u of vif(u.color == ∞)bag.update(u, u.weight++);elseavailable_colors.remove(u.color);v.color = available_colors.smallest();}:* $+,- +$&$for(i = 0; i < N; ++i) {vertex[i] = bag.remove_heaviest();for all neighbors u of vertex[i]if(u.color == ∞) bag.update(u, u.weight++);}for(i = 0; i < N; ++i) {available_colors = {1, 2, ..., N};for all neighbors u of vertex[i]if(u.color != ∞) available_colors.remove(u.color);vertex[i].color = available_colors.smallest();}for all vertices v {v.color = ∞;v.weight = 0;bag.insert(v);}vertex . ;* $+,- +$&$#$ & 'for all vertices v {v.color = ∞;v.weight = 0;bag.insert(v);}for(i = 0; i < N; ++i) {vertex[i] = bag.remove_heaviest();for all neighbors u of vertex[i]if(u.color == ∞)bag.update(u, u.weight++);}for(i = 0; i < N; ++i) {available_colors = {1, 2, ..., N};for all neighbors u of vertex[i]if(u.color != ∞)available_colors.remove(u.color);vertex[i].color =available_colors.smallest();}vertex<) .) = > . 4 ? ? +=.-
View Full Document