交易中的OpenCL - 页 4

 

AMD 开发人员中心:OpenCL 技术概述。第 2 集:什么是 OpenCL™? (继续)



AMD 开发人员中心:OpenCL 技术概述。第 2 集:什么是 OpenCL™? (继续)

在本视频中,Justin Hensley 讨论了 OpenCL 的平台和内存模型,了解这些在使用 OpenCL 加速应用程序时非常重要。他解释说,主机连接到一个或多个 OpenCL 设备,例如 GPU 或多核处理器,这些设备具有在单指令多数据模型中执行代码的计算单元。工作项有私有内存,而工作组共享本地内存,每个设备都有全局和常量内存,开发人员必须显式管理内存同步和数据以获得最大性能。此外,Hensley 还讨论了 OpenCL 对象,例如设备、上下文、队列、缓冲区、图像、程序、内核和事件,这些对象用于向设备提交工作、同步和分析数据。最后,他概述了如何通过三个简单步骤执行 OpenCL 程序:创建程序和内核对象、创建内存对象以及创建带有事件的命令队列以确保正确的内核执行顺序。

  • 00:00:00 在本节中,Justin Hensley 解释了 OpenCL 的平台和内存模型,在使用 OpenCL 加速应用程序时理解这一点很重要。主机连接到一个或多个 OpenCL 设备(GPU、DSP 或多核处理器),这些设备具有在单指令多数据模型中执行代码的计算单元。在内存方面,主机处理器有只能由 CPU 访问的内存,而计算设备有全局和常量内存(非同步),每个工作项都有自己的私有内存,只有它可以访问。工作组有一个共享的本地内存,开发人员如果想从他们的设备中获得最大性能,就必须明确地管理内存同步和数据。最后,Hensley 讨论了 OpenCL 对象,例如设备、上下文、队列、缓冲区、图像、程序、内核和事件,它们用于向设备提交工作、同步和分析数据。

  • 00:05:00 在本节中,演讲者解释了如何通过三个简单的步骤执行 OpenCL 程序。首先,您创建程序对象来构建源代码和包含要在各种设备上运行的带参数代码的内核对象。其次,您创建内存对象,图像或缓冲区。第三,您创建命令队列并使用它们为不同设备排队工作,但工作顺序可能是有序的或乱序的。因此,事件用于确保内核在依赖项存在时按照所需的顺序执行。
Episode 2: What is OpenCL™? (continued)
Episode 2: What is OpenCL™? (continued)
  • 2013.05.27
  • www.youtube.com
In this video, you continue to learn about OpenCL™. We describe the details about the OpenCL™ platform and memory models. Topics covered include compute devi...
 

AMD 开发人员中心:OpenCL 技术概述。第 3 集:资源设置



AMD 开发人员中心:OpenCL 技术概述。第 3 集:资源设置

在 OpenCL 教程系列的第 3 集中,演讲者深入探讨了 OpenCL 中的资源设置和管理,涵盖了内存对象、上下文、设备和命令队列等主题。还讨论了访问和分配图像内存的过程,重点是读取和写入图像调用以及支持的格式。研究了同步和异步内存操作的特征,并解释了如何使用 OpenCL 事件管理系统来保证数据传输完成。最后,建议用户使用 CL get device info 调用查询设备信息,以选择最适合其算法的设备。

  • 00:00:00在本节中,AMD 的 Justin Hensley 讨论了 OpenCL 中的资源分配,特别关注内存对象和上下文以及设备设置。他解释了如何查询系统以查找可用设备、创建共享上下文以及设置命令队列以与设备通信。 Hensley 还指出,一个 CPU 的多个内核被视为一个 OpenCL 设备,不同环境中的设备不能共享数据。要为算法选择最佳设备,用户可以使用 CL get device info 调用查询 OpenCL 运行时的设备信息,以确定计算单元的数量、时钟频率、内存大小和支持的扩展。最后,Hensley 将缓冲区描述为简单的内存块,将图像描述为不透明的 2D 和 3D 格式数据结构。

  • 00:05:00在本节中,视频解释了 OpenCL 如何处理图像以及如何通过读取和写入图像调用来访问图像。还讨论了图像数据的格式和采样器,以及如何使用 CL 获取支持的图像格式调用来确定支持的格式。要分配图像缓冲区,请设置格式和大小,并使用 CL 创建缓冲区调用为输入和输出数据创建缓冲区对象。 CL in queue read和CL in queue right buffer分别是用来读写内存对象的命令。如果需要映射内存区域
    到主机地址空间,使用队列映射缓冲区中的 CL。最后,CLN 队列复制缓冲区用于在两个内存对象之间复制内存。

  • 00:10:00在本节中,演讲者解释了数据只能与分配在同一上下文中的内存对象共享,并且所有操作都可以同步或异步完成。当阻塞调用设置为 CL true 时,将执行同步操作,这意味着数据传输将阻塞,直到发生实际的内存操作。这可能需要一段时间,具体取决于内存的位置。或者,如果 CL 为 false,它将是一个异步调用,并且必须使用开放的 CL 事件管理系统来保证内存在使用前被完全复制。
