Exemplo n.º 1
0
/* -- 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();
}
Exemplo n.º 2
0
/* -- 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();
}
Exemplo n.º 3
0
/* -- 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 );
			}
		}
	}
Exemplo n.º 5
0
/* -- 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();
}
Exemplo n.º 6
0
/* -- 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();
}