分类 未分类 下的文章

#pragma omp simd
for循环前对for循环显式simd优化

#pragma omp declare simd
函数前使函数生成simd版本

#pargma ivdep
for循环前忽略vector dependence

#pargma vector nontemporal
跳过过渡cache,直接stream到最下层cache

#include <omp.h>
int nt = omp_get_max_threads();

omp最多线程数

#pragma omp parallel private(A) share(B)
{
    int C;
    omp_get_thread_num();
}

omp多线程运行
每个thread有独立的A变量,B变量在所有thread间share
每个thread有独立C

export OMP_NUM_THREADS=5
限制omp线程数

fork thread:

#include <pthread.h>
int pthread_create(pthread_t *tidp,const pthread_attr_t *attr,
(void*)(*start_rtn)(void*),void *arg);

fork出一个thread
-lpthread

fork process:

pid = fork();

parent进程pid = 0,child进程pid!=0

官方mooc笔记

factual question: evaluate each option to determine if it is correct
For the Negative Factual Information questions,
remember that you're looking for an answer
that either isn't in the paragraph,
or directly contradicts information in the paragraph.

给2020的自己订下两个目标:
1. 参加超算比赛,最好能和学长们一起拿到冠军
2. 发一篇paper,尽管目标很远,不过尽量去努力吧

以上

MIPS指令集

PC寄存器(program counter): 保存当前运行指令地址
SP寄存器(stack pointer):当前栈指针,栈增长按地址从高到低
$a0 ~ $a3:传递函数参数
$v0 ~ $v1:函数返回值
$t0 ~ $t9:临时寄存器,过程调用中不需要被保存
$s0 ~ $s7:保留寄存器,过程调用中必须被保存
$zero:存储0
$gp:全局指针(指向静态数据)
$at: 由汇编器所使用

jr $ra: 无条件跳转至地址ra
lui $t0,255(load upper immediate):设置$t0中高16位为255

PC相对寻址:相对PC寄存器寻址

堆:从下向上增长(低地址向高地址),存储动态的内存

C后缀名

unix: .c : c源文件
.s : 汇编文件
.o : 目标文件
.a : 静态链接库
.so : 动态链接库
.out : 可执行文件

MS-DOS: .C, .ASM, .OBJ, .LIB, .DLL, .EXE

浮点数标准

单精浮点数:1位符号位,8位指数位,23位尾数
双精浮点数:1位符号位,11位指数位,52位尾数

| 指数 | 尾数 | 表示 |
| 0 | 0 | 0 |
| 0 | 非0 | 非规格化数 |
| 1 ~ max - 1 | 任意值 | 浮点数 |
| max | 0 | 无穷 |
| max | 非0 | NaN |

负指数使用偏阶
如-1 -> -1 + 127 = 126

发现会日常忘记git的基本操作,开个坑记一下

git add -u 加入所有对已经track的文件的修改
git add -A 加入所有文件,包括新增和删除
git reset --hard HEAD^ 回退到head的前一次commit
git reset --soft HEAD^ 只撤销commit操作,将add的文件还原到工作区