0

在我的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

4

1 回答 1

2

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

您必须记住,OpenCL 是适用于许多设备的通用框架,而不仅仅是您的标准消费级处理器,因此由于汇编指令的差异(即 OpenCL 旨在便携,如果您开始在内核中编写 x86 操作码,例如,它将如何在显卡上运行?)

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

于 2012-09-02T01:11:47.867 回答