0

これが単純な解決策なのか、「名前付き」アルゴリズムなのかわからないので、ここで質問したいと思いました。

コンパイラからのデータフローグラフ(DFG)があります。これはアーク加重DAGです。アークの重みはさまざまな操作の待ち時間を示し、ノードは操作自体(加算、減算、負荷など)を表します。クリティカルパスで計算を実行できるようにする最小限のリソースセットを見つけようとしています。

私はすでにこれを次の方法で行っています:

// Initialize   
ready_list <- 0   
clock = 0   
resource[resource_types] <- 0   
resource_max[resource_types] <- -1   
source = SCHEDULED   

// Get ready instructions   
     for each node n in V    

// The following means the predecessors of n have finished running based on their    
// latecies/arc weights, not just been labeled "scheduled".  My apologies for the poor     
//pseudo-code    
if predessesors of n are scheduled   
        ready_list <- n    

// "schedule" instruction   
n = pop(ready_list)   
n = SCHEDULED   
resource[resource_type(n)]++

// Update maximum resource required   
if resource[resource_type(n)] > resource_max[resource_type(n)]      
    resource_max[resource_type(n)] = resource[resource_type(n)]   

if ready_list = empty   
    clock++;  

次に、resources配列には、競合が発生しないようにするために必要な最小限のリソースが含まれ、最終的なクロック値がクリティカルパスになります(これは、これが宿題の問題ではないことを証明するためだけのものです=])

これに「名前」があるのか​​、それとも他にかわいい方法があるのか​​、疑問に思っています。ありがとう!

4

0 に答える 0