我正在评估是使用带有四核处理器的Java线程池,还是为我的程序使用Aparapi GPU框架。
虽然GPU上的增益很好,但是四核处理器和GPU之间的速度差异并不是算法的淘汰标准。另一方面,我的程序结构非常好,有很多复杂的对象,而且--如果我正确理解-- Aparapi不支持原始数据类型之外的并行化。
对于那些对复杂对象具有这两种方法经验的人,您建议将对象重构为Aparapi的原始数据类型,还是坚持使用Java线程池?我是否正确地理解对于Java线程池,它可以处理的对象类型没有限制?
发布于 2014-12-12 13:00:30
类似于ExecutorService的ThreadPoolExecutor只是从队列中提取的执行作业的工作线程池(Runnables),因此除了常见的并发问题(如数据竞争和死锁)之外,对对象没有任何限制。
如果速度对您非常重要,那么在引入并发性之后,将对象转换为原始数据类型的数组并处理这些数组应该是您的第一次优化。如果在此之后,您想要移动到gpu,那么您已经在原始数据结构级别上了。
https://stackoverflow.com/questions/27444036
复制相似问题