关于GPU占用率的疑惑

jinyunx 2015-06-28 07:06:05
啥都不跑时,GPU-Z截图:

很简单的代码:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>

__global__ void kernel(float *d_data)
{
*d_data = -1;
//*d_data = 1/(*d_data);//下文说的第一个注释
//*d_data = (*d_data) / (*d_data);//第二个注释
}


int main()
{
float *d_data;
cudaMalloc(&d_data, sizeof(float));
while (1)
kernel << <1, 1 >> >(d_data);//只开了一个线程,
float data;
cudaMemcpy(&data, d_data, sizeof(int), cudaMemcpyDeviceToHost);
printf("%f\n",data);
return 0;
}

请看kernel函数,第一次保留了两个注释,开跑,使用GPU-z查看GPU的占用率:

第二次只保留最后一个注释,开跑,使用GPU-z查看GPU的占用率:

第三次打开所有注释,开跑,使用GPU-z查看GPU的占用率:


为什么只开一个线程,GPU的占用率会这么高?
...全文
477 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
tengwl 2015-09-06
  • 打赏
  • 举报
回复
原因是while中循环kernel的执行,相当于kernel一直在执行中

581

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