自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 接口倒置原则改造 Python 有限元代码架构

笔者写过一个开源的有限元软件 FEMcy, 是用 Python 结合并行语言写的轻量级有限元软件,可以在CPU/GPU上并行计算,支持变形过程及牛顿迭代过程构型的实现渲染可视化,支持线弹性、非线性(几何非线性、材料非线性),支持一次单元、二次单元等多种单元类型。对有限元的矩阵组装、边界条件组装、矩阵求解感兴趣的朋友们欢迎 clone 到本地玩玩。

2024-07-28 21:03:56 515

原创 接口倒置原则的最简化python实践

用python实现最简单的接口倒置原则,面向接口编程,降低耦合,减少依赖,提高扩展性

2024-07-21 20:59:09 835 1

原创 六面体单元的体积计算方法

六面体单元的体积计算方法, 行列式,雅可比矩阵,形函数,线性插值,自然坐标,全局坐标,三角形划分外表面,stl格式的体积计算

2022-03-27 22:26:04 3783

原创 从多变形面积到多面体体积:鞋带公式的3D版本

鞋带公式的3D版本,从多边形面积到多面体体积,读取 stl 格式的3D文件获取物体体积,三角形面积,四面体体积,右手定则,行列式

2022-03-26 17:12:55 2137 2

原创 分别用 mpi 和 cuda 实现圆周率 pi 的 Lebniz级数计算

圆周率计算,并行加速,mpi, cuda, gpu,双精度浮点数,reduce sum 规约,大数吃小数的精度问题处理方法,等等

2022-03-14 22:13:17 1267

原创 shared memory 优化 gpu 的 归并排序 merge sort

cuda gpu 归并排序的并行加速,使用 shared memory 共享内存进行优化,线程同步,__syncthreads(),规约reduce, 双调排序 bitonic sort

2022-03-08 01:18:48 1724

原创 CUDA kernel函数不执行、不报错的问题

CUDA 核函数不执行、不报错的问题最近使用CUDA的时候发现了一个问题,有时候kernel核函数既不执行也不报错。而且程序有时候可以跑,而且结果正确;有时候却不执行,且不报错,最后得到错误的结果。这种情况一般是因为显存访问错误导致的。我发现如果有别的程序同时占用着GPU在跑的时候,且占用的显存非常大的时候,我再执行一个CUDA程序 (比如我另一篇博客写的归并排序的CUDA加速) 时,kernel函数就会不执行而导致结果错误,但是如果调用一张空闲GPU卡就能跑出正确结果。解决方案:为了解决不报错的问

2022-02-08 17:00:47 6599 4

原创 CUDA 归并排序 的GPU加速

CUDA实现归并排序的GPU加速,merge sort,分治,并行,c++

2022-02-02 22:19:09 3053 3

原创 c++ 查找函数定义的位置 IDE跳转 或 正则表达式匹配

