新手刚接触cuda,试了一下开辟空间就出错了,求帮忙解答

qq_30642249 2016-03-23 03:26:02
以下为程序代码
#include <cuda_runtime.h>
#include <device_launch_parameters.h>
#include <device_functions.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

#define XN 400
#define ZN 400

#define SIZE1 (XN*ZN*sizeof(float))

void main()
{
float *u1, *u2, *u3;
float *d_u1, *d_u2, *d_u3;

u1=(float*)malloc(SIZE1);
u2=(float*)malloc(SIZE1);
u3=(float*)malloc(SIZE1);

cudaMalloc((void**)&d_u1,SIZE1);
cudaMalloc((void**)&d_u2,SIZE1);
cudaMalloc((void**)&d_u3,SIZE1);


free(u1);
free(u2);
free(u3);

}

运行之后,反应如下:



求帮忙解答一下这是什么问题啊
...全文
184 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_30642249 2016-03-27
  • 打赏
  • 举报
回复
引用 3 楼 qq_21400315 的回复:
或者用Nsight进行调试
问题已解决,谢谢
Mr_Zhouzl 2016-03-25
  • 打赏
  • 举报
回复
或者用Nsight进行调试
Mr_Zhouzl 2016-03-23
  • 打赏
  • 举报
回复

cudaStatus = cudaMalloc((void**)&dev_a, size * sizeof(int));
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "cudaMalloc failed!");
        goto Error;
    }
Mr_Zhouzl 2016-03-23
  • 打赏
  • 举报
回复
该内存是显卡中的内存也是我们常说的显存,vs是直接查看不了的,我们一般使用cuda自带的方法来检测内存是否分配成功,比如下面这个例子。

 cudaError_t cudaStatus;
 cudaStatus = cudaMemcpy(dev_b, b, size * sizeof(int), cudaMemcpyHostToDevice);
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "cudaMemcpy failed!");
        goto Error;
    }

579

社区成员

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

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