Asignación multihilo en Igor Pro
Una palabra clave reparte la asignación de wave entre núcleos, cuando la expresión lo permite.
Function ExpensiveMap(WAVE out)
Variable n = numpnts(out)
MultiThread out = SlowKernel(x)
Printf "%d points across %d threads\r", n, ThreadProcessorCount
End
ThreadSafe Function SlowKernel(Variable t)
return exp(-t^2) * besselJ(0, 12 * t)
End
Cómo funciona
MultiThreadva delante de la asignación.- Rinde en waves largas y expresiones costosas, no en las cortas.
- La expresión no debe depender del orden en que se calculan los puntos.
Palabras clave y builtins usados aquí
EndFunctionMultiThreadThreadSafeVariableWAVEreturn
El intento, en números
- Líneas
- 11
- Caracteres a escribir
- 245
- Tokens
- 52
- Ritmo de tres estrellas
- 80 tpm
Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 39 segundos.
Paso 4 de 4 en Asignación de waves; paso 4 de 16 en Waves y análisis.