首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过将一些工作转移到GPU上,我花费时间的Java应用程序会从Rootbeer中获益吗?

通过将一些工作转移到GPU上,我花费时间的Java应用程序会从Rootbeer中获益吗?
EN

Stack Overflow用户
提问于 2014-12-11 20:25:25
回答 1查看 385关注 0票数 1

我的Java应用程序读取数千个文本文件,遍历这些行并将文本解析为浮点数,然后用它们进行计算,然后将结果保存到一些文件中,现在我使用多个线程同时执行它们,仍然需要大约一个小时才能运行整个应用程序。

以下是我的应用程序所做工作的简化伪版本:

代码语言:javascript
复制
String Lines[]=ReadFile("abc.txt"),Items[];
float its[];

for (int i=0;i<Lines.length;i++)
{
  Items=Lines[i].split(",");
  its=new float[Items.length];
  for (int j=0;j<its.length;j++) its[j]=Float.parseFloat(Items[j]);
  do some calculation with : its[]
}
Do more calculation, save results to a StringBuffer.
Save StringBuffer to ("abc_result.txt");

我读过Rootbeer能够将一些工作转移到GPU并加快处理速度,所以我的问题是:

能否在GPU上处理文本解析和文件I/O?还是我需要在CPU上完成这个部分,并且只在GPU上进行计算?

2我的应用程序能从Rootbeer中受益吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-11 20:37:10

答案,就像很多时候一样:这取决于。

Rootbeer将能够将一些工作转移到GPU。但也有很多警告。

  1. 你必须学会一种全新的做事方法。
  2. 它可能不会加快速度。这取决于应用程序中的瓶颈所在。例如,如果您的问题是I/O绑定的,那么GPU处理不会有帮助。通过查看应用程序运行过程中CPU的使用情况,您可以使用现有的代码来检查这一点。如果需要一个小时,那么除非您的文件非常庞大,否则它听起来就像是CPU绑定的。
  3. (这是最重要的警告。)您应该首先优化您拥有的代码,并检查有多大的改进空间。GPU处理本质上只是在问题上投入更多的马力;这是一个好主意,当且仅当您的代码已经在优化地运行

现在,应用程序中的许多处理,从外观上看,都与处理字符串有关。您正在对一个.split()调用String,它将其分解为一个String[];然后遍历这些位元并读取每个位元以转换为float;然后进行计算。这是一项相当繁重的工作,特别是垃圾收集器,因为垃圾收集器必须清除所有这些String

我在this question中使用整数而不是浮点数,对一些非常类似的东西做了一些详细的分析,并进行了一些详细的讨论。得出的结论是,放弃String-based方法,逐个字符地读取文件,手动将它们转换为整数,会产生很大的不同。几乎可以肯定的是,非常类似的东西将帮助您生成浮点数。

因此,简而言之,Rootbeer可能会有所帮助,但在你尝试如此激烈的事情之前,你还有很多可以做的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27431763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档