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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? t_initialize.c

?? CCSM Research Tools: Community Atmosphere Model (CAM)
?? C
字號:
#include <stdlib.h>  /* malloc */#include <unistd.h>  /* sysconf */#include "gpt.h"/* ** Array (1 per thread) of linked lists of timers, and last timer in each list*/struct node **timers = NULL;struct node **last = NULL;long ticks_per_sec;/*** Define lock arrays depending upon the type of threading done*/#if ( defined THREADED_OMP )omp_lock_t lock;#elif ( defined THREADED_PTHREADS )pthread_mutex_t t_mutex = PTHREAD_MUTEX_INITIALIZER;pthread_t *threadid;#endiffloat *overhead;                   /* wallclock estimate of timer overhead */int *max_indent_level;             /* maximum indentation level */int numthreads            = 1;     /* number of threads.  1 is for no threading */Boolean t_initialized     = false; /* whether t_initialize has been called */Boolean wallenabled       = false; /* wallclock timer stats enabled */Boolean usrsysenabled     = false; /* usr & sys timer stats enabled */Boolean pclenabled        = false; /* enable PCL library */     Boolean pcl_cyclesenabled = false; /* enable PCL cycle count */int pcl_cyclesindex       = -1;    /* index for PCL cycle count */struct PossibleEvent possible_event[] = {  {usrsys,               true,  "Usr Sys   "},  {wall,                 true,  "Wallclock "},#ifdef HAVE_PCL  {pcl_start,            false, "          "},  /* bracket PCL entries */  {pcl_l1dcache_miss,    false, "l1 D miss "},  {pcl_l2cache_miss,     false, "L2 miss   "},  {pcl_cycles,           false, "Cycles    "},  {pcl_elapsed_cycles,   false, "E-Cycles  "},  {pcl_fp_instr,         false, "FP instr  "},  {pcl_loadstore_instr,  false, "L/S instr "},  {pcl_instr,            false, "Instruct  "},  {pcl_stall,            false, "Stall     "},  {pcl_end,              false, "          "},  /* bracket PCL entries */#endif};struct Event **event = NULL;int nevent = 0;int npossible = sizeof (possible_event) / sizeof (struct PossibleEvent);/*** Needed by PCL library: otherwise unused*/PCL_DESCR_TYPE *descr;int counter_list[PCL_COUNTER_MAX];int ncounter = 0;                  /* number of PCL counters */PCL_CNT_TYPE *overhead_pcl;        /* overhead counter (cycles) *//*** t_initialize (): Initialization routine must be called from single-threaded**   region before any other timing routines may be called.  The need for this**   routine could be eliminated if not targetting timing library for threaded**   capability. **** return value: 0 (success) or -1 (failure)*/int t_initialize (){  int n;             /* index */  int nbytes;        /* number of bytes for malloc */  int ret;           /* return code *//*** Determine number of ticks per second for conversion use by other t_pr(), t_stamp()*/  if ((ticks_per_sec = sysconf (_SC_CLK_TCK)) == -1)    return t_error ("t_initialize: token _SC_CLK_TCK is not defined\n");#if ( ! defined DISABLE_TIMERS )  if (t_initialized)    return t_error ("t_initialize has already been called\n");#if ( defined THREADED_OMP )  /*  ** OMP: must call init_lock before using the lock (get_thread_num())  */  omp_init_lock (&lock);  numthreads = omp_get_max_threads();#elif ( defined THREADED_PTHREADS )  numthreads = MAX_THREADS;#endif  /*  ** Allocate space for global arrays  */  nbytes = numthreads * sizeof (struct node *);  if ((timers = (struct node **) malloc (nbytes)) == 0)    return t_error ("malloc failure: %d items\n", numthreads);  if ((last = (struct node **) malloc (nbytes)) == 0)    return t_error ("malloc failure: %d items\n", numthreads);  nbytes = numthreads * sizeof (float);  if ((overhead = (float *) malloc (nbytes)) == 0)    return t_error ("malloc failure: %d items\n", numthreads);  nbytes = numthreads * sizeof (PCL_CNT_TYPE);  if ((overhead_pcl = (PCL_CNT_TYPE *) malloc (nbytes)) == 0)    return t_error ("malloc failure: %d items\n", numthreads);  nbytes = numthreads * sizeof (int);  if ((max_indent_level = (int *) malloc (nbytes)) == 0)    return t_error ("malloc failure for %d items\n", numthreads);  /*  ** Initialize array values  */  for (n = 0; n < numthreads; n++) {    timers[n] = 0;    last[n] = 0;    overhead[n] = 0.;    overhead_pcl[n] = 0;    max_indent_level[n] = 0;  }#ifdef THREADED_PTHREADS  /*  ** In the pthreads case, we must manage the threadid array which maps  ** physical thread id's to logical id's  */  nbytes = numthreads * sizeof (pthread_t);  if ((threadid = (pthread_t *) malloc (nbytes)) == 0)    return t_error ("malloc failure for %d items\n", numthreads);  /*  ** Reset numthreads to 1 and define the threadid array now that initialization   ** is done.  */  threadid[0] = pthread_self ();  numthreads = 1;#endif  if (get_thread_num () > 0)     return t_error ("t_initialize: should only be called by master thread\n");  for (n = 0; n < npossible; n++) {    if (possible_event[n].enabled) {      if (possible_event[n].name == usrsys)	usrsysenabled = true;      if (possible_event[n].name == wall)	wallenabled = true;      if ((event = realloc (event, (nevent+1) * sizeof (struct Event *))) == NULL)	return t_error ("realloc failure\n");      if ((event[nevent] = malloc (sizeof (struct Event))) == NULL)	return t_error ("realloc failure\n");      event[nevent]->name = possible_event[n].name;      strcpy (event[nevent]->string, possible_event[n].string);#ifdef HAVE_PCL      /*      ** Set up PCL stuff based on what t_setoption has provided.      */      if (event[nevent]->name > pcl_start && event[nevent]->name < pcl_end) {	pclenabled = true;	event[nevent]->index = ncounter;	switch (possible_event[n].name) {	case pcl_l1dcache_miss:	  counter_list[ncounter++] = PCL_L1DCACHE_MISS;	  break;	  	case pcl_l2cache_miss: 	  counter_list[ncounter++] = PCL_L2CACHE_MISS;	  break;	  	case pcl_cycles: 	  pcl_cyclesindex = ncounter;	  pcl_cyclesenabled = true;	  counter_list[ncounter++] = PCL_CYCLES;	  break;	case pcl_elapsed_cycles: 	  counter_list[ncounter++] = PCL_ELAPSED_CYCLES;	  break;	case pcl_fp_instr: 	  counter_list[ncounter++] = PCL_FP_INSTR;	  break;	case pcl_loadstore_instr: 	  counter_list[ncounter++] = PCL_LOADSTORE_INSTR;	  break;	case pcl_instr: 	  counter_list[ncounter++] = PCL_INSTR;	  break;	case pcl_stall: 	  counter_list[ncounter++] = PCL_STALL;	  break;		default:	  break;	}      }#endif      ++nevent;    }  }#ifdef HAVE_PCL  if (ncounter > 0) {    int thread;         /* thread number */    nbytes = numthreads * sizeof (PCL_DESCR_TYPE);    if ((descr = (PCL_DESCR_TYPE *) malloc (nbytes)) == 0)      return t_error ("malloc failure: %d items\n", numthreads);    /*    ** PCLinit must be called on a per-thread basis.  Therefore must make the call here    ** rather than in t_initialize.  null timer list flags not initialized.    ** Also, the critical section is necessary because PCLstart appears not to be    ** thread-safe.    */#pragma omp parallel for        for (thread = 0; thread < numthreads; thread++) {      unsigned int flags;           /* mode flags needed by PCL */#pragma omp critical      {	if ((ret = PCLinit (&descr[thread])) != PCL_SUCCESS)	  return t_error ("unable to allocate PCL handle for thread %d. %s\n",			  thread, t_pclstr (ret));	/*	** Always count user mode only	*/      	flags = PCL_MODE_USER;	if ((ret = PCLquery (descr[thread], counter_list, ncounter, flags)) != PCL_SUCCESS)	  return t_error ("Bad return from PCLquery thread %d: %s\n", thread, t_pclstr (ret));	if ((ret = PCLstart (descr[thread], counter_list, ncounter, flags)) != PCL_SUCCESS)	  return t_error ("PCLstart failed thread=%d: %s\n", thread, t_pclstr (ret));      }    }  }#endif  t_initialized = true;#endif  return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美特级限制片免费在线观看| 奇米精品一区二区三区四区| 国产成人av自拍| 日本一区二区三级电影在线观看| 国产成a人无v码亚洲福利| 欧美经典一区二区| 91在线精品秘密一区二区| 亚洲福利一区二区三区| 日韩欧美在线网站| 国产成人免费在线观看不卡| 中文字幕在线免费不卡| 色欲综合视频天天天| 免费在线视频一区| 国产片一区二区| 欧美综合天天夜夜久久| 美国av一区二区| 成人欧美一区二区三区白人| 欧美日韩精品二区第二页| 国产一区二区视频在线| 亚洲另类中文字| 日韩欧美www| 99国产精品国产精品毛片| 日韩二区三区在线观看| 日本一区二区三区四区在线视频| 欧美中文字幕不卡| 国产一区二区91| 一级精品视频在线观看宜春院 | 久久丁香综合五月国产三级网站| 久久久久9999亚洲精品| 欧美视频在线观看一区| 激情久久五月天| 亚洲最色的网站| 久久色视频免费观看| 欧美午夜电影一区| 成人午夜免费电影| 青青草原综合久久大伊人精品| 国产日本欧美一区二区| 91精品国产高清一区二区三区蜜臀| 国产不卡在线视频| 日本在线播放一区二区三区| 国产精品欧美综合在线| 日韩视频国产视频| 欧美性色aⅴ视频一区日韩精品| 国产在线观看免费一区| 亚洲二区视频在线| 综合在线观看色| 久久综合久久鬼色中文字| 51午夜精品国产| 日本丰满少妇一区二区三区| 国产高清久久久久| 麻豆精品一区二区三区| 亚州成人在线电影| 亚洲另类在线视频| 中文一区二区在线观看| 久久综合九色综合97婷婷| 日韩亚洲电影在线| 欧美日本在线一区| 在线一区二区三区四区五区| 成人精品在线视频观看| 国产酒店精品激情| 国内外精品视频| 精品亚洲免费视频| 美国精品在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 国产欧美精品一区aⅴ影院| 日韩欧美高清一区| 91精品欧美福利在线观看| 欧美亚洲图片小说| 在线视频国内自拍亚洲视频| 91老师片黄在线观看| jiyouzz国产精品久久| 国产99久久久国产精品免费看 | 在线91免费看| 欧美四级电影网| 欧美日精品一区视频| 欧美性色欧美a在线播放| 欧美亚洲国产怡红院影院| 欧美在线|欧美| 欧美亚州韩日在线看免费版国语版| 91麻豆国产福利在线观看| 91在线无精精品入口| 在线亚洲一区二区| 欧美三级电影网| 日韩一区二区麻豆国产| 日韩欧美在线影院| 国产亚洲欧美激情| 亚洲国产精品v| 亚洲人成小说网站色在线| 亚洲精品第1页| 性做久久久久久免费观看欧美| 亚洲va天堂va国产va久| 视频一区欧美精品| 韩日精品视频一区| 成人黄色免费短视频| 91视视频在线观看入口直接观看www| 色综合久久综合| 7777精品伊人久久久大香线蕉最新版 | 久久9热精品视频| 国产精品一级二级三级| 99久久久免费精品国产一区二区| 色婷婷综合久久久中文字幕| 欧美一区午夜精品| 中文无字幕一区二区三区 | 不卡在线视频中文字幕| 色诱视频网站一区| 欧美另类高清zo欧美| 久久一区二区三区四区| 亚洲欧美偷拍卡通变态| 日韩中文字幕一区二区三区| 国产精品综合一区二区| 一本大道av一区二区在线播放 | 精品国产伦理网| 中文字幕在线观看一区| 日韩av一二三| 成人v精品蜜桃久久一区| 欧美日韩在线观看一区二区| 精品国产凹凸成av人导航| 亚洲三级小视频| 精一区二区三区| 在线观看一区日韩| 国产蜜臀97一区二区三区| 图片区小说区区亚洲影院| 国产成a人亚洲精品| 欧美精品一二三区| 中文字幕成人网| 久久er精品视频| 欧美性大战久久| 欧美国产精品专区| 久久超碰97人人做人人爱| 色8久久精品久久久久久蜜| 久久青草欧美一区二区三区| 丝袜亚洲另类欧美综合| thepron国产精品| 欧美tickle裸体挠脚心vk| 亚洲午夜在线视频| 不卡视频在线观看| 久久夜色精品一区| 日精品一区二区| 欧美性高清videossexo| 中文字幕日韩欧美一区二区三区| 精品一区二区三区影院在线午夜| 欧美撒尿777hd撒尿| 亚洲黄色免费网站| www.色精品| 国产亚洲精品资源在线26u| 日本欧美肥老太交大片| 欧洲精品视频在线观看| 自拍偷拍国产精品| 不卡视频一二三| 国产精品久久久一区麻豆最新章节| 久久电影网站中文字幕| 日韩一区二区免费在线观看| 午夜久久久影院| 欧美久久久一区| 亚洲国产一区二区视频| 91麻豆精品一区二区三区| 国产精品女主播av| 成人午夜精品在线| 日本一区二区免费在线| 高清在线成人网| 国产日韩欧美综合一区| 国产精品18久久久久久久网站| 欧美大片免费久久精品三p| 日韩福利视频网| 日韩欧美国产一区二区在线播放| 三级欧美在线一区| 9191久久久久久久久久久| 日本中文字幕一区二区有限公司| 91精品国产综合久久久蜜臀粉嫩| 亚洲综合小说图片| 欧美日韩视频在线一区二区 | 亚洲人成精品久久久久| 91免费视频网址| 一区二区三国产精华液| 精品视频999| 日本怡春院一区二区| 精品成人一区二区三区四区| 国产一区999| 国产精品传媒视频| 92国产精品观看| 亚洲一区二区影院| 8v天堂国产在线一区二区| 免费不卡在线视频| 久久久久久99精品| 91在线观看成人| 五月婷婷欧美视频| 精品美女在线观看| 成人免费毛片app| 一区二区三区在线免费视频| 在线看国产一区| 美国欧美日韩国产在线播放| 国产视频一区二区在线| 91色porny蝌蚪| 亚洲国产精品久久久久婷婷884| 4438成人网| 成人免费毛片嘿嘿连载视频| 一区二区三区四区激情| 精品乱人伦一区二区三区| 99久久精品免费观看| 奇米777欧美一区二区|