什么样的工作受益于 OpenCL

2024-01-07

首先:

  • 我很清楚 OpenCL 并没有神奇地让一切变得更快
  • 我很清楚 OpenCL 有局限性

现在回答我的问题,我习惯使用编程进行不同的科学计算。我处理的一些事情在计算的复杂性和数量方面非常激烈。所以我想知道,也许我可以使用 OpenCL 来加快速度。

所以,我很想听到你们对以下一些问题的回答[链接奖励]:

*什么样的计算/算法/一般问题适合OpenCL

*确定某些特定代码是否可以通过迁移到 OpenCL 受益的一般准则是什么?

Regards


我认为这是一个很好的问题,也是我自己的研究中试图解决的问题。

目前,GPU 的功能存在很大的限制,因为它们需要各个线程在不同的数据集上执行完全相同的代码,即问题/算法必须是“数据并行”。显然,数据并行问题包括蒙特卡罗模拟(其中许多MC模拟是并行执行的)、图像处理和不太明显的分子动力学模拟。数值积分(蒙特卡罗或其他)是另一种可以轻松移植到 GPU 上运行的科学应用程序。

另一个主要限制是每个线程的内存非常有限,因此为了在 GPU 上有效执行,算法必须具有高算术强度。算法成为在 GPU 上运行的候选者的必要但非充分条件是,在 CPU 上,该算法必须是强 CPU 绑定的,而不是内存绑定的。

我的观点是,随着时间的推移,越来越多的问题将被硬塞出来,以便可以使用这种范例来解决它们,因为可以实现如此大的性能增益,但容易实现的目标是明显的数据并行问题。在我看来,未来十年,大规模多核编程将在科学界变得越来越重要和普遍。

