常见的cpu密集型任务的示例

时间:2016-11-18 10:57:10

标签: algorithm cpu

为了测试并行化工具,我正在寻找以下任务或算法的示例:

  1. cpu intensive
  2. 并行
  3. 输入和输出相对较小
  4. 常用于日常编程(即不仅仅是科学家和算法开发人员)
  5. 我发现了许多例子,但没有一个满足4号。最明显的一个是素数分解。旅行推销员问题是另一个问题。

    为了满足3号,我认为算法不应该具有线性或接近线性的复杂性,例如排序。

2 个答案:

答案 0 :(得分:0)

有两种耗时的任务:

  1. 迭代大量数据......违反第3点(除非您动态创建数据)

  2. 对小数据进行计算耗时...违反第4点。

  3. 我可以建议创建基本类型的大std :: vector并对其中的每个元素执行简单操作(插入随机值/通过随机值修改)或对其进行排序

    这将是cpu密集型,它很容易分成多个线程,你可以动态生成你的数据(小输入,但仍然是巨大的内存占用),它是非算法的。< / p>

答案 1 :(得分:0)

多个图像处理过滤器非常耗时且可高度并行化。

例如,大直径的中位数或双侧或非局部均值滤波器。这些在图像去噪中很有用。

典型图像尺寸为几MB。一个很好且有用的应用是允许对可调参数进行实时反馈,这需要在第二个时间内运行。

指数行为的难题不是理想的目标,因为它们的运行时间在很大的范围内变化,并且你将被限制在N的小范围内,使得调查有点人为。

线性代数将为N²存储提供许多具有N³行为的算法。 Tey在物理模拟代码中被大量使用。

相关问题