OpenCl fft lib para GPUs?
-
26-09-2019 - |
Pergunta
Existe algum Lib geral FFT disponível para execução na GPU usando o OpenCL? Quanto ao meu conhecimento, o código de amostra da Apple para o poder de dois OpenCl FFT é o único código desse tipo disponível?
Existe alguma dessas bibliotecas para tamanhos de transformação sem potência de dois? Caso contrário, quão fácil ou difícil é modificar a amostra Apple OpenCL?
Estou olhando para aplicativos de processamento de imagens, com tamanhos de transformação sem potência de dois, e terei que fazer um monte de FFTs, um FFT em lote.
Solução
Conheço uma biblioteca OpenCL FFT que está atualmente em desenvolvimento, mas eles não planejam ter tamanhos de transformação sem potência de dois no primeiro lançamento.
Você pode fornecer alguma informação sobre seu aplicativo? Pode ajudar a obter a prioridade desse recurso, se for algo que muitas pessoas podem usar.
Outras dicas
Experimente o CLFFT desenvolvido pela AMD. Ele visa as placas gráficas da AMD, mas também deve funcionar nas GPUs da NVIDIA. Ele pode transformar as matrizes com uma raiz de 2, 3 e 5 (e combinações lá fora).
https://github.com/clmathlibraries/clfft
Existem ligações de python disponíveis
Você pode baixar algumas amostras de código OpenCL, incluindo FFT do Suíte de benchmark shoc.
O acumulado de nulo pode ser usado para criar dados de comprimento arbitrário para um algoritmo de FFT de dois dois. Considere se isso se adequaria à sua inscrição. Aumentar o número de amostras diminui o "tamanho da etapa" no domínio da saída, o que significa maior resolução de saída.
Openmm (https://simtk.org/home/openmm) contém um 3D FFT para OpenCl. Pode não funcionar diretamente para você, pois foi projetado para um caso específico: FFTs 3D, onde cada dimensão é pequena o suficiente para ser armazenada na memória local (por exemplo, uma grade de 100x100x100). Mas ele suporta tamanhos não-de-dois (Radix 2, 3, 4 e 5), para que você possa adaptá-lo.
Dê uma olhada em Appml-fft biblioteca. Embora ainda seja o poder de duas transformações.