Welcome to ONE compiler contribution!
Our Compiler frontend is supporting more operators day by day.
This issue is to share our next step Operstors to support and provide a guide how-to.
Compiler FE: Enable ### Opluci_unit_readtest and luci_unit_writetest should pass with adding to luci/testsDRAFT Compiler FE prefix in the titleDRAFT, PR/NO MERGE, PR/NO TESTcommon-artifacts/exclude.lsthttps://github.com/Samsung/ONE/issues?q=is%3Aissue++compiler+enable will show a list of issues used to track Operation support
https://github.com/Samsung/ONE/pulls?q=is%3Apr+DRAFT+Compiler+ will show a list of drafts that are related with Operation support.
compiler foldertest.lst filePriority | Operator | Status
-- | -- | --
1 | CAST | 聽@seanshpark (#486) done
2 | LOGISTIC | 聽@seanshpark (#537) done
1 | REDUCE_PROD | @seanshpark (#629) done
1 | REDUCE_SUM | @llFreetimell (#628) done
2 | SELECT | 聽@seanshpark (#732) done
2 | SIGMOID | 聽@seanshpark (#639) done (== LOGISTIC)
1 | SIN | 聽@seanshpark (#386) done
2 | SPACE_TO_BATCH_ND | 聽@seanshpark (#382) done
2 | SPLIT | 聽@seanshpark (#646) done
1 | SQUARED_DIFFERENCE | 聽@karthik-pen (#404) done
1 | STRIDED_SLICE | 聽@seanshpark (#554) done
2 | SUM = (REDUCE_SUM ) | 聽~@d-krylov (#429)~
1 | WHILE | 聽@jinevening (#374) done
2 | FLOOR_MOD | @seanshpark (#819) done
2 | LOGICAL_AND | 聽@sun-sharma (#406) done
2 | SQUARE | 聽@kishcs (#405) done
2 | REDUCE_ANY | @seanshpark (#851) done
1 | FILL | @toomuchsalt (#354) done
1 | SQUEEZE | @toomuchsalt (#572) done
1 | ZEROS_LIKE | @toomuchsalt (#358) done
1 | SHAPE | 聽@d-krylov (#428) --> @seanshpark #1006 done
Priority | Operator | Status
-- | -- | --
1 | EXPAND_DIMS | 聽@AShedko (#420) done
2 | FLOOR_DIV | @d-krylov (#432 ) done
2 | GREATER | 聽@d-krylov (#421) done
1 | GREATER_EQUAL | 聽@d-krylov (#422) done
2 | LESS | 聽@d-krylov (#423) done
2 | MAXIMUM | 聽@d-krylov (#424) done
2 | MINIMUM | 聽@d-krylov (#425) done
1 | NOT_EQUAL | 聽@d-krylov (#426) done
2 | ONE_HOT | 聽@struss (#668) done
1 | RANGE | 聽@kvochko (#427) done
2 | REDUCE_MAX | @d-krylov (#433) done
Notice to operator developers;
I've added Priority column to privode which operators to enable first.
@seanshpark We are not able to add labels (DRAFT, PR/NO MERGE, PR/NO TEST) in DRAFT PR.
/cc @sun-sharma @karthik-pen
We are not able to add labels (DRAFT, PR/NO MERGE, PR/NO TEST) in DRAFT PR.
I've added them :)
I've added them :)
Thank you :)
4. post draft PR; parial codes of draft PR is OK
@seanshpark, I think this step requires clarification. I see some drafts not accepted. Do we require draft to be accepted by reviewer before going further?
I see some drafts not accepted.
I actually don't accept (click on "approval" button) draft codes.
I scan the codes but don't thoroughly review codes one by one with the draft.
I may add comments if something is suspicious.
I check on as written above
luci_unit_readtest and luci_unit_writetest should pass with adding to luci/tests
I assume contributors run testing
tests.lst file should have read and write test with the operator.Do we require draft to be accepted by reviewer before going further?
Nope.
Do we require draft to be accepted by reviewer before going further?
Nope.
I believe that this is sub-optimal and time consuming way. I suggest we change process to posting one PR with complete draft consisting of 11 commits, one per component. Then review and accepted this draft and then merge with "rebase and merge" button. "Rebase and merge" will allow to have separate commit per component.
This will reduce number of PR for you to review 11 times. Given, that we have to wait each review approximately 24h due to timezone difference, this is quite time saving approach. Do you agree with that approach?
I suggest we change process to posting one PR with complete draft consisting of 11 commits, one per component.
This is OK but may consume time in review and if there are any change requests.
"Rebase and merge"
We don't allow this option.
I suggest we change process to posting one PR with complete draft consisting of 11 commits, one per component.
This is OK but may consume time in review and if there are any change requests.
Ok, thank you, I believe this is faster way.
In order to make it even more faster one good trick could be used: you can write in review "OK with this (something) change"."Rebase and merge"
We don't allow this option.
Could you please explain why?
I want SRR developers to be able to merge code by means of Alexander after you reviewed draft. This is strong requirement because Alexander is in the same timezone and can do merge without 12h wait time.
@seanshpark
I want to clarify several things:
1) Can we merge Draft PR (with one commit per component) after review in one piece?
2) If no - can I merge separate component-related PRs without your approval?
Can we merge Draft PR (with one commit per component) after review in one piece?
I'm not sure yet but let's try.
I want SRR developers to be able to merge code by means of Alexander after you reviewed draft. This is strong requirement because Alexander is in the same timezone and can do merge without 12h wait time.
Another point of view on this is to find a way for a person to work so that all things are not blocked simultaneously by any single task at any time. In other words, everyone always needs to do things that are independent of each other in parallel. So even if one of them is blocked for one day, two days, or more, it is possible to continue doing other things independently of it. The method will vary from person to person.
It may be difficult to adapt because this is different from the way you used to work in the past. But I think this is the ultimate solution for smooth collaboration from different timezones.
compiler/luci/logex/src/FormattedGraph.cpp is missing with
GREATERGREATER_EQUALafter review in one piece?
To review without confusion, for the draft codes, please resolve conflicts.
@seanshpark I agree that reading code, which is too different from upstream, may be confusing at best. However most of the merge conflicts raise from the operator lists in different parts of the codebase( CircleNodes.lst, CircleNodes.h, OpChef.def, OpChefs.h, GraphBuilderRegistry.cpp )
It's just not viable to do rebases/merges every time new operator is merged, since it's just wasted effort. Other than that( and occasional conflicts in FormattedGraph.cpp and OpPrinter.cpp ) there are no common places which change during operator merges.
Maybe we should consider doing the same thing as in tflchef/proto/tflchef.proto - just predeclare all of operators we want to support and comment out unsupported ones. This should make merge conflicts much less frequent, so only operators located very close would conflict
All done for this issue.
Thanks for your hard work!!!
Yay, thank you!
Welcome to ONE compiler contribution!
Our Compiler frontend is supporting more operators day by day.
This issue is to share our next step Operstors to support and provide a guide how-to.steps to work
select an operator you want to work and create an issue
- add a link to this issue by adding like "For #277"
- use issue title like
Compiler FE: Enable ### Op- someone(mostly I will) mark your ID in the table
- work on a draft code following the modules one by one
- post draft PR; parial codes of draft PR is OK
finish draft and update to PR
luci_unit_readtestandluci_unit_writetestshould pass with adding toluci/tests- use
DRAFT Compiler FEprefix in the title- add 3 labels
DRAFT, PR/NO MERGE, PR/NO TESTpost separate PRs one by one with below steps
- TensorFlowPythonExamples
- tflite2circle , tflchef , tfldump , circledump : these can be posted in parallel
- TensorFlowLiteRecipes
- luci/lang
- luci/import , luci/service , luci/logex , luci/export : these can be posted in parallel
- luci/tests
reference links
https://github.com/Samsung/ONE/issues?q=is%3Aissue++compiler+enable will show a list of issues used to track Operation support
https://github.com/Samsung/ONE/pulls?q=is%3Apr+DRAFT+Compiler+ will show a list of drafts that are related with Operation support.
I think it would be helpful to mention any additions to common-artifacts here. If an issue pertaining to it does exist, then maybe reference it, especially for point 6.iii. In my specific implementation, I have had to exclude recipes from circle optimization, in addition to generated testcases (please refer pull request #3410 for the details).
Most helpful comment
I'm not sure yet but let's try.