gpt4 book ai didi

c++ - 使用 cilk 计算 Fibonacci 的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-27 22:58:10 24 4
gpt4 key购买 nike

在学习 cilk 时,我用两个相反的例子来反驳:

  1. From intel

  2. from wiki (or other examples in the net):

相反的是这两行:

x = spawn fib (n-1);
y = spawn fib (n-2);

第一个站点说:

You do not need to add a cilk_spawn attribute to the second recursive call to fib() because that will create an empty continuation

  1. 我不明白为什么?
  2. 什么是正确的方法? (使用 2 个 spawn 命令还是只使用一个?)

最佳答案

英特尔文档“int x = cilk_spawn fib(n-1);”中的代码请求允许在另一个威胁中运行它,而下一行“int y = fib(n-2);”将在与主程序相同的威胁下运行。 wiki 代码还要求计算 fib(n-2) 的新威胁,以便如果有超过三个处理器运行主程序 (fib(n))、fib (n-1) 和 fib(n-2) ) 所有关于单独的威胁。

如果只有两个处理器,两个代码将执行相同的操作。以下内容来自维基页面:

...处理器没有义务在别处分配衍生过程; 如果机器只有两个处理器并且当执行 fib(2) 的处理器进入过程调用时,第二个处理器仍忙于 fib(1),第一个处理器将挂起 fib(2 ) 并执行 fib(0) 本身,就像它是唯一的处理器一样。当然,如果有另一个处理器可用,那么它将被调入服务,所有三个处理器将同时执行不同的帧。

关于c++ - 使用 cilk 计算 Fibonacci 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30544019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com