gpt4 book ai didi

java - 通过将一些工作转移到 GPU,我的耗时 Java 应用程序是否可以从 Rootbeer 中受益?

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:55 25 4
gpt4 key购买 nike

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

这是我的应用程序功能的简化伪版本:

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 上并加快处理速度,所以我的问题是:

[1] Rootbeer 可以在 GPU 上处理文本解析和文件 I/O 吗?或者我是否需要在 CPU 上完成这部分,而只在 GPU 上进行计算?

[2] 我的应用程序会从 Rootbeer 中受益吗?

最佳答案

答案通常是:这取决于情况。

Rootbeer 将能够将一些工作转移到 GPU。但有很多注意事项。

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

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

我在 this question 中使用整数而不是 float 对非常相似的东西进行了一些详分割析。 ,并引发了一些详细的讨论。结论是,放弃基于字符串的方法并逐个字符地读取文件,然后手动将它们转换为整数会产生巨大的差异。几乎可以肯定,非常相似的东西将帮助您生成 float 。

所以,简而言之,根啤酒可能会有所帮助,但在尝试如此激烈的事情之前,您可以做很多事情。

关于java - 通过将一些工作转移到 GPU,我的耗时 Java 应用程序是否可以从 Rootbeer 中受益?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27431763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com