c++
文章平均质量分 62
莫翰轩 MoDonald
莫寒酸MoDonald
展开
-
分别用 mpi 和 cuda 实现圆周率 pi 的 Lebniz级数计算
圆周率计算,并行加速,mpi, cuda, gpu,双精度浮点数,reduce sum 规约,大数吃小数的精度问题处理方法,等等原创 2022-03-14 22:13:17 · 1328 阅读 · 0 评论 -
shared memory 优化 gpu 的 归并排序 merge sort
cuda gpu 归并排序的并行加速,使用 shared memory 共享内存进行优化,线程同步,__syncthreads(),规约reduce, 双调排序 bitonic sort原创 2022-03-08 01:18:48 · 1772 阅读 · 0 评论 -
CUDA kernel函数不执行、不报错的问题
CUDA 核函数不执行、不报错的问题最近使用CUDA的时候发现了一个问题,有时候kernel核函数既不执行也不报错。而且程序有时候可以跑,而且结果正确;有时候却不执行,且不报错,最后得到错误的结果。这种情况一般是因为显存访问错误导致的。我发现如果有别的程序同时占用着GPU在跑的时候,且占用的显存非常大的时候,我再执行一个CUDA程序 (比如我另一篇博客写的归并排序的CUDA加速) 时,kernel函数就会不执行而导致结果错误,但是如果调用一张空闲GPU卡就能跑出正确结果。解决方案:为了解决不报错的问原创 2022-02-08 17:00:47 · 7085 阅读 · 4 评论 -
CUDA 归并排序 的GPU加速
CUDA实现归并排序的GPU加速,merge sort,分治,并行,c++原创 2022-02-02 22:19:09 · 3338 阅读 · 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 · 1699 阅读 · 0 评论 -
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 · 518 阅读 · 0 评论 -
C++ :整形数防止数据溢出
C++ 学习笔记C/C++ 中的算术及其陷阱https://www.cnblogs.com/kongj/p/14612362.html数据溢出的处理方法,怎样防止数据溢出?原创 2021-11-11 22:20:55 · 3044 阅读 · 0 评论 -
C++ 按值传参和引用传参
C++ 按值传参和按地址传参Python 和 Fortran 里面传入数组作为参数时,默认按照数组第一个数的地址传递,避免了数组拷贝,(大数组的拷贝非常耗费时间空间)而 C++ 函数里面,如果数组 vector 直接传入,默认按值传递,会在函数体中拷贝一份新数组!为了避免这种情况,可以在函数定义处的形参前面加一个&,就可以改为传地址。func(vector<...> x) {……} 改为 func(vec<...>& x) {……}.比如,举个简单的例子,我们想原创 2021-11-14 16:30:03 · 1083 阅读 · 0 评论 -
C++ 和 Python 的赋值操作 (等号“=“) 的区别
从之前比较熟悉的Python转到新学的C++, 踩了一些坑之后,总结出了以下的C++和Python的等号操作的区别,C++ 和 Python 的赋值操作("=")的区别C++ 的赋值操作总是默认执行拷贝,产生新的副本放在新地址中等号右边拷贝给等号左边。(右值拷贝给左值)拷贝出来的副本与原来变量的地址不同auto a = b; 改变b之后并不会改变aPython,对于a = b, 分两种情况如果b是可变类型(如列表、字典、自定义类等),默认按照引用的方式执行赋值引用,即等号左边原创 2021-11-28 15:27:39 · 1258 阅读 · 2 评论 -
C++ 拷贝构造函数和拷贝赋值的区别
C++ 拷贝构造函数和拷贝赋值的区别最近发现一个新的坑,是拷贝构造函数和拷贝赋值的区别。比如,在某个类中,对等号运算符重载,如果发现重载之后不起作用,多半是把拷贝构造函数和拷贝赋值搞混淆了比如,我们在classA中重载了一下等号’='运算符classA& operator = (const classA& obj1) { // do something; return *this;}然后,我们在拷贝初始化的时候,看到有等号’=’, 以为执行了我们重载的运算符,原创 2021-12-18 01:32:42 · 749 阅读 · 0 评论