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