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

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

?? marsmacro.h

?? GPU實現的MapReduce framework,對于學習并行編程和cuda平臺的編程方面有著極好的參考價值
?? H
字號:
/**
 *This is the source code for Mars, a MapReduce framework on graphics
 *processors.
 *Author: Wenbin Fang (HKUST), Bingsheng He (HKUST)
 *Mentor: Naga K. Govindaraju (Microsoft Corp.), Qiong Luo (HKUST), Tuyong
 *Wang (Sina.com).
 *If you have any question on the code, please contact us at {saven,
 *wenbin, luo}@cse.ust.hk.
 *The copyright is held by HKUST. Mars is provided "as is" without any 
 *guarantees of any kind.
 */

//Micro difinitions
#ifndef __MARSMACRO_H__
#define __MARSMACRO_H__

//=============================================
//control values
//=============================================
//used for the filed mode in Spec_t
#define USE_FILE	0x01 //0000 0001
#define USE_MEM		0X02 //0000 0010
#define	GPU			0x04 //0000 0100
#define CPU			0x08 //0000 1000
#define MAP_ONLY	0x10 //0001 0000
#define MAP_SORT	0x20 //0010 0000
#define MAP_SORT_REDUCE	0x40
#define EXTERNAL_SORT	0x80

//used in Schedule* functions
#define MAP			0x00
#define REDUCE		0x01
#define MERGE_INTER	0x02
#define MERGE_OUTPUT 0x03
#define SORT		0x04

//=============================================
//default values
//=============================================
//file names
#define DEFAULT_INPUT_KEY_FILE	"inputKeyFile.txt"
#define DEFAULT_INPUT_VAL_FILE	"inputValFile.txt"
#define DEFAULT_INPUT_INDEX_FILE	"inputIndexFile.txt"

#define DEFAULT_INTER_KEY_FILE	"interKeyFile.txt"
#define DEFAULT_INTER_VAL_FILE	"interValFile.txt"
#define DEFAULT_INTER_INDEX_FILE	"interIndexFile.txt"
#define DEFAULT_INTER_RANGE_FILE	"interKeyListFile.txt"

#define DEFAULT_OUTPUT_KEY_FILE	"outputKeyFile.txt"
#define DEFAULT_OUTPUT_VAL_FILE "outputValFile.txt"
#define DEFAULT_OUTPUT_INDEX_FILE	"outputIndexFile.txt"
#define DEFAULT_OUTPUT_RANGE_FILE	"outputRangeFile.txt"

#define DEFAULT_TMP_KEY_FILE	"tmpKeyFile.txt"
#define DEFAULT_TMP_VAL_FILE	"tmpValFile.txt"
#define DEFAULT_TMP_INDEX_FILE	"tmpIndexFile.txt"
#define DEFAULT_TMP_RANGE_FILE	"tmpRangeFile.txt"

//thread number
#define DEFAULT_CPU_THREAD_NUM	4
#define DEFAULT_GPU_DIM			128

//chunk parameters
#define DEFAULT_SMALL_REC_COUNT	1000000
#define DEFAULT_BIG_REC_COUNT	10000000
#define DEFAULT_SMALL_COUNT		16

//GeForce 8800 GTX shared memory size
#define GPU_SHARED_MEM_SIZE 16*1024

//very tiny floating point number
#define FLOAT_TINY	0.000001f

//default gpu input ratio
#define DEFAULT_GPU_RATIO	0.6f

#define DEFAULT_THRESHHOLD	100

//used in SortInfo
#define DEFAULL_FULL_SORT_CHUNK_COUNT	16

#define DEFAULT_SORT_OUTPUT_SIZE		2*1024*1024
#define DEFAULT_MIN_REC_SIZE			128

//=============================================
// Emit scalar data type
//=============================================
#define E_INT					0x00
#define E_INT2				0x01
#define E_INT3				0x02
#define E_INT4				0x03
#define E_INT5				0x04
#define E_INT6				0x05
#define E_INT7				0x06
#define E_INT8				0x07
#define E_CHAR				0x08
#define E_CHAR2			0x09
#define E_CHAR3			0x0a
#define E_CHAR4			0x0b	
#define E_FLOAT				0x0c
#define E_FLOAT2			0x0d
#define E_FLOAT3			0x0e
#define E_FLOAT4			0x0f

