typestar

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

  1. MultiThread va delante de la asignación.
  2. Rinde en waves largas y expresiones costosas, no en las cortas.
  3. La expresión no debe depender del orden en que se calculan los puntos.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 4 de 4 en Asignación de waves; paso 4 de 16 en Waves y análisis.

← Anterior Siguiente →