intel实习第二个月总结

在Intel的第二个月,我专注于Trumpet项目的Bicluster、SVD和LinearRegression性能优化。通过深入理解源码和Spark执行流程,我成功提升了SVD性能一倍。在Bicluster的优化过程中,发现并解决了由于SVD近似估计导致的不稳定性问题。最后,我对读入数据和算法执行的partition进行了策略调整,以提高程序健壮性。这次经历让我深刻体会到精准思考在问题解决中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

度过了浮躁的第一个月,第二个月开始接手Trumpet的测试任务,要求在月底之前完成Trumpet中Bicluster,SVD,LinearRegression的性能优化并发布第一个release。

第一周

follow up,在学弟离职前学习如何修改scala代码,编译并在集群上运行。在集群上部署spark的分析系统dew并生成分析图表,用于分析spark运行阶段的各个stage的情况,内存使用情况以及网络通信情况。

第二周

看懂bicluster, svd, linearRegression, wilcox, covariance的源码,从读取输入到调用mllib中算法运算再到最后输出。同时学习spark的逻辑执行流程,物理执行流程。spark根据action的类型划分job,每次job从最后的partition回溯到最一开始的输入partition,根据其中的shuffle类型划分出stage。最后按照partition的数目划分task并分配到各个executors上面。了解了这些原理为之后优化和测试的工作提供了理论的支持。

第三周

修改bicluster,svd代码。

svd中把对于dom的调用去掉了,降低了对于内存的要求,使得我们可以采用更小的partitions,减少了shuffle的数量。最终性能提升了一倍。

bicluster是主要修改的程序,起初的思想很简单,参照svd降低对于内存的要求,采用更小的partitions。同时重写原来的矩阵乘法和矩阵转置乘,利用rdd的窄映射把rdd直接作为矩阵乘的参数,减少一次collect的shuffle。但是在测试的时候发现有一次调用bicluster时间很短,后来每一次都达到了迭代的上限而不能收敛。后来的时间全部花在解决这个问题上面,经过一步步的排查发现在bicluster之前会调用依次svd,svd返回并传给bicluster的参数每次都不一样。而迭代的过程会放大误差,导致每次的结果都出现偏差。最后发现svd采用的是近似估计,返回的值是不确定的。解决的办法是通过降低准确度使每次传给bicluster的值保持恒定。

第四周

对bicluster和

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值