- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
大家好,我目前正在将 raytracer 从 FORTRAN 77 移植到 C 以用于研究项目。
移植了基本要素之后,问题是我们如何进行并行化。
在实验室中,我可以使用几台不同的 Opteron 机器,它们有 2 到 8 个内核,但没有 GPU(目前)。我们正在运行 64b gentoo。
GPGPU 版本(非常)可取,但项目中只有一名程序员,维护单独的非 GPU 和 GPU 版本不是一种选择。
此外,该代码将采用 GPL 认证,我们希望看到它被可能拥有截然不同硬件的其他人使用。
因此整个程序必须易于编译/运行,无需 GPU 甚至多核系统。
OpenCl 似乎是一个不错的选择,因为它可以在没有 GPU 的机器上运行,但这段代码在单核或 32b 系统上的表现如何?
是否可以编写无需 openCL 即可轻松编译的代码?
最佳答案
目前有四种主要的 OpenCL 实现:AMD、nVidia (Cuda)、Apple、Intel,并且很快可能会有更多:OpenCL implementations .OpenCL 不是专门针对 GPU 计算的语言,它被设计为异构设备的通用计算语言。例如。即使没有 GPU 和任何非 AMD CPU(当然是 x86),您也可以使用 AMD 实现。
Would it be possible to write the code in such a way that it can easily be compiled without openCL?
正如您所说,这是一个单人项目,我怀疑是否值得付出努力。
How will this code perform on a single-core or 32b system?
与任何 native 程序一样好。您可以通过 OpenCL vector 类型访问 SIMD。您可以通过工作组配置处理线程。
但是不要指望您可以从每个具有相同内核/工作组设置的设备中获得 100% 的性能。可以进行很多设备特定的调整 ( OpenCL CPU Tutorial for a start )。
我会说选择 OpenCL。它为您的应用程序提供了更多可能性,并且它与平台无关。
关于c - 在编写 openCL 代码时,它在没有 GPU 的单核机器上表现如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4850358/
据我了解: Programming to leverage multicores or multiple processors is called parallel programming. 但是如果
据我了解: Programming to leverage multicores or multiple processors is called parallel programming. 但是如果
我可以在单核 cpu 的机器上使用 OpenMP 吗?性能会有一些提升? 最佳答案 是的,你可以。您可以使用 OpenMP 指令注释代码并仍然按顺序运行应用程序。为此,您必须在没有 OpenMP 标志
有很多关于内存屏障的信息。大多数信息是指多核或多处理器架构。 Stackoverflow 上的某个地方还指出,单核处理器不需要内存屏障。 到目前为止,我找不到任何明确的解释,为什么单核 CPU 上不需
“如果您能感觉到计算机的操作每隔几毫秒就会自行切换数十项任务,您肯定会同意计算机似乎在同时执行这些任务,即使我们知道计算机是交错的各种任务的计算” M.Ben-Ari,并发编程原理,1982 年。 那
我知道自旋锁与自旋一起工作,存在不同的内核路径并且内核是抢占式的,那么为什么自旋锁在单处理器系统中不起作用? (例如,在 Linux 中) 最佳答案 如果我理解你的问题,你会问为什么自旋锁在单核机器上
在使用像 Erlang 和其他具有轻量级并发进程的语言之后,我发现很难理解它是如何转化为 Java 的。鉴于我使用单核机器,有没有办法执行多个并发 IO 绑定(bind)操作(http)? 我发现如下
在 Java 中,Volatile 和 synchronized 使得多线程可以协同工作,也可以相互理解。但是,如果你在单核系统上使用多线程,就意味着不是真正的多线程工作,操作系统只是从这个线程到另一
我已经构建了一个大型的 AngularJS 应用程序,到目前为止它运行良好。 当一些用户(使用具有一个 CPU 的非常老的计算机)提示应用程序非常慢时,我的问题就开始了。 我打开了任务管理器,我可以看
我已阅读并详细了解 Java volatile 和 synchronized 关键字在基于 SMP 架构的 CPU 中 cpu 级别的含义。 这里有一篇关于该主题的优秀论文: http://irl.c
我是一名优秀的程序员,十分优秀!