input gate

$$i^{(t)} = sigmoid(W^i [h^{(t-1)}, x^{(t)}] + b^i)$$

forget gate

$$f^{(t)}=sigmoid(W^f [h^{(t-1)}, x^{(t)}] + b^f)$$

output gate

$$o^{(t)}=sigmoid(W^o [h^{(t-1)}, x^{(t)}] + b^o)$$

$$\overline{C}^{(t)}=tanh(W^C[h^{(t-1)}, x^{(t)}] + b^C)$$

$$C^{(t)} = f^{(t)}C^{(t-1)} + i^{(t)}\overline{C}^{(t)}$$

$$h^{(t)} = tanh(C^{(t)})\times o^{(t)}$$

#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

#tcp/ip five layer model
tcp/ip stack

network layer : communicate through routers
通过router连接:internetwork -> Internet
协议: IP -> internet protocol

data link layer : across a single link
network layer : across a collection of networks
transport layer : sort out which client and sever programs are supposed to get that data

hub: physical层设备,少用
switch:data link层设备

router:forward data between independent network
network layer
Border Gateway Protocol(BGP) : router最优路径选择协议

网线接口 : RJ45
link light : 正确连接
activity light : 数据正确传输

data link层

MAC地址:48位 前24位表示生产厂商

unicast : 一对一传输 least significant bit为0
mulcast : least significant bit为1
broadcast : 发送到LAN中每个设备 -> board cast address : FF:FF:FF:FF:FF:FF

Ethernet frame

Preamble: 8byte
前7byte : 交替01
最后byte : SFD(start frame delimiter)

destination address : 目标MAC地址
source address : 来源MAC地址
ether-type : 16bit 描述协议
VLAN header : 表示frame本身为VLAN frame
VLAN(virtual LAN):单个物理设备有多个虚拟LAN
payload :数据
FCS : frame check sequence cyclical redudancy check(CRC)

network层

DHCP(dynamic host configuration protocol):分配ip地址

ip datagram

version : 协议版本
header length : 20bytes for ipv4
service type: 8bits quality of service (QoS)
identification: 相同message该字段相同
flag field: datagram是否可以fragment
fragment offset: 标识一个datagram的切片
TTL: time to live 被抛弃前最多的router hop次数
protocol: 传输层所使用协议
header checksum: datagram header校验和

ipv4地址:
class A:
开始为0
第一个byte:network ID
后三个byte: host ID
class B:
开始为10
前两个byte:network ID
后两个byte: host ID
class C:
开始为110
前三个byte:network ID
最后一个byte: host ID

ARP : address resolution protocol
寻找一个ip的硬件地址
ARP table: ip地址与MAC地址表

三段non-routable address:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
对外部router不可见

transport层

tcp header

sequence number : 当前段的编号
acknowledgement number : 下一段编号

命令

linux : traceroute
win : tracert
打印传输路线

linux : mtr
win :pathping
持续traceroute

linux : netcat
nc -z -v [host] [port] -z: zero input -v: verbose
win : Test-NetConnection

nslookup

官方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.

看起来挺有趣的书
果然自己还是懂得太少了

ELF(Executable and Linking Format) 可执行可链接格式

od {-t [c/x1/x1z...]} [file] 将文件转为[字符/ 十六进制 / 十六进制后显示字符]格式,默认为8进制

readelf -h [file] 读取elf格式头信息

静态链接库

ar ruv libfoo.a foo.o bar.o #打包静态链接库
ar tv libfoo.a #查看库中内容
cc -o baz.o -lfoo #链接libfoo.a到baz.o

动态链接库

gcc -fPIC -c add.c #生成.o文件,PIC:position independent code
gcc -shared -o libmymath.so subtract.o add.o #生成动态链接库
gcc -o libmymath.so -fPIC -shared subtract.c add.c #将两步命令合为一步
gcc main.c -L. -lmymath 

同时有静态动态链接库时优先链接动态链接库

objdump -d hello.o 反汇编