我对此进行了一些尝试,并设法将回溯问题硬塞到适合在 GPU 上执行的格式(使用 CUDA)。仅供参考,我在一次演讲中对此进行了描述:http://lattice.complex.unimelb.edu.au/home/sites/default/files/mydocuments/clisby_cuda0509.pdf http://lattice.complex.unimelb.edu.au/home/sites/default/files/mydocuments/clisby_cuda0509.pdf

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么样的工作受益于 OpenCL 的相关文章

  • 在 OpenCL 中,mem_fence() 与 Barrier() 相比有何作用?

    Unlike barrier 我想我明白 mem fence 不影响工作组中的所有项目 OpenCL 规范指出 第 6 11 10 节 对于mem fence 命令加载和存储执行内核的工作项 所以它适用于single工作项 但同时 在第 3
  • OpenCL 中的矩阵求逆

    我正在尝试使用 OpenCL 加速一些计算 算法的一部分包括反转矩阵 是否有任何开源库或免费可用的代码来计算用 OpenCL 或 CUDA 编写的矩阵的 lu 分解 lapack dgetrf 和 dgetri 或一般求逆 该矩阵是实数且为
  • 工作组之间的 OpenCL 同步

    是否可以同步 OpenCL 工作组 例如 我有 100 个工作组 每个工作组只有一个项目 不要问我为什么 这是一个例子 我需要对每个工作项设置障碍 以确保所有工作组都会在这 100 个工作组中的每个工作项达到此障碍点后继续 不 你不能 您可
  • 如何在 OpenCL 中验证波前/扭曲大小?

    我使用的是 AMD Radeon HD 7700 GPU 我想使用以下内核来验证波前尺寸是否为 64 kernel void kernel test warpsize global T dataSet uint size size t id
  • OpenCL 产生错误的计算

    我一直尝试使用openCL做一些计算 但结果不正确 我输入了三个 float3 如下所示 300000 0 0 300000 300000 0 300000 300000 300000 进入这个内核 kernel void gravitat
  • 为什么 AMD GCN 使用非零 NULL?

    这次提交 https reviews llvm org rL289252 says In amdgcn https en wikipedia org wiki Graphics Core Next目标 全局 常量和通用地址空间中的空指针取值
  • 有多少线程(或工作项)可以同时运行?

    我是 GPGPU 编程新手 正在研究 OpenCL 的 NVIDIA 实现 我的问题是如何计算 GPU 设备的限制 线程数 据我了解 有许多工作组 相当于 CUDA 中的块 其中包含许多工作项 cuda 线程 如何获取我的卡上存在的工作组数
  • OpenCL C/C++ 动态绑定库(win32 及更多)

    我正在尝试 OpenCL 为了将其投入生产 我希望能够动态绑定到 OpenCL DLL 在 Windows 下 以便 优雅地 处理没有 OpenCL 的情况安装在主机上 是否有任何可用的库 或代码片段 可以在 C 或 C 中处理这种动态绑定
  • 合理化我的简单 OpenCL 内核中有关全局内存的情况

    const char programSource kernel void vecAdd global int a global int b global int c int gid get global id 0 for int i 0 i
  • Linux 上的 OpenCL,集成英特尔图形芯片

    我想用OpenCL在 Debian 8 上 我读到在本页 http streamcomputing eu blog 2011 12 29 opencl hardware support Linux 上不支持 Intel 的 GPU 这篇文章
  • 如何消除 opencl 代码中的 CL_INVALID_PLATFORM 错误?

    使用 OpenCL 进行简单的矩阵乘法 Multiply two matrices A B C include
  • boost::计算流压缩

    如何使用 boost compute 进行流压缩 例如 如果您只想对数组中的某些元素执行繁重的操作 首先 生成掩码数组 其中包含与要执行操作的元素相对应的元素 mask 0 0 0 1 1 0 1 0 1 然后对掩码数组进行排它扫描 前缀和
  • 在 Windows 8 (x64) 中安装期间出现 PyOpenCL“致命错误:CL/cl.h:没有此类文件或目录”错误

    在大量搜索此问题的解决方案后 我发现此特定错误尚未针对 Windows 正确记录 所以我决定将这个问题与解决方案一起发布 抱歉 如果我将其发布在错误的部分 我希望这个解决方案能够帮助用户解决未来 PyOpenCL 安装错误 请注意 此处使用
  • 如何在 Windows 上的 nvidia GPU 的 Visual Studio 2010 中配置 OpenCL?

    我在华硕笔记本电脑上的 Wwindows 7 操作系统上使用 NVIDIA GeForce GTX 480 GPU 我已经为 CUDA 4 2 配置了 Visual Studio 2010 如何在 Visual Studio 2010 上为
  • OpenCL:在内核中手动引发异常

    是否可以在 OpenCL 中手动引发异常 仅用于调试目的 我的代码中有一个非常奇怪的错误 当我计算两个双精度值并将它们相加时 主机报告 CL OUT OF RESOURCE 但是 如果我不添加这两个值 主机不会报告任何错误 OpenCL 不
  • 杀死 OpenCL 内核

    有没有办法通过 OpenCL API 终止正在运行的 OpenCL 内核 我在规范中没有找到任何内容 我能想到的唯一解决方案是 1 定期检查内核中主机希望内核停止时写入的标志 或 2 在单独的进程中运行内核并终止整个进程 我认为这两个都不是
  • 官方 OpenCL 2.2 标准是否支持 WaveFront?

    众所周知 AMD OpenCL 支持 WaveFront 2015 年 8 月 http amd dev wpengine netdna cdn com wordpress media 2013 12 AMD OpenCL Programm
  • OpenCL 何时使用全局、私有、本地、常量地址空间

    我正在尝试学习 OpenCL 但我很难决定使用哪些地址空间 因为我只找到组装的资源声明这些地址空间是什么 但没有声明它们为什么存在或何时使用它们 资源至少太分散了 所以带着这个问题我希望把所有这些信息汇总一下 所有地址空间是什么 它们为什么
  • 如何在 Emgu CV 项目中利用 OpenCL

    我是使用 Emgu CV 的新手 并开始创建小型示例项目 例如面部检测 眼睛检测等 如果我可以利用 OpenCL 来加速使用 GPU 的过程 那就太好了 否则 当我降低scaleFactor时 它会导致大量的CPU利用率 我怎样才能做到这一
  • 用 OpenCL C 编写快速线性系统求解器

    我正在编写一个 OpenCL 内核 它将涉及求解线性系统 目前我的内核太慢了 提高线性系统部分的性能似乎是一个不错的起点 我还应该注意 我并没有尝试使我的线性求解器并行 我正在研究的问题在宏观层面上已经是令人尴尬的并行 以下是我编写的 C

