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.

Foi útil?

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:

  1. 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.
  2. 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.
  3. 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?
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top