07 FPGA 助力Python加速计算 陈志勇工程师开发嵌入式产品的时候哪些地方可能会遇到性能瓶颈? Ø 传统的计算平台:基于通用处理器的架构,Intel x86 Ø 新的嵌入式计算平台:MCU,DSP,FPGA,GPU、ASSP等 Ø 嵌入式计算: Ø 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统对功能、可靠 性、成本、体积、功耗有严格要求的专用计算机系统,它一般由嵌入式微处理器、外围硬件设备、 嵌入 式操作系统以及用户的应用程序等四个部分组成。 的不足,又克服了原有可编程器件门电路数有限的缺点。 Ø 设计语言:硬件描述语言(HDL)是一种用来设计数字逻辑系统和描述数字电路的语言,常用 的主要有VHDL、Verilog HDL Ø 信号处理:数据可以并行处理 Ø 主要实现功能: Ø 组合逻辑 -》计数器 -》算法实现 -》SOC 设计 Ø 新一代FPGA器件:高速接口、ARM SOC、多个 IP 硬核、大容量存储器等 Ø 新一代PCIE加速 Ø 工业市场:工业伺服、控制器、安防相机、机器视觉、超声设备等。 Ø 消费类和广播设备:电视台演播设备、电视墙 Ø 测量测试仪器:示波器、信号发生器、逻辑分析仪等 FPGA 介绍 5 串行计算和并行计算 1 GHz 126 clock cycles = 8 MSPS / MAC unit 传统的基于 DSP 计算 - Serial 基于 FPGA 计算 - Parallelism0 码力 | 34 页 | 6.89 MB | 1 年前3
2_FPGA助力Python加速计算_陈志勇工程师开发嵌入式产品的时候哪些地方可能会遇到性能瓶颈? Ø 传统的计算平台:基于通用处理器的架构,Intel x86 Ø 新的嵌入式计算平台:MCU,DSP,FPGA,GPU、ASSP等 Ø 嵌入式计算: Ø 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统对功能、可靠 性、成本、体积、功耗有严格要求的专用计算机系统,它一般由嵌入式微处理器、外围硬件设备、 嵌入 式操作系统以及用户的应用程序等四个部分组成。 的不足,又克服了原有可编程器件门电路数有限的缺点。 Ø 设计语言:硬件描述语言(HDL)是一种用来设计数字逻辑系统和描述数字电路的语言,常用 的主要有VHDL、Verilog HDL Ø 信号处理:数据可以并行处理 Ø 主要实现功能: Ø 组合逻辑 -》计数器 -》算法实现 -》SOC 设计 Ø 新一代FPGA器件:高速接口、ARM SOC、多个 IP 硬核、大容量存储器等 Ø 新一代PCIE加速 Ø 工业市场:工业伺服、控制器、安防相机、机器视觉、超声设备等。 Ø 消费类和广播设备:电视台演播设备、电视墙 Ø 测量测试仪器:示波器、信号发生器、逻辑分析仪等 FPGA 介绍 5 串行计算和并行计算 1 GHz 126 clock cycles = 8 MSPS / MAC unit 传统的基于 DSP 计算 - Serial 基于 FPGA 计算 - Parallelism0 码力 | 33 页 | 8.99 MB | 1 年前3
FPGA助力Python加速计算 陈志勇 工程师开发嵌入式产品的时候哪些地方可能会遇到性能瓶颈? ➢ 传统的计算平台:基于通用处理器的架构,Intel x86 ➢ 新的嵌入式计算平台:MCU,DSP,FPGA,GPU、ASSP等 ➢ 嵌入式计算: ➢ 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统对功能、可靠 性、成本、体积、功耗有严格要求的专用计算机系统,它一般由嵌入式微处理器、外围硬件设备、 嵌入 式操作系统以及用户的应用程序等四个部分组成。 的不足,又克服了原有可编程器件门电路数有限的缺点。 ➢ 设计语言:硬件描述语言(HDL)是一种用来设计数字逻辑系统和描述数字电路的语言,常用 的主要有VHDL、Verilog HDL ➢ 信号处理:数据可以并行处理 ➢ 主要实现功能: ➢ 组合逻辑 -》计数器 -》算法实现 -》SOC 设计 ➢ 新一代FPGA器件:高速接口、ARM SOC、多个 IP 硬核、大容量存储器等 ➢ 新一代PCIE加速 ➢ 工业市场:工业伺服、控制器、安防相机、机器视觉、超声设备等。 ➢ 消费类和广播设备:电视台演播设备、电视墙 ➢ 测量测试仪器:示波器、信号发生器、逻辑分析仪等 FPGA 介绍 5 串行计算和并行计算 1 GHz 126 clock cycles = 8 MSPS / MAC unit 传统的基于 DSP 计算 - Serial 基于 FPGA 计算 - Parallelism0 码力 | 34 页 | 4.19 MB | 1 年前3
Hello 算法 1.0.0b4 Python版在无序区间抽出一张扑克牌,插入至有序区间的正确位置;完成后最左 3 张扑克已经有序。 4. 不断循环以上操作,直至所有扑克牌都有序后终止。 以上整理扑克牌的方法本质上就是「插入排序」算法,它在处理小型数据集时非常高效。许多编程语言的排 序库函数中都存在插入排序的身影。 Figure 1‑2. 扑克排序步骤 例三:货币找零。假设我们在超市购买了 69 元的商品,给收银员付了 100 元,则收银员需要给我们找 另一方面,数字零的原码有 +0 和 −0 两种表示方式。这意味着数字零对应着两个不同的二进制编码,而这 可能会带来歧义问题。例如,在条件判断中,如果没有区分正零和负零,可能会导致错误的判断结果。如果 我们想要处理正零和负零歧义,则需要引入额外的判断操作,其可能会降低计算机的运算效率。 +0 = 00000000 −0 = 10000000 与原码一样,反码也存在正负零歧义问题。为此,计算机进一步引入了「补码」。那么,补码有什么作用呢? com 42 单,更容易进行并行化处理,从而提高运算速度。 然而,这并不意味着计算机只能做加法。通过将加法与一些基本逻辑运算结合,计算机能够实现各种其他的 数学运算。例如,计算减法 ? − ? 可以转换为计算加法 ? + (−?) ;计算乘法和除法可以转换为计算多次加 法或减法。 现在,我们可以总结出计算机使用补码的原因:基于补码表示,计算机可以用同样的电路和操作来处理正数 和负数的加法,不0 码力 | 329 页 | 27.34 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Python 版“如果我当年学数据结构与算法的时候有《Hello 算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上,在计算机问世之前, 2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大的局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能表现。比如一个算法的并行度较高,那 么它就更适合在多核 CPU 上运行,一个算法的内存操作密集,那么它在高性能内存上的表现就会更好。也 就是说,算法在不同的机器上的测试结果可能是不一致的。这意味着我们需要在各种机器上进行测试,统计0 码力 | 364 页 | 18.43 MB | 10 月前3
8 4 Deep Learning with Python 费良宏 Mobile App @ 1.5 年 Cloud Computing @ 技术关注: 云计算:架构、大数据、计算优化 机器学习:深度学习、自然语言处理 语言:Python、Go、Scala、Lua Web:爬虫 2016的目标:Web爬虫+深度学习+自然语言处理 = ? Microso� Apple AWS 今年最激动人心的事件? 2016.1.28 “Mastering the game of 提高模型精度 什么是深度学习? "深度学习是机器学习的一个分支,是一组在多个层次上 学习的算法,分别对应不同级别的抽象" 深度学习 VS. 机器学习 ML 的算法包括监督学习和无监督学习 适用非线性处理单元的多层次的特征提取和转换 基于对多个层的特征或者表象的学习,形成一个由低级 到高级的层次结构特征 传统的机器学习关注于特征工程,深度学习关注于端到 端的基于原始数据的学习 为什么需要深度学习? 语音– 音频、频段、波长、调制等等 ... 深度学习的优势 特性自动推导和预期结果的优化调整 可变的自动学习的健壮性 重用性-相同的神经网络的方法可用于许多应用和数据 类型 通过利用GPU的大规模并行计算-可扩展的大容量数据 深度学习的开发框架 Torch (NYU,2002), Facebook AI, Google Deepmind Theano (University of Montreal0 码力 | 49 页 | 9.06 MB | 1 年前3
Hello 算法 1.1.0 Python版“如果我当年学数据结构与算法的时候有《Hello 算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上,在计算机问世之前, 2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 2‑5 尾递归过程 Tip 请注意,许多编译器或解释器并不支持尾递归优化。例如,Python 默认不支持尾递归优化,因此即 使函数是尾递归形式,仍然可能会遇到栈溢出问题。 3. 递归树 当处理与“分治”相关的算法问题时,递归往往比迭代的思路更加直观、代码更加易读。以“斐波那契数列” 为例。 Question 给定一个斐波那契数列 0, 1, 1, 2, 3, 5, 8, 13, …0 码力 | 364 页 | 18.42 MB | 1 年前3
Hello 算法 1.0.0 Python版2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 图 2‑5 尾递归过程 � 请注意,许多编译器或解释器并不支持尾递归优化。例如,Python 默认不支持尾递归优化, 因此即使函数是尾递归形式,仍然可能会遇到栈溢出问题。 3. 递归树 当处理与“分治”相关的算法问题时,递归往往比迭代的思路更加直观、代码更加易读。以“斐波那契数列” 为例。 � 给定一个斐波那契数列 0, 1, 1, 2, 3, 5, 8, 13, … ,求该数列的第 从本质上看,递归体现了“将问题分解为更小子问题”的思维范式,这种分治策略至关重要。 ‧ 从算法角度看,搜索、排序、回溯、分治、动态规划等许多重要算法策略直接或间接地应用了这种思维 方式。 ‧ 从数据结构角度看,递归天然适合处理链表、树和图的相关问题,因为它们非常适合用分治思想进行分 析。 2.2.3 两者对比 总结以上内容,如表 2‑1 所示,迭代和递归在实现、性能和适用性上有所不同。 表 2‑1 迭代与递归特点对比0 码力 | 362 页 | 17.54 MB | 1 年前3
Hello 算法 1.0.0b5 Python版2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都存在插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 24 图 2‑5 尾递归过程 请注意,许多编译器或解释器并不支持尾递归优化。例如,Python 默认不支持尾递归优化,因此即使函数 是尾递归形式,但仍然可能会遇到栈溢出问题。 3. 递归树 当处理与“分治”相关的算法问题时,递归往往比迭代的思路更加直观、代码更加易读。以“斐波那契数列” 为例。 � 给定一个斐波那契数列 0, 1, 1, 2, 3, 5, 8, 13, … ,求该数列的第 本质上看,递归体现“将问题分解为更小子问题”的思维范式,这种分治策略是至关重要的。 ‧ 从算法角度看,搜索、排序、回溯、分治、动态规划等许多重要算法策略都直接或间接地应用这种思维 方式。 ‧ 从数据结构角度看,递归天然适合处理链表、树和图的相关问题,因为它们非常适合用分治思想进行分 析。 2.3 时间复杂度 运行时间可以直观且准确地反映算法的效率。如果我们想要准确预估一段代码的运行时间,应该如何操作 呢? 1.0 码力 | 361 页 | 30.64 MB | 1 年前3
Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 6 文本处理服务 109 6.1 string --- 常见的字符串操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 14.3 netrc --- netrc 文件处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 14.3.1 netrc 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 16.2 io --- 处理流的核心工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 16.2.1 概述0 码力 | 2207 页 | 10.45 MB | 9 月前3
共 177 条
- 1
- 2
- 3
- 4
- 5
- 6
- 18













