在CUDA内核中可以使用Matlab函数吗?

在CUDA内核中可以使用Matlab函数吗?,matlab,cuda,curve-fitting,Matlab,Cuda,Curve Fitting,lsqcurvefitMatlab函数用于将模型曲线的参数拟合到真实曲线(从实验或观察中获得的数据),从而使平方差最小化 该函数非常耗时,如果在大型曲线集上使用,可能会禁止使用 它是否可以直接在CUDA内核中使用,然后所有程序都在Matlab中编码?(编辑:这是指,无需为内核编写C语言中的自定义版本的lsqcurvefit。例如:在Matlab中编写内核代码(使用“任何”Matlab函数,如lsqcurvefit()),然后使用Matlab提供的工具编译内核,最后在GPU中执行内核,从Matla

lsqcurvefit
Matlab函数用于将模型曲线的参数拟合到真实曲线(从实验或观察中获得的数据),从而使平方差最小化

该函数非常耗时,如果在大型曲线集上使用,可能会禁止使用

它是否可以直接在CUDA内核中使用,然后所有程序都在Matlab中编码?(编辑:这是指,无需为内核编写C语言中的自定义版本的
lsqcurvefit
。例如:在Matlab中编写内核代码(使用“任何”Matlab函数,如
lsqcurvefit()
),然后使用Matlab提供的工具编译内核,最后在GPU中执行内核,从Matlab主机代码调用)


谢谢,有很多方法,但是没有任何matlab代码可以在CUDA内核中使用。

你的问题不是很清楚,似乎有点矛盾(在CUDA内核中使用matlab函数,然后在matlab中编写所有程序?)。无论如何,您不能在CUDA内核中直接使用Matlab函数。但是您可以编写自己的CUDA版本的Matlab函数,然后通过mex文件编译并链接它,以供Matlab脚本调用。@Jackolanten其中一种可能性(我不知道是否有效)是不使用C而是使用Matlab编写内核(然后使用lsqcurvefit)。然后将matlab内核(使用matlab提供的工具)编译成正确的CUDA机器代码,然后从matlab主机代码调用它。我一直在使用CUDA加速函数,通过mex函数编译并链接到matlab。目前我是Matlab2010a用户,还没有切换到Matlab2012。要实现您所说的,您需要一个工具,将Matlab函数编译为要在CUDA内核中调用的
\uuuuu设备
函数。我不知道有什么工具能做到这一点。但是,在新的Matlab GPU计算功能中,确实有一些Matlab函数可用于GPU执行。更清楚的是,Matlab支持
gpuArray
类型,允许在GPU上执行许多数组操作。它还拥有越来越多的功能列表,这些功能来自于各种工具箱(统计、图像处理等等),这些工具箱已经能够在GPU上工作。当然,这并不意味着可以在CUDA内核中运行MATLAB代码。。您可以很容易地从MATLAB代码中调用CUDA内核,或者编写包含CUDA代码的MEX文件:然后,让我看看我是否理解正确。内核必须用C编写,而不是用matlab编写,所以我不能在内核中使用lsqcurvefit()。唯一的选择是等待lsqcurvefit在将来启用GPU。我建议阅读一些关于CUDA GPU计算主题的基本资料。一个很好的可能性是J.桑德斯和E.坎德罗特的书《CUDA by Example》。在那之后,你会有一个更清晰的画面,也许能够回答自己的问题。如果您是第一次在Matlab下编译和链接基于CUDA的mex文件,可能会很棘手。有关一些有用的说明,请参阅。