超算第三次考核

超算第三次考核

task 1(主要是学习脚本程序shell):

shell可以直接作为可执行文件运行,也可以用解释器bash解释运行
#!\bin\bash
linux中还有一些别的解释器;

homework 1

用重定向实现

//文件名为 demo.c 对应的文件名为 test.sh 
#!/bin/bash
sum=0
while read rows
do
	let "sum++"
done < $1
echo $sum

效果

homework 2 (借用之前的代码)

//文件名为 demo.c 对应的文件名为 test.sh 
#!/bin/bash
sum=0
while read rows
do
	let "sum++"
done < $1
count=0
while read lines
do
	let "count++"
	if (( count>sum-5 ))
	then
		echo $lines
	fi
done < $1

效果

结果有直接的命令 😦

直接的统计行数的命令

homework 1: wc -l fliename wc直接统计文件的行数
homework 2: awk '{print}' filename | tail -nl awk将文件指定行的内容 tail(尾巴) -n n为结尾的要的行数

homework 3 (使用了ps这个相当与任务管理器的东西,没用top)

//文件名为test.sh 
#!\bin\bash
echo "-------------------CUP占用前3排序--------------------------------" > cpu_test.out
ps -aux  --sort=-pcpu |head -n 4 >> cpu_test.out

效果

还有一种写法,直接指明我要看的内容

#!\bin\bash
echo "-------------------CUP占用前3排序--------------------------------" > cpu_test.out
ps -eo user,pid,pcpu,pmem,args --sort=-pcpu  |head -n 4 >> cpu_test.out
echo "-------------------内存占用前3排序--------------------------------" >> cpu_test.out
ps -eo user,pid,pcpu,pmem,args --sort=-pmem  |head -n 4 >> cpu_test.out

user 用户
pid -> (program's id) 进程号
pcpu 进程占用cpu
pmen 进程占用内存
args 进程地址

小心得

shell语言相比于C语言来说对空格和一些格式更加的敏感,需要多加注意。其与Linux携带的有一些文本编辑器一起使用的特点,使shell具有像一个命令的集成功能的特性(这使得写shell的思维方式有点偏向使用者,代码短小精悍,可能这就是用shell写脚本的原因)

task 2 (我学习的MPI 而不是 OpenMP)

homework 1

先总结一下这些API的特点:


一些常见的并行计算的底层方式:


对于MPI,我知道的比较常用的函数有:https://www.cnblogs.com/zzxs-blog/p/17074882.html 我之前写的一点小总结,可能直接点击打不开,直接ctrl+c吧

对于MPI,我想其底层的逻辑比较重要,所以我又看了看计算机组成原理:
https://www.cnblogs.com/zzxs-blog/category/2263932.html
发现内容太多只学了皮毛

在MPI中通讯组的概念挺重要的,不同的通讯组用来实现不同的homework,从而实现复杂的计算,包括组的创建,分类,比较,释放

homework 2 (向量化指令集)

之前没有想过,intel直接有向量化的指令集,有了向量化的指令集,我们就可以在最底层实现一堆数组的并行计算(这与MPI是有本质的区别的,一个是通讯,一个是直接操作内核)

下面是我写的一个实现的方法实例:

//两种方法,只写了函数,思路上是这样的,具体的代码一直无法实现,害
//正常的计算
double normal(int n)
{
    double pi = 0.0;
    double delta = 1.0 / n;
    for (size_t i = 0; i < n; i++)
    {
        double x = (double)i / n;
        pi += delta / (1 + x * x);
    }
    return pi * 4.0;
}
// 使用avx256指令集
double avx256(int n)
{
    double pi = 0.0;
    double delta = 1.0 / n;
    __m256d ymm0, ymm1, ymm2, ymm3, ymm4;
    ymm0 = _mm256_set1_pd(1.0); //赋值
    ymm1 = _mm256_set1_pd(delta);
    ymm2 = _mm256_set_pd(delta * 3, delta * 2, delta, 0.0); //成倍的增加
    ymm4 = _mm256_setzero_pd(); //空的
    for (int i = 0; i < dt - 4; i += 4)
    {
        ymm3 = _mm256_set1_pd(i * delta);
        ymm3 = _mm256_add_pd(ymm3, ymm2);//相加
        ymm3 = _mm256_mul_pd(ymm3, ymm3);//平方
        ymm3 = _mm256_add_pd(ymm0, ymm3);
        ymm3 = _mm256_div_pd(ymm1, ymm3);//除
        ymm4 = _mm256_add_pd(ymm4, ymm3);
    }
    double tmp[4] __attribute__((aligned(32))); //对齐
    _mm256_store_pd(tmp, ymm4);
    pi += tmp[0] + tmp[1] + tmp[2] + tmp[3];
    return pi * 4.0;
}

计算圆周率的方法在我的这个博客里:https://www.cnblogs.com/zzxs-blog/p/17083042.html 比较的短

task 3

homework 1 and homework 2发在邮箱里了

注意:homework 1的线程数好像不能开得太大,实测在线程数60之内,原因我也不清楚,不过在run.sh 都写好了。homework 2 我直接将 x={1,2,3,4,5,6};没有使用大数据,优化效果会不理想,至于CSR的方法去压缩矩阵,当遇到每一行的非零元素的数量差别太大时会严重影响运算的速度。

推荐一下讲负载均衡策略的博客:https://blog.csdn.net/hellozhxy/article/details/83687987
但是我不知道怎么实现 😅
至于动态的负载均衡策略,这个讲服务器的就更加看不懂了 😡
https://xie.infoq.cn/article/95b0b36e4e1ebcc25d5ef407a#:~:text=%E5%85%B7%E4%BD%93%E7%9A%84%E5%81%9A%E6%B3%95%E4%B8%8A%E9%87%87%E7%94%A8%E4%BA%86,%E5%9F%BA%E4%BA%8E%E8%B4%9F%E5%8F%8D%E9%A6%88%E6%9C%BA%E5%88%B6%E7%9A%84%E5%8A%A8%E6%80%81%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E7%AE%97%E6%B3%95%20%EF%BC%8C%E8%AF%A5%E7%AE%97%E6%B3%95%E8%80%83%E8%99%91%E6%AF%8F%E4%B8%80%E4%B8%AA%E7%BB%93%E7%82%B9%E7%9A%84%E5%AE%9E%E6%97%B6%E8%B4%9F%E8%BD%BD%E5%92%8C%E5%93%8D%E5%BA%94%E8%83%BD%E5%8A%9B%EF%BC%8C%E4%B8%8D%E6%96%AD%E8%B0%83%E6%95%B4%E4%BB%BB%E5%8A%A1%E5%88%86%E5%B8%83%E7%9A%84%E6%AF%94%E4%BE%8B%EF%BC%8C%E6%9D%A5%E9%81%BF%E5%85%8D%E6%9C%89%E4%BA%9B%E7%BB%93%E7%82%B9%E8%B6%85%E8%BD%BD%E6%97%B6%E4%BE%9D%E7%84%B6%E6%94%B6%E5%88%B0%E5%A4%A7%E9%87%8F%E8%AF%B7%E6%B1%82%EF%BC%8C%E4%BB%8E%E8%80%8C%E6%8F%90%E9%AB%98%E5%8D%95%E4%B8%80%E9%9B%86%E7%BE%A4%E7%9A%84%E6%95%B4%E4%BD%93%E5%90%9E%E5%90%90%E7%8E%87%E3%80%82

posted @ 2023-01-18 19:31  MITE's_BKY  阅读(70)  评论(0)    收藏  举报