用于“添加后测试进位标志”的OpenCL装配优化

时间:2012-09-01 21:38:29

标签: optimization assembly opencl carryflag

在我的OpenCL内核中,我发现了这个:

error += y;
++y;
error += y;
// The following test may be implemented in assembly language in
// most machines by testing the carry flag after adding 'y' to
// the value of 'error' in the previous step, since 'error'
// nominally has a negative value.
if (error >= 0)
{
    error -= x;
    --x;
    error -= x;
}

显然,使用一些漂亮的装配说明可以轻松优化这些操作。如何在OpenCL

中优化此代码

1 个答案:

答案 0 :(得分:2)

你没有。 OpenCL编译器决定如何处理代码,具体取决于目标硬件和优化设置,可以在构建内核时将其设置为编译指示或参数。如果足够聪明,它将使用运行内核的平台的漂亮汇编指令。如果不是,那就不会。

您必须记住,OpenCL是适用于许多设备的通用框架,而不仅仅是您的标准消费级处理器,因此由于装配说明的不同(即OpenCL是意思是可移植的,如果你开始在你的内核中编写x86操作码,那么它如何在显卡上运行?)

如果您需要在特定设备上获得绝对最高性能,则不应使用OpenCL,恕我直言。