该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
最近学习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