免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: prolj
打印 上一主题 下一主题

CUDA很不错啊 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-12-31 23:58 |只看该作者
int main()
{
    if(!InitCUDA())
    {
        printf("\n\r无法执行CUDA功能");
        return(0);
    }
    else
    {
        printf("\n\r init CUDA功能成功....");
    }
    //开始利用功能进一步的处理.....
    //要利用 CUDA 进行计算之前,要先把数据复制到显卡内存中,才能让显示芯片使用
    //do somthing...
    return(1);
}

[ 本帖最后由 system888net 于 2009-1-1 00:00 编辑 ]

论坛徽章:
0
12 [报告]
发表于 2009-01-01 00:04 |只看该作者
回复 #8 cjaizss 的帖子
我晚了一步,LS已经说了,而且比我想的全面。

回复 #9 system888net 的帖子
   1. 显示芯片的运算单元数量很多,因此对于不能高度并行化的工作,所能带来的帮助就不大。
只是用于计算,那些东西对向量化和并行化需求很大,而OS这些传统软件就...如果说多任务,那是OS的事情,不是compiler的问题。虽然我还不了解科学计算那些东西,但是总比为游戏做贡献要好的多吧(我一直坚持认为开发游戏是对不起良心的事情)。OS和传统软件还是在CPU上跑的,我觉得现在的Intel双核U跑OS对于P4的单核U没什么优势。
   2. 显示芯片目前通常只支持 32 bits 浮点数,且多半不能完全支持 IEEE 754 规格, 有些运算的精确度可能较低。目前许多显示芯片并没有分开的整数运算单元,因此整数运算的效率较差。
不了解
   3. 显示芯片通常不具有分支预测等复杂的流程控制单元,因此对于具有高度分支的程序,效率会比较差。
compiler可以配合么?
   4. 目前 GPGPU 的程序模型仍不成熟,也还没有公认的标准。例如 NVIDIA 和 AMD/ATI 就有各自不同的程序模型。
这个...
而且一切都在发展中嘛...我只是关心编译,虽然其中用到的编译技术早就存在了,但是我还没掌握...当然我对Arch感冒...

论坛徽章:
0
13 [报告]
发表于 2009-01-01 00:07 |只看该作者
//要利用 CUDA 进行计算之前,要先把数据复制到显卡内存中,才能让显示芯片使用


  1.    int  cpu_data[100]
  2.    int* ptr_gpu_data;

  3.     cudaMalloc((void**) &ptr_gpu_data, sizeof(cpu_data));  //申请GPU内存.
  4.     cudaMemcpy(ptr_gpu_data, cpu_data, sizeof(cpu_data),cudaMemcpyHostToDevice);  //传送数据到GPU内存.
  5.    //开始处理....
  6.    //...大家元旦快乐!
复制代码

[ 本帖最后由 system888net 于 2009-1-1 00:14 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2009-01-01 00:14 |只看该作者
//开始处理....
声明函数时加上 __global__,则在显示芯片上执行:


  1. __global__ static void test(int *var, int* sum_output)
  2. {
  3.     int i;
  4.     int sum= 0;

  5.     for(i=0;i<100;i++)
  6.    {
  7.         sum+=(var[i]*var[i]*10);
  8.     }
  9.     *sum_output=sum;
  10.     return;
  11. }
复制代码

论坛徽章:
0
15 [报告]
发表于 2009-01-01 00:16 |只看该作者

回复 #8 cjaizss 的帖子

还有就是和ARM+DSP的思路是一样的啊

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
16 [报告]
发表于 2009-01-01 00:18 |只看该作者
原帖由 prolj 于 2009-1-1 00:16 发表
还有就是和ARM+DSP的思路是一样的啊

......呵呵,这个思路偶倒是比较熟悉

论坛徽章:
0
17 [报告]
发表于 2009-01-01 00:19 |只看该作者
回传及释放工作:

  1.     int cpu_var_value;

  2.    //把结果传送回CPU
  3.     cudaMemcpy(&cpu_var_value, gpu_result, sizeof(int), udaMemcpyDeviceToHost);
  4.    //进行GPU释放工作
  5.     cudaFree(ptr_gpu_data);
  6.     cudaFree(gpu_result);
复制代码

[ 本帖最后由 system888net 于 2009-1-1 00:20 编辑 ]

论坛徽章:
0
18 [报告]
发表于 2009-01-01 00:23 |只看该作者
其实这里有个CPU和GPU的工作协同调度及负载动态平衡的关系.
两者应该是互补而不是替代.

论坛徽章:
0
19 [报告]
发表于 2009-01-01 00:26 |只看该作者

回复 #16 cjaizss 的帖子

其实就是这个啊,就是DSP多了俩,强大了点,一样的。和你的设计思路也是一样的啊,只是你用fpga代替了dsp。 要不是你的思路在前,我也不会那么肯定Cell这种异构多核。

论坛徽章:
0
20 [报告]
发表于 2009-01-01 00:26 |只看该作者
一种可能是将来各个板卡的芯片的能力越来越强,都会是一个独立的计算单元(如GPU),因此异构的计算概念有了变化,从不同的机器异构扩展到了同一个机器里不同处理单元的异构协同.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP