
作者: PurpoolPoolObservatory
openMP中的动态数组私有化
有一个需求,需要对for循环中创建的动态数组进行操作,记录一下历程:
最开始在函数开头定义了循环变量i和动态数组trace,并紧接着用malloc对trace分配空间,在for循环的前一行用#pragma omp for private(i)能编译成功,但结果错误。分析原因是因为每次循环都共享了trace,导致计算错误;
然后将for前定义改为#pragma omp for private(i,trace),编译出现段错误;
https://www.coder.work/article/1564167给出了解决问题的正确方法:先用omp定义parallel块,然后动态分配内存,再用omp开启for循环,结束for循环后释放内存,并结束parallel块。如下:
#pragma omp parallel num_threads(40) private(i,trace)
{ // parallel 块是需要大括号的
trace=(float *)malloc(sizeof(float)*sz);
# pragma omp for
for(i=0;i<len;i++)
{
trace=xxxxxxx;
.......
}
free(trace);
}
云销雨霁
家乡风物4
- 头发长度用“深”、“浅”表示。如头发长得太深了/理发师打浅了一些。
- 迟、晚用“暗”表示。如今天起得暗了,要迟到了。
- 父亲,读yá(音“涯”,会不会跟古时候的“阿耶”有关?);母亲,读ěnɡ pó (恩婆?)
- 凳,同“电”音
- 暴降,夏季白天突然而至的强对流天气,音同“抱脚”
- 黄辣丁,读“黄创”
- 鹅卵石,读“模棱股”
- 蝙蝠,读“盐巴老鼠”
- 蜻蜓,读“洋篾篾”
- 游泳,读“打刨秋”
- 日子,读“镊子”
- 这,读“gei(四声)”
- 只,读“炸”
- 窗户,读“亮窗”
- 嘎巴筒,一种将稻草卷成草把子的工具,这里有介绍:https://m.sohu.com/a/489684353_121117455
家乡风物3

告诉一脸茫然的孩子什么是粮站,什么是交国家粮,什么是农业户口。
孩提时一年中最盼望的时段除了过年,就是年中的时候跟着祖辈和父辈去交国家粮了。辛辛苦苦收割、扬场、晾晒好早稻谷子,然后自己花钱租车送到粮站。粮站有那么三五个工作人员站在门口,手里拿着某种漏斗似的金属器具,扎破送粮人家的蛇皮口袋或者麻袋,从漏斗中取出粮食,把玩品鉴一番,再丢几粒入口咂摸几下,吐出个好歹来——至坏的退转回去,换上好的谷子再来;其余的大部分,无非就是现场晒晒(当时日头好的话),或是再扬场吹吹空稻壳;也有或许是极好的,直接入仓。若是过关,便又挑着框抬着袋将粮食运往仓中。长辈们说门口那些人都是吃国家粮的。交粮完毕,家人随着空车带着空容器准备动身回来,还有那页戳着红章的收据。
而我的兴致此时才来,粮站外赫然地排列着几处西瓜摊。当时也有些思想活络的人已不愿老实种粮食了,累且收入不好,便开始种起了如西瓜等经济作物。然而国家粮却还是要交的,于是索性在粮站门外摆起摊来,用西瓜换粮食。一般家庭交粮,会尽量足额且剩有余量。我望着车里那剩下的浅浅一抔稻谷,央起了家中长辈。那时候,夏季的西瓜简直比雪糕还要难以吃到,不光是少,更重要的是穷。我记得幼时是有那么一两次在交粮时是吃到了西瓜的,而后,就是失望了,失望到我年龄渐长,都不觉得这是一种失望了,而这事本身却在我心里刻骨铭心了起来。
这两年得空带孩子回老家,无意中游览到了这里,给他讲起了往年的故事。我也开始站在长辈的角度来看待当年的事情了:辛苦劳作的成果被剥夺后的无奈与沮丧,在那一过程中,是很难有心情将剩余所得犒劳自己的,我很感谢他们给了我甜蜜的回忆。几年前国家废除了农业税,而后又取消了农村户口,家里人似乎淡然了起来。没有交粮的要求,便更新了更轻松的耕种方法,多余的粮食也可以养殖更多家畜,人也有了更多清闲的时间。事情似乎在变好,但,人也在变老。
shell小技巧
1.seq嵌入for循环
for i in $(seq 0 10)
do
xxxxxx
done
2.expr不支持非整型运算
###############
c=echo “13.2-10.1” | bc
echo $c
###############
a=13.2
b=10.1
c=$(echo “$a-$b” | bc)
echo $c
3. bc计算精度
echo “6/9” | bc 的计算结果会是0,可以事先设置精度
echo “scale=3;6/9” | bc就会得到指定精度的结果
4. gawk中调用shell变量
awk -v awk变量名= shell变量名
#!/bin/bash
var4bash=test
awk -v var4awk=”$var4bash” ‘BEGIN { print var4awk}’