0
我正在从openCL的内核生成hadware模块(对Verilog的描述)。我在读关于这方面的文章,作者做一些预先处理内核,预处理的第一步是:内核函数中工作项的序列化 - OpenCL
:序列化的内核函数里面的工作项目,他们这样解释“工作组中的工作项可以按任意顺序执行, 前提是在内核 函数中不存在同步操作。基于此观察,我们通过将指令包含在工作项中来序列化 工作项的执行。内核 函数的主体函数转换为三重嵌套循环,假设wo内抽象索引空间中的最大维数为 rkgroup是三个。 每个循环嵌套枚举工作项目在相应 尺寸,从而序列化它们的执行“
,他们提供了这样一个例子:
int __kernel_indices[3];
__kernel_indices[2] = 0;
while (__kernel_indices[2]< __local_size[2]){
__kernel_indices[1] = 0;
while (__kernel_indices[1]< __local_size[1]){
__kernel_indices[0] = 0;
while (__kernel_indices[0]< __local_size[0]){
//Kernel Body
}
__kernel_indices[0]++;
}
__kernel_indices[]++;
}
__kernel_indices[2]++;
我不明白的意思序列化,当时是否执行一个工作项目?或者当时只有1个工作团队的工作项目将在执行中?
感谢您阅读这篇文章,并对我的英文不熟悉。
你有链接到这篇文章? – 2012-07-25 22:54:47