CMU: How to Write Fast Code
文章平均质量分 90
Snail_Walker
Google Senior Machine Learning Tech Lead | 行胜于言
展开
-
为什么要进行代码加速?
背景自动优化总结How to write fast code不是教你如何写代码更快,而是教你如何写更快的代码。首先我们需要了解为什么需要进行代码加速?要写一些并行的代码进行加速?背景 从这幅图可以了解到吃CPU福利的纯粹代码加速已经不行了,单个CPU加速连续代码已经到了极限,再往上收到CPU功耗等等的制约。与此同时,层次化存储使得CPU和存储器之间的瓶颈也越来越大。所以使得代码发挥出硬件上的效原创 2017-01-17 10:51:22 · 1737 阅读 · 2 评论 -
Multicore Programming OpenMP: Part 1
多核共享内存平台multicore shared-memory platformOpenMP介绍多核共享内存APIOMP介绍parallel region创建线程同步synchronizationcriticalatomic循环parallel loopsparallel forreductiondata environmentAdvanced worksharing opti翻译 2017-02-01 13:15:38 · 1228 阅读 · 0 评论 -
如何写出运行速度更快的代码:硬件篇
介绍为什么需要更高效的代码加速的意义硬件平台multicore vs manycoreInstruction level parallelismSIMDSimultaneous MultithreadingMemory HierarchySystem Architecture介绍这门课会学到OpenMP、CUDA、Hadoop的使用,想想真是激动,一门课要学这么多东西。为什么需要更翻译 2017-01-25 11:37:37 · 2681 阅读 · 0 评论 -
Manycore Programming: CUDA 2
最优存储设计SOA vs AOS存储对齐使用共享存储存储bank 冲突补全最大化指令吞吐量branch divergenceoptimizing to mix最大化调度吞吐量使用intrinsic 函数提高performance优化算法数据并行算法MapReduceScan数据并行算法的步骤compact压缩find unique找到独特的项建立flag arr翻译 2017-03-02 23:23:07 · 716 阅读 · 0 评论 -
Hadoop入门参考链接汇集
快速入门硬件错误流式数据访问大规模数据集简单的一致性模型移动计算比移动数据更划算异构软硬件平台间的可移植性Namenode 和 Datanode文件系统元数据的持久化通讯协议健壮性磁盘数据错误心跳检测和重新复制集群均衡流水线复制可访问性Hadoop的streampartition类combiner类和reducer类的用法Hadoop MapReduce软件框架1原创 2017-04-05 22:04:36 · 663 阅读 · 0 评论 -
Hadoop的经验小结:MapWritable的使用以及别的细节
MapReduce优化小结MapWritable的使用计算similarity公开课程转载请注明出处:http://blog.csdn.net/c602273091MapReduce优化小结一般来说有结构上的优化和算法上的优化。结构上的优化【1】【2】就比如修改调度器(scheduler),修改key-value pairs,这样来减少key的数量进行shuffle,这样的优化就是使用诸如M原创 2017-04-27 14:50:01 · 6390 阅读 · 0 评论 -
AWS EMR 上跑 Hadoop 运用过程中遇到的问题总结
遇到问题EMR_DefaultRole is invalid运行的时候看任务有些没有看到AWS的命令行AWS的安装AWS的账号注册AWS EMR的配置AWS的instance讲解遇到问题“EMR_DefaultRole is invalid.”在AWS EMR上运行Hadoop的ngram的时候,出现下面错误: 查询【1】中的log可以发现是”EMR_DefaultRole is i原创 2017-04-13 15:20:41 · 4867 阅读 · 2 评论 -
Hadoop深入学习:Combiner
使用Hadoop的combiner,可以使它在map-reduce框架中可以运行得更快速。因为减少了中间键的数量,带宽等等得到了更大的利用。在本节中,我们着重学习MapReduce编程模型中的Combiner组件。 每一个map都可能会产生大量的本地输出,Combiner的作用就是对map端的输出先做一次合并,以减少在map和reduce节点之间的数据传输量,以提高网络IO性能,是转载 2017-04-21 15:06:22 · 503 阅读 · 0 评论 -
Java中的Map
我们都知道,java中的Map结构是key->value键值对存储的,而且根据Map的特性,同一个Map中 不存在两个Key相同的元素,而value不存在这个限制。换句话说,在同一个Map中Key是唯一的,而value不唯一。Map是一个接口,我们不能 直接声明一个Map类型的对象,在实际开发中,比较常用的Map性数据结构是HashMap和TreeMap,它们都是Map的直接子类。如果考虑到存取 效转载 2017-04-21 18:47:28 · 992 阅读 · 0 评论 -
Makefile的例子:Sequential和OpenMP版本(make)
转载请注明出处:http://blog.csdn.net/c602273091Sequential这是没有加OpenMp版本的Makefile,使用的时候直接make就可以生成需要的文件,make clean就会把里面提到的该目录下的文件删除。PROJ = matrix_mulCC = g++CFLAGS = -c -g -Wall -I/opt/local/include LDFLAGS =原创 2017-05-06 11:26:32 · 2776 阅读 · 0 评论 -
程序计时的小技巧:clock()和wtime()
clock()clock()是在time.h里面的程序,通过前后两次相减得到ticktok的次数,除以CLOCKS_PER_SEC,就得到了秒数。在计算一个程序的运行时间的时候,如果只是简单的线性执行的程序,那么使用clock() 就可以计算出程序的执行时间,但是其实这个时间是CPU的时间。如果你用clock()计算并行程序执行时间,发现它会把所有CPU的执行都叠加起来【1】。 clo原创 2017-05-06 16:40:20 · 2637 阅读 · 0 评论 -
Multicore Programming OpenMP: Part 2
CPU无法达到peak performance的原因矩阵乘法的讨论介绍理论基础块状矩阵计算优化技巧代价模型strength reduction内联函数inline f循环展开loop unrolling去掉下标计算sub-expression eliminate查表look up table合并循环减少条件判断上一节说到的是OpenMP的写法,这一次主要是介绍代码优化。CP翻译 2017-02-03 23:28:48 · 1064 阅读 · 0 评论 -
如何写出运行速度更快的代码:软件篇——加速k均值的代码(OpenMP)
介绍并发concurrency VS 并行parallelism解决问题的步骤了解当前状态内在表示找到替代办法从替代办法中选择符合的介绍之前的硬件篇: http://blog.csdn.net/c602273091/article/details/54728511 介绍了代码加速的平台的基础知识。这一篇主要是以kmeans算法为例子介绍软件层面的代码加速的知识。在软件层面,包括数据结构、翻译 2017-02-12 20:53:17 · 3299 阅读 · 0 评论 -
CUDA 初体验
CUDA Visual ProfilerCUDA编程指导CUDA Visual Profiler在上180645课程的时候,里面谈到使用CUDA来做矩阵乘法和k均值聚类的加速。在使用n卡的时候,有一个Visual Profiler的东西可以看到GPU的使用信息。在安装好了CUDA以后,在Ubuntu上登录以后,使用X server。在Ubuntu命令行输入: ssh -X < your_原创 2017-02-22 22:50:06 · 1543 阅读 · 0 评论 -
git的小知识
1、提交改变: commit -a -m “comment”2、提交新版本: git push origin master3、看过去的提交历史: git log4、看过去的提交历史并看到哈希值: git reflog5、恢复到过去的某个版本: git reset – hard 你想要的版本的哈希值PS: http://blog.csdn.net/c602273091原创 2017-02-13 10:16:51 · 398 阅读 · 0 评论 -
分配内存按需要对齐
在VS里面,使用_aligned_realloc和_aligned_malloc进行内存对齐。 https://msdn.microsoft.com/zh-cn/library/y69db7sx(v=vs.100).aspx https://technet.microsoft.com/zh-cn/library/8z34s9c6在Ubuntu中,实际上应该使用aligned_alloc进原创 2017-02-15 12:00:04 · 992 阅读 · 0 评论 -
Multicore Programming SIMD
SIMD介绍SSE的指令Streaming SIMD Extensions函数命名举例应用SIMD介绍single instruction multiple data就是一条指令执行很多个一样的操作。比如128位的浮点运算,那么128位就可以同时计算4组float类型的数据运算。在intel的处理器中,定义了一套这样的运算SSE。SSE的指令(Streaming SIMD Extensions原创 2017-02-13 11:00:15 · 1066 阅读 · 0 评论 -
ManyCore Programming GPU: CUDA Part
介绍矩阵乘法原始版本改成CUDA版本使用shared memory使用内存对齐 Bcache blocking去掉条件判断介绍18-645:how to write fast code中使用了CUDA,参考教材是【1】。在国外买这本书的话需要60刀,国内的话找一找就可以下到较为清晰的版本。这一部分主要是介绍CUDA的基本的写法【2】直接上CUDA的代码进行了解,然后从代码中学到需要的东原创 2017-02-19 12:47:59 · 1080 阅读 · 0 评论 -
18-645:How to Write Fast Code 期中考试准备
Backgroundmulticore programmingmanycore programming18-645:how to write fast code快要期中考试了,所以这里对过去所学的三个Module进行一个总结,分别是background、multicore programming、manycore programming。接下来对每个Module都进行总结一下。转载请注明出处:h原创 2017-03-18 21:05:29 · 2021 阅读 · 0 评论 -
Install Hadoop on local machine
install JDKInstall hadoopRun Project on Hadoopinstall JDK需要提前安装好jdk和ant。jdk是对java程序进行编译的工具(java development kid)jre:java runtime environment是提供java虚拟机的运行环境。ant:项目管理工具,用于Hadoop的项目管理。Hadoop Mapreducer就原创 2017-04-07 18:38:40 · 402 阅读 · 0 评论 -
Distributed Computing: Application Design in Hadoop
设计Hadoop算法Hadoop的设计原则local aggregationcountpairs and stripesco-occurrenceorder inversionrelative frequency设计Hadoop算法key-value pair是Hadoop中是最基本的数据结构。键值和数值可以是整数、字符串和任意的数据结构。所以在Hadoop算法设计中,最重要的就是找到key翻译 2017-04-10 14:10:34 · 448 阅读 · 0 评论 -
Cluster Programming: Hadoop 了解
介绍介绍现在终于进入了cluster programming——hadoop。要了解Hadoop需要了解以下问题:1、为什么需要使用分布式系统(distributed system)?2、在large scale的分布式计算中,出现failures的情况时有发生么?3、在Hadoop中是如何解决这些问题的?4、什么是Mapreduce?5、什么时候可以使用Mapreduce应用比较合适?6、Mapr翻译 2017-03-22 14:58:43 · 905 阅读 · 0 评论 -
Manycore Programming: CUDA 1
多核和多处理器平台的区别作用的区别架构的区别软硬件的内在模型应用的语义CUDA的存储操作同步CUDA平台在之前介绍了OpenMP的多核编程,这一节主要讲得就是CUDA的多处理器编程。多核和多处理器平台的区别作用的区别多核平台的指令以及控制更加复杂,可以在单个周期实现很简单的操作。优化的时候是针对单个的线程,是对线性代码模型的加速。多处理器更多的资源是在计算部分,实现的是减轻单个处理器的翻译 2017-03-02 21:59:18 · 935 阅读 · 0 评论 -
Embedded/Mobile CNN Resources
SqueezeNet:AlexNet-level accuracy with 50x fewer parameters and <0.5MB model sizeShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile DevicesMobileNet:Efficient Convolutional Ne转载 2017-08-09 22:19:02 · 499 阅读 · 0 评论