我使用最小編輯距離算法來確定兩個字符串的相關程度。我已經實現了它在CPU上運行,並且當你有數以百計的字符串時它工作得很好,但是當你多次比較數千個字符串時,它會變慢。所以我認爲將它卸載到GPU可能會有用,因爲它可以一次執行多個比較。我可以使用Metal在GPU上運行算法嗎?
這可能嗎?我遇到的金屬資源主要用於無助於圖形的圖形。或者他們是?
我使用最小編輯距離算法來確定兩個字符串的相關程度。我已經實現了它在CPU上運行,並且當你有數以百計的字符串時它工作得很好,但是當你多次比較數千個字符串時,它會變慢。所以我認爲將它卸載到GPU可能會有用,因爲它可以一次執行多個比較。我可以使用Metal在GPU上運行算法嗎?
這可能嗎?我遇到的金屬資源主要用於無助於圖形的圖形。或者他們是?
你想要做什麼是可能的,至少對於某些問題大小,但它並不是特別簡單。你需要做的是以一種可以在GPU上運行的方式來表達算法,在iOS上,這可能意味着使用Metal。具體來說,您需要使用金屬着色語言編寫一個或多個實現最小編輯距離算法的計算內核,然後使用金屬計算命令編碼器調度它們。 Web上有許多關於Metal的計算編程資源。
我不知道MED的現有Metal實現,但至少有one CUDA implementation,並且您可以在GPU here上閱讀MED的更長說明。
除了@warrenm答案,你需要編寫內核函數或其中的幾個。有炫酷的金屬教程網站:http://metalbyexample.com,也是蘋果文檔中有一些事情:https://developer.apple.com/library/content/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/Compute-Ctx/Compute-Ctx.html
,也有夫婦https://www.raywenderlich.com教程,但他們大多是圖形爲主。你也可以檢查iOS的GPUImage庫,這是一個非常酷的包裝OpenGL與良好的界面。也許還有一個選項可以編寫將使用OpenGL執行的自定義函數?
你可能會對我的新的huffman解碼器感興趣,這些解碼器是在Metal的頂部實現的,可以在github上看一下:https://github.com/mdejong/MetalHuffman – MoDJ