2017-01-18 3 views
3

최소 편집 거리 알고리즘을 사용하여 두 문자열이 어느 정도 밀접한 관련이 있는지 확인합니다. 나는 CPU에서 실행되도록 구현했으며, 수백 개의 문자열이있을 때 훌륭하게 작동하지만, 수천 개의 문자열을 여러 번 비교할 때 속도가 느려지는 원인이됩니다. 그래서 여러 번 비교를 한 번에 수행 할 수 있기 때문에 GPU에 부하를 가하는 것이 유용 할 수 있다고 생각했습니다.메탈을 사용하여 GPU에서 알고리즘을 실행할 수 있습니까?

이것이 가능합니까? 필자가 만난 금속 자원은 주로 도움이되지 않는 그래픽 용입니다. 아니면 그들은 어쩌면?

+0

당신은 내 새로운 허프만 디코더에 관심이 있을지 모르지만, 메탈 위에 구현 된 아이디어는 github에서 볼 수 있습니다 : https://github.com/mdejong/MetalHuffman – MoDJ

답변

6

적어도 특정 문제 크기에 대해 원하는 것은 가능하지만 특히 간단하지는 않습니다. GPU에서 실행할 수있는 방식으로 알고리즘을 표현하면됩니다. iOS에서는 Metal을 사용하는 것이 좋습니다. 특히, 최소 편집 거리 알고리즘을 구현하는 하나 이상의 계산 커널을 금속 쉐이딩 언어로 작성한 다음 Metal compute 명령 인코더를 사용하여 이들을 디스패치해야합니다. Metal around the Web을 사용한 컴퓨팅 프로그래밍에 대한 여러 가지 리소스가 있습니다.

Med의 기존 Metal 구현에 대해서는 알지 못하지만 적어도 one CUDA implementation이 있으며 GPU here에서 MED에 대한 자세한 설명을 읽을 수 있습니다.

3

@warrenm 대답 외에도 커널 함수 또는 그 중 몇 가지를 작성해야합니다. 차가운 금속 튜토리얼 웹 사이트가있다 : http://metalbyexample.com, 애플의 문서는 그것에 대해 뭔가가 있습니다 https://developer.apple.com/library/content/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/Compute-Ctx/Compute-Ctx.html

을 또한 https://www.raywenderlich.com 튜토리얼의 몇 가지가 있지만 대부분 그래픽 지향합니다. 또한 GPUImage 라이브러리에서 iOS를 확인할 수 있습니다. 멋진 인터페이스로 OpenGL을 둘러싼 멋진 래퍼입니다. 어쩌면 OpenGL을 사용하여 실행될 사용자 정의 함수를 작성하는 옵션이 있습니까?

관련 문제