我能在Metal上使用GPU运行算法吗?

7
我正在使用最小编辑距离算法来确定两个字符串之间的相似度。我已经实现了该算法在CPU上运行,当你有数百个字符串时它运行良好,但是当你比较成千上万次字符串时,它就会变得很慢。因此,我认为将其转移到GPU上可能会很有用,因为GPU可以同时执行多个比较。
这是否可能?我所找到的Metal资源主要用于图形方面,对此没有帮助。或者也许有用吗?

你可能会对我基于Metal实现的新的哈夫曼解码器感兴趣,可以在Github上查看:https://github.com/mdejong/MetalHuffman。 - MoDJ
2个回答

11
你想要做的是可能的,至少对于某些问题规模来说是这样的,但并不是特别简单。你需要用可以在GPU上运行的方式表达算法,在iOS上,这可能意味着使用Metal。具体而言,你需要使用Metal shading语言编写一个或多个计算内核,实现最小编辑距离算法,然后使用Metal计算命令编码器分派它们。网络上有许多关于使用Metal进行计算编程的资源。
我不知道是否存在MED的现有Metal实现,但至少有一个CUDA实现,你可以在这里阅读更长的MED GPU解释。

6
除了@warrenm的回答外,您需要编写核心函数或多个核心函数。这里有一个很酷的Metal教程网站:http://metalbyexample.com,另外Apple文档中也有相关内容:https://developer.apple.com/library/content/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/Compute-Ctx/Compute-Ctx.html 此外,在https://www.raywenderlich.com上有一些教程,但它们大多是面向图形的。您还可以查看iOS的GPUImage库,这是一个很棒的OpenGL封装,具有良好的界面。也许还有一种选项可以编写自定义函数,使用OpenGL执行它们?

你会如何比较GPUIimage库和Metal?在你的意见中,哪一个可能更快? - WDC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接