本人地球物理行业研究生,用 c++写代码,实现算法,算法原理没必要在此陈述。
具体可以抽象理解为计算一个存有 10 的 15 次方个 double 的一个矩阵,乘以一个向量 10 的 9 次方个 double 的向量。
内存是一定不够用的。
那么在计算中,遇到这种大量数据需要计算的情况,是如何解决的呢?
如何优化算法?使得程序能逐渐计算所有数据?
本人用 C++水平,相当于 matlab 能发挥的水平。也就是平时搞个矩阵加加减减乘一乘。调用别人的库函数这种(一般用 EIGEN )
1
jadec0der 2018-03-23 21:35:31 +08:00
内存多大一定不够用?要是 128G 能解决的话建议直接上 AWS,秒级计费,并不贵
|
2
snachx 2018-03-23 22:35:20 +08:00 via iPhone 1
如果不是稀疏矩阵就分块做吧
|
3
15584185420 OP @jadec0der 讲真末流 985 高校是买不起这种设备的,还是需要在算法上进行攻克,如果原始数据量提升一倍,对内存和计算量的需求会增加 32 倍。
|
4
15584185420 OP @snachx 如果是稀疏矩阵,有什么好的办法吗?
|
5
jadec0der 2018-03-26 14:01:31 +08:00 1
@15584185420 空间复杂度确实是一个问题,必须优化。不过我觉得 AWS 应该比自己买机器便宜的多。
比如 m5.12xlarge 是 48 核 192G 内存应该够你用了吧,一小时 0.4016 刀,合人民币两块五。计算一次 10 小时的话才 25 块钱,也能开 invoice。相比之下买台 16 核 32G 的 hp z840 工作站得两万五,够算一万小时的了。 |
6
snachx 2018-03-26 15:34:33 +08:00
@15584185420 #4 稀疏矩阵的话就用自己熟悉语言中现成的库来做啊,比如 python 的话,用 scipy.sparse
|
7
15584185420 OP @jadec0der 求教,怎么用 AwS
|
8
jadec0der 2018-04-02 20:24:51 +08:00
@15584185420 这…就注册帐号,新建 EC2 instance,然后连上去用就行了
AWS 比普通 VPS 复杂一些但是也差不多,主要是防火墙的入端口可能默认关闭。如果不会的话可以看看入门教程,AWS 文档很全的。其实用阿里云之类的国内云也差不多,机器可能贵点但是 fapiao 好开 |
9
dezhou9 2019-01-11 13:21:19 +08:00 via Android
cuda 编程了解一下
|