什么样的工作受益于 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 的相关文章

  • 使用 GPU PyOpenCL 优化 python 代码的不同方法:内核 GPU/PyOpenCL 内的 extern 函数

    我使用以下命令来分析我的 Python 代码 python2 7 m cProfile o X2 non flat multiprocessing dummy prof X2 non flat py 然后 我可以全局可视化不同贪婪函数的重新
  • 有关 OpenCL 内核编程的教程或书籍? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我认为这个问题足够具体 只是为了说清楚 我不是在寻找参考 而是在寻找教程 我对内核编程方面特别感兴趣 市
  • 工作组之间的 OpenCL 同步

    是否可以同步 OpenCL 工作组 例如 我有 100 个工作组 每个工作组只有一个项目 不要问我为什么 这是一个例子 我需要对每个工作项设置障碍 以确保所有工作组都会在这 100 个工作组中的每个工作项达到此障碍点后继续 不 你不能 您可
  • OpenCL 双精度与 CPU 双精度不同

    我正在 Linux 中使用 GeForce GT 610 卡进行 OpenCL 编程 我的CPU和GPU双精度结果不一致 我可以在这里发布部分代码 但我首先想知道是否有其他人遇到过这个问题 当我运行多次迭代的循环时 GPU 和 CPU 双精
  • 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 中处理这种动态绑定
  • PyOpenCL 矩阵乘法

    我有使用 pyopenCL 进行矩阵乘法的代码 我的问题是某些矩阵的结果是错误的 我不明白为什么 经过一番研究后 我认为它与类似的全球规模有关 但我不明白如何设置该值 例如 使用 numpy dtype float32 的矩阵 矩阵1 0
  • scipy ode 将函数集内的 set_f_params 更新为 set_solout

    将 ode 与 scipy 集成时 ode 接受参数多于 t 和 y 的函数 例如 def fun t y param1 param2 这些参数的值可以使用设置set f params method 然而 当同时使用set solout方法
  • Linux 上的 OpenCL,集成英特尔图形芯片

    我想用OpenCL在 Debian 8 上 我读到在本页 http streamcomputing eu blog 2011 12 29 opencl hardware support Linux 上不支持 Intel 的 GPU 这篇文章
  • 如何在 Docker 容器内运行 OpenCL + OpenGL?

    目的是在 Docker 容器内运行 OpenCL OpenGL 互操作 应用程序 但我还没有成功 Intro 我有配备 NVidia 显卡的笔记本电脑 因此我认为利用 NVidia Dockerfiles 1 2 将是一个很好的起点 以下
  • 如何在 Windows 上的 nvidia GPU 的 Visual Studio 2010 中配置 OpenCL?

    我在华硕笔记本电脑上的 Wwindows 7 操作系统上使用 NVIDIA GeForce GTX 480 GPU 我已经为 CUDA 4 2 配置了 Visual Studio 2010 如何在 Visual Studio 2010 上为
  • 使用 OpenCL 或其他 GPGPU 框架在现代 x86 硬件上的 CPU 和 GPU 之间共享数据

    AMD Kaveri 的 hUMA 异构统一内存访问 和 Intel 第四代 CPU 证明了 CPU 和 GPU 硬件的不断统一 应该允许 CPU 和 GPU 之间进行无副本的数据共享 我想知道 最新的 OpenCL 或其他 GPGPU 框
  • 使用 OpenCL 支持构建 OpenCV

    在 CMake 中 我使用 OpenCL Enable ON 构建了 OpenCV 它自动检测到OPENCL INCLUDE DIR路径但是OPENCL LIBRARY即使单击配置后也是空的 为了OPENCL LIBRARY我也没有看到浏览
  • 在内核 OpenCL 中实现 FIFO 的最佳方法

    目标 在 OpenCL 中实现下图所示 OpenCl 内核所需的主要内容是将系数数组和临时数组相乘 然后最后将所有这些值累加为 1 这可能是最耗时的操作 并行性在这里非常有帮助 我正在为内核使用一个辅助函数来执行乘法和加法 我希望这个函数也
  • OpenCL 与 OpenMP 性能对比 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否有研究比较 OpenCL 与 OpenMP 的性能 具体来说 我对使用 OpenCL 启动线程的开销成本感兴趣 例如 如果将域分解
  • 是否可以保证 WaveFront (OpenCL) 中的所有线程始终同步?

    众所周知 有WARP 在CUDA中 和WaveFront 在OpenCL中 http courses cs washington edu courses cse471 13sp lectures GPUsStudents pdf http
  • HUGE_VALF 和 INFINITY 常量之间的区别

    在 OpenCL 中 有两个代表无穷大的浮点数学常数 其中之一很简单INFINITY 另一个 HUGE VALF 求值为 无穷大 这两者有什么区别 求值至 无穷大是什么意思 HUGE VALF是一个旧名称 允许不支持无穷大的浮点系统 例如
  • 使用Windows 7计算器进行对数计算[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想使用Windows计算器在科学模式中为了求解一个非常基本的对数方程 但不幸的是 我无法做到这一点 问题是这样的 log 5 125 非常感谢您的帮

随机推荐

  • 使用 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 来