
1. 最简单的 system.time(...)
2. microbenchmark:对比不同表达式的多次重复运行时间
3. 运行时间与内存效率监测,这有我的样例代码,learnR/b6.profiling.R at master · renkun-ken/learnR · GitHub,把"task/task1.R"改成你要运行的脚本文件即可,运行结束后会输出哪些代码耗时最长、占内存最大。
4. 可用Hadley的hadley/lineprof · GitHub 扩展包做监测结果的可视化输出
R语言是一种功能强大的编程语言,它可以用于数据分析,机器学习,数据可视化,统计分析等。它的一个重要特点是,它可以记住之前的数据,并且可以重复使用。这是因为R语言有一个叫做“状态”的概念,它可以让程序在运行过程中记住之前的数据,从而可以重复使用。另外,R语言还有一个叫做“环境”的概念,它可以让程序在运行过程中记住之前的状态,从而可以重复使用之前的数据。因此,R语言可以让程序在运行过程中记住之前的数据,从而可以重复使用之前的数据,从而使程序更加高效。用BLAS库进行。现在做的DNN、CNN都是在底层把计算转换为矩阵乘法。加速矩阵乘法就是用的BLAS库。很多情况下,application叫做R standard interface,就是单线程实现的矩阵乘的库,可以很容易地把这个库替换下面的部分,既可以替换成GPU加速的cuBLAS库,也可以是多核或多线程的intel的MKL库和OpenBLAS。通过这种方式,可以很快地提高矩阵运算速度。
Linux下有个NVBLAS库,它其实是cuBLAS的wrapper,从它里面就可以调整各种精度的矩阵乘。
它不仅支持单GPU,还支持多GPU。它的主要好处是对code不需要做任何改变,也就是zero programming effort,只需要把NVBLAS库load在前面,这个库就被替换成cuBLAS,跑到GPU上。
所以在做应用程序开发,大家通常有一种思路,如果想加速一个计算,就尝试把这个计算转换成矩阵计算,并加载各种多线程库或并行库,那么程序可以得到很快地提高,这其中不需要太多code的重写。然后看下benchmark,有两种benchmark。
蓝色的线是用原来的的R跑的程序,可以看到运行时间多很多,加载了NVBLAS库以后,运行时间少了很多。其他是一些在很多程序里运用的基础算法。当程序比较依赖于这种基础算法,就可以考虑加载很多并行库,来看程序的运行效果。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)