Ejemplo n.º 1
0
void
avx512f_test (void)
{
  int i, sign;
  union128 res1, res2, res3, src1, src2;
  MASK_TYPE mask = MASK_VALUE;
  float res_ref[SIZE];

  sign = -1;
  for (i = 0; i < SIZE; i++)
    {
      src1.a[i] = 1.5 + 34.67 * i * sign;
      src2.a[i] = -22.17 * i * sign + 1.0;
      sign = sign * -1;
    }
  for (i = 0; i < SIZE; i++)
      res2.a[i] = DEFAULT_VALUE;

  res1.x = _mm_min_round_ss (src1.x, src2.x, _MM_FROUND_NO_EXC);
  res2.x = _mm_mask_min_round_ss (res2.x, mask, src1.x, src2.x, _MM_FROUND_NO_EXC);
  res3.x = _mm_maskz_min_round_ss (mask, src1.x, src2.x, _MM_FROUND_NO_EXC);

  calc_min (res_ref, src1.a, src2.a);

  if (check_union128 (res1, res_ref))
    abort();
  
  MASK_MERGE () (res_ref, mask, 1);
  if (check_union128 (res2, res_ref))
    abort ();

  MASK_ZERO () (res_ref, mask, 1);
  if (check_union128 (res3, res_ref))
    abort ();
}
Ejemplo n.º 2
0
/* Riempie la matrice dei tempi delle collisioni per j>i */
void collision_table (){
	int i,j;
	for (i = 0; i < number_of_particles ; i++){
		for ( j= i+1 ; j < number_of_particles; j++){
			collTable[i*number_of_particles + j] = calc_min ( i, j );
		}
	}
}
Ejemplo n.º 3
0
Archivo: range.c Proyecto: nagahar/kr
void calc(int bit,char s[])
{
	printf("%s\n",s);
	printf("signed\t");
	calc_smax(bit);
	calc_min(bit);
	printf("\nunsigned\t");
	calc_umax(bit);
	printf("\n");
}
Ejemplo n.º 4
0
void calc_min_global(void   *data_local,
                     void   *result,
 	    	     size_t  n_data_local,
                     SID_Datatype     type,
                     int              mode,
                     SID_Comm        *comm){
  calc_min(data_local,result,n_data_local,type,mode);
  if(check_mode_for_flag(mode,CALC_MODE_RETURN_DOUBLE))
    SID_Allreduce(SID_IN_PLACE,result,1,SID_DOUBLE,SID_MIN,comm);
  else
    SID_Allreduce(SID_IN_PLACE,result,1,type,      SID_MIN,comm);
}
Ejemplo n.º 5
0
/* Aggiorna i tempi di collisioni per le righe e le colonne della matrice della particelle che hanno colliso:
 *
 *
 * NOTA BENE :
 * Modifica le righe associate ad una particella -> LA MATRICE é simmetrica 
 *
 *
 * */
void update_coll_table(){
	int i,j;
	int a,b,c;
	for (i = 0; i < 2 ; i++){
		/* a,b indici di riga e colonna -> Matrice simmetrica: tengo solo b>a, ossia j> index_collision[i] */
		for ( j= 0 ; j < number_of_particles; j++){
			a=index_collision[i];
			b=j;
			if( a != b){
				/*considero sempre solo la parte in alto a dx della matrice*/
				if( a>b){
					c=a;
					a=b;
					b=c;
				}
				collTable[a*number_of_particles+b]= calc_min(a,b);
			}
		}
	}
}