异构 AI


  • 首页

  • 标签

  • 分类

  • 归档

  • 站点地图

  • 搜索

NumPy学习笔记

发表于 2018-01-03 | 分类于 Python |
字数统计: 6,821

Numpy基础


Numpy 是 Python 的一个科学计算包,包含了多维数组以及多维数组的操作

关于Numpy需要知道的几点:

  • NumPy 数组在创建时有固定的大小,不同于Python列表(可以动态增长)。更改ndarray的大小将创建一个新的数组并删除原始数据。

  • NumPy 数组中的元素都需要具有相同的数据类型,因此在存储器中将具有相同的大小。数组的元素如果也是数组(可以是 Python 的原生 array,也可以是 ndarray)的情况下,则构成了多维数组。

  • NumPy 数组便于对大量数据进行高级数学和其他类型的操作。通常,这样的操作比使用Python的内置序列可能更有效和更少的代码执行。

阅读全文 »

Python基础知识

发表于 2018-01-01 | 分类于 Python |
字数统计: 12,402

Python基础知识

数据类型

计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种:

  • 整数

Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。

计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。

  • 浮点数

浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,$1.23 \times 10^9$和$12.3 \times 10^8$是完全相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,$1.23 \times 10^9$就是$1.23\times e^9$,或者$12.3\times e^8$,0.000012可以写成$1.2\times e^{-5}$,等等。

整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

  • 字符串

字符串是以单引号’或双引号”括起来的任意文本,比如’abc’,”xyz”等等。请注意,’’或””本身只是一种表示方式,不是字符串的一部分,因此,字符串’abc’只有a,b,c这3个字符。如果’本身也是一个字符,那就可以用””括起来,比如”I’m OK”包含的字符是I,’,m,空格,O,K这6个字符。

阅读全文 »

Xilinx OpenCL的存储模型

发表于 2017-12-26 | 分类于 SDAccel , 基础 |
字数统计: 276




阅读全文 »

SDAccel Dataflow 那点事儿(二)

发表于 2017-11-27 | 分类于 SDAccel , 优化 , dataflow |
字数统计: 3,748



dataflow可谓是FPGA性能体现的绝佳表现方式,数据在硬件中能流动起来,靠的就是dataflow!
下面我们将探究SDAccel OpenCL开发方式下两种dataflow的实现方式:pipe传输方式与function传输方式。
以及SDAccel HLS 开发方式下两种dataflow的编程风格:loop 与 stream
SDAccel Dataflow 那点事儿(一)
SDAccel Dataflow 那点事儿(二)
SDAccel Dataflow 那点事儿(三)
SDAccel Dataflow 那点事儿(四)

dataflow pipe 方式简介

对于OpenCL来说,Dataflow的对象除了function的方式之外,还有Kernel的方式,因此,Dataflow在OpenCL中还有一种在Kernel与Kernel之间的传输方式,也就是通过pipe传输。pipe的传输机制采用的其实是FIFO的方式,因此在使用pipe传输的过程中需要设置FIFO的深度,也就是在传输过程中有多少的缓存深度。

阅读全文 »

SDAccel Dataflow 那点事儿(一)

发表于 2017-11-26 | 分类于 SDAccel , 优化 , dataflow |
字数统计: 941



dataflow可谓是FPGA性能体现的绝佳表现方式,数据在硬件中能流动起来,靠的就是dataflow!
下面我们将探究SDAccel OpenCL开发方式下两种dataflow的实现方式:pipe传输方式与function传输方式。
以及SDAccel HLS 开发方式下两种dataflow的编程风格:loop 与 stream
SDAccel Dataflow 那点事(一)
SDAccel Dataflow 那点事(二)
SDAccel Dataflow 那点事(三)
SDAccel Dataflow 那点事(四)

dataflow function 方式简介

下图是Dataflow优化的示意图。在不做Dataflow之前,func_C的输入需要依赖func_A和func_B的计算处理,8个时钟周期才能完成一次fun_C的计算结果输出。在做完Dataflow之后,func_A和func_C的启动间隔加快,使得5个周期就可以完成一次func_C的计算结果输出。从理论上上来说,Dataflow也属于更高层次上的一种Pipeline。

阅读全文 »

SDAccel矩阵乘法优化(四)

发表于 2017-11-25 | 分类于 SDAccel , 优化 , 综合案例 |
字数统计: 2,120


从一个矩阵乘法的例子一步一步进行功能设计与性能优化。
SDAccel矩阵乘法优化(一)
SDAccel矩阵乘法优化(二)
SDAccel矩阵乘法优化(三)
SDAccel矩阵乘法优化(四)

mmult实现及优化步骤

步骤 实现功能 关键概念/ Keywords
1、cpu实现 即在host端实现简单的矩阵乘法,便于比对数据与性能对比
2、OpenCL实现 在device端实现基于OpenCL的FPGA矩阵乘法硬件设计. Key Concepts
- OpenCL APIs
3、加入Local Memory 采用 Local Memory 减少数据访存次数 Key Concepts
- Kernel Optimization
- Local Memory
4、实现读写的突发传输 采用突发传输的方式更好的实现DDR与 Local Memory数据的读写访问 Key Concepts
- Kernel Optimization
- Burst Read/Write
5、数组分割 通过循环展开与数组分割的方式,实现更好的计算性能 Key Concepts
- Array Partition
- Loop Unroll
Keywords
- xcl_pipeline_loop
- xcl_array_partition(complete, dim)
- opencl_unroll_hint
阅读全文 »

