Intel OpenCL 之 Pipeline(一):基本概念
时间:2022-07-22
本文章向大家介绍Intel OpenCL 之 Pipeline(一):基本概念,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Pipeline
Pipeline是一种非常重要的并行策略,我们以一个小例子简单说明一下:
for(unsigned i = 0; i < 1024; i++)
{
y[i] = (a[i] + b[i] + c[i] + d[i] + e[i] + f[i] + g[i] + h[i]) >> 3;
}
顺序执行:
pipeline-11
Pipeline执行:
pipeline-12
假设一步操作需要一个cycle
,loop
迭代一次需要8个cycle
。
那么顺序执行需要8*1024个cycle
,而pipeline
只需要8+1024个cycle(从第8个cycle
开始,每个cycle
输出一个结果)。
接下来,从pipeline
执行的图示中提取完整的一列:
pipeline-13
绘制下图来表示整个loop
的执行情况:
pipeline-14
Pipeline Stage
上面的例子中,每一步操作为一个pipeline stage
,那么,这个例子里共有8个pipeline stage
:
pipeline-15
Altera OpenCL SDK 对pipeline的优化
实际上,编译器在生成pipeline
结构时可以更加灵活,比如下面的例子:
C = (A >> 5) + B;
F = (D – E) << 3;
G = C + F;
根据手册, SDK会将上面的代码例化为下面的结构,把C和F的生成看成两条独立的线索。这样,每个cycle都能得到一个C和F,输出一个G。
pipeline-16
pipeline-17
常用术语
- Loop Trip count:Loop的总迭代次数。 上面的例子中,loop_Trip_count=1024。
- Loop Latency:loop执行一次完整迭代需要的时钟周期数。
- Loop Initiation Interval(II):loop两次迭代之间的时钟周期数。
pipeline-18
所以,执行一个完整loop所需时钟周期数为:
对于嵌套循环:
for(unsigned i=0; i<N; i++){
...
for(unsigned j=0; j<M; j++){
...
}
}
总的时钟周期数应为:
参考
Intel FPGA SDK for OpenCL Best Practices Guide
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 杭电的题,输出格式卡的很严。HDU 1716 排列2
- 移动端的(-webkit-linear-gradient -webkit-radial-gradient)
- ACM一年记,总结报告(希望自己可以走得很远)
- 移动端顺序问题上
- [USACO1.5]回文质数 Prime Palindromes
- 移动端上上(transform-translateZ注册)
- [USACO1.3]虫洞wormhole
- HTML--HTML入门篇(我想10分钟入门HTML,可以,交给我吧)
- 移动端初级知识点解析:translateZ translateY rotateY(上上上)
- new String() split详解
- XML--XML从入门到精通 Part 1 认识XML
- css的linear-gradient注意点
- css的linear-gradient
- 第十届山东省赛L题Median(floyd传递闭包)+ poj1975 (昨晚的课程总结错了,什么就出度出度,那应该是叫讨论一个元素与其余的关系)
- css中border-radius