自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (9)
  • 问答 (1)
  • 收藏
  • 关注

原创 Git常用指令

GitHub创建仓库提示代码echo "# 项目名" >> README.mdgit initgit add README.mdgit commit -m "first commit"git remote add origin [email protected]:qiubaiying/项目名.gitgit push -u origin master若仓库存在直接pushgit remote add origin [email protected]:qiubaiying/test.gitg

2022-04-20 22:32:44 137 1

原创 知网CAJ转PDF(硕博论文带书签)

工具:caj2pdf (链接:https://github.com/caj2pdf/caj2pdf)环境:ubuntu18.4,python3.6依赖环境安装:pip install PyPDF2sudo apt-get install mupdf-toolssudo apt-get install libjbig-dev下载源码,进入lib目录,编译库:cc -Wall -fPIC --shared -o libjbigdec.so jbigdec.cc JBigD.

2022-01-10 13:19:41 824

原创 vim插件youcompleteme 安装,(mac,ubuntu,centos)

1.下载vim

2020-03-12 15:58:03 253

原创 编译支持anaconda3-python3.7的vim8

问题: 由于vim7版本较低,升级vim8,尝试了vim8.2和vim8.0 均不行。8.2编译安装后依然不支持python3.7.8.0编译过程就报错,提示python3.7lib的头文件错误 。后尝试8.1版本。(ftp://ftp.jp.vim.org/pub/vim/unix/)1.下载源码,解压vim8.12.configure配置./configure --with-fe...

2020-03-11 13:15:20 675

原创 cuda的cu文件单独编译

cu文件单独编译的时候,对所有cu文件使用相同的flags

2019-10-18 12:51:26 1495

原创 JAVA10 搜索不到 dt.jar和tools.jar

从jdk-9之后就已经没有tools.jar和dt.jar了,也不需要在classpath里面配置这些jar了,配置可参考:JAVA_HOME=jdk安装路径JRE_HOME=jre安装路径PATH= ;%JAVA_HOME%\bin;%JRE_HOME%\binCLASSPATH=.;%JAVA_HOME%\lib;%JRE_HOME%\lib...

2018-04-19 10:51:19 7808 2

原创 Linux gcc/g++静态库与动态库

源码:test.h#pragma once void test();test.c#include"stdio.h" void test() { printf("This is a test funtion!"); } hello.h#pragma once void hello(co...

2018-03-27 15:23:52 309

原创 CUDA优化--核函数--浮点数类型转换

在编写CUDA内核时,遇到一个问题,如下在核函数中使用一个2.1的浮点数,没有作类型声明,如(float)2.1或double(2.1)..一. 实际上,cuda默认2.1是double,在核函数计算过程中进行了类型转换,流水线中arithmetic workload和单精度的计算峰值的分析结果如下:好吃惊!!!43.98%用于FloatP64转换,35%用于数值计算,浪费太严重,峰值性能只有11...

2018-03-03 22:15:31 4092 4

原创 全文对齐

在命令行模式下,首先使用“gg”将光标移动到文档开头,然后使用“v”切换到可视模式,再用“G”将光标移动到文档尾部(相当于全选),最后使用“=”,即可完成整个文档的自动排版。

2018-01-28 13:17:56 220

原创 vim 查找

当前行进行替换:s/XXX/YYY/gXXX是需要替换的字符串,YYY是替换后的字符串。全局替换:% s/XXX/YYY/g.对指定部分进行替换用V进入visual模式,再进行:s/XXX/YYY/g.或指定行范围 替换::100, 102s/XXX/YYY/g.替换字符串中的"/" 用"\"转义,即用"\/"表示。查找在:中输入? 或/ ,然后按n或N向后或向前查找Vi指

2018-01-28 13:07:00 1573

原创 vim 取消搜索高亮

在Vi里面如果要搜索某个关键字,只要键入/xxx就可以了,比如,要搜索一个函数,就键入/snprintf然后回车,一个文件中,所有出现这个字样的地方都会被高亮显示。按n键,就可以自动把光标跳到下一个。消除高亮:键入:noh就可以了。

2018-01-28 13:06:27 2384

原创 cuda项目中使用ctags

默认情况下,使用vim时,ctags无法定位cu文件中的函数及类等的定义。采用下面的办法可解决这个问题。ctags有一个选项可以指定文件使用的语言:langmap。比如,指定.cu文件中语言为C++可以加入选项:--langmap=c++:+.cu。于是,可以使用以下方式来为cuda项目建立tag:ctags -R --langmap=c++:+.cu *也可以将这些选项直

2018-01-27 15:34:06 424

原创 CUFFT库(cufft_C2C,cufft_R2C,cufft_C2R,cufft_Z2C,cufft_D2Z,cufft_Z2D)

CUDA的cufft库可以实现(复数C-复数C),(实数R-复数C)和(复数C-实数R)的单精度,双精度福利变换。其变换前后的输入,输出数据的长度如图所示。在C2R和R2C模式中,根据埃尔米特对称性(Hermitian symmetry),变换后,*代表共轭复数。CUFFT的傅里叶变换类型则利用了这些冗余,将计算量降到最低。注意:下表都是单精度(C-表示float复数,R表示float实数)。而双

2018-01-18 00:23:24 6795 3

原创 CUDA-全局内存读取-实验(缓存+非缓存-Pascal架构-sm6.1)

特别声明: 设备GTX1050Ti, 计算能力6.1.代码附在后面;缓存加载:(1)Pascal架构,启用L1缓存,-Xptxas -dlcm=ca 。即采用128字节内存事务。  采用不同的偏移量,以实现非对齐访问。命令行为:“nvprof --metircs gld_efficiency test.exe N” (N为偏移量)。采用批处理,计算0-255的偏

2018-01-12 22:13:51 933 1

原创 CUDA-全局内存读取-实验(缓存+非缓存-Fermi架构-sm2.1)

特别声明: 设备GT540M, 计算能力2.1.代码附在后面;缓存加载:(1)Fermi架构,默认情况是启用L1缓存,即采用128字节内存事务。  采用不同的偏移量,以实现非对齐访问。命令行为:“nvprof --metircs gld_efficiency test.exe N” (N为偏移量)。采用批处理,计算0-255的偏移量的全局内存加载效率,统计结果如下:偏移量每隔32,跳变

2018-01-11 21:18:18 1119

原创 CUDA全局内存读取

正如前文所述,CUDA全局内存的访问是通过”内存事务“实现的,其分类128字节(L1/L2缓存均参与)和32字节(L2缓存参与)两种。本文则主要介绍全局读取的加载示例,分为”缓存加载(L1+L2)“和”非缓存加载(L2)“,代码会贴在后面。一.缓存加载(L1+L2)这种情况下,”内存事务“中加载的缓存粒度是128字节。(1)对齐合并访问,线程束首地址对齐128字节,且连续访问128字节

2018-01-11 21:14:47 4193

原创 CUDA全局内存-对齐与合并

CUDA执行模型的特征之一指令都是以线程束为单位进行发布和执行,存储操作也是如此。通常情况下,如图所示,全局内存是通过缓存进行加载,而加载请求是通过所谓“内存事务”来实现的,“内存事务”分为32字节和128字节两种。要么一次性加载32字节,要么一次性加载128字节,这主要取决于设备的缓存路径。如果对全局内存的访问使用L1/L2缓存存储(路径1),那么访问必须由128字节的“内存事务”完成,因此一行...

2018-01-11 20:29:08 5106 1

原创 CUDA-同步

主机与设备之间的同步,分为隐式和显式。一.隐式:cudaMemcpy函数的作用在于传输传输,但在执行结束之前会产生阻塞。许多与内存相关的操作都会产生阻塞,这些不必要的阻塞会对性能产生较大的影响。如:锁页主机内存分配,设备内存分配,设备内存初始化,同一设备间的内存复制,一级缓存和共享存储配置的修改等等。二.显式:下面三种函数均可实现主机与设备间的同步。cudaDeviceSynchron

2018-01-07 16:09:12 1448

原创 CUDA-非空流中的阻塞流

一.主机上非空流是异步流,其上所有的操作都不会阻塞主机执行。相应地,隐式的空流是同步流,大多数添加到空流上的操作都会导致主机在先前所有的操作产生阻塞。二.虽然非空流上在主机上是非阻塞的,但非空流内的操作可以被空流中操作所阻塞。因此可将非空流分为:阻塞和非阻塞两种。  如果非空流是阻塞流,则空流可以阻塞该非空流中的操作。  如果非空流是非阻塞流,则它不会阻塞空流中的操作。三,

2018-01-07 15:16:32 3566 5

原创 CUDA-cudaEvent记录事件

CUDA中Event用于在流的执行中添加标记点,用于检查正在执行的流是否到达给定点。作用一,Event可用于等待和测试时间插入点前的操作,作用和streamSynchronize类似。作用二,Event可插入不同的流中,用于流之间的操作。不同流执行是并行的,特殊情况下,需要同步操作。同样,也可以在主机端操控设备端执行情况。作用三,可以用于统计时间,在需要测量的函数前后插入Event。调

2018-01-06 21:14:17 7174

原创 CUDA 流-重叠计算与数据传输

主机端启动kernel函数,可实现线程块级并行。为了实现任务级(线程格)级的并行,即同时在设备端启动多个核函数或数据传输操作,则需要引入CUDA流。一系列的设备任务(计算或数据传输)正是有序地排列在CUDA流中依次执行的,默认情况下所有任务都是执行在一个默认流中。当创建多个流时,可实现多个流的同步执行,以实现不同流中的各种操作达到重叠的效果,提升计算性能。cudaStream_t st

2018-01-05 21:20:27 1354

原创 CUDA 同步和异步

同步操作:主机向设备提交任务,主机将阻塞,直到设备将所提交任务完成,并将控制权交回主机。然后继续执行主机的程序。异步操作:主机向设备提交任务,设备直接开始执行任务,但主机将不再阻塞,而是直接继续执行主机的程序。主机并不会等待设备执行任务完毕。在CUDA当中,核函数kernel的执行总是异步的,而cudaMemcpy数据传输总是同步的。特别需要注意的是主机在提交核函数之后,不会阻塞等待核

2018-01-05 21:00:58 5823

原创 CUDA-全局内存的区别与用法

CUDA编程中全局内存分为分页内存,固定内存,零拷贝内存,统一虚拟寻址,统一内存地址。一.分页内存   利用cudaMalloc()申请的主机内存,即可分页内存。   特点:可分页内存传输数据到设备时,首先需要分配固定内存,再传递到设备端。float* data;cudaMalloc((void**)&data,sizeof(float)*N);

2018-01-02 21:01:40 2271

原创 Ubuntu17.10 CUDA9.0 OpenACC 安装教程

第一部分:Ubuntu17.10安装安装教程可参看:http://jingyan.baidu.com/album/e4d08ffdace06e0fd2f60d39.html?picindex=2。第二部分:CUDA9.0安装1.下载CUDA reb安装包-(https://developer.nvidia.com/cuda-downloads?target_os=Linux&targe

2017-12-29 19:36:58 1239

原创 CUDA动态并行

Nvidia的GPU,设备计算能力>3.5的设备支持动态并行。可实现GPU线程启动核函数,而不用CPU端调用核函数。这在递归调用很有用!在项目要强制生成可重定位的设备代码,win操作:1.指定代码生成:设备项目-属性-CUDA C/C++ -Device- Code Generation 修改为 compute_35,sm_35。 具体数值可根据自身设备修改,但至少是SM_35。2

2017-12-18 21:56:08 1984 2

原创 CUDA 规约计算性能对比

通过前文,已经把整个规约计算的过程给出了。这里是工程文件,开发环境win1064bit+VS2017+CUDA9.0+1050Ti :http://download.csdn.net/download/qq_17239003/10162546给出整体性能的对比,

2017-12-17 23:41:11 724

原创 CUDA并行规约(交错配对-完全展开-终极版)

通过前面的文章,我们对32以下的迭代循环进行了展开处理,实际上,由于线程块的长度限制(GTX1050Ti是1024),可以说循环次数是确定的,因此可以将循环完全展开,即 1024 512 256 128 64 都可以展开计算,唯一需要注意的每次计算之后都要进行同步,原因在前文已有解释。下面给出代码。#include "cuda_runtime.h"#include "device_lau

2017-12-17 23:27:59 1212

原创 CUDA并行规约(交错配对-展开线程)

当线程执行规约函数的循环时,当只剩下一个线程束(warp=32,),甚至更少的时候,可以将后续的循环展开,及32 16 8 4 2 1的循环直接展开书写。这样处理可以避免循环控制和线程同步逻辑。#include "cuda_runtime.h"#include "device_launch_parameters.h"#include #include "math.h"#i

2017-12-17 20:59:57 788 1

原创 CUDA并行规约(交错配对-展开规约)

之前的规约计算,每个线程块负责一个对应的数据块。现在将每个线程块负责两个数据块的规约,从而达到消除指令消耗,增加更多的独立指令的调度,来提高性能。下面是展开因子为2的示意图,将相邻的数据块加到当前线程块对应的数据块,然后进行规约求和。#include "cuda_runtime.h"#include "device_launch_parameters.h"#include #inclu

2017-12-17 19:53:01 808

原创 CUDA并行规约(交错配对)

按照前文多线程的交错配对方式实现并行规约求和方式,实现CUDA版本的并行规约求和,由于这种方式的规约可以避免线程束的分化,因此不需要进行类似于相邻配对那种方式的优化。交错与优化相邻模式相比,计算效率提升到1.14倍,性能提高有限,这主要受限于全局内存的加载和存储模式。并行规约的示意图: #include "cuda_runtime.h"#include "device_lau

2017-12-17 13:47:38 856

原创 CUDA并行规约(相邻配对-优化)

前文CUDA的并行规约算法的示意图如下,分析可知,相邻之间的线程执行不同的路径,存在线程束分化。为了使得线程束不存在分化,每个warp(32个线程)执行同一指令,可调整相邻的线程的数组索引实现优化。示意图如下图所示,数组的存储位置没变,只是没个线程执行的数组发生了变化,这样的处理模式可以降低相邻线程分化降低,尽早释放后面的线程。实验在GTX1050Ti进行,

2017-12-17 12:27:35 675 1

原创 CUDA并行规约(相邻配对)

#include "cuda_runtime.h"#include "device_launch_parameters.h"#include #include "math.h"#include "stdlib.h"//错误检查的宏定义#define CHECK(call) \{ \ const cudaError_t status=cal

2017-12-17 11:16:39 596

原创 多线程并行数组求和(相邻配对模式)

//并行规约//参数含义:L为数据总长度,length是当前线程的计算长度。template T omp_reduction1(T*data ,int length,int L){ if (length == 1) return *data; int strize = pow(2,log(L)/log(2)-log(length)/log(2)); for (int i = 0; i

2017-12-16 19:50:52 718

原创 多线程并行数组求和(交错配对模式)

利用OpenMP的多线程,对数组进行分组求和,最后对每个线程的局部求和结果进行求和。#include"iostream"#include"omp.h"using namespace std;#define NUM_THREADS 4//并行规约template T omp_reduction(T*data ,int length){ if (length == 1) retur

2017-12-16 17:19:13 1816

原创 CUDA获取错误信息

cudaError_t cudastatus;cudastatus = cudaMalloc((void**)&d_data,NByte);if (cudastatus != cudaSuccess) {qDebug("%s", cudaGetErrorString(cudastatus)); }

2017-12-13 20:25:55 3330

原创 Python 零碎知识

1.创建指定长度的特定列表f=[x*100+y*10+x for x in range(9) for y in range(9)] f=[x for x in range(9) ]f=[0.0 for _ in range(4) ]

2017-12-04 22:49:18 249

原创 Python入门到实践(9)-导入类

将类Car,ElectricCar的定义文件保存为car.pyfrom car import Car 导入单个类from car import Car,ElectricCar 导入多个类from car import * 导入所有类

2017-12-04 22:22:33 202

原创 Python入门到实践(9)-类的继承

# -*- coding: utf-8 -*-"""Created on Mon Dec 04 21:22:37 2017@author: Echo"""#类的继承class Car():#父类 """一次模拟汽车的尝试""" def __init__(self,make,model,year): self.make=make

2017-12-04 22:11:14 160

原创 Python入门到实践(9)-类

# -*- coding: utf-8 -*-"""Created on Mon Dec 04 20:43:31 2017@author: Echo"""#创建和使用类 Dog类#创建class Dog(): def __init__(self,name,age):#类似于构造函数,创建实例时调用!""" #初始化属性,参数self必须不可少,类似于C+

2017-12-04 22:10:31 139

原创 Python入门到实践(7) -用户输入与while循环

Python入门到实践(7) -用户输入与while循环

2017-12-03 09:15:08 251

基于CUDA的数组规约优化

细节参考:http://blog.csdn.net/qq_17239003/article/details/78824004#0-qzone-1-33634-d020d2d2a4e8d1a374a433f596ad1440

2017-12-17

mathematica-超级教程

mathematica-超级教程mathematica-超级教程mathematica-超级教程

2016-06-25

C++复数预运算类

C++复数预运算类C++复数预运算类C++复数预运算类C++复数预运算类

2016-06-25

Linux入门经典

Linux入门经典

2016-02-03

频率波数域滤波

% CREWES elastic finite-difference seismic modelling % The top boundary is a free surface suitable for propagating surface % (Rayleigh) waves. %% CREWES elastic finite-difference seismic modelling % The top boundary is a free surface suitable for propagating surface % (Rayleigh) waves. %

2015-10-21

地震拾取软件

SEIS_PICK provides an interactive environment for picking seismic waveforms. It has been developed with the aim of processing 3-component downhole microseismic data, although is suitable for all 3-component seismic data. SEIS_PICK displays seismic traces, allowing the user to pick P-wave and S-wave phases

2015-10-21

地震数值模拟

地震勘探 数值模拟 正演 matlab 程序 波动方程正演 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.

2015-10-21

有限差分声波方程正演

这是一个用matlab编写的有限差分的声波方程正演的程序。希望对大家有用~

2015-04-09

反褶积代码

地震资料的反褶积处理。维纳滤波压缩子波成尖脉冲 提高分辨率~

2015-01-06

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

TA关注的人

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