.NET异步编程
async和await原理
1234567891011using (HttpClient httpClient = new()){ string html = await httpClient.GetStringAsync("https://www.baidu.com"); Console.WriteLine(html);}string txt = "async";string filename = "async.txt";await File.WriteAllTextAsync(filename, txt);Console.WriteLine("写入成功");string s = await File.ReadAllTextAsync(filename);Console.WriteLine($"文件内容:{s}");
有上述一段代码,将其反编译。
生成两个Main函数。
程序入口为void Main。
123456789using S ...
Hadoop集群部署
Ubuntu 20.04.05 LTS
Hadoop 2.10.2
安装Ubuntu
下载镜像文件,可在一些镜像站下载,比如USTC开源软件镜像站。
我使用VirtualBox安装虚拟机,新建虚拟机时勾选Skip Unattended Installation,建议关闭网络并选择最小安装。安装系统时设置用户名为hadoop,名称节点计算机名为master,数据节点计算机名为slave0、slave1……这里部署3台机器的集群。
安装语言简体中文,用户的文件夹名是中文,在命令行下很麻烦。可以在设置中将语言改为英文,注销后再登录,系统弹出提示将用户文件夹改为英文;再将语言改为中文,注销后再登录,此时选择保留原有用户文件夹名称。
安装完毕后将软件源更改为国内源,并打开网络,更新系统和安装必要的软件。
1234sudo apt updatesudo apt upgradesudo apt -y install vim openssh-server net-toolssudo snap install code
集群通讯配置
网络配置
在虚拟机设置中将网络设置为“桥接网卡”。
i ...
分布式框架调度器的测试用例和算法
测试用例
HiBench
Intel-bigdata/HiBench: HiBench is a big data benchmark suite. (github.com)
一个大数据测试集,用于评估大数据框架的速度、吞吐量、系统资源利用率。测试集包括Hadoop、Spark、流式处理的工作负载。
工作负载
经典任务:Sort、WordCount、……
机器学习:Naive Bayes、kkk-means、LDA、PCA、XGBoost、……
数据库:Scan、Join、……
网页查询:PageRank、……
……
Docker
HiBench/docker at master · Intel-bigdata/HiBench (github.com)
在Ubuntu 14.04上的伪分布式环境。
使用HiBench
HiBench/docs at master · Intel-bigdata/HiBench (github.com)
构建HiBench
首先需要有Maven环境。
构建所有
一次性构建所有测试,比较耗时,下载的第三方库较多。
1mv ...
Quantum computational finance: quantum algorithm for portfolio optimization
市场数据
定价与收益
用向量描述特定资产的时间序列。
有 NNN 个资产,资产 sss 的时间序列为 Πs(t)\Pi_s(t)Πs(t),其中 t=[T]t=[T]t=[T],s=[N]s=[N]s=[N];时间差标准化为 111,在应用中时间差可小到毫秒级别。
资产在时刻 ttt 的收益定义在时间变化 Δt∈Z+\Delta t\in \mathbb Z_+Δt∈Z+ 上,资产 sss 的收益为 ys(t):=Πs(t)−Πs(t−Δt)Πs(t−Δt)y_s(t):=\frac{\Pi_s(t)-\Pi_s(t-\Delta t)}{\Pi_s(t-\Delta t)}ys(t):=Πs(t−Δt)Πs(t)−Πs(t−Δt)。
期望收益与协方差矩阵
向量 y⃗(t)\vec{y}(t)y(t) 表示 NNN 个资产时刻 ttt 的收益。定义未来 Δt\Delta tΔt 后的收益为 Y⃗\vec{Y}Y,其期望为
R⃗id:=E[Y⃗]\vec{R}^{\text{id}}:=\mathbb{E}\left[\vec{Y}\right]
Rid:=E[Y]
根据 ...
MySQL安装
在CentOS7上安装MySQL8
卸载MariaDB
命令查看 MariaDB 的安装包
1rpm -qa | grep mariadb
卸载
1rpm -e mariadb-libs-xxxx.x86_64 --nodeps
下载RPM包
https://dev.mysql.com/downloads/mysql/
选择Red Hat,Linux7。
安装MySQL服务
新建目录
123cd /usr/local/ mkdir mysqlcd mysql
解压RPM包
1tar -xvf mysql-xxx.x86_64.rpm-bundle.tar
安装
1234rpm -ivh mysql-community-common-xxxx.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-libs-xxxx.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-client-xxxx.x86_64.rpm --nodeps --forcerpm -ivh mysql-com ...
VQE基本原理总结
简介
给定哈密顿量 HHH,VQE估计基态能量 E0E_0E0:
H∣E0⟩=λ∣E0⟩H|E_0\rangle=\lambda|E_0\rangle
H∣E0⟩=λ∣E0⟩
制备初态 ∣ψ⟩=∣ψHF⟩|\psi\rangle=|\psi_{\text{HF}}\rangle∣ψ⟩=∣ψHF⟩
通过拟设 ∣ψ⟩=U(θ)∣ψHF⟩|\psi\rangle=U(\boldsymbol{\theta})|\psi_{\text{HF}}\rangle∣ψ⟩=U(θ)∣ψHF⟩
测量能量期望值 E(θ)E(\boldsymbol{\theta})E(θ)
经典优化方法更新 θ\boldsymbol{\theta}θ
拟设
可拓展型量子电路
depth
entanglement
UCC拟设电路
基于量子化学领域幺正耦合簇理论构造
试探波函数测量
能量期望值
⟨ψ∣H∣ψ⟩\langle\psi|H|\psi\rangle
⟨ψ∣H∣ψ⟩
现有量子计算机上的架构默认可以对每个量子比特进行计算基(泡利 ZZZ 算符)上的测量。
单量子比特
⟨ψ∣Z∣ψ⟩=⟨ψ∣(∣0⟩⟨0 ...
Tackling the Qubit Mapping Problem for NISQ-Era Quantum Devices
文中所有图片引用自原文 Tackling the Qubit Mapping Problem for NISQ-Era Quantum Devices
问题描述
文章介绍了将编写的量子电路映射为运行在真实设备上的方法。
在真实设备上,一个量子位只能与物理上相连的量子位进行运算。单量子门并不受这一限制的影响,而对于多量子门,如CNOT门,参与运算的量子位必须直接相连。由于任意多量子门都可拆分为多个单量子门和CNOT门的运算,因此我们只需研究如何处理CNOT门。
解决方案
符号约定
符号
定义
nnn
逻辑量子位数量
{qi}i=1n\{q_i\}_{i=1}^{n}{qi}i=1n
逻辑量子位
ggg
电路量子门数量
ddd
电路深度
NNN
物理量子位数量
{Qi}i=1n\{Q_i\}_{i=1}^n{Qi}i=1n
物理量子位
G(V,E)G(V,E)G(V,E)
物理设备芯片抽象得到的图结构
D(Qi,Qj)D(Q_i,Q_j)D(Qi,Qj)
QiQ_iQi 与 QjQ_jQj 间距离
π(qi)\pi(q_i)π( ...
用量子电路计算核函数的SVM分类器
初态为 ∣0⋯00⟩|0\cdots00\rangle∣0⋯00⟩,电路输出为 ∣ψ⟩=S(x2)†S(x1)∣0⋯00⟩|\psi\rangle=S(x_2)^{\dagger}S(x_1)|0\cdots00\rangle∣ψ⟩=S(x2)†S(x1)∣0⋯00⟩、
示例中构造一个厄米矩阵
M=[10⋯000⋯0⋮⋮⋱⋮00⋯0]=∣0⋯00⟩⟨00⋯0∣M=\begin{bmatrix}
1 &0&\cdots&0\\
0&0&\cdots&0\\
\vdots&\vdots&\ddots&\vdots\\
0&0&\cdots&0
\end{bmatrix}=|0\cdots00\rangle\langle 00\cdots 0|
M=10⋮000⋮0⋯⋯⋱⋯00⋮0=∣0⋯00⟩⟨00⋯0∣
计算投影测量的期望值为
⟨ψ∣M∣ψ⟩=⟨00⋯0∣S(x1)†S(x2)∣0⋯00⟩⟨00⋯0∣S(x2)†S(x1)∣0⋯00⟩\langle\psi|M|\psi\ran ...
PennyLane的使用
PennyLane是跨平台的量子机器学习Python包。
1pip install pennylane
12import pennylane as qmlimport numpy as np
量子电路
量子函数
一个量子电路可以视为一个Python函数,称为量子函数。
12345def my_quantum_function(x, y): qml.RZ(x, wires=0) qml.CNOT(wires=[0, 1]) qml.RY(y, wires=1) return qml.expval(qml.PauliZ(1))
PennyLane使用wire指代一个量子系统,在大多数设备上就代表一个量子比特。
量子函数遵守以下规则:
量子函数接受经典的输入,由量子运算符或称为模板的运算符序列组成,每行使用一条指令;
函数可以包含经典的控制结构,如 for 循环或 if 语句;
函数必须以单个值或元组的方式返回量子的观测值。
定义设备
要运行一个量子电路,首先需要指定一个计算设备。设备是 Device 类的实例,可以表示模拟器或硬件设备。
1dev = qml.d ...