c语言中cuda核函数,CUDA C编程用for循环跑核函数越跑越慢是为什么?

在CUDA C编程中,用户观察到使用for循环多次运行核函数时,运行速度逐渐变慢。问题简化为单独运行一个简单的解调算法核函数,即使降低了复杂度,仍出现速度减慢的现象。尝试了释放和重新分配内存并未解决问题。环境为Win10、Visual Studio 2019、CUDA 10.2和cudnn 7.6.5,测试硬件为950M显卡。代码示例显示在不同SNR值下,核函数DeModuate执行多次,时间消耗增加。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

最近学习CUDA C的编程,在并行运行一个简单的解调算法的时候,统计时间后发现运行速度越来越慢(但还是运算结果正确的),后来简化到只运行其中一个核函数的时候,就算复杂度下降了,但还是会越跑越慢,尝试过每一轮都进行cudafree和cudamalloc也没用,这是为什么呢?

刚刚还发现了,对于我用过的一些矩阵加法、矩阵点乘的教程例子,加上for循环跑很多很多次,也是会出现这种越来越慢的情况。

环境:

win10 Visual studio2019 community

cuda 10.2

cudnn 7.6.5

用几年前的笔记本进行测试——显卡950M

跪求各路大神救救了

简化后作为测试的代码如下:

#include

#include

#include

#include "..\common\book.h"

#include

#include

#define BLOCK_NUM 16

#define THREAD_NUM 16

#define R_SIZE 256 //256

#define M_SIZE R_SIZE*R_SIZE //256*256

#define SNR_LEN 7

#define N 100

#define pi 3.1415926535

double SNR[SNR_LEN] = { 0,1,2,3,4,5,6 };

__global__ void DeModuate(double* ReceivedSignal_R, short int* demodSignal_HD, double sigma)

{

c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值