Parallel processing 摆脱数据依赖

Parallel processing 摆脱数据依赖,parallel-processing,Parallel Processing,我有以下代码: for(i=0; i<size; i++) { d[i] = d[i-1] + v[i]; } 我不想在两者之间拖延 起始间隔:1 |load v[i-1]|load d[i-2]| add |store d[i-1]| | |load v[i] |load d[i-1]| add | store d[i] | 这是不可能的,因为尚未存储d[i-1] 如何通过更改代码将启动间隔设置为1 你不能缩小这个差距 此外,这

我有以下代码:

for(i=0; i<size; i++)
{
    d[i] = d[i-1] + v[i];
}
我不想在两者之间拖延

起始间隔:1

|load v[i-1]|load d[i-2]|    add    |store d[i-1]|
|           |load v[i]  |load d[i-1]|     add    | store d[i] |
这是不可能的,因为尚未存储d[i-1]


如何通过更改代码将启动间隔设置为1

你不能缩小这个差距


此外,这种(循环展开)并不是这种循环的最有效的并行处理方式。您的循环看起来像一个前缀和操作。前缀和有快速并行算法和实现。例如,什么语言?很难准确理解您的要求。我在问如何更改代码以使程序不暂停。没有特定的语言
|load v[i-1]|load d[i-2]|    add    |store d[i-1]|
|           |load v[i]  |load d[i-1]|     add    | store d[i] |