HPC wiki project
打算写一下各个 HPC 应用领域所试图解决的科学侧问题,涉及的科学方法,以及将该问题映射到计算机所使用的算法。
打算写一下各个 HPC 应用领域所试图解决的科学侧问题,涉及的科学方法,以及将该问题映射到计算机所使用的算法。
包含 $$n$$ 个量子比特的系统用 $$2^{n}$$ 个复数 $$\alpha_{i}$$ 表示
状态为向量 $$(\alpha_{0...00}, \alpha_{0...01}, ...\alpha_{1...11})^T$$
对量子比特 i 的单比特操作,相当于对只有下标 i 位不同的两个状态乘矩阵操作
$$ (a'_{b_0b_1...b_{i-1}0...b_{n-1}}, a'_{b_0b_1...b_{i-1}1...b_{n-1}}) $$
在搞大物实验和数设项目
let binding :
let %x : Tensor[(10, 10), float32] = Constant(1, (10, 10), float32);
%x + %x
let表达式绑定的变量只作用在表达式body内
在看TVM优化卷积的应用
TVM使用tensor表示计算的量
tensor的表示形式在AI的一些如CNN等数据比较规整的领域较为合理,目前在考虑能否在不规整数据类型的应用中找到研究点
比如当前考虑的ASpT应用就是一种不规整数据类型
一个结论是在搞一个项目的时候首先应该尽量从已知的文档中获取信息,或者说make the best of前人的工作
tvm.te.schedule :
s = te.create_schedule(B.op)
WW = s.cache_read(W, "shared", [B])
## cache_read(tensor, scope, readers)
## 将tensor cache到scope中,readers会读取cache的内容
vtune intel性能分析器
新学到的cuda相关东西:
shared memory以bank方式存储
为达到最大性能,一个wrap内32个线程:
访问不同bank 或 访问同一地址
同一个wrap中线程的不同执行路径需要串行执行。
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)}$$
形如 $$ T(n) = a\cdot T(\frac{n}{b}) + f(n)$$
若$$f(n) = O(n^{log_b a-\epsilon})$$,则 $$T(n) = \Theta(n^{log_b a}) $$
若$$f(n) = O(n^{log_b a}\cdot log^k n)$$,则$$ T(n) = \Theta(n^{log_b a} log^{k+1} n) $$