c++ 找到函数定义的位置 用正则表达式匹配读源码的时候,如果要找到一个函数在哪里定义的,在Python或者Fortran里头是很好找的,因为Python有关键字def, 直接查找 def functionName( 就可以找到函数定义的地方Fortran有关键字subroutine或者function, 直接查找subroutine xxname或者function xxname就能找到但是,在C++/C里头,函数定义的地方并没有一个特定的关键字表示这里要定义一个函数,这时候可以用正则表达

2022-01-03 13:22:18 1615

原创 C++ 拷贝构造函数和拷贝赋值的区别

C++ 拷贝构造函数和拷贝赋值的区别最近发现一个新的坑,是拷贝构造函数和拷贝赋值的区别。比如,在某个类中,对等号运算符重载,如果发现重载之后不起作用,多半是把拷贝构造函数和拷贝赋值搞混淆了比如,我们在classA中重载了一下等号’='运算符classA& operator = (const classA& obj1) { // do something; return *this;}然后,我们在拷贝初始化的时候,看到有等号’=’, 以为执行了我们重载的运算符,

2021-12-18 01:32:42 726

原创 fortran 实现C++的vector 或Python的List

fortran 实现C++的vector.push_back() 或Python的List.append()fortran90, 数组需要提前分配好大小,但是如果事先不知道一个数组要分配多少内存,遇到一个新元素加入到数组中,再遇到一个新元素又加入到数组中,怎样实现呢?我们知道C++标准库中的vector是动态数组,底层是数组,但是却可以变戏法一样把新元素添加到数组尾部,比如 vec.push_back(x), 可以把x添加到vec的尾部,这是怎么实现的呢?实际上可以通过分配新数组,拷贝并且释

2021-12-13 00:25:00 1847

原创 20211202 完全对称日,输出所有的完全对称日

听说今天20211202是完全对称日,于是立马写代码看看公历里面总共可以有多少个完全对称日,需要考虑的点如下:平年的2月份有28天,闰年的2月份有29天 (四年一闰,百年不闰,四百年再闰)月 + 日 总共只有4位数,所以年份也不能超过4位数年份不够4位数,或者月份和日不够两位数,在前面补0于是,取所有 < 10000 的年份,不足4位数在前面补0之后,把年份字符串反过来,看看月份是不是1~12之间,看看日期是不是小于等于当年当月的最大天数,就可以得到完全对称日了!附上代码,输出所有的完

2021-12-02 14:32:14 1150 1

原创 C++函数返回类型 前置和后置的区别

最近新发现了C++函数的前置返回类型和后置返回类型的一个区别比如,A类中定义了B类,那么在A类的成员函数中返回B类的时候,前置需要加上定义域classA::classB才能让编译器知道B类是定义在A类的作用域当中的,但如果是后置返回类型,前面classA::成员函数 出现过,所以后面不用加上作用域,具体写法 (成员函数定义, 返回A类中的B类) 如下:classA::classB classA::func() {...} // 前置形式, 返回类型classB前面要加作用域classAcla

2021-11-29 11:48:02 479

原创 C++ 和 Python 的赋值操作 (等号“=“) 的区别

从之前比较熟悉的Python转到新学的C++, 踩了一些坑之后,总结出了以下的C++和Python的等号操作的区别,C++ 和 Python 的赋值操作("=")的区别C++ 的赋值操作总是默认执行拷贝,产生新的副本放在新地址中等号右边拷贝给等号左边。(右值拷贝给左值)拷贝出来的副本与原来变量的地址不同auto a = b; 改变b之后并不会改变aPython,对于a = b, 分两种情况如果b是可变类型(如列表、字典、自定义类等),默认按照引用的方式执行赋值引用,即等号左边

2021-11-28 15:27:39 1179 2

原创 C++ 按值传参和引用传参

C++ 按值传参和按地址传参Python 和 Fortran 里面传入数组作为参数时,默认按照数组第一个数的地址传递,避免了数组拷贝,(大数组的拷贝非常耗费时间空间)而 C++ 函数里面,如果数组 vector 直接传入,默认按值传递,会在函数体中拷贝一份新数组!为了避免这种情况,可以在函数定义处的形参前面加一个&,就可以改为传地址。func(vector<...> x) {……} 改为 func(vec<...>& x) {……}.比如,举个简单的例子,我们想

2021-11-14 16:30:03 1041

原创 C++ :整形数防止数据溢出

C++ 学习笔记C/C++ 中的算术及其陷阱https://www.cnblogs.com/kongj/p/14612362.html数据溢出的处理方法,怎样防止数据溢出?

2021-11-11 22:20:55 2935

原创 python 把命令写到shell脚本,获取shell命令行输出

python 把命令写道shell脚本,获取shell命令行输出python把命令写道shell命令行中的方法有:os.system("......")或者os.popen("......")输入命令行的同时获得命令行输出output = os.popen("......").readlines()得到的是输出结果各行构成的列表。...

2021-11-10 12:47:40 1398

原创 git branch 分支 按照时间排序

git branch 分支 按照时间排序https://www.codeleading.com/article/68934407419/英文原网址:https://davidwalsh.name/sort-git-branches这个网站上的解决办法很好,根据最近修改 (commit) 的时间来排序和显示分支branch,因为我们关注的就是哪些分支是最近修改的其中用了sort排序是目前找到的最符合需求,最简单方便地方法。...

2021-11-02 22:38:29 2854

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除