//=============================================
//macro functions
//=============================================
//---------------------------------------------
//CPU
//---------------------------------------------
#define CPU_GET_VAL(vals, i) \
	cpuGetVal(vals, interOffsetSizes, \
			valStartIndex,valCount, i)

#define CPU_GET_VALSIZE(vals, i) \
	cpuGetValSize(vals, interOffsetSizes, \
			valStartIndex,valCount, i)

#define CPU_MAP_COUNT_FUNC \
	cpu_map_count(void*		key,\
		  void*		val,\
		  size_t	keySize,\
		  size_t	valSize,\
		  size_t*	interKeysSizePerTask,\
		  size_t*	interValsSizePerTask,\
		  size_t*	interCountPerTask,\
		  int		index)

#define CPU_MAP_FUNC \
 cpu_map	(void*		key, \
		 void*		val, \
		 size_t		keySize, \
		 size_t		valSize,\
		 size_t*	psKeySizes, \
		 size_t*	psValSizes, \
		 size_t*	psCounts, \
		 int2*		keyValOffsets, \
		 char*		interKeys,\
		 char*		interVals,\
		 int4*		interOffsetSizes,\
		 size_t*	curIndex, int index)

#define CPU_REDUCE_COUNT_FUNC \
	cpu_reduce_count(void		*key,\
	     void		*vals,\
		 size_t		keySize,\
		 size_t		valCount,\
		 int4*		interOffsetSizes,\
		 size_t*	outputKeysSizePerTask,\
		 size_t*	outputValsSizePerTask,\
		 size_t*	outputCountPerTask, int index, size_t valStartIndex)

#define CPU_REDUCE_FUNC \
	cpu_reduce(void*	 key, \
		   void*	 vals, \
		   size_t	 keySize, \
		   size_t	 valCount, \
		   size_t*	 psKeySizes,\
		   size_t*	 psValSizes, \
		   size_t*	 psCounts, \
		   int2*	 keyValOffsets,\
		   int4*	 interOffsetSizes,\
		   char*	 outputKeys, \
		   char*	 outputVals,\
		   int4*	 outputOffsetSizes, \
		   size_t* curIndex, int index, size_t valStartIndex)

#define CPU_EMIT_INTER_COUNT_FUNC(keySize, valSize)\
		cpuEmitInterCount(keySize, valSize, \
		interKeysSizePerTask, interValsSizePerTask, interCountPerTask, index)

#define CPU_EMIT_INTER_FUNC(newKey, newVal, newKeySize, newValSize) \
	cpuEmitIntermediate((char*)newKey,\
	             (char*)newVal,\
			 newKeySize,\
			 newValSize,\
			 psKeySizes,\
			 psValSizes,\
			 psCounts,\
			 keyValOffsets,\
			 interKeys,\
			 interVals,\
			 interOffsetSizes,\
			 curIndex, index)	

#define CPU_EMIT_COUNT_FUNC(newKeySize, newValSize) \
	cpuEmitCount(newKeySize,\
			  newValSize,\
			  outputKeysSizePerTask,\
			  outputValsSizePerTask,\
			  outputCountPerTask, index)

#define CPU_EMIT_FUNC(newKey, newVal, newKeySize, newValSize) \
	cpuEmit((char*)newKey,\
	     (char*)newVal,\
		 newKeySize,\
		 newValSize,\
		 psKeySizes,\
		 psValSizes,\
		 psCounts, \
		 keyValOffsets, \
		 outputKeys,\
		 outputVals,\
		 outputOffsetSizes,\
		 curIndex, index)

//---------------------------------------------
//GPU
//---------------------------------------------
#define GPU_GET_VAL(vals, i) \
	gpuGetVal(vals, interOffsetSizes, \
			valStartIndex,valCount, i)

#define GPU_GET_VALSIZE(vals, i) \
	gpuGetValSize(vals, interOffsetSizes, \
			valStartIndex,valCount, i)

#define GPU_MAP_COUNT_FUNC \
	gpu_map_count(void*		key,\
		  void*		val,\
		  size_t	keySize,\
		  size_t	valSize,\
		  size_t*	interKeysSizePerTask,\
		  size_t*	interValsSizePerTask,\
		  size_t*	interCountPerTask)

