我是靠谱客的博主 跳跃蜡烛,最近开发中收集的这篇文章主要介绍测试gpu的if判断的加速比,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#include<iostream>
#include<cuda.h>
#include<cuda_runtime.h>
#include<time.h>
using namespace std;


const int N=123456;
const int sample=100;
const int threads=256;
const int blocks=2048;


__global__ void judge(int* da,int* data,int sam)
{
for(int i=blockIdx.x*blockDim.x+threadIdx.x;i<N+blockDim.x*gridDim.x;
i+=blockDim.x*gridDim.x)
{
if(i<N)
{
for(int j=0;j<sam;j++)
{
if((da[i]>=sample*j)&&(da[i]<sample*(j+1)))
{
atomicAdd(&data[j],1);
__syncthreads();
}
}
}
}
}


int main(void)
{
int *ha,*da;
ha=new int[N];
for(int i=0;i<N;i++)
ha[i]=i;

int it_sam=(N+sample-1)/sample;
int *h_data,*d_data;
h_data=new int[it_sam];
for(int i=0;i<it_sam;i++)
h_data[i]=0;

clock_t a,b,c;
a=clock();
for(int i=0;i<N;i++)
for(int it=0;it<it_sam;it++)
{
if((ha[i]>=sample*it)&&(ha[i]<sample*(it+1)))
{
h_data[it]++;
break;
}
}
b=clock();
c=b-a;
cout<<"cpu..."<<c<<endl;

cudaMalloc(&da,N*sizeof(int));
cudaMemcpy(da,ha,N*sizeof(int),cudaMemcpyHostToDevice);

int *host;
host=new int[it_sam];
for(int i=0;i<it_sam;i++)
host[i]=0;
cudaMalloc(&d_data,it_sam*sizeof(int));
cudaMemcpy(d_data,host,it_sam*sizeof(int),cudaMemcpyHostToDevice);

cudaEvent_t start,stop;
float gpu_time;
cudaEventCreate(&start);
cudaEventCreate(&stop);
cudaEventRecord(start,0);
//for(int j=0;j<100;j++)
a=clock();
judge<<<blocks,threads>>>(da,d_data,it_sam);
cudaDeviceSynchronize();
b=clock()-a;

cudaEventRecord(stop,0);

cudaEventSynchronize(stop);//very important

cudaEventElapsedTime(&gpu_time,start,stop);
cout<<"gpu..."<<b<<"gpu..."<<gpu_time<<endl;

cudaMemcpy(host,d_data,it_sam*sizeof(int),cudaMemcpyDeviceToHost);
for(int i=0;i<it_sam;i++)
{
if(host[i]!=h_data[i])
{
cout<<"error..."<<i<<"  "<<host[i]<<"  "<<h_data[i]<<endl;
break;
}
}

cout<<"加速比是:"<<double(c/b)<<endl;
return 0;
}





































最后

以上就是跳跃蜡烛为你收集整理的测试gpu的if判断的加速比的全部内容,希望文章能够帮你解决测试gpu的if判断的加速比所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部