Episode 3: Resource Setup
Episode 3: Resource Setup
  • 2013.05.27
  • www.youtube.com
In this video, you learn about resource allocation, resource setup and how to setup the OpenCL™ runtime. Topics include choosing devices, creating contexts a...
 

AMD 开发人员中心:OpenCL 技术概述。第 4 集:内核执行



AMD 开发人员中心:OpenCL 技术概述。第 4 集:内核执行

在本节中,Justin Hensley 介绍了 OpenCL 中的内核执行主题,解释了内核对象包含特定的内核函数并使用内核限定符声明。他分解了执行内核的步骤,包括设置内核参数和使内核入队。 Hensley 强调了使用事件来管理多个内核和防止同步问题的重要性,他建议使用 CL wait for events 等待它们完成后再继续。该视频还详细介绍了分析应用程序以优化执行时间最长的内核。

  • 00:00:00在本节中,Justin Hensley 讨论了 OpenCL 中的内核执行。他解释说,内核对象在程序中封装了一个特定的内核函数,并用内核限定符声明。程序对象封装了程序源或来自磁盘的预编译二进制文件和设备列表。一旦构建了程序对象,用户就可以在运行时为他们拥有的设备编译它。构建内核后,需要执行两个基本的执行步骤,即设置内核参数和使内核入队。要设置参数,用户可以使用名为“CL Set Kernel Arg”的函数,第一个参数是需要执行的内核。

  • 00:05:00在本节中,视频解释了如何设置参数的大小并实际执行内核。使用的示例是处理将全局尺寸设置为具有给定尺寸的图像高度的图像的图像。该视频解释了 OpenCL 运行时以异步方式对任务进行排队,因此由程序员使用事件来跟踪执行状态。该视频还解释了使用事件同步命令和在队列之间显式同步的不同方法。该视频提供了一个设备和一个队列以及两个设备和两个队列的示例,解释了使用事件来避免显式依赖问题的重要性。

  • 00:10:00在本节中,Justin Hensley 讨论了如何在使用 OpenCL 时管理内核和事件。他解释说,在管理多个内核和防止同步问题时使用事件很重要。他建议使用 CL wait for events,等待所有事件完成后再继续,in queue wait for events,在队列中排队一个块点供 OpenCL 运行时稍后使用,让应用程序继续运行而不会阻塞。此外,CL get event profiling info 可用于分析应用程序,以便开发人员可以优化执行时间最长的内核。
Episode 4: Kernel Execution
Episode 4: Kernel Execution
  • 2013.05.27
  • www.youtube.com
In this video, you learn about the execution and synchronization of OpenCL™ kernels. Topics include program and kernel objects, compiling and executing kerne...
 

AMD 开发人员中心:OpenCL 技术概述。第 5 集:使用 OpenCL™ C 进行编程



AMD 开发人员中心:OpenCL 技术概述。第 5 集:使用 OpenCL™ C 进行编程

