李贤珠-白色画布
太有趣了,
主人公小米用手中的蜡笔,绘出了一片纯白的天地。在这片天地中,小米遇到了啄木鸟爷爷、熊叔叔、青蛙姑娘、兔宝宝和兔妈妈。她用手中那支神奇的画笔创造了许许多多的奇迹。
.. _linux-beginner-gunzip:
官方的定义为:
gzip, gunzip, zcat – compression/decompression tool using Lempel-Ziv coding (LZ77)
参考gunzip命令
使用的方法为:
1 | $ uname [OPTION]... |
常用的一些选项为:
-a, --all
:打印全部的信息-s, --kernel-name
:打印内核名-n, --nodename
:打印网络节点hostnme,即主机名-r, --kernel-release
:打印内核发行版-v, --kernel-version
:打印内核版本-m, --machine
:打印机器的硬件名字-p, --processor
:打印processor或者unknown-i, --hardware-platform
:打印硬件平台或者“unknown”-o, --operating-system
:打印操作系统1 | $ unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z] |
参数:
查看压缩文件中包含的文件:
1 | # unzip -l abc.zip |
-v 参数用于查看压缩文件目录信息,但是不解压该文件。
1 | # unzip -v abc.zip |
lshw
是Hardware Lister
的缩写,直面意思即列出系统硬件信息。
可以显示关于计算机硬件组件(如处理器、内存、硬盘、网卡等)的详细信息,对于系统管理员和用户来说是一个非常有用的工具。
任何参数都不加的话,可用,信息极多,但是可用信息不多。
1 | sudo lshw |
这将输出系统中所有可用硬件的详细信息,包括硬件组件的制造商、型号、驱动程序等。
显示摘要信息:相对而言,这个反而好一些,简单的就是有用的
1 | sudo lshw -short |
这将显示硬件的摘要信息,包括设备名、类别、描述等。
显示指定类型的硬件信息:
1 | sudo lshw -C network |
上述示例将仅显示网络相关的硬件信息。
比如还可以查看memory
、cpu
、disk
等信息。
lshw
提供了全面的硬件信息,帮助用户了解系统配置和硬件组件的细节。在查看和诊断硬件问题或了解系统配置时,它是一个非常有用的工具。
带通指在其跨越的范围内传递频率并衰减其他的频率。
带通的常见天文应用是在射电望远镜上使用的观测频率,它必须具有有限的带宽或带通。从这个意义上说,理想的带通类似于阶跃函数,在高频和低频边界处具有完美的截止,并在其间具有平坦的响应。在实践中存在一些”band edge roll-off”,即边界处的信号衰减,但不会完全降至零。因此,射电天文学家通常会丢弃在带通边缘收集的数据,这可能会受到带边缘滚降的影响。
在射电天文学中,基线是连接两个射电望远镜构成的矢量,主要用于干涉测量,以确定观测中某颗源”相位中心”的条纹率,一条基线对应傅里叶空间中的一个点。
对于具有N个元素的干涉仪,有N(N-1)/2个独立的基线。靠近在一起的天线对善于测量源中的大尺度结构,而长基线具有更好的分辨率和解析精细结构。
首先是“基线”,即干涉阵中两个天线所构成的矢量,它是干涉测量的基础概念,一条基线对应傅里叶空间中的一个点。基线由阵列的布局决定。
物理基线是在三维空间中,两个天线之间的几何连接。投影基线是该三维的物理基线在二维平面上的投影,该二维平面由观测方向决定。在地面参考系(In Terrestrial Reference Frame,ITRF)中,物理基线是常数,不会变,但是投影基线却会随着地球的自转而改变,因为在天空参考系里,源固定不动,因此投影基线所在的二维平面在随时变化。
干涉模式随基线baseline 𝐵B (两狭缝之间的距离)和波长𝜆λ 的变化。调整下面的baseline和wavelength滑块,观察右边条纹的变化:baseline越长,条纹频率越高(间隔越窄),波长越短,条纹频率也越高。
最早的双缝实验验证了光的波动性质,光源只是被用来照亮狭缝。现在反问一下自己,如果给定一个双缝装置,我们是否能利用它获得一些光源信息?是否能利用双缝实验做成一个测量设备,也就是 干涉仪 呢?
假定移动位置,我们注意到,长基线对源的位置变化很敏感,而短基线则没有那么敏感。在第四章我们将学习到,干涉仪的空间分辨率(可以区分出的最小源间距离)由𝜆/𝐵λ/B决定,而传统望远镜的空间分辨率由𝜆/𝐷λ/D决定,其中𝐷D为天线(或者镜子)的口径。这是一件非常幸运的事实,因为长基线的造价要比大口径低很多!
然而,由于干涉模式的周期性,长基线测到的位置并不明确。相反,短基线正好能解决上述问题.
如下:
短基线的效果:
最早的visibility的出现,在杨氏双缝实验就已经使用了术语“可见度”visibility,该术语最早指的是干涉模式中亮纹和暗纹间的对比度。
现代干涉仪用的是复可见度,是复数。一个复可见度的振幅,或者可见度振幅,对应了干涉模式的亮度,可见度相位对应了相对相位(在我们的模拟实验中,指的是屏幕中央条纹的相位)。一个复数就表示了光源了所有信息,然而,双缝实验显示了整个干涉模式,屏幕上模式的变化完全取决于“盒子”(一般是用于测量的仪器)的几何规格,光源的信息内容只有幅度和相位。
现代干涉仪用的是复可见度,是复数。一个复可见度的振幅,或者可见度振幅,对应了干涉模式的亮度,可见度相位对应了相对相位(在我们的模拟实验中,指的是屏幕中央条纹的相位)。一个复数就表示了光源了所有信息,然而,双缝实验显示了整个干涉模式,屏幕上模式的变化完全取决于“盒子”(一般是用于测量的仪器)的几何规格,光源的信息内容只有幅度和相位。
到目前为止,我们仅仅只是关注了测量源的属性。显然,干涉模式对仪器的几何性质也很敏感。根据上述现象引申出了干涉仪的许多其它应用,从大地测量VLBI(通过对已知源的射电干涉探测,精确测出天线位置的变化,从而得到大陆的漂移量),到最近LIGO做的引力波探测(以激光作为光源,通过干涉模式测出由引力波引起的时空的微小扭曲,也就是干涉仪的几何改变)。
上面的双缝实验模拟器已经向我们展示了,不同基线长度,其干涉模式传递了天空的某项特定信息。在下面的例子中,对同一条基线,三个不同的“天空”却得到了相同的干涉模式,因此,一次测量无法区分它们:
但是,改变基线长度再次进行测量,得到了截然不同的干涉模式:
使用更多基线,我们能收集到足够信息,重建得到天空图像。这是因为,本质上,每条基线测得的是天空亮度分布的一个傅立叶分量(详见第4章),知道了傅立叶分量,通过傅里叶变换,就能重建出天空图像。1960年代末,计算机的出现使该技术成为可能,射电干涉仪变成了通用化的成像仪器。若非特别说明,现代射电干涉测量指的就是孔径合成。
完整起见,我们修改上面的函数,使之更接近现实的干涉仪。主要改了两处:
我们对程序做了如下改动。首先,光源位于无限远,因此我们根据入射波前的到达角度(0表示同轴,即沿垂直轴)来定义光源位置。然后用波长数定义基线长度。抵达干涉仪的两个臂的波前“相位差”完全根据到达角来定义,进入干涉仪外臂的两条“射线”指示了入射角。
在不同的position、intensity和baseline的情况下的效果如下所示:
此时用2个源来测试一下:
FLOPS is floating point operations per second. This is used as a measurement because historically floating point operations has been very expensive operations compared to other operations. 每秒浮点运算次数,亦称每秒峰值速度,(英语:Floating-point operations per second;缩写:FLOPS),即每秒所运行的浮点运算次数。浮点(floating-point)指的是带有小数的数值,浮点运算即是小数的四则运算,常用来测量电脑运算速度或被用来估算电脑性能,尤其是在使用到大量浮点运算的科学计算领域中。因为FLOPS后缀的那个S代表秒,而不是复数,所以不能够省略。在多数情况下,测算FLOPS比测算每秒指令数(IPS)要准确。
浮点运算实际上包括了所有涉及浮点数的运算,在某类应用软件中常常出现,比较整数运算更用时间。现今大部分的处理器中都有浮点运算器。因此每秒浮点运算次数所量测的实际上就是浮点运算器的运行速度。而最常用来测量每秒浮点运算次数的基准程序(benchmark)之一,是Linpack。
FLOPS在高性能计算机集群(超算)上可以使用这一公式得出:
${\displaystyle {\text{FLOPS}}={\text{racks}}\times {\frac {\text{nodes}}{\text{rack}}}\times {\frac {\text{sockets}}{\text{node}}}\times {\frac {\text{cores}}{\text{socket}}}\times {\frac {\text{cycles}}{\text{second}}}\times {\frac {\text{FLOPs}}{\text{cycle}}}}$
简化到计算机只拥有一块CPU的情况时,可以使用以下公式:
${\displaystyle {\text{FLOPS}}={\text{cores}}\times {\frac {\text{cycles}}{\text{second}}}\times {\frac {\text{FLOPs}}{\text{cycle}}}}$
Environment Modules 给用户提供了一个通过modulefiles动态的修改环境变量的方法。
通常,用户在登录时通过为会话期间要引用的每个应用程序设置环境信息来初始化其环境。Environment Modules包是一个简化shell初始化的工具,它允许用户在使用modulefile进行会话期间轻松地修改环境。
每个modulefile包含为应用程序配置shell所需的信息。初始化Modules包后,可以使用modulefiles的module命令在每个模块的基础上修改环境。通常,modulefiles 可以使用module命令更改或设置shell环境变量,如PATH、MANPATH等。modulefile可以由系统上的许多用户共享,用户可以有自己的集合来补充或替换共享的modulefile。
模块可以使用 loaded 和 unloaded 动态操作。支持所有主流的shell,比如 bash, ksh, zsh, sh, csh, tcsh, fish, 还有一些其他的脚本语言,如 perl, ruby, tcl, python, cmake 和 R.
模块在管理不同版本的应用程序时非常有用。模块也可以绑定到元模块中,元模块将加载一整套不同的应用程序。
Here is an example of loading a module on a Linux machine under bash.
1 | $ module load gcc/8.3 |
Now we’ll switch to a different version of the module
1 | $ module switch gcc gcc/9.2 |
And now we’ll unload the module altogether
1 | $ module unload gcc |
Now we’ll log into a different machine, using a different shell (tcsh).
1 | % module load gcc/9.2 |
Note that the command line is exactly the same, but the path has automatically configured to the correct architecture.
Download latest version of Modules. Learn how to install it on Unix or how to install it on Windows. You may alternatively automatically retrieve and install Modules with your preferred package manager as Environment Modules is widely available. If you are upgrading from an older version of Modules, read the MIGRATING guide to learn all new features recently introduced.
Reference manual page for the module(1) and ml(1) commands and for modulefile(4) script provide details on all supported options. If you have questions, comments or development suggestions for the Modules community, please read the CONTRIBUTING guide.
1 | #这个是关于引用博主和我自己的使用情况的一些总结: |
1 | #%Module1.0 |
屏幕错误提示
错误显示类似于:
1 | mount: mounting /dev/disk/by-uuid/***************************** on /root |
sudo fdisk -l
回车,目的是查看设备名称。输出类似于:1 | Disk /dev/sda: 250.1 GB, 250059350016 bytes |
sudo fsck /dev/sda1
回车;使用 git reset HEAD <file>...
来取消暂存。 所以,我们可以这样来取消暂存 CONTRIBUTING.md
文件:
1 | $ git reset HEAD CONTRIBUTING.md |
这个命令有点儿奇怪,但是起作用了。 CONTRIBUTING.md
文件已经是修改未暂存的状态了。
Note | git reset 确实是个危险的命令,如果加上了 --hard 选项则更是如此。 然而在上述场景中,工作目录中的文件尚未修改,因此相对安全一些。 |
---|---|