Comparison of C++ Object Initialization Method

在了解创建对象的方式之前,首先了解一下初始化赋值两个操作,

  1. 初始化是创建变量时赋予其一个初始值,即初始化之前并不存在变量
  2. 赋值是把对象的当前值擦除,用新值代替旧值,即赋值之前存在变量

让人困惑的是=既可以用于初始化,也可以用于赋值,不要认为初始化和赋值是相同的操作(对于内置类型看不出这一区别,但是对于类的对象而言,这涉及的就是 = 到底使用的是拷贝构造函数还是拷贝赋值运算符了)

GPU Structure and Programing

Todo

  • L2 cache gpgpu-sim 源码分析
  • Bank conflict 的题目分析
  • warp occupancy 概念和计算
  • 由broadcast式访问global memory引申的对于constant memory的理解和使用
  • 并行化+访存优化,并行化中有一个branch divergence的问题
  • 查找 DRAM burst突发传送官方文档说明
  • 发现矩阵乘法是一个结合各种并行算法以及CUDA硬件架构知识的好的入手点,create一门课程 “从矩阵乘法入门并行计算-CUDA版”
  • 需要验证如果shared memory中的元素大小和bank大小不一致时,访问其中更小的数据是否会造成bank conflict。需要借助nvprof,但是nvprof在选择检测bank事件时无法正常工作
  • CUDA C只是对标准C进行了语言级的扩展,通过增加一些修饰符使编译器可以确定哪些代码在主机上运行,哪些代码在设备上运行
  • GPU计算的应用前景很大程度上取决于能否从问题中发掘出大规模并行性

宏观视角

高性能计算的第一性原理:访存优化。所有的努力(优化硬件设计,优化算法)都是在试图解决内存墙。

0%