Xunhao Li (Alan, CRC) via llvm-dev
2017-Jun-09 15:34 UTC
[llvm-dev] [Newbie Question] Compute a schedule region's scheduled cycles.
Hi All, I am trying to construct a small optimization based on ScheduleDAGInstrs that does the following: 1. Find candidate nodes in the DAG, and speculatively modify the node (nodes). 2. After modification, try to compute the scheduled cycles of the region. 3. If the cycle number improves, go back to 1. to find the next candidate node. I am thinking using SchedulePostRATDList's top-down algorithm to calculate the cycles needed for the region's execution. However, it decomposes the schedule DAG while calculating the cycles --- In my case I want to keep the DAG so that we don't need to construct it again in the following steps. So my question is: is there a way (or API) to calculate the scheduled cycles needed for the region, without touching the DAG? Or is there a better way to do so in a ScheduleDAG? Did I missed something? Thanks in advance. Much appreciated. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170609/5124a928/attachment.html>
陳韋任 via llvm-dev
2017-Jun-09 20:03 UTC
[llvm-dev] [Newbie Question] Compute a schedule region's scheduled cycles.
Not saying I am totally understand how thing works, but I think you're misleading by the DAG in the class name ScheduleDAGInstrs. I only see MachineInstrs there, no SDNode. And the comment of ScheduleDAGInstrs says, /// A ScheduleDAG for scheduling lists of MachineInstr. One place mentioning DAG is relate to constructing the dependency of SUnit, i.e., Value2SUsMap. Regards, chenwj 2017-06-09 23:34 GMT+08:00 Xunhao Li (Alan, CRC) via llvm-dev < llvm-dev at lists.llvm.org>:> Hi All, > > > > I am trying to construct a small optimization based on ScheduleDAGInstrs > that does the following: > > 1. Find candidate nodes in the DAG, and speculatively modify the > node (nodes). > > 2. After modification, try to compute the scheduled cycles of the > region. > > 3. If the cycle number improves, go back to 1. to find the next > candidate node. > > > > I am thinking using SchedulePostRATDList’s top-down algorithm to calculate > the cycles needed for the region’s execution. However, it decomposes the > schedule DAG while calculating the cycles --- In my case I want to keep the > DAG so that we don’t need to construct it again in the following steps. > > > > So my question is: is there a way (or API) to calculate the scheduled > cycles needed for the region, without touching the DAG? Or is there a > better way to do so in a ScheduleDAG? Did I missed something? > > > > Thanks in advance. Much appreciated. > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >-- Wei-Ren Chen (陳韋任) Homepage: https://people.cs.nctu.edu.tw/~chenwj -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170610/530f346a/attachment.html>
陳韋任 via llvm-dev
2017-Jun-09 21:06 UTC
[llvm-dev] [Newbie Question] Compute a schedule region's scheduled cycles.
Also you might need to check use PostRASchedulerList or PostMachineScheduler, PostRASchedulerList is considered deprecated as mentioned in [1]. [1] http://lists.llvm.org/pipermail/llvm-dev/2017-April/112348.html HTH, chenwj 2017-06-10 4:03 GMT+08:00 陳韋任 <chenwj.cs97g at g2.nctu.edu.tw>:> Not saying I am totally understand how thing works, but I think you're > misleading > by the DAG in the class name ScheduleDAGInstrs. I only see MachineInstrs > there, no SDNode. And the comment of ScheduleDAGInstrs says, > > /// A ScheduleDAG for scheduling lists of MachineInstr. > > One place mentioning DAG is relate to constructing the dependency of SUnit, > i.e., Value2SUsMap. > > Regards, > chenwj > > > > 2017-06-09 23:34 GMT+08:00 Xunhao Li (Alan, CRC) via llvm-dev < > llvm-dev at lists.llvm.org>: > >> Hi All, >> >> >> >> I am trying to construct a small optimization based on ScheduleDAGInstrs >> that does the following: >> >> 1. Find candidate nodes in the DAG, and speculatively modify the >> node (nodes). >> >> 2. After modification, try to compute the scheduled cycles of the >> region. >> >> 3. If the cycle number improves, go back to 1. to find the next >> candidate node. >> >> >> >> I am thinking using SchedulePostRATDList’s top-down algorithm to >> calculate the cycles needed for the region’s execution. However, it >> decomposes the schedule DAG while calculating the cycles --- In my case I >> want to keep the DAG so that we don’t need to construct it again in the >> following steps. >> >> >> >> So my question is: is there a way (or API) to calculate the scheduled >> cycles needed for the region, without touching the DAG? Or is there a >> better way to do so in a ScheduleDAG? Did I missed something? >> >> >> >> Thanks in advance. Much appreciated. >> >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >> > > > -- > Wei-Ren Chen (陳韋任) > Homepage: https://people.cs.nctu.edu.tw/~chenwj >-- Wei-Ren Chen (陳韋任) Homepage: https://people.cs.nctu.edu.tw/~chenwj -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170610/3a2283cb/attachment.html>
Possibly Parallel Threads
- [Newbie Question] Compute a schedule region's scheduled cycles.
- [LLVMdev] ScheduleDAGInstrs/R600 test potential issue with implicit defs
- [LLVMdev] Instruction Scheduling - migration from v3.1 to v3.2
- How to traverse llvm DAG for analysis
- [LLVMdev] [RFC] Scheduler Rework