亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
69成人精品免费视频| 亚洲激情中文1区| 国产91精品一区二区麻豆网站| www亚洲一区| 丁香激情综合国产| 亚洲欧美日韩一区二区三区在线观看 | 亚洲成人你懂的| 日韩一区二区三区视频在线观看| 国产一区三区三区| 国产精品乱人伦| 欧美日韩情趣电影| 精品一区二区三区久久| 国产精品国产自产拍高清av| 欧美中文字幕一区二区三区亚洲| 青青草国产成人av片免费| 久久久久久99精品| 色综合久久久久综合99| 丝袜亚洲精品中文字幕一区| 久久这里只有精品6| 99精品国产热久久91蜜凸| 亚洲成人一二三| 久久嫩草精品久久久久| 91蜜桃在线观看| 日本不卡一区二区| 日本一区二区免费在线 | 欧美自拍偷拍一区| 久久福利资源站| 一色屋精品亚洲香蕉网站| 欧美日韩国产高清一区二区三区 | 欧美吻胸吃奶大尺度电影| 久久国产欧美日韩精品| 国产精品乱人伦一区二区| 欧美日韩成人在线一区| 国产精品亚洲第一| 亚洲一级二级三级| 精品国产网站在线观看| 色8久久人人97超碰香蕉987| 精品在线观看免费| 一区二区三区在线播| 精品精品欲导航| 日本高清不卡在线观看| 久久国内精品自在自线400部| 中文字幕在线不卡| 欧美电影免费观看高清完整版在 | 91在线视频观看| 蜜芽一区二区三区| 国产精品的网站| 日韩欧美国产午夜精品| 色婷婷av一区二区三区软件| 狠狠色丁香久久婷婷综合_中 | 亚洲国产精品一区二区www| 成人精品在线视频观看| 亚洲精品伦理在线| 精品99999| 欧美亚洲国产一区在线观看网站| 国产精品性做久久久久久| 三级不卡在线观看| 亚洲欧美另类综合偷拍| 欧美大片在线观看一区| 在线观看免费一区| 成人激情电影免费在线观看| 久久精品久久久精品美女| 一区二区三区中文在线| 欧美高清在线精品一区| 欧美成人精品二区三区99精品| 欧美自拍偷拍午夜视频| 成人黄色在线视频| 激情小说亚洲一区| 天天av天天翘天天综合网| 亚洲欧美电影一区二区| 国产日韩成人精品| 精品国产免费一区二区三区香蕉| 欧美亚洲综合在线| 99精品国产91久久久久久| 国产一区二区三区免费看| 石原莉奈在线亚洲三区| 有码一区二区三区| 中文字幕在线视频一区| 久久精品亚洲麻豆av一区二区| 日韩一区二区三区在线视频| 欧美三日本三级三级在线播放| jlzzjlzz亚洲女人18| 福利一区福利二区| 国产一区二区三区av电影| 日本成人在线看| 亚洲成人av福利| 一区二区三区美女视频| 国产精品无人区| 久久九九久久九九| 精品国产乱码久久久久久久久| 欧美一区二区视频在线观看2020 | 欧美综合一区二区三区| 91在线国产福利| av激情亚洲男人天堂| 国产福利一区二区三区视频| 国产在线一区二区综合免费视频| 日本不卡一二三| 免费在线成人网| 青青草原综合久久大伊人精品优势| 亚洲成人综合视频| 亚洲va欧美va天堂v国产综合| 亚洲精品欧美激情| 亚洲激情综合网| 一区二区三区四区不卡视频| 亚洲日本va午夜在线电影| 中文字幕一区三区| 综合色天天鬼久久鬼色| 最近中文字幕一区二区三区| 日韩一区欧美小说| 精品一区二区三区在线播放视频 | 中文字幕不卡的av| 国产日本亚洲高清| 欧美极品少妇xxxxⅹ高跟鞋| 欧美国产一区在线| 中文字幕一区日韩精品欧美| 亚洲天堂a在线| 一区二区视频在线| 亚洲一区二区欧美激情| 丝袜美腿亚洲综合| 免费观看一级欧美片| 激情六月婷婷久久| 粉嫩一区二区三区在线看 | 国产精品白丝av| 成人精品国产免费网站| 99国内精品久久| 一本一道久久a久久精品综合蜜臀| 一本色道亚洲精品aⅴ| 在线免费观看日本一区| 欧美日韩国产高清一区| 日韩亚洲欧美一区| 久久精品夜夜夜夜久久| 中文字幕一区不卡| 一级中文字幕一区二区| 青青草原综合久久大伊人精品优势| 久久99国产精品尤物| 丁香桃色午夜亚洲一区二区三区| 99久久伊人精品| 在线观看日韩av先锋影音电影院| 欧美日本乱大交xxxxx| 精品少妇一区二区三区| 国产精品视频yy9299一区| 亚洲综合在线电影| 蜜桃av一区二区三区电影| 国产成人免费视频网站| 色噜噜狠狠一区二区三区果冻| 5858s免费视频成人| 国产成人免费av在线| 亚洲大片在线观看| 紧缚奴在线一区二区三区| 国产精品夫妻自拍| 亚洲精品中文在线影院| 日韩电影在线观看一区| 韩国av一区二区三区| 91麻豆国产香蕉久久精品| 欧美日韩一二区| 26uuu国产日韩综合| 亚洲乱码日产精品bd| 日本aⅴ精品一区二区三区 | 国产成人精品亚洲日本在线桃色| 91麻豆精品在线观看| 欧美一级专区免费大片| 中文字幕不卡在线| 日韩和欧美一区二区| 丰满放荡岳乱妇91ww| 精品视频一区三区九区| 国产日韩欧美制服另类| 亚洲国产sm捆绑调教视频| 国产伦精品一区二区三区免费 | 欧美日韩一区二区三区四区五区| 在线观看不卡视频| 91精品国产综合久久福利| 国产欧美精品一区二区三区四区 | 亚洲一区二区在线播放相泽| 国产综合色精品一区二区三区| 日本高清不卡一区| 久久久国产一区二区三区四区小说| 亚洲一区二区三区视频在线播放| 国产一区日韩二区欧美三区| 欧美体内she精视频| 国产欧美精品一区二区色综合 | 在线一区二区三区| 久久久久久麻豆| 爽好多水快深点欧美视频| 成人国产精品视频| 日韩一区二区电影| 亚洲精品日产精品乱码不卡| 国产精品一区二区在线观看网站| 欧美日韩精品综合在线| 中文字幕在线不卡视频| 极品美女销魂一区二区三区免费 | 在线观看国产精品网站| 亚洲国产精品精华液2区45| 天堂一区二区在线| 91麻豆国产自产在线观看| 国产女同互慰高潮91漫画| 日韩福利电影在线观看| 色菇凉天天综合网| 国产精品久久久一本精品| 久久成人麻豆午夜电影| 欧美情侣在线播放|