自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 【C++】link error

如果你的程序包含多个源文件,它们是使用不同的编译器选项或不同版本的C++标准编译的,可能会导致ABI(Application Binary Interface)不匹配,进而导致链接器错误。在C++中,函数和变量的名称在编译时可能会被重命名,以避免与其他库或对象中的相同名称冲突。- 如果你在不同的源文件中使用了相同的函数或变量名,并且这些源文件将被链接在一起,确保它们都使用相同的名称。这种错误表示编译器无法找到需要链接的库文件。- 如果你使用了外部库,确保它们是使用相同的ABI构建的,并且与你的程序兼容。

2024-03-20 14:32:26 280

原创 Git 相关操作

git 常用操作

2024-03-19 09:59:41 439

原创 Make 强制输出gcc编译命令

Make 强制输出gcc编译命令

2024-03-10 14:46:34 373

原创 【tmux】简单好用的tmux配置

tmux配置,及tmux和python 虚拟环境 bug。

2023-06-26 03:01:32 588

原创 【drug】获取化合物的3D结构

如何从化合物的SMILES字符串获取化合物的3D结构?以下几种方法供参考:1,借助pubchem的py查询接口进行查询首先需要安装pubchempy(conda install pubchempy) sdf = pubchempy.get_sdf(canonical_smi,'smiles') if(sdf != None): cid = sdf.split('\n')[0] if canonical_...

2022-04-30 12:00:00 2455 1

原创 【git】大文件git clone不下来问题

使用git clone时,有时候会遇到大文件拉取不下来的情况,这时候就需要用git lfs拉取,对于未装git lfs的用户可以使用现成的docker,附git-lfs的docker使用链接:jgpelaez/git-lfs - Docker Image | Docker Hub安装完git-lfs之后, 通过以下命令就可以下载大文件了git lfs fetch另外,在使用git lfs下载的时候,会遇到一些错误,比如:trace git-lfs: api error: Post [URL

2022-04-29 16:41:26 9605 19

原创 【pytorch】loss 不下降记录

在使用pytorch进行训练的时候,loss一直维持在同一个很大的数附近震荡,很明显是模型有问题,经过了长时间的查找,才发现pytorch早已提示了错误,而自己忽略了。·/home/anaconda3/envs/M/lib/python3.6/site-packages/torch/nn/modules/loss.py:528: UserWarning: Using a target size (torch.Size([256])) that is different to the input siz

2022-04-01 20:05:20 3679 1

原创 【CUDA】Memory Coalescing(内存合并)

内存合并的基础是DRAM Burst。mei当我们从全局内存搬运数据到共享内存或者寄存器时,

2021-06-08 16:15:13 1587 3

原创 【CUDA-C/C++】任意维度矩阵乘

前面已经写过了利用Fortran实现任意维度矩阵乘的CUDA实现,详见:https://blog.csdn.net/xll_bit/article/details/117551476?spm=1001.2014.3001.5501,今天更新一个

2021-06-08 14:32:46 417

原创 【CUDA-FORTRAN] 1D stencil

module reverse_m implicit none integer, device :: n_dcontains attributes(global) subroutine staticReverse(a, d) real :: d(:), a(:), result integer :: t, tr, t1, j, sa integer,parameter :: ra = 3 real, shared :: s(-ra+1:64 + ra) .

2021-06-04 10:46:36 321 2

原创 【CUDA-FORTRAN】实现任意维度矩阵乘

之前写过一篇矩阵乘,但只能是方阵,详见https://blog.csdn.net/xll_bit/article/details/103271788?spm=1001.2014.3001.5501这次

2021-06-04 10:29:55 543

原创 【tmux】 相关操作

窗口常用命令假设命令前缀为默认的 : Ctrl+b{前缀} c 创建新窗口{前缀} n 选择下一个窗口{前缀} p 选择前一个窗口{前缀} l 最近一次活跃窗口之间进行切换{前缀} 0~9 选择几号窗口{前缀} , 重命名窗口{前缀} . 更改窗口的编号,但只能更改成未使用的编号,所以要交换窗口的话,得更改多次进行交换{前缀} & 关闭窗口{前缀}...

2021-04-19 15:33:31 268

原创 【openMP】single (主从模式)

omp single指定在当前的并行域里当前代码块只被执行一次(任意线程均可)用法: #pragma omp single[clause,clause, ...] 参数: clause Can be one or more of the following clauses: copyprivate(list) Provides a mechanism to use a privat..

2020-10-21 14:34:15 2525

原创 【OpenMP】flush(主从模式)

常规对flush制导语句的解释为:用以标记一个同步点,用以确保所有的线程看到一致的存储器视图。这样的解释对一般人来讲很难理解,其实它的功能就是强制刷新每个线程的临时视图,使其和内存视图保持一致,即:使线程中缓存的变量值和内存中的变量值保持一致。一般在使用OpenMP的时候也很少遇到flush语句。这是因为flush在下面几种情况下会隐含运行(nowait子句除外):Barriercritical:进入与退出部分ordered:进入与退出部分parallel:退出部分for:退出部...

2020-09-29 21:45:38 1256 2

原创 【leetcode】814. Binary Tree Pruning

二叉树剪枝,将不包含值为1的枝剪掉。运用递归,不断迭代到最低一层查看是否满足条件即可。编程的时候需要注意,如果用指针传递时,由于要修改原来二叉树的值,因此在传递节点的时候要用指向指针的指针(二重指针),当使用引用的时候则没有这种问题。二重指针的用法可参考:https://blog.csdn.net/xll_bit/article/details/103496161class Sol...

2020-03-09 12:59:16 144

原创 【C++】 函数返回vector

当程序中要返回vector时,一般做法会将函数直接定义为:vector<T> func(){ //TODO}而为了提高执行效率,可以直接返回该vector的引用,这样会减少vector的多次拷贝。具体写法如下:vector<T>& func(){ //TODO}但要注意的是,该要返回的vector不能是函数内部的局部变量。...

2020-03-04 15:52:30 19485 1

原创 【C++】对指针形参及指针数组分配内存空间

在使用指针作为函数形参的时候,和数组首地址作为函数形参的用法一致。但指针和数组有一个重要区别是指针指向的地址可能为空,而数组的首地址一定会指向一段地址空间的。因此在使用指针作为函数形参,并在函数内申请内存空间时,传入的应该为指针的地址。而在释放该地址空间时,直接传该指针即可。另外还要区分指针数组和数组指针的区别。运算优先级为 () > [] > *#include <...

2019-12-11 17:24:51 2543

原创 【C++】VS Code 远程连接服务器并进行调试

最近在服务器上使用gdb调试烦了,就想换换使用vscode试试,下面是具体的配置步骤。一,ssh远程配置这一步网上的帖子都比较多,也比较详细,下面只做一简单演示。1,在本地下载vscode。2,打开vscode,安装remote-ssh插件,具体安装步骤看图。1)鼠标选中左侧边栏的extensions(圈1)2)在搜索框中搜索 ssh(圈2)3)找到 remote-ss...

2019-12-05 17:34:20 3550

原创 【C++】程序性能分析及可视化

一,性能分析工具的使用(gprof)编译需要加-pg选项 运行可执行文件,会自动生成生成gmon.out 文件,命令格式如下: ./a.out #a.out指可执行文件 使用gprof生成性能分析结果,命令格式如下:gprof ./a.out gmon.out >out.log//命令中 a.out为可执行文件;gmon.out为第二步自动生成的结果;ou...

2019-11-29 14:20:11 2057

原创 【CUDA】矩阵乘法(从简单到进阶)

在学习CUDA的过程中,免不了要实现矩阵乘,从而对GPU的运作机制以及如何使用share memory有更深的理解。下面是用FORTRAN对简单矩阵乘和利用分块并将数据放入share memory实现矩阵乘的实现。! this program demonstates various memory optimzation techniques! applied to a matrix mul...

2019-11-27 11:20:57 584

原创 【MPI】Connon矩阵乘(二)

Connon矩阵乘是通过循环移位,通过相邻节点上的数据进行交换,然后最终实现矩阵乘法。特点是每个节点占用空间比较少,传输比较少。本篇以MPI_Comm_cart为循环移位基础。以下为具体做法。以MPI_Comm_split循环移位为基础的请参考:https://blog.csdn.net/xll_bit/article/details/103113272MPI_Comm_split移位...

2019-11-17 22:09:59 285

原创 【MPI】Connon矩阵乘(一)

Connon矩阵乘是通过循环移位,通过相邻节点上的数据进行交换,然后最终实现矩阵乘法。特点是每个节点占用空间比较少,传输比较少。本篇以MPI_Comm_split为循环移位基础。以下为具体做法。以MPI_Comm_cart循环移位为基础的请参考:https://blog.csdn.net/xll_bit/article/details/103114386MPI_Type_vector和...

2019-11-17 21:21:43 442

原创 【MPI】当MPI_Scatterv遇上MPI_Type_vector

在写按块矩阵乘时,会遇到将矩阵按块划分,然后分发给各个节点。此时方便的做法是定义MPI_Type_vector数据类型,表示矩阵的一小块,然后通过MPI_Scatter将矩阵散发到各个节点。但通过简单的MPI_Scatter进行操作时,一直出现错误,最终发现是我把MPI_Scatter想的太简单了。原做法://row_block_data为每块的行数(分块矩阵行列数相同)//N代表原始...

2019-11-17 20:41:37 789

原创 【MPI】 创建新组并使用组通信

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0(0,1,2,3) 1(0,1,2,3) 2(0,1,2,3) 3(0,1,2,3) 4(4,5,6,7) 5(4,5,6,7) 6 7 8 9 10 11 12(12...

2019-11-15 20:53:54 1982

原创 【FORTRAN+MPI】二维笛卡尔坐标应用(虚拟拓扑)

当进行矩阵乘法时,往往需要将节点映射为二维网格,就会用到笛卡尔坐标。本文展示了基于Fortran的MPI_CART的用法,以及相邻坐标之间的通信。 program cartesian include 'mpif.h' integer SIZE, UP, DOWN, LEFT, RIGHT parameter(SIZE=16) ...

2019-11-13 12:23:13 1426

原创 【c++】 memcpy 类数组

在写程序的时候,需要对类数组中的值从数组后面移动到数组前面,但类中成员变量包含vector等容器,因此就写了一个测试程序验证了一下,当类数组在移动的过程中,类容器变量是否发生移动。#include <iostream>#include <string.h>#include <stdlib.h>#include <set>#include...

2019-11-11 17:48:08 960

原创 【ubuntu】批量创建用户

linux新建用户方法主要有两种:adduseruseraddadduser 可以按照提示一步步的创建用户。useradd则完全由用户指定主目录,bash目录等位置。详细介绍可参考:https://www.linuxidc.com/Linux/2017-02/140793.htm由于adduser是linux一步步提示完成的,不利于批量处理,因此本方法使用的是useradd...

2019-11-04 20:37:45 1834

原创 【c++】类中包含自身类对象的set

c++中,类中自身类对象不能做自己的类成员,但可以做静态数据成员,引用数据成员,以及vector,set中的类型成员。如下面代码中定义的类。#include<iostream>#include<set>using namespace std;class A{public: int a,b,c; set<A> subA; A(){};...

2019-09-25 11:49:42 1810

原创 【c++】 自定义排序和比较函数(适用于set,sort等需要排序/去重的地方)

当对自定义类(如下面的代码)进行排序或者将自定义类放入set结构时,就需要自定义比较函数,否则会报错。对基本数据类型排序或者放入set时不需要此函数,因为是STL中自定义了比较函数,会默认调用,无需自定义。#include<iostream>#include<set>using namespace std;class A{public: int a,b,c...

2019-09-25 11:27:32 1473 3

原创 【java】Eclipse使用

一,将工程导入Eclipse1,GitHub 带pom.xml工程,这种工程的各种包及依赖项都是放在pom.xml里边,需要用moven导入,并用mvn进行打包编译。2,GitHub 带build.xml工程,这种工程需要用ant进行编译。3,GitHub 带build.gradle工程,这种工程需要用gradle进行编译二,gradle下载安装说明https://gradle...

2018-11-01 17:07:43 572

原创 【java】JNI实现java与C/C++混编

最近接触到java转C的任务,需要java调用非java接口;跟着教程http://www.cnblogs.com/DengGao/p/jni.html做了一下尝试,并对其中一些地方进行了更新。所用环境jdk1.8;vs2015。一,编写带有native声明的java类public class HelloWorld { public native void displayHelloWo...

2018-10-17 17:23:21 932

原创 【docker】安装matlab2017a

一,新建ubuntu镜像首先从docker里拉取ubuntu16.04镜像docker search ubuntu:16.04   #搜寻16.04镜像docker pull ubuntu:16.04  #载入镜像到本地docker run -it ubuntu:16.04 /bin/bash  #运行镜像二,添加vim进入镜像之后apt-get update #更新源apt-get instal...

2018-06-28 15:34:21 6131 8

原创 【linux】远端安装matlab 2017a

matlab安装需要图像界面,而通过xshell等远端连接正常并不会弹出图形界面,下面是安装教程:1,window客户机安装(远端图形界面设置)参考链接:https://blog.csdn.net/jxxiaohou/article/details/51586934首先需要安装xmingXming的主页:http://www.straightrunning.com/XmingNotes/ Xmin...

2018-06-28 13:27:40 2219

原创 【linux】创建用户,添加密码,及添加权限

创建用户:adduser username      #添加用户名passwd username       #添加登录密码,适合adduser之后没提示设置密码的情况添加用户sudo权限修改 /etc/sudoersvi /etc/sudoers# User privilege specificationroot ALL=(ALL) ALLusername ALL=(ALL) ALL      ...

2018-06-25 17:10:30 18491

原创 【python】读取excel并进行文件复制

# -*- coding: utf-8 -*-import xlrdimport shutilimport osdef read_excel():    # 打开文件    workbook = xlrd.open_workbook(r'C:\Users\xxx\Desktop\xxx.xls')    # 获取所有sheet    print (workbook.sheet_names()) #...

2018-06-11 11:19:17 10385

原创 【python】基础(十)模块、作用域及库

模块mycompany├─ __init__.py├─ abc.py└─ xyz.py引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在,abc.py模块的名字就变成了mycompany.abc,类似的,xyz.py的模块名变成了mycompany.xyz。请注意,每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这...

2018-04-27 23:00:49 250

原创 【python】基础(九)

由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。&gt;&gt;&gt; def now():... print('2015-3-25')...&gt;&gt;&gt; f = now&gt;&gt;&gt; f()2015-3-25函数对象有一个__name__属性,可以拿到函数的名字:&gt;&gt;&gt; now.__name__'n...

2018-04-26 23:09:13 249

原创 【python】基础(八)

返回函数函数作为返回值高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的:def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回...

2018-04-25 23:15:00 206

原创 【python】基础(七)

变量可以指向函数&gt;&gt;&gt; x = abs(-10)&gt;&gt;&gt; x10可以把函数本身赋值给变量&gt;&gt;&gt; f = abs&gt;&gt;&gt; f&lt;built-in function abs&gt;函数名也是变量&gt;&gt;&gt; abs = 10&gt;&gt;&gt; abs(-1

2018-04-25 22:57:18 419

原创 【python】基础(六)

安装第三库'''安装第三方库1,确认pip是否安装 pip --version #python3可能需要改成pip3,下同2,用pip安装第三方库 pip install packagename3,pip 常用指令pip install --upgrade pip #升级pippip uninstall packagename #卸载库pip list #查看已安装库其...

2018-04-24 22:49:58 214

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除