我有一个任务来实现Sobel滤波器,正如你所知,它是一个用于边缘检测的图像处理滤波器.但不幸的是,我没有图像处理领域的经验,我甚至不知道图像在计算机中的表现方式.完全没有这个领域的知识.
我已经阅读了一些论文和PDF,但他们关注的很多主题我认为我可能不需要它们来完成我的任务.
我很乐意知道您的建议,或者是否有任何特定的论文,PDF,教程或快速指南.
谢谢
编辑:
谢谢大家:)我们的工作成果可以从这里下载.
我正在学习OpenCL,我有一个兼容的x86 CPU,但我的GPU根本不支持OpenCL.因此,当我调用clGetDevices API时,它什么都不返回.
由于我刚刚学习这个框架而且我不是在寻找优化或更高的性能,是否有必要建立一个新系统?(虽然OpenCL程序在我的平台上运行)
提前致谢 :)
我试图为一个问题找到最佳的工作组规模,但我发现了一些我无法为自己辩解的事情。
这些是我的结果:
交换轴使执行速度提高了一倍。为什么 !?
顺便说一下,我使用的是 AMD GPU。
谢谢 :-)
编辑: 这是内核(一个简单的矩阵转置):
__kernel void transpose(__global float *input, __global float *output, const int size){
int i = get_global_id(0);
int j = get_global_id(1);
output[i*size + j] = input[j*size + i];
}
Run Code Online (Sandbox Code Playgroud) 我想问一下为什么该BLT
指令不是 MIPS ISA 的一部分。相反,他们实际上使它成为汇编程序员的伪指令。从硬件实现的角度来看,我只是无法识别BLT
和BLTZ
(这是 MIPS ISA 的一部分)之间的区别。
顺便说一下,《计算机组织与设计》这本书说:
注意到冯诺依曼关于“设备”简单性的警告,MIPS 架构不包括分支,因为它太复杂了,要么会延长时钟周期时间,要么每条指令需要额外的时钟周期,两条更快的指令是更有用。
但我仍然不知道为什么会发生这些。
由于OpenCL程序在几台具有其特定架构的机器上运行,因此我想到如何编写程序以在这些机器上获得最佳平均性能.
我很乐意听到你的建议:)
谢谢