你需要资金,你需要一个更好的算法,一个更好的实现,或者你需要改变你的问题。要获得资金,您需要与您的顾问合作。这可能是关于使用赠款或获得XSEDE 分配的赠款。如果您的顾问两者都没有,即使您喜欢他们的研究,与他们合作也可能不是一个好的选择:科学需要资金。
如果你想让它更便宜,那就考虑一个不同的算法。即使它做了很多分支和类似的事情,也必须有某种方法在某些部分利用线性代数运算来利用 GPU(或 Xeon Phi)加速。也许您需要预先计算一些值,或者需要一种完全不同的方法。只有你(和你的顾问)会知道。事实上,这种算法开发是研究的全部目的。你的顾问可能给你这个项目,因为没有简单的计算机可以解决这个问题。您的目标不是找到一台更大的计算机,而是找出如何让您的计算机解决这个问题(或者至少找出如何更好地解决它)。没有在线教程或任何东西可以帮助您:这是真正的研究。
您还需要查看您的实现。如果您使用 Python 等高级语言进行循环和分支,这可能是问题所在。您要么需要重新编写要矢量化的代码以做得更好,要么要获得“生产质量”的速度,您需要使用性能语言以非分配格式重新编写它(生成严格类型的和过程间优化的编译代码),如 C++ 或 Julia。不难找到非向量化的 Python 代码,只需通过更好的实现和小心内存使用就可以使速度提高 1000 倍(即使向量化在内存使用方面也很糟糕,所以仍然有很多需要优化的地方)。
最后,如果这是一个众所周知的高度研究领域,它不能做得更好,并且您无法获得资金/分配来运行算法,请选择一个不同的项目。有时问题目前是不可能的。我非常怀疑你的顾问会给你一个这个领域的问题,尽管你是一名本科生。
但是,鉴于您是一名年轻的本科生,我会双重/三重/四重检查您实际上是否正确,甚至在责怪其他人之前甚至需要这种计算能力。令人尴尬的并行(100 个人 * 116,323 条记录)非常小,即使在没有 GPU 的台式计算机上训练也是如此。你真的应该确保一切都尽可能快(用几种不同的语言重写几次,对每个部分进行基准测试和分析,摆脱内部循环中的所有内存分配等),确保没有更好的算法选择,确保没有可以进行的集群分配,然后才应该考虑转移到更适合您当前访问计算能力的新项目。