Comments (2)
Hi,
Asking here is perfectly fine. As the EmitC dialect is already upstreamed to MLIR core, it is also fine to ask question on https://llvm.discourse.group/c/mlir/31 or to discuss these on discord in the #mlir channel.
Regarding your question: Right now, we don't have any math implemented in EmitC itself. The only operators that can be applied with emitc.apply
are &
and *
. Everything else need to be done via emitc.call
ops. Thus you do more than a single line of C++ code. Instead of adding an example to the repo, let me to give on and comment on it here. For example the snippet
builtin.module {
builtin.func @test_add(%arg0: tensor<13x21x3xf32>, %arg1: tensor<13x21x3xf32>) -> tensor<13x21x3xf32> {
%0 = "tosa.add"(%arg0, %arg1) : (tensor<13x21x3xf32>, tensor<13x21x3xf32>) -> tensor<13x21x3xf32>
return %0 : tensor<13x21x3xf32>
}
}
can be converted to
builtin.module {
emitc.include "emitc_tosa.h"
builtin.func @test_add(%arg0: tensor<13x21x3xf32>, %arg1: tensor<13x21x3xf32>) -> tensor<13x21x3xf32> {
%0 = emitc.call "emitc::tosa::add"(%arg0, %arg1) : (tensor<13x21x3xf32>, tensor<13x21x3xf32>) -> tensor<13x21x3xf32>
return %0 : tensor<13x21x3xf32>
}
}
using emitc-opt --tosa-to-emitc-pipeline
. This can be translated with emitc-translate --mlir-to-cpp
to the C++ source code below:
#include "emitc_tosa.h"
Tensor<float, 13, 21, 3> test_add(Tensor<float, 13, 21, 3> v1, Tensor<float, 13, 21, 3> v2) {
Tensor<float, 13, 21, 3> v3 = emitc::tosa::add(v1, v2);
return v3;
}
The called C++ function is a templated one and refers to the standard library:
mlir-emitc/include/emitc/emitc_core_ops.h
Lines 161 to 169 in 0c93de1
It is not the aim of EmitC to be an MLIR dialect that represents C++ as complete as possible. However, we are of course willing to evolve the dialect. You might also want to take a look into this discussion.
I hope this answers your question?
from mlir-emitc.
Yes, I have a clearer picture now. Thanks!
from mlir-emitc.
Related Issues (20)
- cmake error HOT 2
- Question about test file HOT 1
- Invalid Pass Pipeline HOT 1
- Variadic MHLO reduce support HOT 6
- Composing legalizations HOT 6
- Add support for `tosa.argmax` HOT 1
- MHLO select scalar pred support HOT 1
- Reenable `tosa.rescale` test
- Plan to handle quantization for tosa-to-emitc? HOT 3
- hi,where I can find InsertEmitCTosaIncludeBase definition? thx! HOT 1
- Refactor types of attributes passed in TOSA reference implementation
- Refactor type of shift argument passed to tosa.mul
- Safe keras models in newer file format
- Use rewriter instead of utility functions for attribute conversion HOT 2
- Refactor type of shift argument passed to tosa.rescale
- Missing Operations in emitC MHLO HOT 1
- Extend mhlo::slice for Tensor3D HOT 1
- Extend mhlo::concatenate
- Make SliceOp implementation dimension agnostic HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mlir-emitc.