CUDA学习之旅2009.11.9---《深入浅出CUDA》学习1

 

      今天开始正式学习CUDA,经过前几天的准备工作,已经有了一个基本的认识了。按照网友的意见,先来学习一下《深入浅出CUDA》。今后几天的几篇帖子就大多是讨论这篇文章里的东西了。

       以前学习C语言的时候,由于学校很多东西不要求,所以现在来看这些都有点困难啊。慢慢来吧,还希望大家能够多多支持啊。

------------------------------------------------引用原文-------------------------------------------------------

要利用 CUDA 进行计算之前,要先把数据复制到显卡内存中,才能让显示芯片使用。因此,需要取得一块适当大小的显卡内存,再把产生好的数据复制进去。在 main 函式中加入:

GenerateNumbers(data, DATA_SIZE);
    int* gpudata, *result;
    cudaMalloc((void**) &gpudata, sizeof(int) * DATA_SIZE);
    cudaMalloc((void**) &result, sizeof(int));
    cudaMemcpy(gpudata, data, sizeof(int) * DATA_SIZE,
        cudaMemcpyHostToDevice);

----------------------------------------------------over-------------------------

 

按照里面的提示,这个cudaMalloc函数和C语言的malloc差不多,但是查了一下啊,似乎后面一小截(siazeof后面的)可以理解,就是分配data_size个整数空间,那么前面的(void**) &gpudata是什么意思呢???

    现在总结一下今天学习所得啊。

1.在CUDA构架下,显示芯片(GPU)执行的最小单位是thread,数个thread组成一个block,但所含thread数目有限;但是执行相同程序的block可以组成grid。

2.发现了几个函数,由于还没有看官方手册programming guide,所以只是初略的根据上下程序了解其意义。如有不对,还望更正。

   cudaGetDeviceCount  :取得支持cuda的装置数目

   cudaDeviceProp  :   一种数据类型,指的是cuda装置的属性

   cudaGetDeviceProperties  : 取得支持cuda的装置支持的 CUDA 版本,还有装置的名称、内存的大小、最大的 thread 数目、执行单元的频率等

   cudaSetDevice  :  设定指定装置为目前要使用的装置

   cudaMalloc   cudaMemcpy----------此二者如前所问问题。

3.在GPU中执行函式,语法规则是

  <<<block数目,thread数目,share memory大小>>>(参数...)

4.关于计算时间的统计:

   CUDA提供了专门的clock()函式,也有一种数据类型clock_t来定义存储时间的变量。

   只要分别在程序运行始末各调用一次clock(),再将解雇相减就可以得出计算时间了。

5.为了充分发挥GPU并行计算的优势,在进行程序优化的时候,要充分考虑显存是DRAM类型,最好是连续存取方式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值