Algorithm 算法是否有一个名称,用于查找最小的资源集,从而在数据流图/加权DAG上不允许资源争用?

Algorithm 算法是否有一个名称,用于查找最小的资源集,从而在数据流图/加权DAG上不允许资源争用?,algorithm,compiler-construction,schedule,dataflow,directed-acyclic-graphs,Algorithm,Compiler Construction,Schedule,Dataflow,Directed Acyclic Graphs,我不确定这是一个简单的解决方案还是一个命名的算法,所以我想在这里问一下 我有一个来自编译器的数据流图DFG。这是一个圆弧加权的DAG。弧权重表示各种操作的延迟,节点表示操作本身的加法、减法、负载等。我试图找到允许计算在其关键路径上运行的最小资源集 我已经通过以下方式完成了这项工作: // Initialize ready_list <- 0 clock = 0 resource[resource_types] <- 0 resource_max[resourc

我不确定这是一个简单的解决方案还是一个命名的算法,所以我想在这里问一下

我有一个来自编译器的数据流图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++;  
然后资源阵列将拥有确保无争用所需的最小资源数量,最终时钟值将是关键路径这只是为了证明这不是家庭作业问题=]


我只是想知道这是否有一个名字,或者是否有其他可爱的方式来做这件事。谢谢

让我确保我正确理解您的意思,您正在寻找一种算法,该算法在尽可能短的时间内完成编译,并且每两个任务之间的资源差异最小?我不确定您所说的每两个任务之间的资源差异最小是什么意思?。算法生成的是确保无争用所需的最小资源数。也就是说,每一条指令都可以在准备就绪时立即执行,而它的所有前置指令都已经执行。如果图形在对应于时钟周期的阶段中可视化,并且只有一种资源类型,那么这将对应于给定阶段图形的最大宽度。我正在为多种资源类型执行此操作。可能重复