gpu上的卷积:哪种语言(HLSL/Cuda等)的支持寿命最长?

gpu上的卷积:哪种语言(HLSL/Cuda等)的支持寿命最长?,cuda,computer-vision,gpu,hlsl,Cuda,Computer Vision,Gpu,Hlsl,我目前正在编写一个自动检测系统,它使用尺度空间表示法进行脊线和边缘检测。它目前有一个软件实现,但我认为GPU是一个不错的选择。我的算法是一系列不同内核的卷积 然而,我的公司以前在Cpu上做过所有事情,这是很多自动检查,所以我很难说服我的老板这是必要的,而支持/寿命是其中的一个重要部分。我们很可能会支持这些东西10年左右 那么哪种语言有最好的支持保证呢 另外,我们对所有东西都运行windows。没有任何担保人 这取决于你所说的“支持”是什么意思 新硬件是否运行该代码?既然驱动程序将cuda代码转换

我目前正在编写一个自动检测系统,它使用尺度空间表示法进行脊线和边缘检测。它目前有一个软件实现,但我认为GPU是一个不错的选择。我的算法是一系列不同内核的卷积

然而,我的公司以前在Cpu上做过所有事情,这是很多自动检查,所以我很难说服我的老板这是必要的,而支持/寿命是其中的一个重要部分。我们很可能会支持这些东西10年左右

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


另外,我们对所有东西都运行windows。

没有任何担保人

这取决于你所说的“支持”是什么意思

新硬件是否运行该代码?既然驱动程序将cuda代码转换为硬件指令,那么只要NVidia继续运营,在新GPU上至少支持其中的一个子集应该很容易。当然,现在很多图形卡公司都走了,游戏业务也不像微软那样热衷于向后兼容。所以OpenCL可能是一个更安全的赌注

制造商是否提供技术支持?如果是标准,则会有支持。SGI早已消失,但OpenGL仍然受到良好的支持

你能在新的硬件上开发代码吗?同样,因为基本上有一个字节码层,所以它没有试图找到一个MIPS开发平台来开发MIPS代码那么糟糕

你能雇佣懂得这一点的程序员吗?这是一个专门的领域,所以你可能不得不让人们提高速度,或者雇佣一些昂贵的人才。与GPU类型编程的一般技能相比,他们是否需要接受CUDA、OpenCL或其他方面的培训并不是什么大问题

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

10年真的没有你想象的那么长,在软件世界里,有很多MFC应用程序仍然在使用,当然OpenGL仍然得到很好的支持。我不认为CUDA会消失——如果它真的消失了,我希望工具能将它翻译成OPENCL或任何替代它的东西


事实上,业界的观点似乎是DirectX/OpenGL将消失,所有的设计都将直接在GPGPU语言中完成。

没有人有任何保证

这取决于你所说的“支持”是什么意思

新硬件是否运行该代码?既然驱动程序将cuda代码转换为硬件指令,那么只要NVidia继续运营,在新GPU上至少支持其中的一个子集应该很容易。当然,现在很多图形卡公司都走了,游戏业务也不像微软那样热衷于向后兼容。所以OpenCL可能是一个更安全的赌注

制造商是否提供技术支持?如果是标准,则会有支持。SGI早已消失,但OpenGL仍然受到良好的支持

你能在新的硬件上开发代码吗?同样,因为基本上有一个字节码层,所以它没有试图找到一个MIPS开发平台来开发MIPS代码那么糟糕

你能雇佣懂得这一点的程序员吗?这是一个专门的领域,所以你可能不得不让人们提高速度,或者雇佣一些昂贵的人才。与GPU类型编程的一般技能相比,他们是否需要接受CUDA、OpenCL或其他方面的培训并不是什么大问题

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

10年真的没有你想象的那么长,在软件世界里,有很多MFC应用程序仍然在使用,当然OpenGL仍然得到很好的支持。我不认为CUDA会消失——如果它真的消失了,我希望工具能将它翻译成OPENCL或任何替代它的东西


