在我的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
?
答案 0 :(得分:2)
你没有。 OpenCL编译器决定如何处理代码,具体取决于目标硬件和优化设置,可以在构建内核时将其设置为编译指示或参数。如果足够聪明,它将使用运行内核的平台的漂亮汇编指令。如果不是,那就不会。
您必须记住,OpenCL是适用于许多设备的通用框架,而不仅仅是您的标准消费级处理器,因此由于装配说明的不同(即OpenCL是意思是可移植的,如果你开始在你的内核中编写x86操作码,那么它如何在显卡上运行?)
如果您需要在特定设备上获得绝对最高性能,则不应使用OpenCL,恕我直言。