该视频讨论了 OpenCL™ C 语言的各种特性,包括工作项函数、工作组函数、向量类型和内置同步函数。该视频强调了使用正确的地址空间限定符对于高效并行代码编写和工作组之间内存共享的重要性。详细讨论了矢量类型的概念以及内核指针参数、局部变量和程序全局变量的正确内存空间的使用。此外,内置数学函数和工作组函数(例如障碍和记忆)包含在运行时检查这些函数的建议。

  • 00:00:00 在本节中,AMD 的 Dustin Hensley 谈到了 OpenCL™ C 语言的特性,其中包括工作项函数、工作组函数、矢量类型和内置同步函数。 OpenCL基于ISO C99,没有标准的C99头文件、函数指针、递归、变长数组和位域的限制。在 OpenCL 中,地址空间限定符可以实现高效的并行代码编写,同时还可以在工作组之间共享内存。此外,还通过内置图像函数优化了对图像的访问,以及用于访问运行时信息的内置运行时函数。 Hensley 演示了一个使用工作项函数的简单数据并行内核,并展示了如何使用不同的 OpenCL 函数和变量来构建该内核。

  • 00:05:00 在本节中,讨论了 OpenCL 中矢量类型的概念。这些向量类型被设计为可移植到不同的运行时,并具有使它们在印度安全、按向量长度对齐并具有内置函数的某些特征。然后,该视频展示了向量操作的几个示例,例如创建向量文字和选择向量的特定组件。此外,需要注意的是,OpenCL 中有多个不同的地址空间,对内核指针参数、局部变量和程序全局变量使用正确的地址空间非常重要。未能指定内存空间可能会导致默认为私有并导致问题。

  • 00:10:00 在本节中,解释了在 OpenCL 中不允许使用指针将数据从全局、局部或私有内存空间转换到另一个内存空间。显式复制数据对于所需的内存空间是必要的。关于语义和转换,标量和指针转换遵循 C99 规则,向量类型不允许隐式转换。通过使用特定函数来确定在操作中执行的舍入类型,而不是依靠机器来处理它,突出了显式的重要性。 OpenCL 的内置数学函数(例如 log 函数)提供了不同的风格,例如全精度、半精度和本机函数,以更有效地处理不明确的 C99 库边缘情况,并且可以使用这种下划线类型或不同的方法在不同的数据类型之间切换将一种类型转换为另一种类型。

  • 00:15:00 在这段摘录中,演讲者讨论了 OpenCL C 的内置工作组功能和扩展。这些功能包括同步工具,例如允许内存同步的屏障和 Memphis。演讲者还谈到了使用工作组中的所有工作项来执行相同功能的重要性,而不是设置并非所有项目都会达到的障碍。此外,演讲者还谈到了各种扩展,包括原子函数和在编译时选择舍入模式。演讲者建议去规范阅读更多关于这些功能和扩展的信息,并在运行时检查它们。
Episode 5: Programming with OpenCL™ C
Episode 5: Programming with OpenCL™ C
  • 2013.05.27
  • www.youtube.com
In this video, you learn about the OpenCL™ C kernel language. Topics include work items and work groups, data types, vector operations, address spaces, type ...
 

如何将 OpenCL 用于 GPU 工作



如何将 OpenCL 用于 GPU 工作

该视频介绍了 OpenCL 作为一种开放标准工具,可以在 Windows 中的大多数新图形卡上运行,需要安装 CUDA 或特定的图形驱动程序,具体取决于卡。演讲者描述了一个简单的程序、创建内核的过程、数据缓冲区、设置内核参数和全局工作大小,以及在 OpenCL 中的设备上运行工作负载,并将其与 CUDA 进行比较。在 OpenCL 中创建用于 GPU 工作的内核、排队读取缓冲区、取消分配内存所涉及的参数已通过示例代码进行解释以检查计算。通过展示一个使用 OpenCL 对灰度图像应用细微模糊的小程序,演示者强调 OpenCL 的样板代码比 CUDA 多,但它是一种开放的标准解决方案,适用于不同的显卡,可以在不同的系统上重复使用,无论制造商如何。

  • 00:00:00 在本节中,演讲者介绍了 OpenCL 并讨论了它如何成为一种开放标准,可以与 Windows 中的大多数较新显卡一起工作,并要求根据显卡安装 CUDA 或特定显卡驱动程序。然后演讲者提供了一个简单的程序并描述了它在 OpenCL 中的工作原理,并将其与 CUDA 进行了比较。在设备上运行工作负载之前,它们会经历创建内核、创建数据缓冲区以及设置内核参数和全局工作大小的过程。

  • 00:05:00 在本节中,演讲者解释了在 OpenCL 中为 GPU 工作创建内核所涉及的参数。全局工作量参数是您要使用的单元数,而局部工作量参数是您希望在每个单元中做多少。全局工作大小需要是局部工作大小的某个倍数,虽然您可以在不指定全局本地工作大小的情况下运行工作,但最好同时设置两者,以便您知道您正在处理的维度。然后演讲者继续解释入队读取缓冲区,如何释放内存,并提供示例代码来检查所有计算是否正确完成。最后,演讲者将他们的示例与对图像进行模糊处理的工作负载进行比较,显示参数和元组的使用。

  • 00:10:00 在本节中,演讲者解释了对先前示例的代码更改,并介绍了一个内核,该内核将对图像执行细微的模糊处理。在创建不同大小的指针和缓冲区后,说话者在取回内存和释放指针之前向内核设置参数。最后,说话者读取灰度图像,将像素设置回结果,并将灰度图像写出。

  • 00:15:00 在本节中,演示者展示了一个使用 OpenCL 对灰度图像应用细微模糊的小程序。演示者指出,与 CUDA 相比,OpenCL 具有更多样板代码,建议使用类或对象来组织所有内核程序和命令队列变量。然而,主持人强调,OpenCL 是一种开放的标准解决方案,可以跨不同的图形卡工作,并且可以在不同的系统上重复使用,而无需将自己绑定到特定的品牌或制造商。总的来说,演示者提供了有关将 OpenCL 用于 GPU 工作的有用介绍。