事实上,业界的观点似乎是DirectX/OpenGL将消失,所有的设计都将直接在GPGPU语言中完成。

如果您只需要支持,那么OpenCL可能是一个更好的长期选择

也就是说,CUDA不太可能在10年左右的时间内消失。nVidia已在GPGPU计算方面投入巨资,并可能为其未来的所有芯片组保持向后兼容性


就原始性能而言,CUDA仍然有一点优势,这可能是您首先选择GPU的原因。为CUDA聘请开发人员可能会更容易一些,因为这是一项更成熟的技术,因此开发速度也会更快。

如果您只需要支持,那么OpenCL可能是一个更好的长期选择

也就是说,CUDA不太可能在10年或更长的时间内消失 所以nVidia已在GPGPU计算方面投入巨资,并可能为其未来的所有芯片组保持向后兼容性


就原始性能而言,CUDA仍然有一点优势,这可能是您首先选择GPU的原因。为CUDA聘请开发人员可能会更容易一些,因为这是一项更成熟的技术,因此开发速度也会更快。

马丁·贝克特和佩克许给出了很好的答案;让我补充一句话,这句话有点太大了,不适合评论:

CUDA和OpenCL的区别在于,内核——几乎所有的艰苦工作都是在内核中完成的——非常相似,尽管关键字不同。到目前为止,GPGPU编程中最困难的部分是找出如何有效地将程序分解成性能良好的细粒度SIMD。一旦你弄明白了这一点,产生的内核很容易在CUDA和OpenCL之间来回移动,我想象接下来会发生什么

用于分配内存、在主机和GPU之间来回洗牌数据等的样板代码没有那么相似,但与内核相比,重写这些内容相对简单。乏味得要命,但直截了当


所以我不会花太多时间阅读茶叶来猜测CUDA和OpenCL之间哪种茶叶会持续更长时间。如果你决定这样做,只要找到硬件,也许更重要的是找到一个适合你需要的开发平台,然后选择最适合的GPGPU语言,并用它运行。

马丁·贝克特和佩克许给出了很好的答案;让我补充一句话,这句话有点太大了,不适合评论:

CUDA和OpenCL的区别在于,内核——几乎所有的艰苦工作都是在内核中完成的——非常相似,尽管关键字不同。到目前为止,GPGPU编程中最困难的部分是找出如何有效地将程序分解成性能良好的细粒度SIMD。一旦你弄明白了这一点,产生的内核很容易在CUDA和OpenCL之间来回移动,我想象接下来会发生什么

用于分配内存、在主机和GPU之间来回洗牌数据等的样板代码没有那么相似,但与内核相比,重写这些内容相对简单。乏味得要命,但直截了当


所以我不会花太多时间阅读茶叶来猜测CUDA和OpenCL之间哪种茶叶会持续更长时间。如果你决定这样做,只需找到硬件,也许更重要的是找到一个适合你需要的开发平台,然后选择最适合的GPGPU语言,并用它运行。

我主要对第一个感兴趣,尽管2和4可能相关。我只想做一些非常简单的事情。我主要对第一个感兴趣,虽然2和4是相关的。我只想在这里做一些非常简单的事情。以我的钱来说,在未来十年里,你不可能比CUDA做得更好。如果你不介意商业软件,请查看以下内容:。libjacket背后的思想是随着时间的推移保持兼容性,同时在后台切换最佳可用选项。目前支持CUDA和OpenGL中的alpha版本。但也计划支持opencl。不是广告,因为我在那里工作,我在那里工作,但老实说,我认为这是一个很好的商业选择。以我的钱来说,在未来十年,你不会比CUDA做得更好。如果你不介意商业软件,请查看以下内容:。libjacket背后的思想是随着时间的推移保持兼容性,同时在后台切换最佳可用选项。目前支持CUDA和OpenGL中的alpha版本。但也计划支持opencl。不是因为我在那里工作,所以我在那里工作,但老实说,我认为这是一个很好的商业选择。