
并行计算共轭梯度算法
makingBug
Coding is happiness
展开
-
(一)共轭梯度算法
共轭梯度算法是干什么?共轭梯度算法是一种迭代算法,在一次次的对待中最终求得结果,可以类比牛顿迭代法。共轭梯度算法主要用在求解矩阵方程,也就是求解n元一次方程组,如Ax=b的解x。比一般的迭代算法都要快,最多迭代n次就能出结果。基本思想共轭梯度法是属于最小化类的迭代方法。为了求解Ax = b这样的一次函数,可以先构造一个二次齐函数f(x)=12xTAx−bTxf(x) = \frac{1}{...原创 2019-06-19 16:37:26 · 37024 阅读 · 7 评论 -
(二)ubuntu下安装MPI库
源码方式安装下载源码,我下载的是mpich-3.3.tar.gz。tar xzvf mpich-3.3.tar.gz,解压安装包。cd mpich-3.3/,进入到解压的目录中。./configure --prefix=/usr/local/mpich-3.3 --disable-fortran,配置编译环境,为它选择一个安装路径,由于不使用fortran语言,故加上disable选项。...原创 2019-06-19 16:45:10 · 3071 阅读 · 5 评论 -
(三)MPI库的简单使用
MPI_Init(&argc, &argv);被第一个调用的MPI函数用于并行环境初始化,其后面的代码到MPI_Finalize之前的代码可以在每个进程都被执行一次。MPI_Finalize();退出MPI系统,除了主进程(rank==0)其他所有的进程都必结束。但是经测试该函数后面的代码还是会执行,why?MPI_Comm_rank(MPI_COMM_W...原创 2019-06-19 16:47:35 · 2961 阅读 · 0 评论 -
(四)OpenMP的使用
OPENMP程序的编译g++ -fopenmp test.cpp -o openmp基本操作#pragma omp parallel for在该语加在for循环前面,这样for循环中的内容就会开启多线程执行。但是只适用于多线程中拆分循环中的内容没有影响是可以。如对于如下操作,就会出问题,sum的值会因为多线程的执行的随机性而出现错误。sum = 0#pragma omp paral...原创 2019-06-19 16:49:10 · 644 阅读 · 0 评论 -
(五)GPU编程
查看电脑中GPU的型号lspci | grep -i nvidiayum install pciutils #安装lspic的命令nvidia-smi #一款更好用的命令nvidia-smi -Lcuda的安装(略)查看cuda的版本nvcc -Vcuda简介在GPU上运行程序就要使用cuda,CUDA是NVIDIA公司所开发的GPU编程模型,它提供了GPU编程的简易接口...原创 2019-06-19 16:51:01 · 697 阅读 · 0 评论