How to use OpenCL for GPU work
How to use OpenCL for GPU work
  • 2018.03.04
  • www.youtube.com
We use OpenCL to run workloads on GPU and try a simple blur filter.Git repositoryhttps://github.com/kalaspuffar/openclPlease follow me on Twitterhttp://twitt...
 

EECE.6540 异构计算(马萨诸塞大学洛厄尔分校)



1. 并行处理简介及实例

该视频通过示例简要介绍了并行处理。演讲者解释说,并行计算涉及将较大的任务分解为较小的子任务以并行执行。实现这一目标的两个主要策略是分而治之和分散与聚集。该视频提供了自然和人造应用的示例,这些应用本质上具有很多并行性,例如人类感官、自动驾驶汽车和细胞生长。该视频还讨论了并行处理的好处,并演示了如何将其应用于排序、向量乘法、图像处理以及查找文本正文中字符串的出现次数。最后,视频介绍了归约过程,也称为求和过程,用于收集和处理从并行资源中获得的结果。

  • 00:00:00 在本节中,演讲者介绍了并行计算的概念,并解释了它涉及将较大的任务分解为较小的子任务以并行执行。实现这一目标的两个主要策略是分而治之和分散与聚集。演讲者给出了自然和人造应用的示例,这些应用本质上具有很多并行性,例如人类感官、自动驾驶汽车和细胞生长。此外,演讲者还提供了一个排序问题的示例,并解释了如何使用分而治之的策略来解决这个问题。

  • 00:05:00 在本节中,演讲者讨论了并行处理的两个示例,首先以使用合并排序的排序为例。长的未排序整数列表被分解为每组两个整数的更小的子问题,四个计算单元映射和比较子问题以获得最终的排序整数序列。讨论的第二个示例是向量乘法,它本质上是数据并行的,因为每个乘法运算都独立于其他运算。本题运算强度低,求解简单、速度快。演讲者还简要提到了算术强度的概念,以强调在不同类型的处理问题中计算和内存访问之间的权衡。

  • 00:10:00 在本节中,演讲者讨论了并行处理的优势以及它如何实现计算资源的高效利用。他解释说,通过并行处理,您可以同时执行多项计算,而无需不断地加载和卸载数据。引入了任务并行的概念,多个计算单元独立地处理不同的数据。图像处理的例子用于说明数据如何通过多个功能单元的管道传递以最大化计算。通过实现并行处理,计算单元可以同时工作,减少等待时间并提高计算速度。

  • 00:15:00 在本节中,将使用查找文本正文中字符串出现次数的示例进一步解释并行处理的概念。问题可以分为潜在匹配的比较,可以通过单个单词比较来完成,可以并行化。通过并行比较每个字母,还可以更精细地进行比较。数据集被分成更小的单元并行执行相同的操作,使得比较任务高度并行。

  • 00:20:00 这一节我们学习并行处理的第二阶段,即归约过程,也称为求和过程。在这里,收集阶段收集来自各个竞争对手的比较结果,并将它们收集起来进行后处理。最终结果是通过从并行资源中收集中间结果并将它们相加产生的。如果比较单元的输出显示匹配,则将所有这些输出相加后得到的最终数字表示一个词在原始文本中出现了多少次。
