LSF(Load Sharing Facility)是IBM旗下的一款分布式集群管理系统软件,负责计算资源的管理和批处理作业的调度。它给用户提供统一的集群资源访问接口,让用户透明地访问整个集群资源。它通常是高性能计算环境中不可或缺的基础软件。LSF 是一种强大的工作负载管理平台,提供基于各种策略的智能调度功能,利用分布式的基础架构资源来提高整体的系统性能。用户通过 LSF可以实现集群间的负载均衡,扩展集群构架和资源,最大限度地提高集群的使用效率。
通过集中监控和调用,可以充分共享计算机的CPU、内存、磁盘、License等资源,一组安装了LSF软件的计算机组成了一个集群(Cluster)。Cluster内地资源统一监控和调度。提交给LSF作业的命令就是bsub。
芯片验证过程中跑case或者跑regression的时候经常会使用到bsub命令,上面就是bsub命令背后的原理。下面详细地介绍一些常用命令。
2. 常用命令之bsub详解
2.1 bsub命令的格式:
bsub [options] command [argument]
2.2 相关参数:
-q 选择作业提交的队...
串行作业示例
#!/bin/bash
#SBATCH –J TestSerial
#SBATCH -p normal
#SBATCH -N 1
#SBATCH –n 1
#SBATCH -o log/%j.loop
#SBATCH -e log/%j.loop
echo "SLURM_JOB_PARTITION=$SLURM_JOB_PARTITION"
echo "SLURM_JOB_NODELIST=$SLURM_JOB_NODELIST"
srun ./calc_serial 1000000
mpi作业示例
在HPC上运行任务的主要方法是通过sbatch命令提交一个脚本.
sbatch < xxx.sbatch
作业提交脚本格式编写如下,作业控制指令以"#SBATCH"开头,其他注释以"#"开头。例如测试脚本run.sbatch如下:
#!/bin/bash
#SBATCH -J LShape_adapted-4
#SBATCH -p normal
#SBATCH --ntasks-per-node=8
#SBATCH -w comput7,comput12
###...
请输入密码访问
电脑突然断电,开机后发现cuda不可用,于是输入“nvidia-smi”才发现了一个错误,如下
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver
由于重启服务器,linux内核升级导致的,由于linux内核升级,之前的Nvidia驱动就不匹配连接了,但是此时Nvidia驱动还在,可以通过命令 nvcc -V 找到答案。
解决方法
安装dkms:
sudo apt-get install dkms
查看本机连接不上的驱动版本:
ls -l /usr/src/
可以看到有一个nvidia的文件,我这里是 nvidia-xxx.xxx.xx
使用dkms重新安装适合驱动:
sudo dkms install -m nvidia -v xxx.xx.xx
xxx.xxx.xx是第二步中出现的版本
POSTSCRIPT语言是打印机页面描述的一种程序设计语言。他拥有着广泛的图形操作,并且可以以任意方式,包含变量,函数,以及过程的任意组合。 POSTSCRIPT页面描述是由解析器运行的程序(gs),postscript程序通常是由其他应用程序生成的。POSTSCRIPT具有大量的图形运算符,通过他可以更加详细的描述你的页面。 文本的字体,位置,方向,尺寸。 几何图形的大小,方向,宽度,直线和曲线的位置,任何大小形状颜色的空间填充。
一、GPU基本模型
0.1 APOD开发模型
即:Assess, Parallelize, Optimize, Deploy
【CUDA优化的冷知识】什么是APOD开发模型? - 知乎 (zhihu.com)
1.1 nvcc
nvcc就是CUDA的编译器,CUDA程序有两种代码,在CPU上的host代码和在GPU上的device代码。
1.1.1 常用命令
nvcc单文件编译
GPU设备的应用兼容性和CPU明显不同,CPU每一代指令集一般都兼容上一代指令集,所以已发布的应用可以运行在新一代的CPU硬件上,但GPU新一代指令集不兼容上一代的指令集。GPU使用virtual architectures来保证应用层兼容性(PTX可以看做虚拟的GPU架构,PTX是文本指令)。
指定的虚拟架构版本(PTX),要小于等于生成native二进制代码时候的版本。避免无法从PTX进行jit或者aot生成实际指令。
不指定会使用默认的计算能力。不一定是5.3,如果可能,尽量指定。以及,默认的指定会保留一份PTX。一般够用(除非你在11.x的toolkit上使用Kepler的卡,默认保留的...
1.1 Makefile文件是什么?
Makefile 文件描述了 Linux 系统下 C/C++ 工程的编译规则,它用来自动化编译 C/C++ 项目。一旦写编写好 Makefile 文件,只需要一个 make 命令,整个工程就开始自动编译,不再需要手动执行 GCC 命令。
一个中大型 C/C++ 工程的源文件有成百上千个,它们按照功能、模块、类型分别放在不同的目录中,Makefile 文件定义了一系列规则,指明了源文件的编译顺序、依赖关系、是否需要重新编译等。
Makefile文件是什么? (biancheng.net)
1.2 Makefile文件编写规则
其结构如下:
targets : prerequisites
command
或者是
targets : prerequisites; command
command
targets:规则的目标,可以是Object File(中间文件),也可以是可执行文件,还可以是一个标签。
prerequisites:是我们的依赖文件,要生产targets需要的文件,可以有多个,也可以没有。
command:make需...
Consider the equation
$$
-\sum_{i=1}^n\frac{\partial }{\partial x_i}a_i(x,u,\nabla u)+a_0(x,u,\nabla u)=0\quad in\;\Omega \tag{1.1}
$$
where $\Omega$ is a bounded domain in $\mathbb{R}^N$. On boundary $\Gamma$, add to $(1.1)$ the first boundary value condition
$$
u=0\quad on\;\Gamma.
$$
Introduce a definition of a generalized solution.
Definition 1.1 The function $u\in H_0^2$ is called the generalized solution of problem $(1.1)$ if it satisfied the integral equality
$$
\mathcal{L}(u,v)\equiv...
$\delta$函数是一个广义函数,对于一维的$\delta$函数,给出如下定义
$$
\delta=\left\{\begin{aligned}+\infty \quad &x=0\\0\quad &x\neq0\end{aligned}\right.
$$
函数只在$x=0$处有值,在其他区域均为0. 且积分满足如下式子
$$
\int_a^b\delta(x)dx=0,\quad a,b<0\;or\;a,b>0.
$$
$$
\int_a^b\delta(x)dx=1,\quad a<0<b.
$$
当积分区域包含点$x=0$时,积分才有值,且值为1,由此知广义函数$\delta(x)$的量纲为$\frac{1}{\left[x\right]}$, 我们可以将$\delta$函数看成某个带参数的函数序列的极限(参数取极限)下的函数。比如$\delta(x)=\lim_{l\to 0}\frac{1}{l}rect(\frac{x}{l})$, rect是矩形函数。
函数性质
挑选性
$$
\int_{-\infty}^{+\in...
遇见两个树形dp的题目,写一下
牛客小白月赛45-E
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int maxn = 1e5 + 10;
ll arr[maxn];
ll res = -0x3f3f3f3f;
int mark[maxn];
struct node {
int y;
ll w;
node(int a, ll b): y(a), w(b) {}
};
vector<node> v[maxn];
ll dfs(int rt, ll val) {
ll ans = 0;
for (auto to:v[rt]) {
node pos = to;
if (mark[pos.y])
continue;
mark[pos.y] = 1;
ll z = dfs(pos.y, pos.w);
if (z >...
mysql服务的启动和停止:
net stop mysql
net start mysql
登陆mysql:
mysql -uroot -p #回车后输入密码,在输入回车即可
显示数据库列表:
show databases;
显示数据表的结构:
describe 表名;
desc 表名;
显示库中的数据表:
use mysql;
show tables;
建库与删库:
create database 库名;
drop database 库名;
建表与删表:
create table 表名(字段列表);
drop table 表名;
清空表中记录:
delete from 表名;
显示表中的记录:
select * from 表名;
往表中加入记录
insert into TABLE values (“XXX”,“XXX”);
增加新用户
grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"
选择数据库
use 数据库名;
备份数据库
mysqldu...
单元测试
什么是单元测试
首先,它是测试
其次,它是单元测试
举个栗子
实现一个加法函数
func Add(x, y int) int {
return x + y
}
要测试函数是否正确,我们可能会写下这坨代码
func TestAdd() {
type TCase struct {
x, y, ret int
}
cases := make([]TCase, 0, 0)
// 第一个 Case
cases = append(cases, TCase{
x: 1,
y: 2,
ret: 3,
})
// 第二个 Case
cases = append(cases, TCase{
x: -1,
y: 1,
ret: 0,
})
for _, c := range cases {
got := Add(c.x, c.y)
if got != c.ret {
log.Prin...
Golang的诞生及优势
Golang语言发布于2009年,是一门由Google支持的开源的静态编译型语言。作者是3位资深的语言专家:Robert Griesemer,Rob Pike,Ken Thompson。综合了各流行语言的优势,总体很接近C语言体系,主要优点如下:
简单易学
开发速度快
性能好
并发支持好
Docker、Kubernetes(K8s)、Etcd、Consul、Codis、Tidb等优秀的项目都是基于Golang开发的
容器:数组、切片、映射
数组(Array)
类型定义
数组的类型,取决于数组中的元素类型和数组的长度,其中数组的长度不可变;
[N]T,N表示数组的长度,T表示数组中的元素类型,比如[10]int
var num1 [10]int
var num2 [5]int
var num3 [5]int32
reflect.Typeof(num1) == reflect.Typeof(num2)
数组变量声明及初始化
第二种方式只能在函数内使用
var num1 [3]int // num1 := [3]int{}
num2 := [3]in...
摘自Tmux 使用教程 - 阮一峰的网络日志 (ruanyifeng.com)
一、Tmux 是什么?
1.1 会话与进程
命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令。用户与计算机的这种临时的交互,称为一次"会话"(session) 。
会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。
一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失了。
为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口。
1.2 Tmux 的作用
Tmux 就是会话与窗口的"解绑"工具,将它们彻底分离。
(1)它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
(2) 它可以让新窗口"接入"已经存在的会话。
(3...
牛客练习赛95过了两个题,rank165/1153,成功的把练习赛做成了百度之星。小白月赛过了4个题,rank215/1709,找回点做题的感觉了,手速还是不行,一些基本的建表建树,STL用法,都是变搜边用,对边界数据也不是很敏感。总归是再向好的地方发展。
练习赛95B
由叉积计算面积的公式
$$
S=\frac{1}{2}|(x_i-x_k)(y_j-y_k)-(x_j-x_k)(y_i-y_k)|
$$
可以发现面积是否为整数只与$i,j,k$三个点的$x,y$坐标的奇偶性有关,并且由于问的是非整数,可以忽略三点共线等情况(这些情况面积是整数$0$, 不会计入答案)
TZOJ 2519 Regetni(N个点求三角形面积为整数总数)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct point
{
ll p,q,c;
bool operator<(const point &d)const{
if(p<d.p)retu...