Novato Tópico Pergunta (FFTW)
-
11-09-2019 - |
Pergunta
Eu estou usando o modelo com rosca de FFTW (uma biblioteca FFT) para tentar acelerar algum código em uma máquina CPU dual. Aqui está a saída de tempo w / apenas 1 fio:
131.838u 1.979s 2:13.91 99.9%
Aqui está com 2 fios:
166.261u 30.392s 1:52.67 174.5%
Os tempos de usuário e as percentagens de carga CPU parecem indicar que está enfiando bastante eficaz, mas o tempo wallclock (que é o que realmente me importa) diz-me (eu acho) que ele está levando cerca de 28 segundos extras para lidar com os fios. É que uma maneira exata para descrever a situação? Se assim for, é bastante normal, ou eu provavelmente teria algo configurado incorretamente? Obrigado por qualquer luz.
Solução
Eu usei o FFTW uma quantidade razoável, e descobriram que, a menos que você está indo para mais de dois processadores, é quase sempre uma solução mais limpa para usar apenas a versão single threaded. É mais rápido porque há menos comunicação inter-thread, ou pelo menos, que tem sido a minha experiência.
Algumas coisas para verificar:
- Você está configurando sua sabedoria corretamente, e usá-lo? Sabedoria, uma vez criado, vai fazer a sua transformação executar muito mais rapidamente. Se você não estiver usando-lo, você deve ser.
- Você está chamando a biblioteca de um thread, ou de dois? Esse sempre foi o meu problema, foi travando várias chamadas de rosca para a biblioteca começando a ser doloroso.
- Como grande são as suas transformações? Você está tentando com um pequeno no início, só para ver como ele vai, então ampliação?