#define GPU_MAP_FUNC \
	 gpu_map	(void*		key, \
		 void*		val, \
		 size_t		keySize, \
		 size_t		valSize,\
		 size_t*	psKeySizes, \
		 size_t*	psValSizes, \
		 size_t*	psCounts, \
		 int2*		keyValOffsets, \
		 char*		interKeys,\
		 char*		interVals,\
		 int4*		interOffsetSizes,\
		 size_t*	curIndex)

#define GPU_EMIT_INTER_COUNT_FUNC(keySize, valSize)\
		gpuEmitInterCount(keySize, valSize, \
		interKeysSizePerTask, interValsSizePerTask, interCountPerTask)


#define GPU_REDUCE_COUNT_FUNC \
	gpu_reduce_count(void		*key,\
	         void		*vals,\
		 size_t		keySize,\
		 size_t		valCount,\
		 int4*		interOffsetSizes,\
		 size_t*	outputKeysSizePerTask,\
		 size_t*	outputValsSizePerTask,\
		 size_t*	outputCountPerTask, \
		 size_t		valStartIndex)

#define GPU_REDUCE_FUNC \
	gpu_reduce(void*	 key, \
		   void*	 vals, \
		   size_t	 keySize, \
		   size_t	 valCount, \
		   size_t*	 psKeySizes,\
		   size_t*	 psValSizes, \
		   size_t*	 psCounts, \
		   int2*	 keyValOffsets,\
		   int4*	 interOffsetSizes,\
		   char*	 outputKeys, \
		   char*	 outputVals,\
		   int4*	 outputOffsetSizes, \
		   size_t* curIndex, size_t valStartIndex)


#define GPU_EMIT_COUNT_FUNC(newKeySize, newValSize) \
	gpuEmitCount(newKeySize,\
			  newValSize,\
			  outputKeysSizePerTask,\
			  outputValsSizePerTask,\
			  outputCountPerTask)

#define GPU_EMIT_FUNC(newKey, newVal, newKeySize, newValSize) \
	gpuEmit((char*)newKey,\
	     (char*)newVal,\
		 newKeySize,\
		 newValSize,\
		 psKeySizes,\
		 psValSizes,\
		 psCounts, \
		 keyValOffsets, \
		 outputKeys,\
		 outputVals,\
		 outputOffsetSizes,\
		 curIndex)

//---------------------------------------------------------------------------------------
//GPU emit
//---------------------------------------------------------------------------------------

#define GPU_EMIT_INTER_KEY_FLOAT(newKey) \
	gpuEmitKeyFloat(newKey,sizeof(float), psKeySizes, psCounts, keyValOffsets, interKeys, interOffsetSizes,curIndex);\

#define GPU_EMIT_INTER_VAL_FLOAT(newVal) \
	gpuEmitValFloat(newVal,sizeof(float), psKeySizes, psCounts, keyValOffsets, interVals, interOffsetSizes,curIndex);\

#define GPU_EMIT_INTER_KEY_FLOAT2(newKey) \
	gpuEmitKeyFloat2(newKey,sizeof(float2), psKeySizes, psCounts, keyValOffsets, interKeys, interOffsetSizes,curIndex);\

#define GPU_EMIT_INTER_VAL_FLOAT2(newVal) \
	gpuEmitValFloat2(newVal,sizeof(float2), psKeySizes, psCounts, keyValOffsets, interVals, interOffsetSizes,curIndex);\

#define GPU_EMIT_INTER_KEY_INT(newKey) \
	gpuEmitKeyInt(newKey,sizeof(int), psKeySizes, psCounts, keyValOffsets, interKeys, interOffsetSizes,curIndex);\

#define GPU_EMIT_INTER_VAL_INT(newVal) \
	gpuEmitValInt(newVal,sizeof(int), psKeySizes, psCounts, keyValOffsets, interVals, interOffsetSizes,curIndex);\

#define GPU_EMIT_INTER_KEY_INT2(newKey) \
	gpuEmitKeyInt2(newKey,sizeof(int2), psKeySizes, psCounts, keyValOffsets, interKeys, interOffsetSizes,curIndex);\

