Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void *compute_gauss(void *threadid){
- int local_row, local_norm, col;
- float multiplier;
- long tid;
- tid = (long)threadid;
- fprintf(stdout, "Thread %ld has startedn", tid);
- while (global_norm < N){
- while (global_row < N) {
- pthread_mutex_lock(&global_row_lock);
- local_row = global_row;
- global_row++;
- pthread_mutex_unlock(&global_row_lock);
- print_inputs();
- multiplier = A[local_row][global_norm] / A[global_norm][global_norm];
- for (col = global_norm; col < N; col++) {
- A[local_row][col] -= A[global_norm][col] * multiplier;
- }
- B[local_row] -= B[global_norm] * multiplier;
- }
- pthread_barrier_wait(&barrier);
- if (tid == 0){
- global_norm++;
- global_row=global_norm+1;
- }
- pthread_barrier_wait(&barrier); // wait until all threads arrive
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement