- 博客(32)
- 资源 (1)
- 收藏
- 关注
转载 计算复杂性的几个概念
NP,问题多项式时间可验证。P,问题多项式时间可解。NP-hard,至少与NP中最难的问题一样难,所有NP问题可规约为该问题。NP-complete,既是NP-hard,又是NP的问题。APX是一个NP优化问题的集合,该集合中的问题对于某个常量限定的精度存在多项式时间的近似算法。对于每个常量限定的精度均存在一个多项式时间算法的问题,称作有PTAS(多项式时间近似模式)。如果NP!=P,则存在APX问题不是PATS问题。对于一个APX问题,如果存在一个约规约程可以将任意APX问题规约为
2022-04-20 18:19:08
752
原创 petsc捆绑hypre安装
1. 下载安装hypre;2. 下载petsc,进入目录,configure如下./configure --with-hypre-include=/export/home/xxx/Software/hypre/include --with-hypre-lib=/export/home/xxx/Software/hypre/lib/libHYPRE.a --prefix=/export/home/xxx/Software/petsc_hypre --with-mpi-dir=/export/home
2021-11-22 16:46:51
1018
原创 superlu_dist安装
1. 官网下载最新版superlu_dist。2. 修改 run_cmake_build.sh如下,#!/bin/bashrm -vfr xxx-build; mkdir xxx-build; cd xxx-build;export PARMETIS_ROOT=/export/home/xxx/Software/ParMETIS/parmetis-4.0.3export PARMETIS_BUILD_DIR=${PARMETIS_ROOT}/build/Linux-x86_64expor
2021-11-15 15:49:38
1878
原创 集成电路中的仿真问题研究之理论书籍推荐
[1] Ron M. Kielkowski, Inside SPICE: Overcoming the Obstacles of Circuit Simulation[2] Laurence W. Nagel, SPICE2: A computer program to simulate semiconductor circuits[3] XSPICE SIMULATOR DESIGN DOCUMENT[4] Kenneth S. Kundert, The designer's guide to
2021-07-08 11:51:43
762
3
原创 第三方库宏定义冲突解决办法
假如项目用到的两个第三方库,lib_a和lib_b中,头文件a.h和b.h存在宏定义冲突的问题。那么可以创建一个源文件c.cpp和c.h,将lib_a或lib_b的头文件封装在c.cpp中,在c.h中提供新的接口声明方便自己程序调用即可。...
2021-07-02 23:13:12
1986
原创 c++ vector调用reserve()函数后,迭代器end的地址变化
reserve()函数预先分配容量(capacity),但并不添加元素。vector调用reserve()函数后,迭代器begin和end的地址是相同的。end的地址会随着元素的插入而变化。#include <iostream>#include <vector>int main(){ std::vector<int> vec; vec.reserve(5); std::vector<int>::ite
2021-07-02 12:08:29
395
原创 内存有重叠时应将memcpy换做memmove
背景:同样的C++代码,同版本的gcc和ld,两台不同操作系统的服务器(服务器A的操作系统Red Hat Enterprise Linux Server release 6.2 ,服务器B的操作系统CentOS release 6.10)。结果:编译正常通过。服务器A上正常运行。服务器B上运行报错。原因:数组内容的复制用了memcpy。因为内存前后有重叠,所以复制后的内容不正确。办法:用memmove替换memcpy。参考:memcpy需要注意的坑...
2021-06-13 19:40:33
289
原创 c++同一个命名空间跨文件实现
项目中的所有代码需要共享一个命名空间,根据命名空间的开放性,将命名空间的声明和实现拆分为若干个头文件和源文件。比如,myspace_part1.h中声明namespace myspace { extern int var_a; const double pi = 3.1415926; const int& get_a();}myspace_part2.h中声明namespace myspace { const int var_b = 256;
2021-05-27 15:19:47
3078
原创 C++连接静态Fortran库
静态Fortran库可直接被C/C++连接,但需要注意符号名的问题。另外在声明的时候,C++需要加上 extern "C",否则会找不着库文件中的函数。参考:[混编] C++调用Fortran静态库中的函数
2021-04-24 10:45:26
567
原创 Compressed Sparse Row (CSR)行压缩存储相关错误概念纠正
之前关于矩阵压缩存储的知识都是网上看的,比如这篇稀疏矩阵存储格式总结+存储效率对比:COO,CSR,DIA,ELL,HYB里面对ia数组,即行偏移数组的表述是这样的。强调了ia数组中存的是某行的第一个元素的偏移。今天测试一个国外数学教授开源的AGMG库时才发现如果按之前的理解,还原后的矩阵将和理论上的无法统一。翻看维基发现,CSR的ia定义并没有说其存储的是第一个元素的偏移信息。ia只是存储了非零行的start索引,这里的start与该行第一个非零元在ja和a中的索引没有关系,其实只是表
2021-04-13 16:54:31
930
原创 bsm更新遇到的问题
bsm用到的软件版本比较旧v0.9.11,于是按界面提示进行了更新。没想到竟完全废了。重装软件、重置windows网络服务、恢复chrome默认设置等皆告失败。最后没辙用everything搜出所有含clash关键字的文件,然后按日期逐个删除,再重装老版本才恢复过来。途中,任务栏相关图标变白,可通过以下方式恢复。1.win10电脑任务栏软件图标变成白色解决办法2.任务栏系统软件的图标显示异常...
2021-04-11 15:13:52
139
原创 Fortran文档自动生成器FORD试用
手里有一个授权的第三方fortran代码库AGMG,单个库文件代码量将近5000行。可授权方并没有提供开发者文档。为了辅助阅读代码,想着自己生成一个。针对fortran的自动文档生成,主要有以下几种:Doxygen,代码注释格式要求严格。而手里的源代码格式明显不符合,所以直接pass掉了。f90doc,使用起来很方便,能列出module内的变量、函数等信息,但无法画出Doxygen那样的函数调用图。最后选了FORD。安装后测试了几个小文件,效果非常不错,和Doxygen有异曲同工之妙。但
2021-04-09 16:16:12
348
原创 编译mumps库时无法链接mpi库中的函数
安装AGMG并行版时需要mumps库。在编译mumps库链接mpi库时ld报错如下,可以看出ld并没有报找不到mpi库的error,而是报了找到了mpi库但找不到具体的函数实现的error。我也可以确定报的error不是mpi库自身的问题,因为(1)已经用-L 和 -l进行了显式指定,(2)这个mpi库在其他地方已经有过成功的应用。那么为什么还是找不到相应的实现文件呢?在stackoverflow上找到了答案:将Makefile.inc中的Fortran 90 compiler
2021-04-02 19:59:18
621
原创 服务器升级binutils遇到的问题
实验室有两台服务器,一台console,一台T630。两台服务器版本及系统信息如下:console:Linux console 2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64 GNU/Linux Red Hat Enterprise Linux Server release 6.2 (Santiago)T630:Linux T630 4.4.218-1.el6.elrepo.x86_6
2021-03-31 20:29:11
884
原创 实验室集群node间ssh免密访问设置
随着单机多核CPU以及GPU的大量使用,并行计算逐渐分成了三大类,(1)单机多核CPU,(2)单机GPU,(3)多机,即集群。在日常实验室的算法设计等普通计算任务中,绝大部分同学仅需在集群的某个计算node上开展实验。因为现在一个普通的node少说也有几十个核。本文涉及的是第三种并行,也就是多机,多node下几百几千甚至更多个核的并行计算模式。这种集群并行首先需要解决的是node间的通信问题,一般用ssh来实现。以我们实验室为例,集群有几百个node,每个node少说也有8个核。要进行并行计算,必须先完
2021-03-30 16:05:37
425
原创 用FFT加速特殊矩阵的矩阵向量乘运算
Toeplitz矩阵和循环矩阵https://www.jianshu.com/p/2943bb916f7dhttps://blog.csdn.net/weixin_41923961/article/details/83721689Fast Matrix Multiplication by FFThttps://math.mit.edu/icg/resources/teaching/18.085-spring2015/toeplitz.pdfhttps://zhuanlan.zhihu.c
2021-01-14 15:57:50
1218
原创 非root账户用patchelf对低版本glibc修正
最近看了Yuanming Hu同学主持开发的taichi库在Physical Simulation中的应用,印象深刻。自己在调用taichi库时因服务器glibc版本较低,出现了一点意外,将修正过程记录如下:(1)anaconda3装在服务器上之后,新建一个py36(64位 python3.6)的环境。(2)在py36中通过如下命令即可顺利安装taichi库。python -m pip install taichi(3)在测试examples时提示glibc版本较低,程序无法运行。t
2020-12-29 23:04:55
879
原创 《c++语言的设计和演化》笔记(六)
The Design and Evolution of C++17.1 引言17.4 一个解决方案:名称空间17.4.3 名称空间的别名17.4.5.1 方便性与安全性17.4.5.2 全局作用域17.4.5.3 重载17.4.5.5 名称空间是开放的17.5.1 派生类17.5.3 清除全局的static17.6 与C语言的兼容性18 Cpp17.1 引言1.“对所有不适合放进某个函数、某个...
2019-11-07 16:51:16
317
原创 《c++语言的设计和演化》笔记(五)
The Design and Evolution of C++15.6 函数模板15.6 函数模板1.“之所以引进函数模板,一是因为我们已经很清楚,需要有模板类的成员函数;二是因为如果没有这种东西,模板的概念看起来就不够完全。//declaration of a template function:template<class T> void sort(vector<T&...
2019-11-06 12:13:22
273
原创 斯坦福CS229(吴恩达授)学习笔记(5)
CS229-notes3说明正文Problem Set #2: Kernels, SVMs, and Theory1. Kernel ridge regression2. ℓ2\ell _2ℓ2 norm soft margin SVMs3. SVM with Gaussian kernel4. Naive Bayes and SVMs for Spam Classification说明此笔...
2019-11-01 21:05:27
193
原创 斯坦福CS229(吴恩达授)学习笔记(6)
CS229-notes4说明正文Problem Set #2: Kernels, SVMs, and Theory5. Uniform convergence说明此笔记 是cs229-notes4讲义中的学习内容,与B站上的“09 经验风险最小化”视频对应,主要是该部分对应的习题解答。课程相关视频、讲义等资料可参照《斯坦福CS229(吴恩达授)学习笔记(1)》 获取。正文Problem ...
2019-11-01 16:01:48
175
原创 《c++语言的设计和演化》笔记(四)
The Design and Evolution of C++13.2 抽象类13.2.4 虚函数和构造函数13.2.4.2 基类优先的构造13.2 抽象类13.2.4 虚函数和构造函数13.2.4.2 基类优先的构造1.“构造函数就是要建立起一个环境,使其他成员函数在其中操作。”(p.251~252)2.“考虑下面这个可能引起混乱的例子:class B {public: int...
2019-10-25 12:23:21
169
原创 斯坦福CS229(吴恩达授)学习笔记(4)
CS229-notes2说明正文Problem Set #1: Supervised learning4. Naive Bayes说明此笔记 是cs229-notes2讲义中的第二部分学习内容,与B站上的“05 生成学习方法”视频对应,主要是对讲义中一些推理的补充以及一些重点内容的记录,另外还会附加该部分相对应的习题解答和算法的C++实现。课程相关视频、讲义等资料可参照《斯坦福CS229(吴...
2019-10-11 17:10:06
214
原创 斯坦福CS229(吴恩达授)学习笔记(3)
CS229-notes1-part3说明正文Problem Set #1: Supervised learning1. Newton's method for computing least squares5. Exponential family and the geometric distribution说明此笔记 是cs229-notes1讲义中的第二部分学习内容,与B站上的“04 牛顿...
2019-10-09 23:26:04
238
原创 斯坦福CS229(吴恩达授)学习笔记(2)
CS229-notes1-part2说明正文Linear RegressionLMS algorithm(迭代法、梯度下降法)说明此笔记 是cs229-notes1讲义中的第二部分学习内容,与B站上的“03 欠拟合与过拟合的概念”视频对应,主要是对讲义中一些推理的补充以及一些重点内容的记录。课程相关视频、讲义等资料可参照《斯坦福CS229(吴恩达授)学习笔记(1)》 获取。正文Linea...
2019-10-08 15:42:02
232
原创 《c++语言的设计和演化》笔记(三)
The Design and Evolution of C++8.2 C++库设计8.2.1 库设计的折中9.2 回顾9.2.2 C++是不是一种统一的语言?9.2.2.2 什么东西本应该排除在外?8.2 C++库设计8.2.1 库设计的折中1.“程序员经常把注意力集中在语言特征上:我要不要使用inline函数?虚函数?多重继承?单根层次结构?抽象类?重载函数?这种关注根本就是错的。这些语言...
2019-09-18 11:56:57
227
原创 斯坦福CS229(吴恩达授)学习笔记(1)
CS229-notes1-part1说明正文Linear RegressionLMS algorithm(迭代法、梯度下降法)The normal equations(解析法)说明此笔记 是cs229-notes1讲义中的第一部分学习内容,与B站上的“02 监督学习应用.梯度下降”视频对应,主要是对讲义中一些推理的补充以及一些重点内容的记录。B站相关视频:猛击此处Stanford原视频及讲...
2019-08-31 10:00:49
426
原创 《c++语言的设计和演化》笔记(二)
The Design and Evolution of C++3.5虚函数3.5.1 对象布局模型3.8 常量3.5虚函数3.5.1 对象布局模型1.“把在一个类中定义的虚函数集合定义为一个指向函数的指针数组,这样,对一个虚函数的调用,也就变成了通过该数组而做的一些简单间接函数调用。对于每一个包含虚函数的类,都存在这样的一个数组,通常称为虚函数表或者vtbl。而这些类的每个对象都包含一个隐式...
2019-08-30 11:29:40
186
原创 《c++语言的设计和演化》笔记(一)
The Design and Evolution of C++2.3 类2.3 类1.“既然C++里的class意味着用户定义类型,为什么我不直接称它为type呢?选择用class这个词的基本原因是我不想发明新术语。”(p.27)2.“像C语言中一样,对象的分配可以有3种方式:在堆栈上(作为自动对象),在固定地址(静态对象),或者在自由存储区(在堆,或者说是动态存储区)。与C语言不同的是,C...
2019-08-28 10:24:04
539
原创 理解WEIBO源码(一)
理解WEIBO源码(一)C++结构体和枚举C++结构体和枚举结构体里可以定义不同类型的数据,e.g. 字符串、数组、指针、整型等。typedef struct circuit //用typedef定义一个结构体circuit{ size_t num_mos; float gain;}oa;//结构体变量oa枚举里都是整型常量,默认情况下,枚举值从0开始,依次...
2019-08-06 08:49:47
156
原创 Ubuntu18上安装wxhaskell
Ubuntu18上安装wxhaskell首先需要安装wxWidgets第一步:在Ubuntu18上安装build essentials(gcc等)及gtk参考:https://wiki.wxwidgets.org/Compiling_and_getting_startedsudo apt-get install libgtk2.0-dev可安装gtk相关组件第二步:下载wxWidgets...
2018-12-11 08:51:51
571
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人