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

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

?? simplestreams.cu

?? md5_cuda編程
?? CU
字號(hào):
//////////////////////////////////////////////////////////////////
// LICENSE: GPL V2
// AUTHOR: ding.yiming@gmail.com
//////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <cutil.h>

#include "include.cu"
#include "string.h"

__host__ void cpy_const_data_from_host_to_device();


extern unsigned char h_md5[16];

char g_input_md5[256];

///////////////////////////////////////////////////////////////////////////////////////////////////////////


int main(int argc, unsigned char *argv[])
{
    int nstreams = STREAM_NUM;               // number of streams for CUDA calls
    int nbytes = sizeof(int) *STREAM_NUM*THREAD_NUM*THREAD_BLK_NUM*OUTPUT_INT_NUM;   // number of data bytes
    dim3 threads, blocks;           // kernel launch configuration
    float elapsed_time=0;   // timing variables

    // check the compute capability of the device
    int num_devices=0;
    CUDA_SAFE_CALL( cudaGetDeviceCount(&num_devices) );
    if(0==num_devices)
    {
        printf("your system does not have a CUDA capable device\n");
        return 1;
	}
    cudaDeviceProp device_properties;
    CUDA_SAFE_CALL( cudaGetDeviceProperties(&device_properties, 0) );
    if( (1 == device_properties.major) && (device_properties.minor < 1))
        printf("%s does not have compute capability 1.1 or later\n\n", device_properties.name);
	
	printf("//////////////////// MD5 Crack by GPU ////////////////////////////\n");

	printf("Input 16-byte MD5 data array on a 5-char password ranging from 'A~Z,a~z,^-{\\}' : \n");
	memset(g_input_md5,0,sizeof(g_input_md5));

	/*
	
	do {
		int correct=1;
		//scanf_s("%32s", g_input_md5,32);
		scanf("%s", g_input_md5);
		if (strlen(g_input_md5)!=32)
		{
			printf("Wrong input!\n");
			correct=0;
			continue;
		}

		for (int i=0; i<32; i++)
			if (!((g_input_md5[i]>='A' && g_input_md5[i]<='F')
				|| (g_input_md5[i]>='a' && g_input_md5[i]<='f')
				|| (g_input_md5[i]>='0' && g_input_md5[i]<='9')))

			{
				printf("Wrong input!\n");
				correct=0;
				break;
			}

		if (correct)
			break;
	} while (1);

	char *endchar=0;

	for (int i=0; i<16; i++)
	{
		char input[3];
		input[0]=g_input_md5[i*2];
		input[1]=g_input_md5[i*2+1];
		input[2]=0;
		h_md5[i] = strtoul(input,&endchar, 16); 
	}
	*/

	for (int i=0; i<16; i++)
		printf("%02x", h_md5[i]);
	printf("\n");
	printf("ThreadNum=%d, MD5CountPerThread=%d(K)\n", THREAD_NUM, NUM_PER_THREAD/1024); 
	printf("ThreadBlockNum=%d Stream Number=%d\n", THREAD_BLK_NUM, STREAM_NUM);
	printf("ChannelNum(ThreadNum*ThreadBlockNum)=%d(K)\n", THREAD_NUM*THREAD_BLK_NUM/1024);
	printf("TotalNumber(ChannelNum*MD5CountPerThread*StreamNum)=%d(M)\n", (NUM_PER_THREAD/1024)*(THREAD_NUM*THREAD_BLK_NUM/1024)*STREAM_NUM);

    // allocate host
    unsigned char *a = 0;                     // pointer to the array data in host memory
	unsigned char *out=0;
    // allocate host memory (pinned is required for achieve asynchronicity)
    CUDA_SAFE_CALL( cudaMallocHost((void**)&a, nbytes) );
	memset(a,0,nbytes);

    CUDA_SAFE_CALL( cudaMallocHost((void**)&out, nbytes) );
	memset(out,0,nbytes);

    // allocate and initialize an array of stream handles
    cudaStream_t *streams = (cudaStream_t*) malloc(nstreams * sizeof(cudaStream_t));
    for(int i = 0; i < nstreams; i++)
        CUDA_SAFE_CALL( cudaStreamCreate(&(streams[i])) );

    // create CUDA event handles
    cudaEvent_t start_event, stop_event;
    CUDA_SAFE_CALL( cudaEventCreate(&start_event) );
    CUDA_SAFE_CALL( cudaEventCreate(&stop_event) );

    // allocate device memory
    unsigned char *d_a = 0, *d_o = 0;             // pointers to data and init value in the device memory
    CUDA_SAFE_CALL( cudaMalloc((void**)&d_a, nbytes) );
    CUDA_SAFE_CALL( cudaMalloc((void**)&d_o, nbytes) );

	cudaMemset(d_a, 0, nbytes);
	cudaMemset(d_o, 0, nbytes);

	// Generate inputs
	//generate_input(a,nbytes);

	cpy_const_data_from_host_to_device();

    //////////////////////////////////////////////////////////////////////
    // time execution with nstreams streams
    threads=dim3(THREAD_NUM,1);
	blocks=dim3(THREAD_BLK_NUM,1);
    //memset(a, c, nbytes);     // set host memory bits to all 1s, for testing correctness
    //cudaMemset(d_a, 0, nbytes); // set device memory to all 0s, for testing correctness

	//generate_input(a,nbytes);

	clock_t start_clock_gpu, end_clock_gpu;
	start_clock_gpu = clock();

	cpy_const_data_from_host_to_device();

	for (int count=0; count<RUN_COUNT; count++)
	{

	cudaMemset(d_a, 0, nbytes); 
	cudaMemset(d_o, 0, nbytes); 

    cudaEventRecord(start_event, 0);
	// asynchronoously launch nstreams memcopies.  Note that memcopy in stream x will only
    //   commence executing when all previous CUDA calls in stream x have completed
    //for(int i = 0; i < nstreams; i++)
    //    CUDA_SAFE_CALL(cudaMemcpyAsync(d_a + i * nbytes / nstreams, a + i * nbytes / nstreams, nbytes / nstreams, cudaMemcpyHostToDevice, streams[i]));

    // asynchronously launch nstreams kernels, each operating on its own portion of data
    for(int i = 0; i < nstreams; i++)
	{
		MDString<<<blocks, threads, SHARED_MEM_SIZE, streams[i]>>>(count*nstreams+i, (unsigned int*)(d_a + i * nbytes / nstreams), 
			(unsigned int*)(d_o + i * nbytes / nstreams));
	}
    // check for any errors
    CUT_CHECK_ERROR("Kernel execution failed");

    // asynchronoously launch nstreams memcopies.  Note that memcopy in stream x will only
    //   commence executing when all previous CUDA calls in stream x have completed
    for(int i = 0; i < nstreams; i++)
        CUDA_SAFE_CALL(cudaMemcpyAsync(out + i * nbytes / nstreams, d_o + i * nbytes / nstreams, nbytes / nstreams, cudaMemcpyDeviceToHost, streams[i]));

	cudaEventRecord(stop_event, 0);
    cudaEventSynchronize(stop_event);
    CUDA_SAFE_CALL( cudaEventElapsedTime(&elapsed_time, start_event, stop_event) );

	end_clock_gpu = clock();

	unsigned int * output = (unsigned int *)(out);
	for (int i=0; i<STREAM_NUM*THREAD_NUM*THREAD_BLK_NUM*OUTPUT_INT_NUM; i=i+OUTPUT_INT_NUM)
	{
		if (output[i]!=0)
		{
			printf("ChannelID=%d MatchedCount=%d \nOffset=%d \n", i, ((output[i] & 0xFF000000)>>24), 
				(output[i] & 0xFFFFFF)-1);

			printf("Passowrd=%c%c%c%c%c\n", 
				output[i+OUTPUT_INT_NUM/2]&0xFF, (output[i+OUTPUT_INT_NUM/2]&0xFF00)>>8 , (output[i+OUTPUT_INT_NUM/2]&0xFF0000)>>16, 
				(output[i+OUTPUT_INT_NUM/2]&0xFF000000)>>24,
				output[i+1+OUTPUT_INT_NUM/2]&0xFF
				);

			if (((output[i] & 0xFF000000)>>24)>1)
			{
				printf("Offset=%d\n", output[i+1]-1);
				printf("Matched Passowrd=%c%c%c%c%c\n", 
					output[i+2+OUTPUT_INT_NUM/2]&0xFF, (output[i+2+OUTPUT_INT_NUM/2]&0xFF00)>>8 , (output[i+2+OUTPUT_INT_NUM/2]&0xFF0000)>>16, 
					(output[i+2+OUTPUT_INT_NUM/2]&0xFF000000)>>24,
					output[i+3+OUTPUT_INT_NUM/2]&0xFF
					);
			}
		}
	}

	printf("In progress ..., %d %% Completed, Elapsed Time %dms \n", (count+1)*100/RUN_COUNT, end_clock_gpu - start_clock_gpu );

	}; // for count

	//printf("Time calculated by CUDA clock function =%.2fms \n", elapsed_time  );
	//printf("Time calculated gotten by CPU clock function =%dms \n", end_clock_gpu - start_clock_gpu  );
	printf("Total Elapsed Time =%dms \n", end_clock_gpu - start_clock_gpu  );

    // release resources
    for(int i = 0; i < nstreams; i++)
        cudaStreamDestroy(streams[i]);
    cudaEventDestroy(start_event);
    cudaEventDestroy(stop_event);

    cudaFreeHost(a);
    cudaFree(d_a);
    cudaFreeHost(out);
    cudaFree(d_o);

    CUT_EXIT(argc, argv);

    return 0;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一本二本av| 日韩国产高清在线| 六月丁香婷婷久久| 亚洲欧美偷拍卡通变态| 欧美日韩不卡视频| 色综合久久综合网欧美综合网| 国产成人在线网站| 国产在线精品一区在线观看麻豆| 日本三级亚洲精品| 毛片av中文字幕一区二区| 免费久久精品视频| 国产综合成人久久大片91| 国产一区中文字幕| 成人99免费视频| 91蝌蚪porny成人天涯| 一本色道**综合亚洲精品蜜桃冫| 91老司机福利 在线| 日韩欧美一级二级三级久久久| 3d动漫精品啪啪一区二区竹菊 | 久久99久久精品| 国产一区三区三区| 成人小视频在线| 一本大道av伊人久久综合| 欧美日韩在线三级| 精品国产乱码久久久久久浪潮| 久久综合九色综合欧美98| 国产精品久久久久影院色老大| 亚洲视频一区二区在线观看| 天天影视色香欲综合网老头| 国产一区在线观看麻豆| www.综合网.com| 91麻豆精品国产91久久久久久 | 欧美一卡二卡三卡四卡| 久久久久久麻豆| 亚洲精品成a人| 美腿丝袜亚洲色图| 99在线视频精品| 欧美日韩一区二区三区四区| 精品播放一区二区| 一区二区三区在线视频观看| 久色婷婷小香蕉久久| 99久久婷婷国产| 久久综合网色—综合色88| 一区二区三区在线观看欧美| 国产精品综合二区| 欧美日韩久久不卡| 国产精品高潮呻吟| 精品一区二区三区在线观看国产| 色欧美片视频在线观看在线视频| 精品国产亚洲在线| 视频一区二区三区在线| 99精品国产99久久久久久白柏| 欧美另类久久久品| 亚洲柠檬福利资源导航| 国产真实乱对白精彩久久| 9191久久久久久久久久久| 中文无字幕一区二区三区| 免费的成人av| 制服丝袜一区二区三区| 亚洲香蕉伊在人在线观| 99精品在线观看视频| 国产欧美视频在线观看| 美女网站色91| 91精品国产一区二区三区香蕉| 亚洲男女一区二区三区| av激情综合网| 中文字幕一区二区三区不卡在线| 韩国三级在线一区| 精品久久久久久久久久久久久久久久久| 亚洲综合自拍偷拍| 一本色道久久综合亚洲aⅴ蜜桃 | 亚洲免费观看在线观看| 丁香婷婷深情五月亚洲| 精品动漫一区二区三区在线观看 | 欧美日韩精品三区| 一区二区三区不卡视频在线观看| 国产精品一二三区| 欧美精品一区二区久久婷婷| 久久99这里只有精品| 欧美一区二区高清| 美女被吸乳得到大胸91| 亚洲精品在线三区| 国内精品伊人久久久久av影院 | 成人app网站| 国产精品天美传媒沈樵| 成人h动漫精品一区二区| 国产精品久久看| 色综合激情久久| 亚洲国产日韩一级| 日韩一级在线观看| 国产风韵犹存在线视精品| 国产欧美1区2区3区| gogo大胆日本视频一区| 一区二区三区在线播| 欧美久久免费观看| 国产在线麻豆精品观看| 国产精品进线69影院| 在线免费观看成人短视频| 天天色天天操综合| 国产午夜亚洲精品理论片色戒| 丁香六月综合激情| 樱桃国产成人精品视频| 欧美一级一级性生活免费录像| 国产一区二区福利视频| 亚洲视频小说图片| 制服视频三区第一页精品| 国产毛片精品国产一区二区三区| 中文在线资源观看网站视频免费不卡| 91啪九色porn原创视频在线观看| 亚洲成人中文在线| 国产日韩欧美a| 欧美日韩一区视频| 成人禁用看黄a在线| 午夜精品久久一牛影视| 国产喷白浆一区二区三区| 在线观看91精品国产麻豆| 国产精品18久久久久久久久久久久| 亚洲欧美一区二区三区孕妇| 精品国产三级电影在线观看| 一本在线高清不卡dvd| 国产成人午夜精品5599| 婷婷久久综合九色综合伊人色| 国产日韩精品一区二区浪潮av| 欧美四级电影网| 成人黄色小视频| 韩国欧美国产一区| 日韩电影免费在线看| 亚洲人吸女人奶水| 中文字幕精品在线不卡| 欧美日韩成人在线| 99精品国产99久久久久久白柏| 经典三级在线一区| 亚洲444eee在线观看| 国产精品成人一区二区三区夜夜夜| 欧美日韩卡一卡二| 色婷婷精品久久二区二区蜜臂av| 国产一区不卡视频| 免费观看91视频大全| 亚洲大片精品永久免费| 亚洲精品久久嫩草网站秘色| 国产精品理伦片| 亚洲国产精品国自产拍av| 26uuu欧美| 欧美精品一区二区三区在线| 欧美福利视频一区| 欧美日韩aaa| 欧美精品亚洲二区| 在线播放中文一区| 欧美日韩第一区日日骚| 精品视频一区 二区 三区| 欧美中文字幕一二三区视频| 欧洲av一区二区嗯嗯嗯啊| 色综合一区二区| 色婷婷国产精品综合在线观看| 91一区一区三区| 欧美体内she精高潮| 欧美性xxxxxxxx| 欧美精品免费视频| 日韩情涩欧美日韩视频| 日韩精品一区二区三区swag| 欧美电视剧免费观看| 国产亚洲精久久久久久| 国产日韩欧美综合一区| **网站欧美大片在线观看| 亚洲免费av在线| 亚洲欧美欧美一区二区三区| 亚洲精品视频在线看| 五月天网站亚洲| 麻豆精品一区二区综合av| 国产麻豆视频精品| 成人av电影在线播放| 欧美三级日韩三级国产三级| 欧美日韩激情一区二区| 精品人在线二区三区| 国产精品免费观看视频| 亚洲h在线观看| 国内成人自拍视频| 91在线视频网址| 欧美一级欧美三级| 国产日产欧产精品推荐色| 亚洲免费在线视频| 美女尤物国产一区| 成人午夜视频在线观看| 欧美日韩在线直播| 久久精品亚洲乱码伦伦中文 | 欧美一卡2卡三卡4卡5免费| 国产日产欧美一区| 亚洲123区在线观看| 国产乱码精品一区二区三区忘忧草| 99在线精品免费| 欧美高清视频一二三区| 欧美国产精品久久| 男女激情视频一区| 不卡免费追剧大全电视剧网站| 欧美三级中文字| 亚洲欧洲三级电影| 国产一区二区三区四| 欧美精品v日韩精品v韩国精品v| 国产精品丝袜在线| 日本少妇一区二区|