是否可以在多线程而不是 cuda/opencl C++运行 GPU?
Would it be possible to run GPUs in C++ multithread instead of cuda/opencl?
它存在一个隐藏Opencl初始和结束部分以简化软件的sw或类? 我认为 OpenGL 可以,但我不知道是否可以仅在 GPU 上使用它,因为如果您必须不断下载并将数组上传到 GPU,效率就会下降。
使用多线程而不是使用 opencl 运行 GPU 会很棒。当然,应该执行新的驱动程序和一些硬件更改,但可以达到以下优点:- 性能比 opencl 提高 12 倍(这取决于应用程序,请参阅 (1( (
- 比标准多线程将性能提高 120 倍(这取决于应用程序,请参阅 (1( (- 使用
库 -
更好的调试 -
存在很多软件 -
更容易编程
- 更好地使用其他语言(java, 菲顿(
- 更好地访问硬盘和外围设备
响应:
- NVIDIA正在制造运行C++的GPU: https://www.youtube.com/watch?v=86seb-iZCnI&feature=youtu.be 在单个特斯拉 V100 Volta 架构卡中运行 5120 个 32 位内核
-
NVIDIA正在使C++在GPU上工作: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0761r2.pdf
-
它为C++增加了并行性: https://www.youtube.com/watch?v=Vck6kzWjY88&feature=youtu.be
TL;大卫:可能吗?或。这是个好主意吗?不,因为(剧透(GPU 不是 CPU。
CPU可以做任何事情,所有操作你的电脑甚至可以做图形操作。
GPU是一种特殊类型的微处理器,针对图形任务进行了优化,该任务需要大量简单的并行"哑"操作。GPU 只能执行 CPU 执行的许多操作中的一小部分(但它做得很好(。
C++是一种高效的语言,因为编译器旨在为您的 CPU 优化它(以汇编形式(。在 GPU 上,您没有相同的指令集可用。这意味着您必须用多个更简单的指令替换复杂的指令(假设这是可能的(,因此需要 1 条指令的操作将需要 2...4...10...现在说明 !并且不要忘记GPU时钟通常比CPU时钟慢。我没有看到优化在哪里。
另外,我真的很想知道你在哪里找到你在问题中提出的值(12x、120x 等(。
- 使用std::vector的OpenCL矩阵乘法
- OpenCL 内核参数中的字符***?
- 在 NVIDIA GEFORCE GTX 1050 上下载适用于 Windows 10 的 openCL 1.2
- OpenCL 是否支持向量作为内核参数?
- 向量加法代码 OpenCL 返回 clCreateKernel 错误 -46
- 提高 OpenCL 的性能
- openCL 内核返回垃圾值,尽管没有错误
- OpenCL 内核计时测量 0 秒或导致 SIGABRT
- 0xc000007b Windows 上的 OpenCL 库的加载时间错误
- OpenCL 在 NVIDIA 和 Intel GPU 上启动内核时CL_INVALID_COMMAND_QUEUE
- OpenCL 代码卡在写入输出缓冲区上
- 将 C++ 库包含在 OpenCL 内核中?
- 如何在 OpenCL 中将小写转换为大写,反之亦然
- OpenCL 错误类在主机C++给出错误
- Zedboard zynq-7000 Opencl 浮点数从类型 'double*' 强制转换为类型 'double' 无效
- OPENCL 警告:不兼容的指针类型将'float __global[16]'传递给类型为 '__global float4 的参数 *
- 使用 NVIDIA GPU 在 Cygwin 中链接 OpenCL 库时遇到问题
- 在 OpenCL 库中找不到 cl::Error 类
- 在 OpenCL 内核中实现半精度浮点数据类型
- 在 Radeon 卡上并行执行多个 OpenCL 内核