18-645:How to Write Fast Code
文章平均质量分 90
CMU 18-645课程的总结和个人做的项目。主要从多核(OpenMP)、多处理器(CUDA)和分布式系统(Hadoop)对矩阵乘法和K-均值聚类进行加速。以及这门课程我们组做的项目进行一个总结。
Snail_Walker
Google Machine Learning Tech Lead | 行胜于言
展开
-
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 · 382 阅读 · 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 · 1040 阅读 · 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 · 972 阅读 · 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 · 1025 阅读 · 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 · 1028 阅读 · 0 评论 -
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 · 1186 阅读 · 0 评论 -
如何写出运行速度更快的代码:软件篇——加速k均值的代码(OpenMP)
介绍并发concurrency VS 并行parallelism解决问题的步骤了解当前状态内在表示找到替代办法从替代办法中选择符合的介绍之前的硬件篇: http://blog.csdn.net/c602273091/article/details/54728511 介绍了代码加速的平台的基础知识。这一篇主要是以kmeans算法为例子介绍软件层面的代码加速的知识。在软件层面,包括数据结构、翻译 2017-02-12 20:53:17 · 3277 阅读 · 0 评论 -
如何写出运行速度更快的代码:硬件篇
介绍为什么需要更高效的代码加速的意义硬件平台multicore vs manycoreInstruction level parallelismSIMDSimultaneous MultithreadingMemory HierarchySystem Architecture介绍这门课会学到OpenMP、CUDA、Hadoop的使用,想想真是激动,一门课要学这么多东西。为什么需要更翻译 2017-01-25 11:37:37 · 2646 阅读 · 0 评论 -
为什么要进行代码加速?
背景自动优化总结How to write fast code不是教你如何写代码更快,而是教你如何写更快的代码。首先我们需要了解为什么需要进行代码加速?要写一些并行的代码进行加速?背景 从这幅图可以了解到吃CPU福利的纯粹代码加速已经不行了,单个CPU加速连续代码已经到了极限,再往上收到CPU功耗等等的制约。与此同时,层次化存储使得CPU和存储器之间的瓶颈也越来越大。所以使得代码发挥出硬件上的效原创 2017-01-17 10:51:22 · 1714 阅读 · 2 评论