- 博客(62)
- 收藏
- 关注
原创 【C++】link error
如果你的程序包含多个源文件,它们是使用不同的编译器选项或不同版本的C++标准编译的,可能会导致ABI(Application Binary Interface)不匹配,进而导致链接器错误。在C++中,函数和变量的名称在编译时可能会被重命名,以避免与其他库或对象中的相同名称冲突。- 如果你在不同的源文件中使用了相同的函数或变量名,并且这些源文件将被链接在一起,确保它们都使用相同的名称。这种错误表示编译器无法找到需要链接的库文件。- 如果你使用了外部库,确保它们是使用相同的ABI构建的,并且与你的程序兼容。
2024-03-20 14:32:26
866
原创 【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
3578
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
11963
23
原创 【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
4215
1
原创 【CUDA】Memory Coalescing(内存合并)
内存合并的基础是DRAM Burst。mei当我们从全局内存搬运数据到共享内存或者寄存器时,
2021-06-08 16:15:13
2276
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
582
原创 【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
506
3
原创 【CUDA-FORTRAN】实现任意维度矩阵乘
之前写过一篇矩阵乘,但只能是方阵,详见https://blog.csdn.net/xll_bit/article/details/103271788?spm=1001.2014.3001.5501这次
2021-06-04 10:29:55
736
原创 【tmux】 相关操作
窗口常用命令假设命令前缀为默认的 : Ctrl+b{前缀} c 创建新窗口{前缀} n 选择下一个窗口{前缀} p 选择前一个窗口{前缀} l 最近一次活跃窗口之间进行切换{前缀} 0~9 选择几号窗口{前缀} , 重命名窗口{前缀} . 更改窗口的编号,但只能更改成未使用的编号,所以要交换窗口的话,得更改多次进行交换{前缀} & 关闭窗口{前缀}...
2021-04-19 15:33:31
339
原创 【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
3120
原创 【OpenMP】flush(主从模式)
常规对flush制导语句的解释为:用以标记一个同步点,用以确保所有的线程看到一致的存储器视图。这样的解释对一般人来讲很难理解,其实它的功能就是强制刷新每个线程的临时视图,使其和内存视图保持一致,即:使线程中缓存的变量值和内存中的变量值保持一致。一般在使用OpenMP的时候也很少遇到flush语句。这是因为flush在下面几种情况下会隐含运行(nowait子句除外):Barriercritical:进入与退出部分ordered:进入与退出部分parallel:退出部分for:退出部...
2020-09-29 21:45:38
1507
2
原创 【leetcode】814. Binary Tree Pruning
二叉树剪枝,将不包含值为1的枝剪掉。运用递归,不断迭代到最低一层查看是否满足条件即可。编程的时候需要注意,如果用指针传递时,由于要修改原来二叉树的值,因此在传递节点的时候要用指向指针的指针(二重指针),当使用引用的时候则没有这种问题。二重指针的用法可参考:https://blog.csdn.net/xll_bit/article/details/103496161class Sol...
2020-03-09 12:59:16
174
原创 【C++】 函数返回vector
当程序中要返回vector时,一般做法会将函数直接定义为:vector<T> func(){ //TODO}而为了提高执行效率,可以直接返回该vector的引用,这样会减少vector的多次拷贝。具体写法如下:vector<T>& func(){ //TODO}但要注意的是,该要返回的vector不能是函数内部的局部变量。...
2020-03-04 15:52:30
20936
1
原创 【C++】对指针形参及指针数组分配内存空间
在使用指针作为函数形参的时候,和数组首地址作为函数形参的用法一致。但指针和数组有一个重要区别是指针指向的地址可能为空,而数组的首地址一定会指向一段地址空间的。因此在使用指针作为函数形参,并在函数内申请内存空间时,传入的应该为指针的地址。而在释放该地址空间时,直接传该指针即可。另外还要区分指针数组和数组指针的区别。运算优先级为 () > [] > *#include <...
2019-12-11 17:24:51
2740
原创 【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
3742
原创 【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
2229
原创 【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
705
原创 【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
375
原创 【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
511
原创 【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
938
原创 【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
2318
原创 【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
1658
原创 【c++】 memcpy 类数组
在写程序的时候,需要对类数组中的值从数组后面移动到数组前面,但类中成员变量包含vector等容器,因此就写了一个测试程序验证了一下,当类数组在移动的过程中,类容器变量是否发生移动。#include <iostream>#include <string.h>#include <stdlib.h>#include <set>#include...
2019-11-11 17:48:08
1045
原创 【ubuntu】批量创建用户
linux新建用户方法主要有两种:adduseruseraddadduser 可以按照提示一步步的创建用户。useradd则完全由用户指定主目录,bash目录等位置。详细介绍可参考:https://www.linuxidc.com/Linux/2017-02/140793.htm由于adduser是linux一步步提示完成的,不利于批量处理,因此本方法使用的是useradd...
2019-11-04 20:37:45
2032
原创 【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
1949
原创 【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
1676
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
653
原创 【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
1039
原创 【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
6358
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
2432
原创 【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
19124
原创 【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
10562
原创 【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
308
原创 【python】基础(九)
由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。>>> def now():... print('2015-3-25')...>>> f = now>>> f()2015-3-25函数对象有一个__name__属性,可以拿到函数的名字:>>> now.__name__'n...
2018-04-26 23:09:13
296
原创 【python】基础(八)
返回函数函数作为返回值高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的:def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回...
2018-04-25 23:15:00
248
原创 【python】基础(七)
变量可以指向函数>>> x = abs(-10)>>> x10可以把函数本身赋值给变量>>> f = abs>>> f<built-in function abs>函数名也是变量>>> abs = 10>>> abs(-1
2018-04-25 22:57:18
508
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人