计算核函数的运行次数

GPU小码农 GPU小码农 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
哪位大神帮忙改改,我就像算算核函数运行了几次,但是老是出错
感觉不太明白核函数到底是怎么运行的,目前正在学习《GPU高性能编程CUDA实战》
到底开了几个线程?还有核函数里面为什么又用了while循环来计算索引,没搞懂啊!!求大神指点啊!!
#define N (33 * 1024)

int count = 0;

__global__ void add(int *a , int *b , int* c ,int count_)
{
int tid = threadIdx.x + blockIdx.x * blockDim.x;//获得线程索引
// printf("tid = %d\n",tid);
count_ += 1;//计算函数运行了几次
while( tid < N)//必须检查是否在正确的偏移范围类内
{
c[ tid ] = a[ tid ] + b[ tid ];
tid += blockDim.x * gridDim.x;
}
}

int main()
{
int a[N] , b[N] , c[N];
int *dev_a, *dev_b , *dev_c;
int *n = 0;
int n_result = 2;
//在GPU上分配内存
cudaMalloc( (void**)&dev_a , N * sizeof(int ) );
cudaMalloc( (void**)&dev_b , N * sizeof(int ) );
cudaMalloc( (void**)&dev_c , N * sizeof(int ) );
cudaMalloc( (void**)&n , sizeof(int ) );

//在CPU上为数组a,b赋初值
for(int i = 0; i < N; i++)
{
a[i] = -i;
b[i] = i * i;
}
//将数组a, b 复制到GPU上去计算
cudaMemcpy( dev_a , a , N * sizeof(int) , cudaMemcpyHostToDevice);
cudaMemcpy( dev_b , b , N * sizeof(int) , cudaMemcpyHostToDevice);

add<<<128,128>>>( dev_a , dev_b , dev_c, *n);
//计算完毕,将数组C从GPU复制到CPU
cudaMemcpy( c , dev_c , N * sizeof(int) , cudaMemcpyDeviceToHost);
//计算完毕,将n从GPU复制到CPU
cudaMemcpy( &count , n , sizeof(int) , cudaMemcpyDeviceToHost);
//验证GPU确实完成了我们要求的工作
bool success = true;
//显示结果
for(int i = 0; i < N ; i++)
{
if( ( a[i] + b[i]) != c[i] )
{
printf("error\n");
success = false;
}
//printf(" %d + %d = %d \n", a[i] , b[i] , c[i]);
}
if(success)
printf("we did it ! \n");
//最后记得释放在GPU上分配的内存
printf("n = %d", count);

cudaFree( dev_a );
cudaFree( dev_b );
cudaFree( dev_c );
cudaFree( n );

getchar();
return 0;
}
...全文

相关推荐

政府科技管理者如何高效评估科技成果的市场转化潜力?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

产业园区运营负责人如何实现园区内创新资源的智能配置?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

科技中介服务机构在为中小企业提供技术对接服务时,如何解决信息盲区与匹配低效问题?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

电力系统风储联合一次调频仿真模型(Simulink仿真实现)

内容概要:本文提供了“电力系统风储联合一次调频仿真模型”的Simulink仿真实现方案,系统性地构建了风电与储能系统协同参与电力系统一次频率调节的动态仿真模型。该模型深度融合风力发电的波动性特征与储能系统的快速响应能力,设计了联合调频控制策略,通过Simulink平台实现了对电网频率扰动的精细化仿真分析。内容涵盖风储功率协调分配、逆变器控制(如VSG、下垂控制)、中点电位平衡、正负序分离、电网前馈补偿等关键技术模块,重点考察控制逻辑架构、关键参数整定及系统在动态工况下的频率响应性能,旨在验证风储联合系统在提升低惯量电网频率稳定性和调频效能方面的可行性与优越性。; 适合人群:具备电力系统分析、自动控制理论及新能源并网技术基础,熟练掌握Simulink/MATLAB仿真工具,从事电力系统稳定控制、新能源集成、储能应用等方向研究的研究生、科研人员及电力行业工程技术人员。; 使用场景及目标:①深入探究风电与储能系统在电网一次调频中的协同控制机理与能量管理策略;②对比分析不同控制算法(如下垂控制、VSG、MPC等)对频率调节效果的影响;③支撑学术论文复现、科研项目仿真验证及新型电力系统工程方案的前期可行性研究。; 阅读建议:建议结合电力系统频率控制相关经典文献与最新研究成果,逐步调试模型中的控制参数,重点关注风储出力协调性、控制延时、响应速度及弱电网条件对整体调频性能的影响,推荐通过多场景对比仿真以深化对系统动态行为的理解。

荔枝科研社

产业园区如何实现科技资源的统一管理和动态监测?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN
评论 1
收藏 已收藏
分享
返回顶部
GPU小码农
CUDA 591 成员 2,925 内容