Brief Introduction to Parallel Processing with Examples
Brief Introduction to Parallel Processing with Examples
  • 2020.05.21
  • www.youtube.com
This video starts the series on Heterogeneous Computing. In this video we introduce the concept of parallel processing with some examples.If you are interest...
 

2. 并发、并行、数据和任务分解



2. 并发、并行、数据和任务分解

该视频深入探讨了并发和并行的概念,以及任务和数据分解的用法,以及用于并行和并发的数据分解技术。 Amdahl 定律被探索为在多处理器上运行任务时计算理论加速的一种方法。在将问题分解为子任务时,任务依赖关系图的重要性在识别任务间依赖关系时得到了强调。数据分解的方法,例如输入数据和行向量划分,被认为对执行计算有用。原子操作和同步被描述为在所有子任务完成后生成正确结果的关键。

  • 00:00:00 在本节中,视频介绍了并发和并行的概念。并发发生在两个或多个活动同时发生时,这些活动可能在不同的处理器上,甚至可能在采用分时技术的单个处理器上。另一方面,并行性严格意味着两个活动在不同的硬件执行单元(例如 CPU 或 FPGA)上同时执行。该视频还讨论了阿姆达尔定律,该定律用于计算在多个处理器上运行任务时的理论加速比。尽管有些任务必须保持串行,但可以重新设计为并行运行的任务可以使用处理单元执行,例如 GPU、FPGA 或多核处理器。

  • 00:05:00 在本节中,演讲者讨论了并行计算的概念以及它是如何在 CPU 架构中实现的,尤其是在 Intel 的奔腾处理器中。他们解释说,在传统的处理器架构中,指令级并行通常用于同时执行独立的指令,从而提高性能。然而,在他们的课程中,他们专注于任务和数据并行性以及如何使用算法和软件线程来利用这些更高级别的并行性。他们引入了任务分解和数据分解的概念,任务分解涉及将算法分解为单独的任务,数据分解涉及将数据集划分为可以并行操作的离散块。
     
  • 00:10:00 在本节中,视频讨论了任务依赖图的概念,以及在将问题分解为子任务时,它们如何有助于描述任务之间的关系。如果任务没有依赖关系,它们可以并行执行,这样可以更高效地处理。视频还介绍了数据分解的概念,即将数据分解成不同的任务进行计算。图像卷积和矩阵乘法的示例演示了如何使用输出数据来确定如何将数据分解为不同的组或分区。

  • 00:15:00 在本节中,演讲者讨论了并行和并发数据分解的不同技术。第一种技术涉及将数据划分为原始矩阵中的行向量,以进行一对一或多对一映射。第二种技术涉及输入数据分解,即一个输入数据对应多个输出数据。这方面的示例包括 tar gram 直方图和搜索子字符串。为了从这些中间数据部分计算最终结果,可能需要同步和原子操作以确保所有子任务完成并生成正确的结果。
Concurrency, Parallelism, Data and Task Decompositions
Concurrency, Parallelism, Data and Task Decompositions
  • 2020.05.21
  • www.youtube.com
This video compares concurrency with parallelism, and discusses decomposition methods to parallelize a task.
 

3. 并行计算:软件和硬件



3. 并行计算:软件和硬件

