处理数据的方法,速度是我处理速度的两倍



有人问我这个问题,我有点困惑。

Q: 你将如何处理速度是我处理速度的两倍的数据?

我想到以下几点:

  1. 使用队列来处理此问题。但如果我使用简单的队列,那么所需的队列将非常大,我仍然会落后在…的后面因为每t次我都会有一半以上的数据过程我会继续呈指数级落后
  2. 我使用一个线程读取数据,另外使用两个线程进行处理。但是假设我的数据必须串行处理,那么会发生什么

我仍然感到困惑,任何关于类似问题的帮助都将受到欢迎。我知道可能有一个标准的解决方案,但我不知道。

我想在c/c++中实现

简单回答:您需要某种并行处理。这并不容易。

长话短说:根据您的工作负载需求,以及瓶颈是在IO还是在CPU中,它可能只是单核、多核处理器、共享内存多处理器上的多线程,甚至分布在多个节点之间。如果问题足够简单(令人尴尬的并行),或者您需要显式地进行一些并行编程,那么这可能只是在工作单元之间分配和平衡工作的问题。基本上有两种并行编程模型:OpenMP,用于具有共享内存的多核系统中的多线程(对称或非均匀访问);用于低延迟高带宽网络中的分布式处理。更复杂的是,在混合并行编程运行时环境中,OpenMP和MPI可能完美地一起运行:OpenMP在每个节点上的核心之间分配和协调并行计算负载,MPI在节点之间执行。请注意,这是一项非常艰巨的工作。

最新更新