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.

Foi útil?

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

https://github.com/geggo/gpyfft

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.

VEXCL Fornece uma implementação da FFT para o OpenCL que aceita expressões vetoriais arbitrárias como entrada, permite executar transformações multidimensionais (de qualquer número de dimensões) e suporta vetores de tamanho arbitrário. Aqui está um link para a parte relevante de seu readme.

Dê uma olhada em Appml-fft biblioteca. Embora ainda seja o poder de duas transformações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top