随机推荐

  • 使用 doLast 的 Gradle 执行任务失败

    仅当文件自上次构建以来已更新时 我才尝试运行执行任务 我最初的尝试是这样的 task generateLocalizedStrings type Exec ext srcFile file localization language fil
  • MVC 查看可为空的日期字段格式

    我试图在视图中显示以下内容 但出现问题 td item CreatedByDt ToString MM dd yyyy td 关于如何处理视图中可为空的日期字段的任何想法 顺便说一句 我正在使用 Razor 我收到以下错误 方法 ToStr
  • 减少 solr 结果输出中类似的顶部结果

    我在 solr 中进行了一次搜索 返回了大约 1500 个文档 这些文档基本上都是产品 例如 我的数据集中有一堆女鞋 我的数据集有各种各样的女鞋 但也有一些非常相似的结果 例如 11 号女式耐克运动鞋 10 号女式耐克运动鞋等 现在 当我搜
  • PDFBOX - 使用 easytable 的所有页面中的页眉

    我正在使用 pdfbox 和 easytablehttps github com vandeseer easytable https github com vandeseer easytable用于创建效果很好的动态页面 但我确实希望在所有
  • Matplotlib 多条动画多行

    我一直在研究如何为飞行路径制作多条线的动画 我读取多个 GPS 文件的对象是时间同步它们 它们相对于时间为每条路径设置动画 我找到了如何在动画函数中使用附加来为一行添加动画 现在我需要添加第二个和第三个 以便导入尽可能多的文件 我知道问题出
  • 无法在有关 iron lib 的 fn 项目中捕获动态环境

    我使用c c 驱动的cassandra来查询 然后返回数据 因此 cass LinkedList 和cass it Vec 都可以显示查询的结果 但是 我想使用json格式将结果显示到web上 所以我选择使用vec重新组装数据 然而 有一个
  • 使用并行 NetCDF 保存分布式 3D 复杂数组

    我有一个用 Fortran 编写的基于 MPI 的程序 它在每个节点 2D 时间序列的部分 生成复杂数据的 3D 数组 我想使用并行 I O 将这些数组写入单个文件 该文件可以相对轻松地在 python 中打开以进行进一步分析 可视化 理想
  • 如果我从服务层公开 IQueryable,那么当我需要从多个服务获取信息时,数据库调用不是会减少吗?

    如果我从服务层公开 IQueryable 那么当我需要从多个服务获取信息时 数据库调用不是会减少吗 例如 我想在一个页面上显示 2 个单独的列表 Posts and Users 我有两个单独的服务提供这些服务的列表 如果两者都提供 IQue
  • 在 Emacs 中编译程序?

    在 emacs 中编译程序的最佳方法是什么 我目前正在打开一个单独的缓冲区C x 3并在其中运行 eshell 使用M x eshell然后直接调用 make 或 clang 大多数时候我确实设置了 Makefile 使用运行编译过程有什么
  • Apache Tiles 替代品

    我正在编写一个 Spring MVC 应用程序 并寻找一种在视图中进行布局的方法 我看到的唯一选择是 Apache Tiles 我以前使用过它并且知道维护其配置是多么痛苦 有什么好的选择吗 我在看SiteMesh http www site
  • Gitlab CI 如何使用规则语法忽略目录?

    我能够使用以下语法忽略目录 文件更改 build script npm run build except changes md src ts 有了这个配置build作业将运行 除非 git 更改仅包含 md扩展文件或 ts文件在src目录
  • requiredFieldValidator 不适用于下拉列表

    我有一个Dropdownlist在我的网页中如下
  • 使用 python range 对象索引 numpy 数组

    我以前见过它一两次 但我似乎找不到任何关于它的官方文档 Using pythonrange对象作为 numpy 中的索引 import numpy as np a np arange 9 reshape 3 3 a range 3 rang
  • 从 Woocommerce 3.4+ 中“我的帐户编辑地址”字段中删除(可选)文本

    我正在尝试删除 span class optional optional span 从 WooCommerce 我的帐户编辑地址页面 还有其他方法可以做到这一点吗 optional display none 我认为最好将其从表单中的 DOM
  • QTimer 随着每次启动/停止而变得更快

    我正在使用一个QTimer平滑地改变标签的大小 当我将鼠标悬停在按钮上时 它应该慢慢增大 当鼠标离开按钮时 它应该慢慢折叠 减小它的大小直到消失 我的表单类中有两个计时器 QTimer oTimer cTimer oTimer for ex
  • .NET BCL 中的跟踪与调试

    看来 System Diagnostics Debug https msdn microsoft com en us library system diagnostics debug v vs 110 aspx and System Dia
  • Docker 中的 Mariadb:MariaDB Connector/Python 需要 MariaDB Connector/C >= 3.2.4,发现版本 3.1.16

    我尝试以下 Dockerfile syntax docker dockerfile 1 FROM python 3 11 slim bullseye EXPOSE 80 WORKDIR app RUN apt get update apt
  • 热键、快捷键和加速键有什么区别?

    他们有什么区别呢 在Qt中 如果我有QPushButton的热键 我可以通过 Alt 来实现 但如果是qaction 我可以按 仅有的 In Windows an accelerator key is application global
  • 使用python调整两个字符串之间的1个空格

    我有两个字符串 gt gt gt a abcd gt gt gt b xyz gt gt gt c a b gt gt gt c abcdxyz 我怎样才能得到abcd xyz结果添加时a and b 只需在两个字符串之间添加一个空格即可
  • 什么样的工作受益于 OpenCL

    首先 我很清楚 OpenCL 并没有神奇地让一切变得更快 我很清楚 OpenCL 有局限性 现在回答我的问题 我习惯使用编程进行不同的科学计算 我处理的一些事情在计算的复杂性和数量方面非常激烈 所以我想知道 也许我可以使用 OpenCL 来