@@ -4,61 +4,65 @@ There are several terms that are used in the context of XLA, MLIR, LLVM, and
4
4
other related technologies. Below is a partial list of these terms and their
5
5
definitions.
6
6
7
- - ** OpenXLA**
8
- - OpenXLA is an open ecosystem of performant, portable, and extensible machine
9
- learning (ML) infrastructure
10
- components that simplify ML development by defragmenting the tools between
11
- frontend frameworks and hardware backends. It includes the XLA compiler,
12
- StableHLO, VHLO, [ PJRT] ( https://openxla.org/xla/pjrt ) and other
13
- components.
14
- - ** XLA**
15
- - XLA (Accelerated Linear Algebra) is an open source compiler for machine
16
- learning. The XLA compiler takes models from popular frameworks such as
17
- PyTorch, TensorFlow, and JAX, and optimizes the models for high-performance
18
- execution across different hardware platforms including GPUs, CPUs, and ML
19
- accelerators. The XLA compiler outputs some code to LLVM, some to "standard"
20
- MLIR, and some to [ Triton MLIR] ( https://triton-lang.org/main/dialects/dialects.html )
21
- that is processed by (MLIR-based) OpenAI Triton compiler.
22
- - ** PJRT**
23
- - [ PJRT] ( https://github.com/openxla/xla/blob/main/xla/pjrt/c/pjrt_c_api.h ) is
24
- a uniform Device API that simplifies the growing complexity of ML workload
25
- execution across hardware and frameworks. It provides a hardware and framework
26
- independent interface for compilers and runtimes.
27
- - ** StableHLO**
28
- - StableHLO is the public interface to OpenXLA, it is a standardized MLIR
29
- dialect that may be used by different frameworks and compilers in the OpenXLA
30
- ecosystem. XLA supports StableHLO, and immediately converts it to HLO on the
31
- input. There are some [ StableHLO to StableHLO] ( https://openxla.org/stablehlo/generated/stablehlo_passes )
32
- passes implemented using the MLIR framework. It is also possible to convert
33
- StableHLO to other compilers' IR without using HLO, for example in cases where
34
- an existing IR is more appropriate.
35
- - ** CHLO**
36
- - CHLO is a collection of higher level operations which are optionally
37
- decomposable to StableHLO.
38
- - ** VHLO**
39
- - The [ VHLO Dialect] ( https://openxla.org/stablehlo/vhlo ) is a MLIR dialect
40
- that is a compatibility layer on top of StableHLO. It provides a snapshot of
41
- the StableHLO dialect at a given point in time by versioning individual
42
- program elements, and is used for serialization and stability.
43
- - ** MHLO**
44
- - MHLO is a standalone MLIR-based representation of XLA's HLO IR. The dialect
45
- is being evaluated for deprecation, and new users of the dialect should prefer
46
- to use StableHLO instead.
47
- - ** HLO**
48
- - HLO is an internal graph representation (IR) for the XLA compiler (and also
49
- supported input). It is ** not** based on MLIR, and has its own textual syntax
50
- and binary (protobuf based) representation.
51
- - ** MLIR**
52
- - [ MLIR] ( https://mlir.llvm.org ) is a hybrid IR infrastructure that
53
- allows users to define "dialects" of operations at varying degrees of
54
- abstraction, and gradually lower between these opsets, performing
55
- transformations at each level of granularity. StableHLO and CHLO are two
56
- examples of MLIR dialects.
57
- - ** LLVM**
58
- - [ LLVM] ( https://llvm.org/ ) is a compiler backend, and a language that it
59
- takes as an input. Many compilers generate LLVM code as a first step, and
60
- then LLVM generates machine code from it. This allows developers to reuse
61
- code that is similar in different compilers, and also makes supporting
62
- different target platforms easier. XLA: GPU and CPU backends have
63
- [ LLVM IR emitters] ( https://github.com/openxla/xla/tree/main/xla/service/llvm_ir )
64
- for targeting specific hardware.
7
+ - ** OpenXLA**
8
+ - OpenXLA is an open ecosystem of performant, portable, and extensible
9
+ machine learning (ML) infrastructure components that simplify ML
10
+ development by defragmenting the tools between frontend frameworks and
11
+ hardware backends. It includes the XLA compiler, StableHLO, VHLO,
12
+ [ PJRT] ( https://openxla.org/xla/pjrt ) and other components.
13
+ - ** XLA**
14
+ - XLA (Accelerated Linear Algebra) is an open source compiler for machine
15
+ learning. The XLA compiler takes models from popular frameworks such as
16
+ PyTorch, TensorFlow, and JAX, and optimizes the models for
17
+ high-performance execution across different hardware platforms including
18
+ GPUs, CPUs, and ML accelerators. The XLA compiler outputs some code to
19
+ LLVM, some to "standard" MLIR, and some to
20
+ [ Triton MLIR] ( https://triton-lang.org/main/dialects/dialects.html ) that
21
+ is processed by (MLIR-based) OpenAI Triton compiler.
22
+ - ** PJRT**
23
+ - [ PJRT] ( https://github.com/openxla/xla/blob/main/xla/pjrt/c/pjrt_c_api.h )
24
+ is a uniform Device API that simplifies the growing complexity of ML
25
+ workload execution across hardware and frameworks. It provides a
26
+ hardware and framework independent interface for compilers and runtimes.
27
+ - ** StableHLO**
28
+ - StableHLO is the public interface to OpenXLA, it is a standardized MLIR
29
+ dialect that may be used by different frameworks and compilers in the
30
+ OpenXLA ecosystem. XLA supports StableHLO, and immediately converts it
31
+ to HLO on the input. There are some
32
+ [ StableHLO to StableHLO] ( https://openxla.org/stablehlo/generated/stablehlo_passes )
33
+ passes implemented using the MLIR framework. It is also possible to
34
+ convert StableHLO to other compilers' IR without using HLO, for example
35
+ in cases where an existing IR is more appropriate.
36
+ - ** CHLO**
37
+ - CHLO is a collection of higher level operations which are optionally
38
+ decomposable to StableHLO.
39
+ - ** VHLO**
40
+ - The [ VHLO Dialect] ( https://openxla.org/stablehlo/vhlo ) is a MLIR dialect
41
+ that is a compatibility layer on top of StableHLO. It provides a
42
+ snapshot of the StableHLO dialect at a given point in time by versioning
43
+ individual program elements, and is used for serialization and
44
+ stability.
45
+ - ** MHLO**
46
+ - MHLO is a standalone MLIR-based representation of XLA's HLO IR. The
47
+ dialect is being evaluated for deprecation, and new users of the dialect
48
+ should prefer to use StableHLO instead.
49
+ - ** HLO**
50
+ - HLO (High Level Optimizer) is an internal graph representation (IR) for
51
+ the XLA compiler (and also supported input). It is ** not** based on
52
+ MLIR, and has its own textual syntax and binary (protobuf based)
53
+ representation.
54
+ - ** MLIR**
55
+ - [ MLIR] ( https://mlir.llvm.org ) is a hybrid IR infrastructure that allows
56
+ users to define "dialects" of operations at varying degrees of
57
+ abstraction, and gradually lower between these opsets, performing
58
+ transformations at each level of granularity. StableHLO and CHLO are two
59
+ examples of MLIR dialects.
60
+ - ** LLVM**
61
+ - [ LLVM] ( https://llvm.org/ ) is a compiler backend, and a language that it
62
+ takes as an input. Many compilers generate LLVM code as a first step,
63
+ and then LLVM generates machine code from it. This allows developers to
64
+ reuse code that is similar in different compilers, and also makes
65
+ supporting different target platforms easier. XLA: GPU and CPU backends
66
+ have
67
+ [ LLVM IR emitters] ( https://github.com/openxla/xla/tree/main/xla/service/llvm_ir )
68
+ for targeting specific hardware.
0 commit comments