Donnons de la suite à vos idées…
LLVM-based dynamic dataflow compila6on for heterogeneous targets
- V. Ducrot, K. Juilly, S.Monot,
- G. Bayle Des Courchamps
AS+ Groupe Eolen
- T. Goubier
CEA List /DACLE /LCE Benoit Da Mota Anger University
LLVM-based dynamic dataflow compila6on for heterogeneous targets V. - - PowerPoint PPT Presentation
LLVM-based dynamic dataflow compila6on for heterogeneous targets V. Ducrot, K. Juilly, S.Monot, AS+ Groupe Eolen G. Bayle Des Courchamps T. Goubier CEA List /DACLE /LCE Benoit Da Mota Anger University Donnons de la suite vos ides
AS+ Groupe Eolen
CEA List /DACLE /LCE Benoit Da Mota Anger University
Methods algorithms for Metagenomics R (staRsRcs DSL) LLVM IR Vec LLVM compiler infrastructure MulR- plaVorm binaries
R: the dominant language for staRsRcal analysis
MACH: DSeLs for heterogeneous compuRng
R in MACH
In a R front-end
GPUs (Nvidia/AMD) CPU accelerators (Intel MIC)
Frontend
Middle end
Backend
Parallelism is expressed as task and data dependency
ExecuRon is out-of-order with sequenRal consistency
Natural auto-tuning applicaRon Memory needs to be managed
Target RunRme is currently starPU from Inria Bordeaux
Tasks graph Data transformers Library calls
SpecializaRon X86_64 LLVM + OpRmizer LLVM X86_64 ISA Binary
SpecializaRon Xeon Phi LLVM + OpRmizer LLVM Xeon Phi ISA Binary SpecializaRon Nvidia GPU LLVM + OpRmizer LLVM PTX ISA Binary Equivalent in chosen runRme
Build on top of the exisRng LLVM IR
Marked as 0 length in IR Managed data specifics load/store using them (effecRve size are
%f0v = call <0 x float>(%nd_array_float_t*)* @ndarray.load.float(%nd_array_float_t * %f0) call void @ndarray.store.float(%nd_array_float_t * %u1, <0 x float> %u1v)
Masking intrinsic
%mr = call {}* @llvm.mach.mask.acRvate.v0i1(<0 x i1> %alltrue) %merge2 = call <0 x i32> @llvm.mach.mask.merge.v0i32({}*%mr, <0 x i32> %r, <0 x i32> %alvizero) call void @llvm.mach.mask.deacRvate({}* %mr)
Reduce / scan intrinsic
%v3 = call <0 x float> @llvm.mach.alv.reduce.max.v0f32(<0 x float> %v2)
ND-arrays
Raw Data
Metadata for marking task call Metadata for expressing pa[erns on task implementaRon
Intents on managed data (read, write, scratch…)
Task specializing
Workflow management
MulR-implementaRon management
The runRme supports mulRple implementaRon for a given task
Our pass generates mulRple implementaRons The runRme chooses the best implementaRon according to the
We proposed an infrastructure to compile heterogeneous
The middle-end IR enables us to compile for mulRple target at
PorRng to a new target doesn’t change the frontend