Saturday, November 24, 2012

梯度下降 for NN (1)

梯度下降的 6 种变形:

  • Back propagation
  • delta-bar-delta (adaptive learning rate)
  • steepest descent
  • QuickProp
  • Gauss-Newton
  • Levenberg-Marquardt

梯度下降 for NN (2)


  1. find the slope of the error surface
  2. how much to go down the error surface
  3. how the weights should be adjusted after each iteration
  4. when to stop training and what governs the decision
  5. whether the solution is suboptimal
  6. how good the final model is and how to assess its goodness of fit

Friday, November 23, 2012

《群体智能与仿生计算》阅读笔记(1)

偶然从图书馆看到这本书。还没有深入读,先把讲授的主要算法列出:

  • 演化算法 Evolutionary Algorithm
  • 人工免疫算法 Artificial Immune Algorithm
  • 混合遗传算法、遗传局部优化 Memetic Algorithm
  • 粒子群算法 Particle Swarm Optimization
  • 混合蛙跳算法 Shuffled Frog Leaping Algorithm
  • 猫群算法 Cat Swarm Optimization
  • 细菌觅食算法 Bacterial Foraging Optimization
  • 蚁群算法 Ant Colony Algorithm
  • 人工蜂群算法 Artificial Bee Colony Algorithm

Saturday, November 17, 2012

GPU存储器结构的演变

《大规模并行编程实战》 12.2节 读书笔记


  • 大型虚拟和物理地址空间
  • 统一的设备地址空间
  • 可配置的缓存和暂存空间
  • 提高原子操作的速度
  • 提高全局存储器的访问速度

Reference

Gelado, I. et al, An asymmetric distributed shared memory model for heterogeneous parallel systems.

OpenCL性能剖分和调试



《OpenCL异构计算》 

第十二章 OpenCL 性能剖分和调试 读书笔记

剖分
  • 基于事件的剖分
  • AMD APP Profiler
  • AMD APP KernelAnalyzer
调试
  • gDEBugger
  • AMD printf 扩展


OpenCL扩展

《OpenCL异构计算》 

第十一章 OpenCL 扩展 读书笔记

扩展机制概览

OpenCL 定义了三种不同的扩展:
  • KHR 扩展
  • EXT 扩展
  • 厂商扩展

设备拆分

EXT 扩展 - 设备拆分提供了一个用于将 OpenCL 设备拆分成为多个子设备的接口。

双精度

cl_khr_fp64
使用以下制导语句开启:
#pragma cl_khr_fp64 : enable

Friday, November 16, 2012

OpenCL的内存性能


《OpenCL异构计算》 

第六章 OpenCL 在 CPU/GPU 平台上的实现

第3节 OpenCL的内存性能 读书笔记


Outline:
  • OpenCL 全局内存
  • 本地内存 —— 软件管理的 cache

OpenCL 全局内存

内存分析的基本方法是判断 kernel 的实际吞吐量,通过计算 kernel 的内存带宽得到。公式如下:

其中:
EB 是有效带宽;
Br 是从全局内存中读取的字节数
Bw 是写入到全局内存的字节数
T 是 kernel 的执行时间,可由调用OpenCL 计时 API 或 剖分工具 得到。

将测得的 kernel 实际使用带宽,我们就可以和设备的峰值带宽相比较,以此来确定我们与峰值性能的差距。越接近峰值性能,内存系统的利用率就越高。如果与峰值性能差距较大,就需要考虑调整访存模式以提高带宽利用率。

本地内存 —— 软件管理的 cache

相对于硬件控制的 cache,本地内存(scratchpad 内存)有很多优点,比如 占用片上空间更少,能效比更高,在给定区域性能更高。同时也是同一个 work-group 内部的 work-item 之间相互交换数据的一个更重要的,保证访存低延迟的有效方法。