Mathlib: Do It Yourself toward tool for scientists to generate - - PowerPoint PPT Presentation

mathlib do it yourself
SMART_READER_LITE
LIVE PREVIEW

Mathlib: Do It Yourself toward tool for scientists to generate - - PowerPoint PPT Presentation

Mathlib: Do It Yourself toward tool for scientists to generate optimal implementations of mathematical functions adapted to the task at hand Vincenzo Innocente & Danilo Piparo CERN, EP/SFT Motivation Scientists and engineers have the


slide-1
SLIDE 1

Mathlib: Do It Yourself

toward tool for scientists to generate optimal implementations of mathematical functions adapted to the task at hand

Vincenzo Innocente & Danilo Piparo CERN, EP/SFT

slide-2
SLIDE 2

Motivation

  • Scientists and engineers have the need to

implement mathematical functions that best fit their needs

– Precision, validity range – Target architecture (different vectorization, etc) – Environment and language

  • Our goal is to provide a tool for scientists

integrated into the analysis eco-system deployed in HEP in particular as provided by CERN

3/9/18 VI metalibm 2

slide-3
SLIDE 3

Strategy

  • Provide a layered tool that allows the

development and implementation of mathematical functions tailored to a specified need

  • Integrate it in the CERN standard analysis eco-

system

  • Make it available into the “cloud”

3/9/18 VI metalibm 3

slide-4
SLIDE 4

Implementation

  • With the collaboration of the CERN/SFT

“Packages & Releases project” we have integrated Sollya, its dependencies and its python interface into the standard CERN software distribution

– This makes Sollya and eventually MetaLibm available ubiquitously on the Cloud

  • We have developed a set of “jupyter”

notebook that provide examples of use including generation of python and C code

3/9/18 VI metalibm 4

slide-5
SLIDE 5

Addressing Heterogeneity

  • One of the main challenge of Cloud computing is the ability

to adapt to any computation environment notably exploiting a large variety of computing architecture

  • Our strategy is to use standard compiler technology to build

multi-target libraries and to rely on compiler optimization (in particular auto-vectorization) to produce the best code for each target

  • We prefer pre-compiled libraries to Jit-technologies as the

former can be fully tested and validated before deployment and will not depend on details of the running environment.

  • Porting to GPU (cuda) proven to be trivial at least as device

functions (easy to achieve bitwise compatibility as well)

– Still not obvious how to build reusable efficient kernels as data copy may easily dominates

3/9/18 VI metalibm 5

slide-6
SLIDE 6

Reproducibility

  • No FMA, no problem

– C/C++ up to O3 guarantee full bitwise reproducibility across IEEE754 compliant architectures (including x86_64, arm, PC, GPUs)

  • FMA: no standard re-association rules

– Only solution to date is to force no re-association and use explicitely std::fma

  • Need to teach code generators to properly use

std::fma (or equivalent macro)

3/9/18 VI metalibm 6

slide-7
SLIDE 7

Deployment

  • CERN is working on next generation analysis eco-

system

  • Its portal will most probably be “SWAN”: Service for

Web-based data Analysis

– https://swan.web.cern.ch

  • SWAN is therefore the natural environment where our

tool will be run

  • It will provide a twofold use

– Generation of optimized mathematical function using Sollya and MetaLibm – Their integration in the analysis eco-system through a direct, optimized numpy binding

3/9/18 VI metalibm 7

slide-8
SLIDE 8

Workflow

Generation of Math functions Generation of python and C implementation Test and Validation Generation of Multi- target C library and

  • f numpy binding

Use in daily Analysis work Use in offline application

3/9/18 VI metalibm 8

slide-9
SLIDE 9

Status

  • Sollya fully integrated in CERN environment

– Tested under SWAN

  • Examples as jupyter notebook produced

– http://test-innocent.web.cern.ch/test- innocent/MetaLibm/ – Some components may be packaged as standalone python modules

  • Multi-target library and full numpy binding

released for VDT

– https://github.com/dpiparo/vdt/blob/master/progs/n umpyBootstrap.csh

3/9/18 VI metalibm 9