该视频讨论了在计算中实现高水平并行性的不同方法。演讲者描述了用于执行并行计算的硬件和软件技术,包括指令级并行 (ILP)、软件线程、多核 CPU、SIMD 和 SPMD 处理器。该视频还解释了并行密度的重要性和计算/处理单元的概念,它们可以实现高效的并行计算。此外,演讲者还讨论了为同步目的创建原子操作的挑战,以及重组问题以在 GPU 上高效执行的必要性。

  • 00:00:00 在本节中,演讲者讨论了实现高水平并行性的不同方法。在处理器设计的早期,人们依靠指令级并行(ILP)和软件线程来实现并行。然而,这些设计不是自动完成的,程序员需要在设计这些软件应用程序方面有经验。在硬件方面,有不同类型的处理器可用于并行计算任务。多核 CPU 专为任务并行性而设计,而 SIMD 处理器旨在利用数据并行性。 GPU 最适合数据并行任务,因为它们可以在数百甚至数千个内核上同时执行多个数据。

  • 00:05:00 在本节中,演讲者讨论了并行计算中常用的 SIMD 和 SPMD 的概念。 SIMD代表单指令多数据,其中每个内核可以同时对不同的数据执行操作。另一方面,SPMD 代表单程序多数据,其中同一程序的多个实例独立地处理数据的不同部分。 Loop strip mining是一种在独立处理器之间拆分数据并行任务的流行技术,它可以利用向量单元同时执行迭代。演讲者提供了一个使用带有循环挖掘的 SPMD 的矢量加法示例,其中每个程序都在数据的不同部分上运行。

  • 00:10:00 在本节中,演讲者使用将每个数据块作为独立线程执行的示例,解释了不同的处理器如何在并行计算中处理数据的不同部分。为 GPU 创建线程的成本很高,因此每个处理器上的计算量应该更大,称为并行密度。对于FPGA,创建线程的开销很低,所以可以有大量的SGMD执行实例。单指令多数据 (SIMD) 允许同时对多个数据执行一条指令,许多算术逻辑单元 (ALU) 一起执行指令。并行算法可以减少控制流和其他有利于 ALU 单元的硬件的数量。
     
  • 00:15:00 在本节中,演讲者解释了芯片内用于计算的计算/处理单元的概念。它们可以同时获取数据输入和执行操作,从而实现高效的并行计算。该架构基于 SMID(单指令多数据),广泛应用于 GPU 硬件。演讲者强调了原子操作对于同步目的的重要性,但警告了这些操作的巨大开销成本。使用输入数据分区分解的问题可能需要重组才能在 GPU 上高效执行。
Parallel Computing: Software and Hardware
Parallel Computing: Software and Hardware
  • 2020.05.21
  • www.youtube.com
This video introduces the general characteristics of parallel computing, the associated software and hardware methods.
 

4. 两篇关于异构处理器的重要论文



4. 两篇关于异构处理器的重要论文

该视频涵盖了与异构计算相关的各种论文,包括处理器设计和能源效率的趋势、使用定制硬件和专用加速器的好处、平衡大小内核的重要性,以及数据移动和内核之间高效通信的挑战。这些论文还讨论了在使用异构处理器以及使用 OpenCL、CUDA 和 OpenMP 等编程语言和框架时了解调度和工作负载分区的必要性。总的来说,这些论文强调了利用多核和加速器在异构计算环境中最大限度地提高性能和能效的潜在好处。

  • 00:00:00 在本节中,演讲者讨论了过去十年中发表的两篇与异构计算相关的重要论文。第一篇论文讨论了从单处理器内核到多内核的趋势,以及如何有效利用未搭载的晶体管来获得更高的性能。第二篇论文是一篇调查论文,讨论了计算机架构师、程序员和研究人员如何朝着更加合作的方式共同使用 CPU 和 GPU 以最大限度地提高性能和利用率。演讲者还谈到了通过使用异构内核和加速器从单核性能转向分子性能或吞吐量性能的趋势。文字记录还包括一张图表,显示了从 1971 年到 2009 年单个芯片上晶体管数量的增加,并强调了使用异构计算的主要好处。

  • 00:05:00 在本节中,视频讨论了晶体管缩放以及它如何允许在单个芯片上容纳更多晶体管,从而提高性能和能效。然后,该视频展示了一个图表,展示了用于设计微处理器的不同技术,例如添加更多内核或实现推测执行。虽然每年的性能没有显着提高,但能源效率提高了近五倍,允许以更高的吞吐量执行更多的任务。视频还介绍了波洛克法则,这是对处理器性能的简单观察。

  • 00:10:00 在本节中,演讲者讨论了处理器的性能随着晶体管面积或数量的增加而增加。这些因素之间的关系近似于晶体管数量的平方根。另一方面,DRAM 密度每两年增加近一倍,但读/写速度方面的性能却跟不上。总能量预算是平坦的,因此即使减小晶体管尺寸和增加晶体管数量也不会显着提高性能。随着晶体管尺寸的减小,泄漏功率成为主要因素,这意味着仅依靠频率增加、电源电压降低以及连接和电线的电容无法实现预期的性能目标,例如太比特或更多操作。

  • 00:15:00 在本节中,演讲者讨论了异构处理器中多核的设计,强调拥有统一的大核可能没有好处。相反,使用固定或可编程加速器定制硬件并将逻辑与内核相结合可以更好地利用内核。演讲者举了一个例子,其中具有 30 个较小内核(每个 500 万个晶体管)的设计优于具有 6 个较大内核(每个 2500 万个晶体管)的设计,同时使用相同的晶体管总数(1.5 亿)。吞吐量和单核性能之间的权衡也可以通过保持大核和小核之间的平衡来优化。

  • 00:20:00 在本节中,演讲者讨论了异构处理器在定制硬件中的使用,以及使用更小的定制内核而不是通用 CPU 内核的优势。通过利用专用逻辑构建乘法器或 FFT 单元等功能单元,设计人员可以实现比通用设计更高的能效。此外,本文还讨论了数据移动的挑战,以及拥有高效内存层次结构和互连对于内核之间高效通信的重要性。该论文建议为专用加速器和内核分配 10%,而不是传统的 90%,用于构建超标量乱序处理器以实现更好的单线程性能。

  • 00:25:00 在本节中,视频讨论了两篇关于异构处理器的论文。第一篇论文讨论了数据移动和能源效率面临的挑战。一种设计趋势是电压缩放允许以不同的速度运行不同的内核,这可以根据工作负载和任务调度大大降低能耗。第二篇论文讨论了大规模并行化和具有不同大小和灵活频率和电压的异构内核的趋势。此外,还有一种趋势是使用内置在芯片上的不同硬件加速器,并专注于高效的数据定位以减少不必要的数据移动。该论文承认不同 CPU 架构的独特优势,并设计算法以匹配未来的 CPU 功能。

  • 00:30:00 在本节中,演讲者讨论了在使用 CPU FPGA 等异构处理器时理解调度技术和工作负载分区的重要性。调度涉及决定子任务何时应在特定处理器上运行,而工作负载分区处理数据和任务分区。演讲者还提到了用于不同类型处理器的各种编程语言和框架,如 OpenCL、CUDA 和 OpenMP。
