亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fft.c

?? 多核(64核)系統(tǒng)的并行FFT運算程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
  { pthread_mutex_init(&(Global->idlock), NULL);};    Global->id = 0;    InitX(x);                  /* place random values in x *//************************************************************************************************//*  無需檢驗結(jié)果和打印數(shù)據(jù),注釋掉  if (test_result) {    ck1 = CheckSum(x);  }  if (doprint) {    printf("Original data values:\n");    PrintArray(N, x);  }*//************************************************************************************************/  InitU(N,umain);               /* initialize u arrays*/  InitU2(N,umain2,rootN);  /* fire off P processes */  {	long	i, Error;	for (i = 0; i < (P) - 1; i++) {		Error = pthread_create(&PThreadTable[i], NULL, (void * (*)(void *))(SlaveStart), NULL);/*建立了(P-1)個進程,即把任務(wù)分配給P個處理器,線程建立成功后賦0值給Error*//************************************************************************************************//*     對線程是否建立進行判斷,當出現(xiàn)未結(jié)束線程時打印錯誤報告,可忽略		if (Error != 0) {			printf("Error in pthread_create().\n");			exit(-1);		}*//************************************************************************************************/	}	SlaveStart();/*調(diào)用SlaveStart函數(shù)*/};  {	long	i, Error;	for (i = 0; i < (P) - 1; i++) {		Error = pthread_join(PThreadTable[i], NULL);/*等待分配的進程全部結(jié)束,成功后賦0值給Error*//************************************************************************************************//*	判斷是否所有子線程都結(jié)束,當出現(xiàn)未結(jié)束線程時打印錯誤報告,可忽略	if (Error != 0) {			printf("Error in pthread_join().\n");			exit(-1);		}*/		/************************************************************************************************/	}};/************************************************************************************************//*  打印FFT數(shù)據(jù)結(jié)果,注釋掉  if (doprint) {    if (test_result) {      printf("Data values after inverse FFT:\n");    } else {      printf("Data values after FFT:\n");    }    PrintArray(N, x);  }*//************************************************************************************************/    /*輸出每個處理器的時間數(shù)據(jù)*/  transtime = Global->transtimes[0];  printf("\n");  printf("                 PROCESS STATISTICS\n");  printf("            Computation      Transpose     Transpose\n");  printf(" Proc          Time            Time        Fraction\n");  printf("    0        %10ld     %10ld      %8.5f\n",         Global->totaltimes[0],Global->transtimes[0],         ((double)Global->transtimes[0])/Global->totaltimes[0]);  if (dostats) {    transtime2 = Global->transtimes[0];    avgtranstime = Global->transtimes[0];    avgcomptime = Global->totaltimes[0];    maxtotal = Global->totaltimes[0];    mintotal = Global->totaltimes[0];    maxfrac = ((double)Global->transtimes[0])/Global->totaltimes[0];    minfrac = ((double)Global->transtimes[0])/Global->totaltimes[0];    avgfractime = ((double)Global->transtimes[0])/Global->totaltimes[0];    for (i=1;i<P;i++) {      if (Global->transtimes[i] > transtime) {        transtime = Global->transtimes[i];      }      if (Global->transtimes[i] < transtime2) {        transtime2 = Global->transtimes[i];      }      if (Global->totaltimes[i] > maxtotal) {        maxtotal = Global->totaltimes[i];      }      if (Global->totaltimes[i] < mintotal) {        mintotal = Global->totaltimes[i];      }      if (((double)Global->transtimes[i])/Global->totaltimes[i] > maxfrac) {        maxfrac = ((double)Global->transtimes[i])/Global->totaltimes[i];      }      if (((double)Global->transtimes[i])/Global->totaltimes[i] < minfrac) {        minfrac = ((double)Global->transtimes[i])/Global->totaltimes[i];      }      printf("  %3ld        %10ld     %10ld      %8.5f\n",             i,Global->totaltimes[i],Global->transtimes[i],             ((double)Global->transtimes[i])/Global->totaltimes[i]);      avgtranstime += Global->transtimes[i];      avgcomptime += Global->totaltimes[i];      avgfractime += ((double)Global->transtimes[i])/Global->totaltimes[i];    }    printf("  Avg        %10.0f     %10.0f      %8.5f\n",           ((double) avgcomptime)/P,((double) avgtranstime)/P,avgfractime/P);    printf("  Max        %10ld     %10ld      %8.5f\n",	   maxtotal,transtime,maxfrac);    printf("  Min        %10ld     %10ld      %8.5f\n",	   mintotal,transtime2,minfrac);/*統(tǒng)計數(shù)據(jù)輸出*/  }  Global->starttime = start;  printf("\n");  printf("                 TIMING INFORMATION\n");  printf("Start time                        : %16lu\n",	  Global->starttime);  printf("Initialization finish time        : %16lu\n",	  Global->initdonetime);  printf("Overall finish time               : %16lu\n",	  Global->finishtime);  printf("Total time with initialization    : %16lu\n",	  Global->finishtime-Global->starttime);  printf("Total time without initialization : %16lu\n",	  Global->finishtime-Global->initdonetime);  printf("Overall transpose time            : %16ld\n",         transtime);  printf("Overall transpose fraction        : %16.5f\n",         ((double) transtime)/(Global->finishtime-Global->initdonetime));  printf("\n");/************************************************************************************************/  /*結(jié)果正確性測試,可忽略  if (test_result) {    ck3 = CheckSum(x);    printf("              INVERSE FFT TEST RESULTS\n");    printf("Checksum difference is %.3f (%.3f, %.3f)\n",	   ck1-ck3, ck1, ck3);    if (fabs(ck1-ck3) < 0.001) {      printf("TEST PASSED\n");    } else {      printf("TEST FAILED\n");    }  }  {exit(0);};*//************************************************************************************************/}/************************************************************************************************//*調(diào)用函數(shù)區(qū)域*//************************************************************************************************/void SlaveStart(){  long i;  long MyNum;  double *upriv;  long initdone;   long finish;   long l_transtime=0;  long MyFirst;   long MyLast;  {pthread_mutex_lock(&(Global->idlock));};    MyNum = Global->id;    Global->id++;  {pthread_mutex_unlock(&(Global->idlock));};   {;};/* POSSIBLE ENHANCEMENT:  Here is where one might pin processes to   processors to avoid migration */  {	pthread_barrier_wait(&(Global->start));};  upriv = (double *) malloc(2*(rootN-1)*sizeof(double));    if (upriv == NULL) {    fprintf(stderr,"Proc %ld could not malloc memory for upriv\n",MyNum);    exit(-1);  }  for (i=0;i<2*(rootN-1);i++) {    upriv[i] = umain[i];  }     MyFirst = rootN*MyNum/P;  MyLast = rootN*(MyNum+1)/P;  TouchArray(x, trans, umain2, upriv, MyFirst, MyLast);  {	pthread_barrier_wait(&(Global->start));};/* POSSIBLE ENHANCEMENT:  Here is where one might reset the   statistics that one is measuring about the parallel execution */  if ((MyNum == 0) || (dostats)) {    {	struct timeval	FullTime;	gettimeofday(&FullTime, NULL);	(initdone) = (unsigned long)(FullTime.tv_usec + FullTime.tv_sec * 1000000);};  }  /* perform forward FFT */  FFT1D(1, M, N, x, trans, upriv, umain2, MyNum, &l_transtime, MyFirst, 	MyLast, pad_length, test_result, dostats);  /* perform backward FFT */  if (test_result) {    FFT1D(-1, M, N, x, trans, upriv, umain2, MyNum, &l_transtime, MyFirst, 	  MyLast, pad_length, test_result, dostats);  }    if ((MyNum == 0) || (dostats)) {    {	struct timeval	FullTime;	gettimeofday(&FullTime, NULL);	(finish) = (unsigned long)(FullTime.tv_usec + FullTime.tv_sec * 1000000);};    Global->transtimes[MyNum] = l_transtime;    Global->totaltimes[MyNum] = finish-initdone;  }  if (MyNum == 0) {    Global->finishtime = finish;    Global->initdonetime = initdone;  }}double TouchArray(double *x, double *scratch, double *u, double *upriv, long MyFirst, long MyLast){  long i,j,k;  double tot = 0.0;  /* touch my data */  for (j=0;j<2*(rootN-1);j++) {    tot += upriv[j];  }     for (j=MyFirst; j<MyLast; j++) {    k = j * (rootN + pad_length);    for (i=0;i<rootN;i++) {      tot += x[2*(k+i)] + x[2*(k+i)+1] +              scratch[2*(k+i)] + scratch[2*(k+i)+1] +	     u[2*(k+i)] + u[2*(k+i)+1];    }  }    return tot;}double CheckSum(double *x){  long i,j,k;  double cks;  cks = 0.0;  for (j=0; j<rootN; j++) {    k = j * (rootN + pad_length);    for (i=0;i<rootN;i++) {      cks += x[2*(k+i)] + x[2*(k+i)+1];    }  }  return(cks);}void InitX(double *x){  long i,j,k;  srand48(0);  for (j=0; j<rootN; j++) {    k = j * (rootN + pad_length);    for (i=0;i<rootN;i++) {      x[2*(k+i)] = drand48();      x[2*(k+i)+1] = drand48();    }  }}void InitU(long N, double *u){  long q;   long j;   long base;   long n1;  for (q=0; 1<<q<N; q++) {      n1 = 1<<q;    base = n1-1;    for (j=0; j<n1; j++) {      if (base+j > rootN-1) { 	return;      }      u[2*(base+j)] = cos(2.0*PI*j/(2*n1));      u[2*(base+j)+1] = -sin(2.0*PI*j/(2*n1));    }  }}void InitU2(long N, double *u, long n1){  long i,j,k;   for (j=0; j<n1; j++) {      k = j*(rootN+pad_length);    for (i=0; i<n1; i++) {        u[2*(k+i)] = cos(2.0*PI*i*j/(N));      u[2*(k+i)+1] = -sin(2.0*PI*i*j/(N));    }  }}long BitReverse(long M, long k){  long i;   long j;   long tmp;  j = 0;  tmp = k;  for (i=0; i<M; i++) {    j = 2*j + (tmp&0x1);    tmp = tmp>>1;  }  return(j);}void FFT1D(long direction, long M, long N, double *x, double *scratch, double *upriv, double *umain2,           long MyNum, long *l_transtime, long MyFirst, long MyLast, long pad_length, long test_result, long dostats){  long j;  long m1;   long n1;  unsigned long clocktime1;  unsigned long clocktime2;  m1 = M/2;  n1 = 1<<m1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
6080午夜不卡| 成人福利视频在线看| 欧美日韩亚洲综合在线| 亚洲国产人成综合网站| 在线播放国产精品二区一二区四区| 亚洲网友自拍偷拍| 制服丝袜亚洲精品中文字幕| 丝袜国产日韩另类美女| 精品美女在线播放| 高清在线成人网| 国产精品妹子av| 日本精品视频一区二区三区| 亚洲成人av电影| 精品精品欲导航| 国产69精品一区二区亚洲孕妇 | 人人超碰91尤物精品国产| 欧美日韩国产影片| 久久 天天综合| 国产精品美女一区二区三区 | 日本韩国欧美在线| 香蕉久久夜色精品国产使用方法| 日韩一卡二卡三卡国产欧美| 国产剧情一区二区| 亚洲日本在线视频观看| 欧美精品777| 丁香婷婷综合激情五月色| 一区二区三区精品久久久| 91.麻豆视频| 国产91清纯白嫩初高中在线观看 | 99久久久国产精品| 亚洲777理论| 久久久激情视频| 色综合婷婷久久| 麻豆freexxxx性91精品| 国产精品久久久久影院亚瑟| 欧美丰满一区二区免费视频| 懂色av中文一区二区三区| 亚洲成人三级小说| 国产女同互慰高潮91漫画| 在线视频一区二区免费| 男人操女人的视频在线观看欧美| 一区二区中文视频| 欧美一区二区三区性视频| 高清不卡在线观看| 免费在线看成人av| 亚洲另类春色国产| 国产午夜亚洲精品不卡| 欧美久久久久久久久中文字幕| 成人一级片在线观看| 日本在线不卡一区| 亚洲综合色成人| 国产精品毛片久久久久久久| 日韩欧美国产一二三区| 欧美性猛交xxxx黑人交| 99在线精品视频| 国产精品1024久久| 精品亚洲成a人| 午夜精品免费在线观看| 亚洲青青青在线视频| 中文字幕高清一区| 久久只精品国产| 精品第一国产综合精品aⅴ| 欧美日韩一区二区三区四区五区 | 欧美精品在欧美一区二区少妇| 成熟亚洲日本毛茸茸凸凹| 国内精品嫩模私拍在线| 免费在线观看一区| 日韩黄色免费电影| 婷婷中文字幕综合| 亚洲乱码国产乱码精品精小说| 中文久久乱码一区二区| 亚洲地区一二三色| 亚洲美女精品一区| 国产精品久久久久四虎| 日本一区二区三区四区在线视频| 精品国产百合女同互慰| 精品国产乱码久久久久久老虎| 4438x亚洲最大成人网| 欧美日韩国产精品成人| 欧美色图第一页| 欧美片在线播放| 8v天堂国产在线一区二区| 欧美三区在线视频| 欧美在线观看视频一区二区 | 3d成人h动漫网站入口| 欧美日韩久久久一区| 7777精品久久久大香线蕉| 91精品久久久久久久99蜜桃 | 色婷婷国产精品久久包臀 | 国产一区二区三区四区五区入口| 久久精品国产网站| 韩国精品主播一区二区在线观看 | 久久嫩草精品久久久久| 久久久亚洲国产美女国产盗摄| 久久午夜老司机| 国产精品久久久久久久久快鸭| |精品福利一区二区三区| 国产精品美女久久久久久久久久久 | 欧美在线观看18| 欧美女孩性生活视频| 欧美日韩三级视频| 9191成人精品久久| 精品欧美乱码久久久久久| 久久亚洲捆绑美女| 亚洲三级电影网站| 天天综合网天天综合色| 加勒比av一区二区| av不卡在线观看| 欧美日韩一卡二卡| 欧美刺激午夜性久久久久久久| 久久―日本道色综合久久| 国产精品女主播av| 亚洲尤物在线视频观看| 免费观看一级欧美片| 国产成人av在线影院| 色av成人天堂桃色av| 日韩三级电影网址| 国产精品美女久久久久aⅴ国产馆| 一区二区三区免费观看| 玖玖九九国产精品| 不卡一区二区中文字幕| 91精品国产综合久久小美女| 国产精品网站在线播放| 亚洲第一主播视频| 丰满少妇久久久久久久| 欧美三级韩国三级日本一级| 久久久九九九九| 亚洲18影院在线观看| 国产成人综合亚洲91猫咪| 欧美色图激情小说| 中文字幕乱码久久午夜不卡 | 在线观看91精品国产入口| 精品国产污污免费网站入口 | 正在播放亚洲一区| 欧美国产综合色视频| 日韩av在线免费观看不卡| 色综合久久久久综合体桃花网| 欧美电影免费观看高清完整版 | 国产精品77777| 欧美蜜桃一区二区三区| 亚洲日本丝袜连裤袜办公室| 国产一区二区三区高清播放| 欧美日韩国产美| 亚洲六月丁香色婷婷综合久久| 国产一区二区三区在线观看免费| 欧美日韩国产精选| 尤物在线观看一区| 97久久精品人人做人人爽| 精品久久99ma| 免费人成在线不卡| 欧美三级蜜桃2在线观看| 亚洲乱码中文字幕综合| 国产激情偷乱视频一区二区三区| 欧美大片一区二区三区| 日韩av网站免费在线| 欧美日韩在线三级| 一区二区三区国产精华| 91丝袜国产在线播放| 国产精品视频在线看| 国产成都精品91一区二区三| 精品国产亚洲在线| 狠狠狠色丁香婷婷综合激情| 日韩精品在线一区| 久久精品国产99| 日韩欧美国产一区在线观看| 美女任你摸久久| 日韩女优毛片在线| 麻豆专区一区二区三区四区五区| 欧美军同video69gay| 午夜精品在线看| 日韩一区二区在线看片| 激情六月婷婷久久| 欧美精品一区二区三区高清aⅴ| 免费看日韩a级影片| 久久综合九色综合久久久精品综合| 精品综合免费视频观看| 久久婷婷色综合| 国产高清在线精品| 国产精品理论片| 91国产免费观看| 午夜av一区二区| 欧美一二三四在线| 国产美女精品人人做人人爽| 国产亚洲一区二区三区在线观看| 国产乱码精品一品二品| 国产精品伦一区| 欧美优质美女网站| 视频一区视频二区在线观看| 欧美一二三四区在线| 国产成人亚洲综合a∨婷婷| 中文字幕精品在线不卡| 色妞www精品视频| 午夜精品免费在线| 久久久久久久综合色一本| 99久久免费视频.com| 亚洲18色成人| 亚洲国产精品成人综合色在线婷婷 | 91精品在线免费| 国产成人亚洲精品狼色在线| 亚洲成av人片观看|