我有一个需要大量图像处理的项目,并希望添加GPU支持以加快速度。
我想知道我是否将我的matlab编译成c ++共享库并在OpenCL程序中调用它,这是否意味着matlab代码将在GPU上运行?
答案 0 :(得分:1)
我自己(半受过教育的)猜测是你会发现这很难做到。但是,其他人已经走过了同样的道路。 This paper可能是开展研究的好地方。谷歌搜索出现了Accelereyes以及几个对Mathworks File Exchange中您可能想要跟进的项目的引用。
答案 1 :(得分:1)
夹克中的所有东西都是用c / c ++ / cuda编写的。 事实上,我们现在有一个测试版libjacket(http://www.accelereyes.com/downloadLibjacket),如果你愿意,它可以用来扩展matlab而不是其他语言。
@OSaad 我们的大部分功能都是最快的选择。无论是C还是matlab。
答案 2 :(得分:0)
即将发布的R2010b(截至9月1日)中的Parallel Computing Toolbox支持多种功能的GPU处理。不幸的是,它只支持CUDA(版本1.3及更高版本),所以使用ATI显卡,你运气不好。但是,无论如何,您可能只想购买专用GPU。
答案 3 :(得分:0)
通常情况下,如果您可以以“矢量化”的方式编写Matlab代码,那么像AccelerEyes和Jacket这样的软件包就有可能在GPU上运行。您可以通过检查Matlab本身是否能够在CPU上的多个核心上运行来预先验证这一点(如果事情可以以明显的方式并行化,Matlab将使用多个核心。)
如果这不起作用,那么你需要通过mex下载到C / C ++,然后从那里自己调用OpenCL。 Mex是Matlab与C代码对话的方式,因此您编写由Matlab调用的C代码(并接收矩阵等),然后初始化并调用OpenCL。这是更多的工作,但可能是你唯一的途径(并且,即使自动化程序包在某种程度上起作用,这种方法仍然可以提供更多的加速,因为你可以更聪明地进行内存管理,例如,如果你知道你在做什么)。