C C++ Const Keyword Unscramble

Embellish Raw Pointer

The collocation between const and original pointer is confused to many people. There are two usages of it. The key difference is that if the pointer is prohibited to modify or the data which is pointed by pointer is prohibited to modify.

Parallel Computing

Law

并行计算领域的两个关键定律就是 Amdahl 和 Gustafson,从不同角度诠释了 加速比系统串行化程度CPU核心数 之间的关系

Kokkos Source Code Analysis

Usage

Install & CMake

1
2
3
4
5
6
7
cd some_software-1.4.2
mkdir build
cd build

cmake .. 
cmake --build . # It is equivalent to make
cmake --build . --target install # It is equivalent to make install

After the above flow, we can use Kokkos by CMake directly.

C C++ Compile

名词辨析

GNU

  • GNU’s Not Unix!的递归缩写
  • 一个自由的操作系统,起源于GNU计划,希望发展出一套完整的开放源代码操作系统来取代 Unix
  • 基本组成包括:

GCC

  • GNU Compiler Collection, GNU编译器套装,最初是为了GNU操作系统而编写的编译器。
  • 有多种语言前端,可用于解析不同的编程语言、操作系统、计算机系统结构,是GNU计划的关键部分,也是GNU工具链的主要组成部分之一
  • 可以编译C、C++、JAV、Fortran、Pascal、Object-C、Ada,Go等语言

gcc/g++/MinGW

  • gcc: GCC中的GUN C Compiler(C 编译器)
  • g++: GUN C++ Compiler(C++编译器)
  • MinGW: Minimalist GNU for Windows,是将GCC编译器和GNU Binutils移植到Win32平台下的产物

但根据GCC的gcc和g++区别的说法,gcc和g++并不是编译器,它们只是一种驱动器1,它们会根据参数中要编译的文件的类型,调用对应的GUN编译器。以编译C语言为例,包含以下过程。

C C++ Link

链接,将多个可重定位目标文件和标准库函数合并为可执行目标文件的过程,为了解决外部内存地址的依赖问题

在链接之前,各个程序模块都是相互独立的,模块A所使用到的模块B的内容,在模块A的视角下仅仅是一个符号,并不清楚其具体内容。链接过程可以理解为把模块B的内容结合到A中。整个过程类似搭积木最后的模块拼接过程。而这一拼接过程,采用专业术语来表达,即重定向。

0%