如何写ScaleImage()的硬件加速函数(三)
在“如何写ScaleImage()的硬件加速函数(二)”中介绍的kernel函数的写法可能会产生如下现象:
ScaleFilter()不是总能被成功调用。- 每次修改过
ScaleFilter()后,有时在~.cache/GraphicsMagick目录中不会生成新的.bin文件。 - 这种情况下,调试发现在
getOpenCLEnvironment(exception);处就失败返回。
MagickPrivate Image *AccelerateScaleImage(const Image *image,
const size_t scaledColumns,const size_t scaledRows,
ExceptionInfo *exception)
{
Image
*filteredImage;
MagickCLEnv
clEnv;
assert(image != NULL);
assert(exception != (ExceptionInfo *) NULL);
if (checkAccelerateCondition(image) == MagickFalse)
return((Image *) NULL);
clEnv=getOpenCLEnvironment(exception);
if (clEnv == (MagickCLEnv) NULL)
return((Image *) NULL);
filteredImage=ComputeScaleImage(image,clEnv,scaledColumns,scaledRows,
exception);
return(filteredImage);
}
- 重启电脑似乎不能校正这种问题,但第二天开机这个问题就没有了,难道我的
ScaleFilter()函数让CPU或者GPU内部错乱了? - 没添加额外调试输出前,没有找到任何异常日志。
- 忘说了一个关键问题,这两天电脑已经发现死机两次,包括今天早上这次,刚输入完密码回车后就死机。
优化ScaleImage的硬件加速函数:问题与解决尝试,
本文讨论了在使用ScaleImage的硬件加速过程中遇到的问题,如ScaleFilter调用失败、.bin文件生成不一致,以及可能导致的系统不稳定情况。作者尝试了重启电脑但问题未解决,且发现与电脑死机相关。
475

被折叠的 条评论
为什么被折叠?



