关于gpu的卷积:哪种语言(HLSL / Cuda等)的支持生命周期最长?

时间:2011-08-09 16:00:18

标签: cuda computer-vision gpu hlsl

我目前正在编写一个自动检测系统,该系统使用比例空间表示进行脊和边缘检测。它目前有一个软件实现,但我认为GPU是要走的路。我的算法是各种内核的一系列卷积。

然而,我的公司之前已经完成了所有关于Cpu的事情(而且很多都是自动检查),所以我很难说服我的老板说这是必要的,支持/长寿是其中很重要的一部分。我们很可能会支持这些事情大约10年。

那么哪种语言有最好的支持保证?

聚苯乙烯。我们在所有东西上运行窗口。

3 个答案:

答案 0 :(得分:3)

没有任何保证!

这取决于“支持”的含义

  • 新硬件是否运行代码 - 由于驱动程序将cuda代码转换为hw指令,因此只要NVidia保持业务,就应该很容易在新GPU上支持至少一部分代码。当然,很多显卡公司现在已经不见了,游戏业务并没有像微软那样对后向兼容性狂热。所以OpenCL可能是一个更安全的赌注。

  • 制造商是否提供技术支持 - 如果它是标准,那么就会有支持。 SGI早已不复存在,但OpenGL仍得到很好的支持。

  • 您是否可以在新硬件上开发代码 - 因为基本上有一个字节码层,它并不像试图找到MIPS开发平台来开发MIP代码那么糟糕。

  • 你能聘请那些了解它的程序员 - 这是一个专业领域,所以你可能不得不让人们加快速度,或雇用一些昂贵的人才。与GPGPU类型编程的一般技能相比,他们是否需要接受CUDA,OpenCL或接下来的任何培训都不是什么大问题。

总的来说,我怀疑CUDA / OpenCL将是一个更好的长期赌注,而不是手动调整当前英特尔CPU产生的SSE2代码或使用一些定制的DSP / FPGA解决方案。

10年真的没有你想象的那么长,在软件世界中,仍然有很多MFC应用程序在使用,当然OpenGL仍然得到很好的支持。虽然CUDA会消失,但我不会这样做 - 如果确实如此,我会希望工具将其翻译成OPENCL或其他任何替换它。

事实上,行业观点似乎是DirectX / OpenGL将会消失,而且每个标志都将直接在GPGPU语言中完成。

答案 1 :(得分:2)

如果你所寻求的只是支持,那么从长远来看,OpenCL可能是一个更好的选择。

也就是说,CUDA不太可能在10年后消失。 nVidia已经对GPGPU计算进行了大量投资,并且可能会保留所有未来芯片组的向后兼容性。

就原始性能而言(可能是您首先切换到GPU的原因),CUDA仍有一点优势。由于技术更成熟,开发速度可能会让CUDA招聘开发人员变得容易一些。

答案 2 :(得分:0)

Martin Beckett和peakxu给出了很好的答案;让我添加一些有点太大的东西,不适合评论:

关于CUDA与OpenCL的关系是内核 - 几乎所有的辛苦工作都完成了 - 非常相似,即使关键字不同。到目前为止,GPGPU编程中最困难的部分是弄清楚如何有效地将程序分解为表现良好的细粒度SIMD-ish部分。一旦你弄明白了,生成的内核很容易在CUDA和OpenCL之间来回移动,我想象接下来会发生什么。

用于分配内存,在主机和主机之间来回传输数据的样板代码。 GPU等不太相似,但与内核相比,重写这些东西相对简单。 (单调乏味,但直截了当)。

因此,我不会花很多时间阅读茶叶来尝试猜测CUDA和OpenCL之间会持续多久。如果您决定采用这种方式,只需找到适合您需求的硬件和(可能更重要的)开发平台,然后选择最适合的GPGPU语言,然后运行它。