#define GPU_EMIT_INTER_VAL_INT2(newVal) \
	gpuEmitValInt2(newVal,sizeof(int2), psKeySizes, psCounts, keyValOffsets, interVals, interOffsetSizes,curIndex);\

#define GPU_EMIT_INTER_KEY_INT5(newKey) \
	gpuEmitKeyInt5(newKey,sizeof(int5), psKeySizes, psCounts, keyValOffsets, interKeys, interOffsetSizes,curIndex);\

#define GPU_EMIT_INTER_VAL_INT5(newVal) \
	gpuEmitValInt5(newVal,sizeof(int5), psKeySizes, psCounts, keyValOffsets, interVals, interOffsetSizes,curIndex);\

#define GPU_EMIT_INTER_KEY_POINTER(newKey, newKeySize) \
	gpuEmitKeyPointer((char*)newKey, newKeySize, psKeySizes, psCounts, keyValOffsets, interKeys, interOffsetSizes,curIndex);\

#define GPU_EMIT_INTER_VAL_POINTER(newVal, newValSize) \
	gpuEmitValPointer((char*)newVal, newValSize, psKeySizes, psCounts, keyValOffsets, interVals, interOffsetSizes,curIndex);\

#define GPU_EMIT_INTER_COMMIT()\
	do{\
	size_t index = (blockIdx.x * blockDim.x + threadIdx.x);\
	curIndex[index]++;\
	} while(0)

#define GPU_EMIT_INTER_FUNC(newKey, newVal, newKeySize, newValSize) \
	gpuEmitIntermediate((char*)newKey,\
	(char*)newVal,\
	newKeySize,\
	newValSize,\
	psKeySizes,\
	psValSizes,\
	psCounts,\
	keyValOffsets,\
	interKeys,\
	interVals,\
	interOffsetSizes,\
	curIndex)