Two Important Papers about Heterogeneous Processors
Two Important Papers about Heterogeneous Processors
  • 2020.05.21
  • www.youtube.com
This video provides an overview of two important papers on the design and programming of heterogenous processors/systems.S. Borkar and A. Chien, The Future o...
 

五、计算硬件概述



五、计算硬件概述

该视频概述了计算硬件,讨论了处理器架构、设计注意事项、多线程、缓存、内存层次结构和控制逻辑设计等主题。它还解释了程序如何成为计算机执行任务所遵循的一组指令以及不同类型的程序,包括系统软件和应用程序。该视频强调了计算机硬件组件(例如 CPU 和内存)的重要性,它们协同工作以执行程序和执行任务。

  • 00:00:00 在本节中,演讲者介绍了课程中将涵盖的主题,其中包括处理器架构和创新、架构设计空间、CPU 和 GPU 架构,以及作为高性能新兴架构的 FPGA。演讲者还谈到了 OpenCL 的起源,以及它是如何被不同的供应商根据他们提供的处理器逐渐塑造的,从而产生了一个宽松的基于块的一致性范例模型,从而实现了平台独立性。 OpenCL 程序的性能仍然取决于实现、算法及其与硬件架构的映射程度。不同处理器的设计需要很多考虑和权衡,例如是单核处理器还是多核处理器。

  • 00:05:00 在本节中,视频解释了计算硬件的一些设计注意事项,例如超标量内核和指令调度。该视频还讨论了多线程作为增加处理器可以处理的有用工作量的一种方式,以及缓存和内存层次结构的重要性。处理器的异构性变得越来越普遍,其中包括带有 GPU 的 CPU、FPGA 以及大小内核。最后,控制逻辑的设计至关重要,它可以重新排序指令以利用复杂控制流中的指令级并行性。

  • 00:10:00 在本节中,视频解释了程序是计算机为执行特定任务而遵循的一组指令。该程序由用编程语言编写的代码组成,然后将其编译或解释为计算机可以理解的机器语言。该视频继续描述不同类型的程序,包括操作系统和设备驱动程序等系统软件,以及文字处理器和游戏等应用程序。计算机的硬件组件,如 CPU 和内存,协同工作以执行这些程序并执行所需的任务。
Overview of Computing Hardware
Overview of Computing Hardware
  • 2020.05.22
  • www.youtube.com
This video introduces hardware tradeoffs and conventional CPU architecture.
原因: