Re: [LAD] Project proposition: llvm based dsp engine

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: linux-audio-dev@lists.linuxaudio.org >> The Linux Audio Developers' Mailing List <linux-audio-dev@...>
Date: Friday, December 10, 2010 - 9:58 pm

--Apple-Mail-1-178698128
Content-Type: text/plain;
charset=ISO-8859-1;
format=flowed;
delsp=yes
Content-Transfer-Encoding: quoted-printable

This is all very interesting. One question I had regarding the future =20=

development of FAUST is whether it will include some sort of scheduler =20=

so that various faust-coded objects can be instantiated at different =20
times, connected together in series, etc.. Then an interpreter could =20
be developed with JIT compilation etc.

Or is this more like the idea of combining FAUST with another language =20=

like pure?

Victor
On 10 Dec 2010, at 12:28, St=E9phane Letz wrote:

=3D=3D> =20
JAVA, =20

> DSP computation and is currently executing the DSP loops DAG in =20

> ICC auto-vectorization features can do the job to produce SIMD code.

> using Faust itself, and "inter plug-in" optimizations are way =20

--Apple-Mail-1-178698128
Content-Type: text/html;
charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

This is all very =
interesting. One question I had regarding the future development of =
FAUST is whether it will include some sort of scheduler so that various =
faust-coded objects can be instantiated at different times, connected =
together in series, etc.. Then an interpreter could be developed with =
 JIT compilation etc. Or is this =
more like the idea of combining FAUST with another language like =
pure?VictorOn 10 Dec 2010, at 12:28, =
St=E9phane Letz wrote:Well what could be =
interesting to share would be something similar to the "FIR" (Faust =
Intermediate Language) that we are currently designing and implementing. =
Basically Faust currently does :Faust dsp program =3D=3D&g=
t; [BDA (Block Diagram Algebra) evaluation ] =3D=3D> Signals =
 =3D=3D> FIR loops DAG (Direct Acyclic Graph) =3D=3D> C/C++, =
JAVA, LLVM, (possibly CUDA, OpenCL at some point) backends.FIR =
is a imperative like language where a Faust program is represented as a =
data structure + list of functions (init, buildInterface, compute...). =
The "compute" function does the actual DSP computation and is currently =
executing the DSP loops DAG in different modes:1) vector mode : =
the loops DAG is simply topologically sorted and compiled in the target =
language (C/C++, LLVM...). The we hope GCC or ICC auto-vectorization =
features can do the job to produce SIMD code.2) OpenMP mode: =
OpenMP pragmas are inserted at the right place in the DAG to express =
parallelism (and each loop can possibly be auto-vectorized).3) =
Work Stealing Scheduler : the loops DAG is compiled with an "embedded" =
WSS algorithm (and each loop can possibly be auto-vectorized).2) =
and 3) steps are typically expressed as "FIR to FIR" transformations. =
 It could be possible to let other tools enter the chain =
before the "FIR loops DAG" step so that to take benefit of all the later =
steps : FIR to FIR parallelisation, and all available backends. We can =
even imagine to implement some kind of "inter plug-in" optimizations at =
the FIR level.But of course the simplest way to produce this =
"FIR loops DAG" is... using Faust itself, and "inter plug-in" =
optimizations are way simpler to handle at the Faust level (basically at =
the "signal step") . So I don't know if the idea makes sense, but you =
never know :->St=E9phane =
_______________________________________________Linux-a=
udio-dev mailing listLinux-audio-dev@lists=
.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-de=
v=

--Apple-Mail-1-178698128--

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [LAD] Project proposition: llvm based dsp engine, Stéphane Letz, (Fri Dec 10, 12:28 pm)
Re: [LAD] Project proposition: llvm based dsp engine, Victor Lazzarini, (Fri Dec 10, 9:58 pm)