随笔分类 - 并行&高性能计算
摘要:1. 简介 We can classify an integration method by its stability and computational effort. The y-axis represents the stability and x-axis represents the c
阅读全文
摘要:一、介绍 这篇文章介绍一个ODE solver的实现思路,可用于一阶线性系统的求解。 首先,找到一组ODE方程,可以从网上找算例,或者从comsol等软件中导出。 其次,用matlab来求解,看计算结果。 最后,自己实现一个ODE solver,并将结果与matlab的结果进行对比。 二、ODE方程
阅读全文
摘要:一、应用背景 Krylov 子空间方法就是在Krylov子空间中寻找近似解。 二、Krylov子空间 n是原始矩阵的维度,m为降阶后矩阵的维度,通常m<<n。 三、Arnoldi 过程: 计算Km 的一组正交 对应上述MGS过程的python代码: import numpy as np def ar
阅读全文
摘要:一、浮点数精度 Float 为单精度,内存中占 4 个字节,有效数位是 7 位。 double为 双精度,占 8 个字节,有效数位是 16 位。 二、常见错误 1. 不能存储全部有效数字 #include <iostream> int main() { float f{ 0.123456789f }
阅读全文
摘要:一、Task概念 Tasks are composed of:– code to execute– data environment– internal control variables (ICV) 并行程序会用一个线程按照程序代码的顺序生成任务; 在不附加何限制的情况下, 这些任务将放入到任务池
阅读全文
摘要:雷洪教授的《多核并行高性能计算OpenMP》一书中给出了程序优化的思路: 对串行程序进行并行优化建议遵循如下步骤: (1)分析串行代码中可并行化部分,尤其是密切关注程序的热点代码(热点循环、热点函数和热点子程序),这是并行优化中最重要的一个步骤。围绕程序的热点代码进行并行化是减小编程工作量、实现高效
阅读全文
摘要:Map是Eigen中一个非常有用却又很容易被忽略的类,可以用它避免很多不必要的内存拷贝,举个例子,你手头有一个std::vector<Eigen::Vector3d> pts的数据,你需要将这个数据转化成一个n*3的矩阵,以便进行后续的矩阵计算,你会怎么做? 最直接的想法是这样的: MatrixXd
阅读全文