![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
高性能计算
数值计算优化
遗世独立的理想乡_
高性能计算、计算流体力学、数值分析
展开
-
数值计算优化方法C/C++(七)——奇异递归模板
奇异递归模板简介奇异递归模板是模板的一种使用技巧,通常这种技巧和一种叫做静态多态特性一起出现。是一种继承时将子类型作为模板参数传给基类的一种模板使用方法。奇异递归模板应用对象计数有时我们可能会需要对一些类型的对象计数,通常我们是通过一个static int成员来实现计数功能。这个实现本身并不复杂,但是如果我们想要实现多个类型都能够计数,我们就需要在每个类型中都添加一个static int成员,同时在它们的构造函数中添加一个计数操作。如果需要计数的类型比较多就可能会有较多的重复性操作。那么我们自然希望原创 2020-10-17 14:23:58 · 698 阅读 · 1 评论 -
数值分析与优化(一)——高斯消元法
基本原理矩阵A=[a11a12⋯a1na21a22⋯a2n⋮⋮⋱⋮an1an2⋯ann]A=\left[\begin{matrix}a_{11}&a_{12}&\cdots&a_{1n}\\a_{21}&a_{22}&\cdots&a_{2n}\\\vdots&\vdots&\ddots&\vdots\\a_{n1...原创 2020-03-31 21:52:22 · 3642 阅读 · 0 评论 -
数值计算优化方法C/C++(六)——统计质数个数(访存优化以及vector-bool的坑)
(原谅我不知道标题里怎么加<>,标题里那个是vector<bool>)原创 2019-11-08 18:30:29 · 1308 阅读 · 0 评论 -
并行计算(二)——CUDA
并行计算(二)——CUDA一、简介CUDA是NVIDIA提供的一种通用的并行计算平台和编程模型,使用CUDA可以像在CPU上一样使用GPU进行编程。CUDA要介绍的话东西实在太多了,而且GPU的工作原理和CPU尽管本质上还是相似的,但是实际使用的思路和CPU却可能完全不同。CUDA C编程和普通C语言也没有什么太多的不同,由于CPU和GPU使用的二进制指令不同,因此使用CUDA C编程时需要...原创 2019-08-02 08:57:45 · 1101 阅读 · 0 评论 -
并行计算(一)——OpenMP
并行计算(一)——openmp一、简介OpenMP是一种用于共享内存并行系统的多线程库,其支持C/C++、Fortran,并且目前大多数常用编译器,如VS内置编译器、gcc、icc等都提供了openmp的相关支持。OpenMP中包含了一套编译器伪指令、运行时函数和一些环境变量。其通过对串行代码的很少的修改就可以实现串行代码的并行化(不过要想得到更好性能依旧需要仔细的设计),并且可以自由控制编译...原创 2019-06-11 15:20:04 · 3525 阅读 · 5 评论 -
数值计算优化方法C/C++(五)——矩阵转置优化示例(访存优化和SIMD的使用)
C++数值计算简单加速技术(五)——矩阵转置优化示例(访存优化和SIMD的使用)原创 2019-05-24 17:22:17 · 6654 阅读 · 2 评论 -
数值计算优化方法C/C++(四)——矩阵乘法优化示例(访存优化和SIMD的使用)
C++数值计算简单加速技术(四)——矩阵乘法优化示例(访存优化和SIMD的使用)原创 2019-01-17 18:53:39 · 10845 阅读 · 15 评论 -
数值计算优化方法C/C++(三)——SIMD
C++数值计算简单加速技术(三)——SIMD1、概述SIMD全称Single Instruction Multiple Data,单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。这个技术其实和GPU计算基本相似,就是几个执行部件同时访问内存,一次性获得所有操作数再进行运算,从而掩盖访存的时间开销,实现加速。因此只要能GPU并行的计算都可以通过SIMD优化,在CPU上获...原创 2019-04-25 00:06:02 · 9693 阅读 · 10 评论 -
数值计算优化方法C/C++(二)——表达式模板
表达式模板1、概述其实从某种意义上讲,表达式模板实际是一种模板元编程技术。它是利用模板类来实现在调用某些运算的函数时先不进行计算,而是把运算符和参与运算的变量的引用保存成一个模板类作为一个表达式记录下来,直到最后需要这个表达式结果的时候再进行真正的数值计算,从而延迟计算。那么什么时候我们需要延迟计算呢?最简单的两个例子:1)double f(double a,double b){ if...原创 2019-01-17 18:53:27 · 2135 阅读 · 1 评论 -
数值计算优化方法C/C++(一)——模板元编程
模板元编程1、概述模板元编程是使用C++编译时的模板推导能力进行数值、类型的运算推导的技术。最早的C++的源程序之一是Erwin Unruh在一次C++标准委员会会议上所展示的,那一段代码本身是不能通过编译的但在其编译时的错误提示信息中包含了一系列计算出来的指数值。模版元编程需要很多技巧,常常需要类型重定义、枚举常量、继承、模板偏特化等方法来配合,因此编写模版元编程比较复杂也比较困难。STL中...原创 2019-01-17 18:53:18 · 1923 阅读 · 0 评论