#endif //__MARSMACRO_H__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美优质美女网站| 久久精品国产一区二区三区免费看 | 久久免费偷拍视频| 欧美精品三级日韩久久| 欧美日韩国产在线观看| 欧美精品v国产精品v日韩精品| 欧美日韩成人一区| 日韩精品一区二区在线| 久久天堂av综合合色蜜桃网| 国产日韩欧美精品电影三级在线| 欧美激情一区二区三区全黄| 综合色天天鬼久久鬼色| 亚洲专区一二三| 蜜臀av国产精品久久久久| 国产成人亚洲综合a∨婷婷图片 | 欧美精品免费视频| 精品久久一区二区| 国产精品免费网站在线观看| 亚洲精品一二三区| 美女mm1313爽爽久久久蜜臀| 国产99一区视频免费| 色噜噜狠狠色综合中国| 欧美一区二区人人喊爽| 久久精品亚洲精品国产欧美kt∨ | 麻豆精品一区二区| 国产99久久久国产精品| 一本大道av一区二区在线播放| 欧美人体做爰大胆视频| 久久综合久久综合九色| 亚洲三级在线看| 久久99国产精品久久| 91年精品国产| 精品国产1区2区3区| 五月天一区二区| 成人av网址在线| 91精品国产综合久久香蕉麻豆| 国产欧美中文在线| 日韩成人一级片| 91亚洲精品久久久蜜桃| 欧美成人vps| 亚洲国产欧美日韩另类综合| 国产99一区视频免费| 91精品国产色综合久久不卡电影| 国产精品伦理一区二区| 久久99精品久久久| 欧美日韩亚洲丝袜制服| 国产精品的网站| 国内精品伊人久久久久av一坑| 欧美视频一区二区三区四区 | 欧美日韩精品欧美日韩精品| 久久免费电影网| 日韩av成人高清| 欧美日韩激情一区二区三区| 亚洲丝袜制服诱惑| 国产精品99久久久| 欧美精品一区男女天堂| 日本成人在线视频网站| 欧洲人成人精品| 一区二区三区在线观看国产| 粉嫩在线一区二区三区视频| 26uuu欧美日本| 国产在线精品免费| 久久综合色一综合色88| 激情综合五月婷婷| 精品国产凹凸成av人网站| 免费观看一级特黄欧美大片| 在线成人小视频| 日韩专区一卡二卡| 337p亚洲精品色噜噜噜| 天天影视色香欲综合网老头| 制服丝袜中文字幕一区| 日本亚洲天堂网| 欧美成人一区二区三区| 精品在线免费视频| 久久精品这里都是精品| 国产精品一线二线三线| 国产欧美日韩卡一| jvid福利写真一区二区三区| 1000部国产精品成人观看| 91免费看片在线观看| 一区二区激情视频| 欧美日韩国产精选| 久久国产福利国产秒拍| 久久久久久久综合| 成人视屏免费看| 亚洲免费观看高清完整版在线观看熊 | 国产偷国产偷亚洲高清人白洁| 国产精品一区二区久久不卡| 国产女同互慰高潮91漫画| 99久久精品免费观看| 亚洲午夜激情av| 亚洲日本一区二区| 91豆麻精品91久久久久久| 亚洲一区二区三区三| 欧美大度的电影原声| 国产黄人亚洲片| 亚洲综合成人在线| 日韩精品专区在线| 99久久99久久综合| 日韩一区精品视频| 国产精品天美传媒沈樵| 欧美中文字幕一区二区三区| 美女性感视频久久| 中文字幕在线观看不卡| 欧美久久久久久蜜桃| 懂色av中文字幕一区二区三区| 亚洲激情成人在线| www激情久久| 欧美色老头old∨ideo| 国产乱一区二区| 午夜欧美2019年伦理| 欧美国产日产图区| 日韩午夜精品视频| 色综合久久综合| 黑人巨大精品欧美黑白配亚洲| 亚洲美女视频一区| 欧美极品美女视频| 日韩午夜在线播放| 欧美日韩亚洲综合一区二区三区| 国产成人精品一区二区三区网站观看| 一区二区三区欧美日| 久久久久国产成人精品亚洲午夜| 欧美区视频在线观看| 91蝌蚪porny九色| 国产成人精品免费在线| 美女脱光内衣内裤视频久久影院| 自拍偷拍亚洲欧美日韩| 精品久久久久久最新网址| 欧美夫妻性生活| 欧美怡红院视频| 色综合久久天天| 91影视在线播放| 成人综合在线观看| 国产精品99久久久| 黑人巨大精品欧美黑白配亚洲| 日韩精品一二区| 午夜精品福利一区二区三区av| 亚洲欧美区自拍先锋| 成人免费一区二区三区视频 | 国产日韩精品视频一区| 日韩欧美色电影| 欧美日韩1区2区| 91精品国产乱| 欧美人牲a欧美精品| 欧美狂野另类xxxxoooo| 欧美老女人第四色| 91麻豆精品国产91久久久更新时间| 欧洲一区在线电影| 欧美伊人久久久久久久久影院 | 欧美一区二区三区在线观看| 91九色02白丝porn| 欧美三电影在线| 91精品综合久久久久久| 欧美一卡二卡在线| 精品sm在线观看| 国产日产亚洲精品系列| 中文字幕五月欧美| 亚洲国产成人av网| 成人在线综合网| av在线一区二区| 欧美中文字幕一区| 日韩欧美中文一区二区| 26uuu欧美| 亚洲欧美成人一区二区三区| 亚洲午夜羞羞片| 青青草国产成人99久久| 国产美女视频一区| 一本久久a久久免费精品不卡| 欧美日韩国产首页在线观看| 欧美一区二区精品久久911| 久久这里只有精品6| 中文字幕在线视频一区| 亚洲国产日韩a在线播放性色| 久久精品噜噜噜成人av农村| 国产suv精品一区二区三区| 色系网站成人免费| 欧美成人r级一区二区三区| 国产精品少妇自拍| 亚洲一区二区精品3399| 久久精品av麻豆的观看方式| 99精品欧美一区二区三区小说 | 亚洲国产一区视频| 精品午夜久久福利影院 | 欧美成人一区二区三区| 中文字幕亚洲区| 久久99久久久久久久久久久| 成人免费高清视频| 欧美一区二区大片| 中文字幕免费不卡在线| 免费在线看成人av| 不卡的电影网站| 精品国产髙清在线看国产毛片| 亚洲四区在线观看| 国产精品自拍毛片| 91精品国产品国语在线不卡| 国产精品久久久久久久岛一牛影视 | 成人精品免费网站| 日韩一级视频免费观看在线| 国产精品久久久久久久午夜片| 久久国产精品免费|