并行化GPU上的复杂和数据密集型计算

时间:2017-11-29 16:06:05

标签: performance optimization gpu mathematical-optimization gpu-programming

前言:对不起,这是一个非常开放的问题,因为要解决我正在处理的确切问题会非常复杂,而且我认为抽象的表述也包含必要的细节。如果需要更多细节,请随时询问。

GPU计算的效率来自于能够在数千个核心上并行计算,即使这些核心运行速度比传统CPU核心慢。我想知道这个想法是否适用于我正在处理的问题。

我正在研究的问题是优化问题,在此问题中,生成潜在的解决方案,计算此解决方案的质量,并与当前的最佳解决方案进行比较,以便尽可能找到最佳解决方案。

在当前算法中,gradient descent的变化,计算此惩罚是迄今为止最多的处理器时间(分析建议大约5%的时间用于生成新的有效可能性,以及95%的时间用于计算罚款)。然而,这种惩罚的计算是一个非常复杂的过程,其中(潜在的)解决方案的不同部分依赖于彼此,并且受到多个不同的约束,可以对解决方案给予惩罚 - 该问题的数据模型目前存储的RAM超过200MB。

是否存在在GPU上针对此类问题编写算法的策略?我的问题是目前需要为处理问题的每个处理器核心/线程加载数据模型,因为生成新解决方案花费的时间很少,开始使用锁定并且必须等待处理器是低效的完成惩罚计算。

GPU显然没有为每个内核提供这么多的内存。但是,我的理解是,如果将模型存储在RAM中,GPU和CPU之间的通信开销将大大减慢算法(目前,在单个核心上每秒执行大约100万次这些惩罚计算。一个相当现代的CPU,我猜测每秒向GPU传输数百万个数据会很快成为瓶颈。

如果有人有任何见解,甚至提到类似的问题,我会非常感激,因为我自己的搜索还没有发现太多。

0 个答案:

没有答案