首页 > 其他分享 >OpenCL Notebook 1

OpenCL Notebook 1

时间:2023-08-15 22:11:49浏览次数:45  
标签:宿主机 模型 OpenCL 并行 Notebook 内存 内核

平台模型

  • OpenCL平台总是包括一个宿主机(host)。宿主机与OpenCL程序外部的环境交互,包括I/O或与程序用户的交互。宿主机与一个或多哥OpenCL设备连接。OpencL设备通常称为计算设备,设备可以是CPU,GPU、DSP或硬件提供以及OpenCL开发商支持的任何其他处理器。
  • OpenCL进一步划分为计算单元,而计算单元还可以进一步划分为一个或多个处理单元。

执行模型

执行模型主要指出内核如何执行,它们与宿主机如何交互,以及它们与其他内核如何交互。这是一个“以硬件为中心”的模型。

  • OpenCL应用由两个不同部分组成:宿主机程序(host program)和一个或多个内核(kernel)组成的集合。
    PS:内核通常指的是一些简单的函数,将输入内存对象转换为输出内存对象。
  • OpenCL定义了两类内核:
    • OpenCL内核:用OpenCL C编程语言编写并用OpenCL编译器编译的函数。所有OpenCL实现都必须支持OpenCL内核。
    • 原生内核:OpenCL之外创建的函数,在OpenCL中可以通过一个函数指针来访问。

内存模型

OpenCL定义了两种类型的内存对象:缓冲区对象和图像对象。

缓冲区对象: 就是内核可用的一个连续的内存区。
图像对象: 图像对象仅限于存储图像,图像内存对象是一个不透明的对象,图像对象的内容对于内核程序是隐藏的。

OpenCL内存模型定义了5种不同的内存区域,分别是:宿主机内存、全局内存、常量内存、局部内存和私有内存。

编程模型

使用编程模型将并行算法映射到OpenCL。
OpenCL定义了两种不同的编程模型:任务并行和数据并行

  • 数据并行编程模型:
    数据并行关注于在多个处理器核心之间同时执行相同的操作,但处理不同的数据元素。数据并行模型中一个任务分解成针对数据集各元素的多个相同子任务。然后将这些子任务分配给不同的处理核心。。例如:一个数组中的所有元素分别乘以2,在这种情况下,我们可以让许多个处理器并行计算,一个处理器负责一个数组元素的乘法运算。数据并行更适用于那些需要对大量数据执行相同操作的任务。

  • 任务并行编程模型:
    任务并行关注于在多个处理器核心之间执行不同的任务。每个核心运行一个独立的、不同的任务,但可能共享某些资源(比如内存)。这种并行模式有助于在多核处理器系统上提高吞吐量。任务并行更适用于那些一组组相互独立、没有什么相关性或直接联系的计算任务。

其他编程模型

程序员完全可以结合OpenCL的编程模型来创建各种复合编程模型

标签:宿主机,模型,OpenCL,并行,Notebook,内存,内核
From: https://www.cnblogs.com/peixu/p/17632264.html

相关文章

  • 改大蟒蛇Anaconda中Jupyter Notebook默认工作路径
    先用大蟒蛇的终端生成配置文件输入jupyternotebook--generate-config然后会告诉你生成文件的地址。文本模式打开该文件搜索“Thedirectorytousefornotebooks”,把下面的取消注释,写好文件目录重启即可......
  • docker--k8s---终端terminal和普通程序以及jupyter notebook-创建永久的静态环境变量-
    终端terminal和普通程序linux系统的中主要有两种启用系统环境的情况,一种是用户登录,比如进入bash或者sh等命令行操作shell界面,一种是用户不登录,而是程序自动运行。根据两种情况,适用的创建永久的环境变量的方式就会有所不同。创建永久的静态环境变量静态环境变量是指内容不会变......
  • Jupyter Notebook 遇上 NebulaGraph,可视化探索图数据库
    在之前的《手把手教你用NebulaGraphAI全家桶跑图算法》中,除了介绍了ngai这个小工具之外,还提到了一件事有了JupyterNotebook插件:https://github.com/wey-gu/ipython-ngql,可以更便捷地操作NebulaGraph。本文就手把手教你咋在JupyterNotebook中,愉快地玩图数据库。只......
  • Jupyter Notebook 遇上 NebulaGraph,可视化探索图数据库
    在之前的《手把手教你用NebulaGraphAI全家桶跑图算法》中,除了介绍了ngai这个小工具之外,还提到了一件事有了JupyterNotebook插件:https://github.com/wey-gu/ipython-ngql,可以更便捷地操作NebulaGraph。本文就手把手教你咋在JupyterNotebook中,愉快地玩图数据库。只......
  • 教程:开始使用 Microsoft Sentinel 中的 Jupyter Notebook 和 MSTICPy——威胁狩猎用,含
    教程:开始使用MicrosoftSentinel中的JupyterNotebook和MSTICPy项目2022/05/026个参与者  备注AzureSentinel现在称为MicrosoftSentinel,我们将在几周内更新相关页面。详细了解最近的Microsoft安全性增强。本教程介绍如何运行“MicrosoftSentinelMLNotebook入门......
  • OpenCloudOS 与PolarDB全面适配
    近日,OpenCloudOS开源社区签署阿里巴巴开源CLA(ContributionLicenseAgreement,贡献许可协议),正式与阿里云PolarDB开源数据库社区牵手,并展开OpenCloudOS(V8)与阿里云开源云原生数据库PolarDB分布式版、开源云原生数据库PolarDBPostgreSQL版兼容性适配。经过......
  • Jupyter Notebook配置conda环境
    一、先创造自己所需的conda环境#进入虚拟环境activatetensorflow#安装jupyter和notebook(这一步可能能省掉,没有测试,不确定)pipinstalljupyternotebook#安装ipykernel,并进行相关操作pipinstall--useripykernel#若想多个环境集成,--user必填。有这个选项后......
  • Jupyter notebook中添加conda虚拟环境
    安装完Anaconda利用conda创建了虚拟环境,但是启动jupyternotebook之后却找不到虚拟环境。原因:是由于在虚拟环境下缺少kernel.json文件。步骤:1、首先激活之前创建好的虚拟环境:activate环境名称2、安装ipykernel:pythoncondainstallipykernel3、将环境写入notebook的kern......
  • notebook目录显示设置
    打开AnacondaPrompt窗口,执行第一个命令,用于安装nbextensions:pipinstalljupyter_contrib_nbextensions再执行第二个命令,用于安装javascriptandcssfilesjupytercontribnbextensioninstall--user如果这个报错,就换成下面这个jupytercontrib-nbextensioninstal......
  • jupyter Notebook:魔法命令
    JupyterNotebook是一个开源的交互式编程环境,用于创建和共享包含实时代码、文本、图像和可视化输出的文档。它交互式的编程方式是一大亮点,因为我们在数据分析的过程中,常常是一边分析,一边看分析结果,根据分析结果再调整数据或者分析参数。有了 JupyterNotebook,代码和运行结果可......