陳韋任 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>
陳韋任 via llvm-dev
2017-Jun-09 21:14 UTC
[llvm-dev] [Newbie Question] Compute a schedule region's scheduled cycles.
+Matthias. 2017-06-10 5:06 GMT+08:00 陳韋任 <chenwj.cs97g at g2.nctu.edu.tw>:> 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 >-- 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/9dde04e8/attachment-0001.html>
Matthias Braun via llvm-dev
2017-Jun-12 19:01 UTC
[llvm-dev] [Newbie Question] Compute a schedule region's scheduled cycles.
- ScheduleDAGInstr is a structure used by the PostMachineScheduler and PostRASchedulerList, so that is fine - I am not sure I understand your exact goals here. But it sounds like you may either want to write a new scheduler reusing ScheduleDAGInstrs would be good there, you may also look into the MachineTraceMetrics class which computes resources used on the critical path. This currently used to direct some peephole optimizations. Even if it doesn't answer the sort of queries you want to perform it may be an example to learn from on how to use the scheduling model directly. - Matthias> On Jun 9, 2017, at 2:14 PM, 陳韋任 <chenwj.cs97g at g2.nctu.edu.tw> wrote: > > +Matthias. > > 2017-06-10 5:06 GMT+08:00 陳韋任 <chenwj.cs97g at g2.nctu.edu.tw <mailto:chenwj.cs97g at g2.nctu.edu.tw>>: > 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 <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 <mailto: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 <mailto: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 <mailto:llvm-dev at lists.llvm.org> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev> > > > > > -- > Wei-Ren Chen (陳韋任) > Homepage: https://people.cs.nctu.edu.tw/~chenwj <https://people.cs.nctu.edu.tw/~chenwj> > > > -- > Wei-Ren Chen (陳韋任) > Homepage: https://people.cs.nctu.edu.tw/~chenwj <https://people.cs.nctu.edu.tw/~chenwj> > > > -- > Wei-Ren Chen (陳韋任) > Homepage: https://people.cs.nctu.edu.tw/~chenwj <https://people.cs.nctu.edu.tw/~chenwj>-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170612/07eaaebf/attachment.html>