SDAccel矩阵乘法优化(三)

发表于 2017-11-24 | 分类于 SDAccel , 优化 , 综合案例 |
字数统计: 1,258


从一个矩阵乘法的例子一步一步进行功能设计与性能优化。
SDAccel矩阵乘法优化(一)
SDAccel矩阵乘法优化(二)
SDAccel矩阵乘法优化(三)
SDAccel矩阵乘法优化(四)

mmult实现及优化步骤

步骤 实现功能 关键概念/ Keywords
1、cpu实现 即在host端实现简单的矩阵乘法,便于比对数据与性能对比
2、OpenCL实现 在device端实现基于OpenCL的FPGA矩阵乘法硬件设计. Key Concepts
- OpenCL APIs
3、加入Local Memory 采用 Local Memory 减少数据访存次数 Key Concepts
- Kernel Optimization
- Local Memory
4、实现读写的突发传输 采用突发传输的方式更好的实现DDR与 Local Memory数据的读写访问 Key Concepts
- Kernel Optimization
- Burst Read/Write
5、数组分割 通过循环展开与数组分割的方式,实现更好的计算性能 Key Concepts
- Array Partition
- Loop Unroll
Keywords
- xcl_pipeline_loop
- xcl_array_partition(complete, dim)
- opencl_unroll_hint
阅读全文 »

SDAccel矩阵乘法优化(二)

发表于 2017-11-23 | 分类于 SDAccel , 优化 , 综合案例 |
字数统计: 1,226


从一个矩阵乘法的例子一步一步进行功能设计与性能优化。
SDAccel矩阵乘法优化(一)
SDAccel矩阵乘法优化(二)
SDAccel矩阵乘法优化(三)
SDAccel矩阵乘法优化(四)

mmult实现及优化步骤

步骤 实现功能 关键概念/ Keywords
1、cpu实现 即在host端实现简单的矩阵乘法,便于比对数据与性能对比
2、OpenCL实现 在device端实现基于OpenCL的FPGA矩阵乘法硬件设计. Key Concepts
- OpenCL APIs
3、加入Local Memory 采用 Local Memory 减少数据访存次数 Key Concepts
- Kernel Optimization
- Local Memory
4、实现读写的突发传输 采用突发传输的方式更好的实现DDR与 Local Memory数据的读写访问 Key Concepts
- Kernel Optimization
- Burst Read/Write
5、数组分割 通过循环展开与数组分割的方式,实现更好的计算性能 Key Concepts
- Array Partition
- Loop Unroll
Keywords
- xcl_pipeline_loop
- xcl_array_partition(complete, dim)
- opencl_unroll_hint
阅读全文 »

SDAccel矩阵乘法优化(一)

发表于 2017-11-22 | 分类于 SDAccel , 优化 , 综合案例 |
字数统计: 2,679


从一个矩阵乘法的例子一步一步进行功能设计与性能优化。
SDAccel矩阵乘法优化(一)
SDAccel矩阵乘法优化(二)
SDAccel矩阵乘法优化(三)
SDAccel矩阵乘法优化(四)

mmult实现及优化步骤

步骤 实现功能 关键概念/ Keywords
1、cpu实现 即在host端实现简单的矩阵乘法,便于比对数据与性能对比
2、OpenCL实现 在device端实现基于OpenCL的FPGA矩阵乘法硬件设计. Key Concepts
- OpenCL APIs
3、加入Local Memory 采用 Local Memory 减少数据访存次数 Key Concepts
- Kernel Optimization
- Local Memory
4、实现读写的突发传输 采用突发传输的方式更好的实现DDR与 Local Memory数据的读写访问 Key Concepts
- Kernel Optimization
- Burst Read/Write
5、数组分割 通过循环展开与数组分割的方式,实现更好的计算性能 Key Concepts
- Array Partition
- Loop Unroll
Keywords
- xcl_pipeline_loop
- xcl_array_partition(complete, dim)
- opencl_unroll_hint
阅读全文 »

gmem carry dependency 分析

发表于 2017-11-15 | 分类于 SDAccel , 优化 , kernel_to_gmem |
字数统计: 940

方案一

  • 方案一 源码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#define J_CNT       2
#define I_CNT 4
#define BUFFER_SIZE I_CNT*J_CNT

kernel __attribute__((reqd_work_group_size(1, 1, 1)))
void vector_add(__global int* c,
__global const int* a,
__global const int* b,
const int n_elements)

{
local int arrayA[BUFFER_SIZE];
local int arrayB[BUFFER_SIZE];
local int arrayC[BUFFER_SIZE];

__attribute__((xcl_pipeline_loop))
loop_1:
for(int i = 0; i < I_CNT; i++) {
//__attribute__((xcl_pipeline_loop))
loop_2:
for(int j = 0; j < J_CNT; j++) {
arrayA[i * J_CNT + j] = a[i * J_CNT + j];
arrayB[i * J_CNT + j] = b[i * J_CNT + j];
c[i * J_CNT + j] = arrayA[i * J_CNT + j]+arrayB[i * J_CNT + j];
}
}
}
阅读全文 »
1…456
王晓芸

王晓芸

54 日志
20 分类
35 标签
RSS
Links
  • AI 异构
© 2019 王晓芸
本站访客数 人次 本站总访问量 次
0%