GPU&VS2012&CUDA&matlab&Arrayfire杂记(一)——序

     看看这个题目,我自己都觉得比较混乱!
     

    先说说与这个有关的方向,水声信号处理(并行波束形成),开始接触这方面应该是 去年10月份的时候吧,要做一个实时波束形成的东西,那时候并不知道GPU在信号处理的运用,在大哥和厂家的共同推荐下,就走上了这条路,现在看看,因为能力有限,好像并没有取得预期的效果(只是用arrayfire做出了大概的样子,但是和MFC的融合我又fuck了),所以一直都没写什么东西,不过还是把一些拙见写一写吧,回顾一下以前的思路。
      波束形成的那些算法主要是大哥写的,我们的任务就是把那些matlab语言移植到GPU,让其加速,达到实时显示的效果,最开始我是准备用CUDA C写的,学习了两个例子,一个是官网上的,还有一个是matlab并行程序设计中的square(后面会有),可是无奈本科学的C语言差不多已经忘干净了(以前一直做硬件,不写代码那种),所以C语言及被我搁置了。
     又开始研究matlab&GPU以及PCT的运用了,主要就是parfor、开并行池、gpuarray等简单几个关键字就可以解决加速的问题,其实你运用不当的话一般情况下会更慢,matlab这个东西在矩阵运算上已经优化的很好了,所以如果想要加速,必须以 并行的思想去写那些代码,不管是matlab、c、arrayfire等,尽可能的少用for、while这些循环语句,变成矩阵或者向量的形式。唯一有所进展的是我将算法中计算function变成c(使用其内部工具),然后mex成动态链接库,再结合matlab使用,速度较以前有了4倍的提升,但并没有使用到GPU,所以认为这个工作并没有太大的效果。
     然后就是这学期来学校后开始着手Arrayfire&GPU的研究,这可API的资料比较少,因为以前这个要收费,最近才免费开放给大家使用,信息虽然少,但是想要的在官网上都可以找到,主要就是array的运用,确实方便很多,在gpu上的运用自行分配cuda core,也是一种偷懒的方法,做到现在,基本功能虽说实现了,但加速效果并不理想。
    最后就是MFC画界面了,和arrayfire总是融合不了,识别不了array这关键字,总觉得是哪里没有配置好,特别是arrayfire给的examples中的那个环境配置,一直没有琢磨好,所以呢,每次计算完把数据保存在bin文件中,然后mfc再去读取,已经没有什么实时性了,其中用到了teechart但是二维方位历程图(类似matlab images这样的)画不出来,尝试了colorgrid仍然不行,已经得出了三维数组(总是提示找不到成员)希望此时有个大牛可以站出来帮忙解决一下这个问题,最后队友尝试了opencv这个东西,可以得到一个黑白的图,size还需要调整,做成彩色就更好了。
      前段时间采集仪回来了,用了spectrum公司的采集板卡,重要的是已经给出了底层函数,可以直接调用函数进行数据的采集,这个不错,现在基本每个模块都有点起色,但是想把整个系统搭建起来,感觉得需要师弟们继续了,总体看来主要有三步1、数据传输(采集仪、磁盘和GPU之间的传输)2、算法的实现3、上位机的实现,最后需要把这些零散的东西给组装起来,要做的东西还是有点多啊。
    

     关于融合的问题:
        1、尝试一下动态链接库的方法;
        2、最近在网上看到MFC和CUDA工程的创建,所以 我又准备开始干CUDA了 ,哈哈。。。

    结尾我想表达对以下网站、论坛等对我学习途中的帮助和影响。
首先是 CUDA方面,最直观的可能就是视频了
http://www.gpuworld.cn/article/show/463.html胡文美老师
http://www.iqiyi.com/a_19rrhbvoe9.html周斌老师
论坛
http://bbs.gpuworld.cn/forum.phpGPU世界论坛
matlab方面
http://cn.mathworks.com/products/parallel-computing/并行计算
http://cn.mathworks.com/products/matlab-coder/代码转换
还有很多学习书籍类似《matlab并行处理程序设计》
论坛
http://bbs.gpuworld.cn/forum.phpGPU世界论坛matlab板块 大牛蓝云
arrayfire方面
http://arrayfire.com/官网,想要的东西里面都有
gpu方面
还是关注gpu世界论坛吧 ,也有硬件的讲解,不过比较少然后就是GPU—Z这个东西,可以查看当前GPU的状态。
QQ群
454296783 MATLAB&GPU Parallel Computing(大牛杨)
还有的群没有经过授权就不在这公布了。

现在还是渣渣一名,写的东西难免有错误或者遗漏之处,请大家多多包涵,多多指教!
后续的学习正文篇会慢慢送上。
     

你可能感兴趣的:(CUDA,vs,GPU,Arrayfire)