/* -- rs400() : definicao de task */ void sumar () { int i, j; if (! _barrier()) /* --- acao6() */ longjmp ((*macro).fim_bar, 1); { if (setjmp ((*macro).fim_bar) == 0) /* --- forall () */ end_barrier(); { int i_, n_; n_ = (100 - 1 + 1) / n_proc_macro_; if (((100 - 1 + 1) % n_proc_macro_) != 0) n_++; i_ = 1 + mi_id * n_; for (i = i_; ((i < (i_ + n_)) && (i <= 100)); i++) { for (j = 0; j < 100; ++j) { sharedG->res3[i][j]= sharedG->res1[i][j] + sharedG->res2[i][j]; } } } if (! _barrier()) /* --- forall () */ longjmp ((*macro).fim_bar, 1); } if (setjmp ((*macro).fim_bar) == 0) /* --- acao7() */ end_barrier(); }
/* -- rs400() : definicao de task */ void multiplica_matriz () { int i, j, k; if (! _barrier()) /* --- acao6() */ longjmp ((*macro).fim_bar, 1); sharedG->size=1000; { if (setjmp ((*macro).fim_bar) == 0) /* --- forall () */ end_barrier(); { int i_, n_; n_ = (sharedG->size-1 - 0 + 1) / n_proc_macro_; if (((sharedG->size-1 - 0 + 1) % n_proc_macro_) != 0) n_++; i_ = 0 + mi_id * n_; for (i = i_; ((i < (i_ + n_)) && (i <= sharedG->size-1)); i++) { for(k=0;k<sharedG->size;k++){ for(j=0;j<sharedG->size;j++){ sharedG->C[i][j]=sharedG->C[i][j]+sharedG->A[i][k]*sharedG->B[k][j]; } } } } if (! _barrier()) /* --- forall () */ longjmp ((*macro).fim_bar, 1); } if (setjmp ((*macro).fim_bar) == 0) /* --- acao7() */ end_barrier(); }
/* -- rs400() : definicao de task */ void inicializa_matriz () { int i, j; if (! _barrier()) /* --- acao6() */ longjmp ((*macro).fim_bar, 1); sharedG->size=1000; { if (setjmp ((*macro).fim_bar) == 0) /* --- forall () */ end_barrier(); { int i_, n_; n_ = (sharedG->size-1 - 0 + 1) / n_proc_macro_; if (((sharedG->size-1 - 0 + 1) % n_proc_macro_) != 0) n_++; i_ = 0 + mi_id * n_; for (i = i_; ((i < (i_ + n_)) && (i <= sharedG->size-1)); i++) { for(j=0;j<sharedG->size;j++){ sharedG->A[i][j]=3*i+j; sharedG->B[i][j]=i+3*j; sharedG->C[i][j]=0.0; } } } if (! _barrier()) /* --- forall () */ longjmp ((*macro).fim_bar, 1); } if (setjmp ((*macro).fim_bar) == 0) /* --- acao7() */ end_barrier(); }
void MemoryRaceDetector::event( const TraceEvent& event ) { if( event.instruction->opcode == ir::PTXInstruction::Bar || event.instruction->opcode == ir::PTXInstruction::Exit ) { _barrier(); } else if( event.instruction->addressSpace == ir::PTXInstruction::Shared ) { if( event.instruction->opcode == ir::PTXInstruction::Ld ) { _read( event ); } else if( event.instruction->opcode == ir::PTXInstruction::St ) { _write( event ); } } }
/* -- rs400() : definicao de task */ void print () { int i, j; if (! _barrier()) /* --- acao6() */ longjmp ((*macro).fim_bar, 1); for (i = 0; i < 100; ++i) { for (j = 0; j < 100; ++j) { printf("%f ",sharedG->res3[i][j]); } printf("/n"); } printf("/n"); if (setjmp ((*macro).fim_bar) == 0) /* --- acao7() */ end_barrier(); }
/* -- rs400() : definicao de task */ void multiplicarCD () { int i, j, k; if (! _barrier()) /* --- acao6() */ longjmp ((*macro).fim_bar, 1); for (i = 0; i < 100; ++i) { for (j = 0; j < 100; ++j) { sharedG->res2 [i][j] = 0; for (k = 0; k < 100; ++k) { sharedG->res2[i][j] = sharedG->res2[i][j] + (sharedG->A[i][k] * sharedG->B[k][j]); } } } if (setjmp ((*macro).fim_bar) == 0) /* --- acao7() */ end_barrier(); }