CUDA 程序运行时 CPU 100%的一个解决方法
来源:互联网 发布:韩都衣舍淘宝店 编辑:程序博客网 时间:2024/04/30 07:29
CUDA 程序运行时CPU 100%的问题有点让人头痛,在实验过程中调用了kernel函数后,再调用cudaMemcpyAsync,但发现在还有会到block在这个所谓的async api,strace 跟了一下,发现99.999%都是
clock_gettime(CLOCK_MONOTONIC_RAW, {2461, 485666623}) = 0
于是实然有了一个灵感,为什么我不写一个和它相似的poll函数,只不过我是每隔1分钟轮询一次,这样就可以把CPU的使用率降下来了
kernel<<< dimGrid, dimBlock >>>(d_result_next_idx); _err = cudaGetLastError(); if(cudaSuccess == _err) { low_cpu_usage_poll(qihao);
void low_cpu_usage_poll(int qihao){ int min = 0; bool ready = false; while (1) { sleep(60); // second ready = cudaSuccess==cudaStreamQuery(0); printf("low_cpu_usage_poll: %4d min, cudaStreamQuery: %s\n", ++min, ready ? "cudaSuccess" : "cudaErrorNotReady???"); if (ready) { callback(qihao); return; } }}
使用时在调用了kernel函数后,不再调用任何cudaXXXX函数,kernel函数是异步的,但随后的这些cudaXXXX函数还是会block直到kernel完成,所在应该在调用kernel后直接调用low_cpu_usage_poll,把所有后续处理放在low_cpu_usage_poll中调用的那个callback中。
0 0
- CUDA 程序运行时 CPU 100%的一个解决方法
- 一个程序来比较cuda/c在GPU/CPU的运行效率
- 代码运行时 CPU占用率100%的解决方法
- cuda程序的编译运行
- cuda程序的编译运行
- 一个简单的CUDA程序
- 用CPU计时器统计CUDA核函数的运行时间
- delphi 7.0程序运行关闭最后弹出CPU窗口:ntdll.DbgBreakPoint的解决方法
- 发现java程序cpu利用率100%的解决方法
- 程序在CPU中运行的机制
- 可使双核CPU的使用率达到100%的一个小程序
- CUDA程序编译过程中产生警告的解决方法
- cuda运行程序记录时间
- CPU 使用100%的解决方法
- VS2005程序运行时出现MSVCP80D.dll not found错误解决方法(VS 2005的一个“Bug”)
- 转 VS2005程序运行时出现MSVCP80D.dll not found错误解决方法(VS 2005的一个“Bug”)
- vs2013编写CUDA程序时总是闪退解决方法
- BCB 程序运行时出错“stack overflow” 的解决方法
- 新手CrossApp 之CollectionView小结
- lknklnlknklnmkl;
- java 数据类型
- ssh用法小结
- libRocket在cocos2d-x中使用
- CUDA 程序运行时 CPU 100%的一个解决方法
- gdb常用调试命令总结
- HashMap分析
- 粒子效果
- Hibernate与 MyBatis的比较
- 致我最爱的班主任
- Error Code: 1175 You are using safe update mode and you tried to update a table without a WHERE that
- testtesttesttesttesttesttesttest
- python的基本操作(列表,元组)