Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过将一些工作转移到GPU,我耗时的Java应用程序会从Rootbeer中受益吗?_Java_Gpu_Rootbeer - Fatal编程技术网

通过将一些工作转移到GPU,我耗时的Java应用程序会从Rootbeer中受益吗?

通过将一些工作转移到GPU,我耗时的Java应用程序会从Rootbeer中受益吗?,java,gpu,rootbeer,Java,Gpu,Rootbeer,我的Java应用程序读取数千个文本文件,通过行并将文本解析为浮点数,然后用它们进行一些计算,然后将结果保存到一些文件中,现在我使用多个线程同时执行它们,仍然需要大约一个小时来运行整个应用程序 以下是我的应用程序的简化伪版本: String Lines[]=ReadFile("abc.txt"),Items[]; float its[]; for (int i=0;i<Lines.length;i++) { Items=Lines[i].split(","); its=new fl

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

以下是我的应用程序的简化伪版本:

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");
字符串行[]=ReadFile(“abc.txt”),项目[];
浮动其[];

对于(inti=0;i来说,答案通常是:这取决于

Rootbeer将能够把一些工作转移到GPU上,但是有很多警告

  • 你必须学会一种全新的做事方式
  • 它可能不会加快速度。这取决于应用程序中的瓶颈在哪里。例如,如果您的问题是I/O绑定的,那么GPU处理将无济于事。您可以通过查看应用程序运行时的CPU使用情况来检查代码的现状。如果需要一个小时,那么除非您的文件非常庞大,否则它将无法正常运行oes听起来好像受CPU限制
  • (这是最重要的警告。)您应该从优化现有代码开始,并检查还有多少改进空间。GPU处理本质上只是在问题上投入更多的马力;这是一个好主意,如果且仅当您的代码已经以最佳方式运行
  • 现在,从外观上看,应用程序中的许多处理都与处理字符串有关。您正在对
    字符串
    调用
    .split()
    ,这会将其分解为
    字符串[]
    ;然后你遍历位并读取每个位,将其转换为一个
    浮点值
    ;然后你进行计算。这是一项相当繁重的工作,尤其是在垃圾收集器上,它必须清除所有这些
    字符串

    我对一些非常类似的东西做了一些详细的分析,在中使用整数而不是浮点,这导致了一些详细的讨论。结论是,放弃基于字符串的方法,逐个字符地读取文件,将它们手动转换为整数,这会产生巨大的影响。几乎可以肯定类似的东西将帮助您生成浮点数


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

    谢谢你提供的详细答案,我会调查一下。