并行计算Shell入门

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

Shell它作为计算机底层的脚本语言,很重要

一、Shell任务

1、输入两个参数 a b 常数。a b 范围为 0-1023,即共 1024 个点。
脚本实现 以每 2 个为一小组,每 32 个为一大组。
即 当 a b 分别为(0,1) 或(2,3) 时输出结果为 1 跳
当 a b 分别为(1,2) 或(3,4) 时输出结果为 3 跳
当 a b 分别为(0,32)或(1,32)时输出结果为 5 跳
例:./hop.sh 29 31 两点跳数为 3 跳
2、C 语言实现判断最大值,将计算结果存到该次运行的临时文件中。
用 Shell 脚本,循环运行十次该 C 程序,每次运行时脚本修改 C 程序
中的两个输入值,编译运行得到结果,脚本从临时文件中取出结果并累加,通过
脚本循环结束输出累加结果。以上需在只执行一次 shell 程序后完成,不再手动
操作。

1.第一题

代码如下(示例):

while true
do
    read -p "请输入两个整数:" a b c
    if [[ $(($a/32)) = $(($b/32)) ]]
    then
        let sum=$(($b/2-$a/2))
        if [[ $sum = 0 ]]
        then 
            echo "1跳"
        continue
        else
            echo "3跳"
        fi
    else
        echo "5跳"
    fi
done

2.第二题

代码包括C语言的代码和shell代码,其中C语言代码给它命名为max.c

#include<stdio.h>
int main()
{
int i=0;
FILE *fp;
fp = fopen("linshi.txt","w");

i++;
int a,b,max;
printf("输入\n");
scanf("%d %d",&a,&b);
max = funx(a,b);
fprintf(fp,"%d\n",max);
return 0;
}
int funx(int a,int b)
{
	if(a>b)
		return a;
	else
		return b;
}

然后shell要循环调用上述代码十次,并将linshi.txt文件中得到的数据统计,其代码如下

for ((i=0;i<10;i++))
do 
	./max
	while read rows
	do
	sum=$((sum=sum+rows))
	done < linshi.txt
done
echo $sum

总结

今天搞得就是个shell和C语言联合使用的地方,作为一个并行计算的萌新,我感觉摸不着头脑。最近在看一些并行计算的基础,希望有朝一日成长为健壮的萌新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值