自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Z_Paper的博客

本人很懒,什么都没留下~

  • 博客(50)
  • 收藏
  • 关注

原创 C++ 类图 & Astah画类图

类图基本概念:类图(Class Diagram):类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。类图的3个基本组件:类名、属性、方法。在UML类图中,常见的有以下几种关系:泛化(Generalization)实现(Realization)关联(Association)依赖(Dependency)聚合(Aggregation)组合(Composition)1. 泛化(Genera

2022-05-07 13:58:11 6199

原创 Ubuntu 安装流程图工具 Asta

一 安装astaasta是一款画流程图、时序图比较专业的软件。官网从官网下载astah professional安装包。下载wget http://cdn.change-vision.com/files/astah-professional_8.0.0.d641d4-0_all.deb执行后需要一段时间下载。安装安装使用dpkg命令:sudo dpkg -i astah-professional_8.0.0.d641d4-0_all.deb执行后进入 agreement 界面:

2022-05-06 15:01:11 2340

原创 C++ 11 - auto和decltype

autoauto :编译器通过初始值来进行类型推演,获得定义变量的类型。auto 定义的变量必须有初始值。个人理解:简化书写,提高编码效率 auto 是一个很强大的工具,但有它的两面性。不加选择地随意使用auto,会带来代码可读性和维护性的严重下降。在使用 auto 的时候,一定要权衡好它带来的“价值”和相应的“损失”。使用:(1)auto推断基本类型(一条语句一个变量)//由val_1 和val_2相加的结果可以推断出item的类型auto item = val_1 + val_2

2022-04-27 16:57:13 1052

转载 Ubuntu -- 分卷压缩与分卷解压

# 1.分卷压缩 tar cvzpf - myfile | split -d -b 50m - newfile# 其中 - myfile :输入文件夹名字; -b 50m :每卷为50m; - newfile :输出文件名# 压缩完的文件命名为:newfile00,newfile01,newfile03... # 2.分卷文件解压cat newfile*>newfile.tar.gz # 将分卷文件合并成一个压缩文件tar xzvf newfile.tar.gz #解压

2022-04-26 16:51:04 3639

原创 “dpkg -l” 输出信息说明

例如输入 “dpkg -l gedit” 信息如下:King@Master:~$ dpkg -l geditDesired=Unknown/Install/Remove/Purge/Hold| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)||/ Name V

2022-04-20 13:05:08 557

原创 Ubuntu 20.04 系统备份和还原

最近大家Ubuntu开发环境,经常出现搭着搭着系统就挂了,于是开始琢磨了Ubuntu系统的备份和还原,以备不时之需,Linux环境搭建实在是有点太细,好多情况下,就算曾经搭建过一遍,再次搭建有些包还是忘了安装,做好备份是十分必要的。经过了一番研究,Ubuntu备份有很多方式:根目录tar、dd、Systemback(1.0版本已经不维护了,2.0版本收费)等等,最终决定使用 —— Timesift, 因为方便一些。文章参考:小马虎的救星——TimeshiftTimeshiftTimeshift,是L

2022-04-18 14:34:10 23588 4

转载 Gnome禁用tracker-miner-apps、tracker-miner-fs、tracker-store

说明方法一:使用gsettings方法二:使用dconf-editor方法三:禁止tracker-*软件启动说明Gnome中自带的tracker-miner-*主要作用是为文件、应用等创建索引,但是经常会导致cpu占用100%的问题,这里讲一下禁用它们的三个方法。其中方法三为直接禁止这几个软件启动,其它为虽然启动但不工作。方法一:使用gsettings禁用tracker-miner应用gsettings set org.freedesktop.Tracker.Miner.Files cr.

2022-03-22 09:08:49 1445

原创 gn和ninja

构建系统简介在探讨chromium的最新GN构建系统之前,回顾一下软件开发中的构建系统。构建系统的需求是随着软件规模的增大而提出的。如果只是做软件编程训练,通常代码量比较小,编写的源代码只有几个文件。比如你编写了一段代码放入helloworld.c文件中,要编译这段代码,只需要执行以下命令:gcc helloworld.c当软件规模逐渐增加,这时可能有几十个源代码文件,而且有了模块划分,有的要编译成静态库,有的要编译成动态库,最后链接成可执行代码,这时命令行方式就捉襟见肘,需要一个构建系统。常见的构

2022-03-21 09:24:59 576

原创 OpenHarmony随笔记 - 概念篇

DockerDockerDocker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。一个完整的Docker有以下几个部分组成:DockerClient客户端Docker Daemon守护进程Docker Image镜像DockerContainer容器 [2]知乎解答,通俗易懂:(一)Docker的思想来自于集装箱.

2022-03-21 09:17:54 254

原创 make、makefile、cmake及相关内容

最近在学gn和ninja,设计到了makefile相关的内容,相关概念有些记不太清楚了,重新查阅了一下,顺便留个笔记方便以后查看。开始的时候先简单介绍一下程序的生命周期,源码到可执行程序,一般需要经过四个过程:上图截取自《深入理解计算机系统》,图中说明了,一个程序要从源文件变为一个可执行的机器文件,需要至少四个步骤(python之类的语言还有一个解释过程)。举个简单的例子,我们要在屏幕上面打印一句“hello world!”,除去编辑的过程,源文件先要经过预处理得到*.i文件,然后经过编译得到*.s

2022-03-17 09:09:26 272

原创 OpenHarmony随笔记

编译构建编译构建OpenHarmony基于gn和ninja的编译构建框架,实现:构建不同芯片平台的产品根据产品配置可以按照组件组装打包产品需要的能力相关基本概念:平台::开发板和内核的组合,不同平台支持的子系统和组件不同子系统::1、分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。2、系统功能 : “系统 > 子系统 > 组件” 逐级展开说明:(1)可以实际需求裁剪某些非必要的子系统或组件。(2)子系统是一个逻辑概念,它具体由对应的组件构成组.

2022-03-09 17:58:53 1502

原创 随手杂记.

杂记目录1、GNU2、GPL 、LGPL 、GFDL3、UNIX、LinuxGNUGNU是一个自由的操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU’s Not Unix!的递归缩写,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。GNU计划,有译为“革奴计划”,是由理查德·斯托曼在1983年9月27日公开发起的自由软件集体协作计划。它的目标是创建一套完全自由的操作系统GNU。作为操作系统,GNU的发展仍未完成,其中最大的问.

2022-03-09 13:51:43 869

原创 ubuntu访问服务器文件

方法一:随便打开一个文件夹,按ctrl+L 输入 smb://服务器ip地址然后输入用户名和密码即可方法二:Other Location->右侧下面:Connect to Server-> 输入 smb://服务器ip地址然后输入用户名和密码即可...

2022-03-07 09:46:21 1416 2

转载 C++:LIB和DLL的区别与使用

共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包含在运行时定位DLL函数的可执行代码所需的信息。静态链接使用静态链接库,链接器从静态链接库LIB获取所有被引用函数,

2022-01-07 16:18:39 2253

原创 Google 开源项目风格指南 (中文版)

Google开源项目风格指南,包含如下:Google C++ 风格指南 Google Objective-C 风格指南 Google Python 风格指南 Google JavaScript 风格指南 Google Shell 风格指南 Google JSON 风格指南 Google TypeScript 风格指南在线文档托管在 ReadTheDocs:http://zh-google-styleguide.readthedocs.io/en/latest/ 中文风格指南 GitHu.

2021-12-30 14:13:03 2662

原创 不要轻易使用第三方软件搬运C盘大文件

不要轻易使用第三方软件搬运C盘大文件,因为这个东西有点坑~简单描述一下个人的经历。对C盘的储存容量很敏感,没事经常清理,十分担心C盘内存不够。通过在网上学习的一些方法,C盘很稳定,很干净。但是,总是希望C盘更干净,更少没用的东西(可能是本人有点强迫症,哈哈)。某一天用腾讯管家(360管家类似的三方软件),C盘大文件搬运,表示十分惊喜,咔咔的,没有考虑好就搬运了好几个G的文件。过后,心理不是很安稳,总是担心莫名的问题发生,于是决定将搬运的文件恢复回去。但是问题发生了,我去!!!有一些C盘的文件搬

2021-12-16 13:48:36 5148 1

原创 C++ 函数模板 & 使用函数模板出现“无法解析的外部符号”的问题

一、C++ 函数模板函数模板是通用的函数描述,它们使用泛型来定义函数,其中的泛型可用具体的类型替换。通过将类型作为参数传递给模板,可使编译器生成该类型的函数。由于模板允许以泛型(而不是具体类型)的方式编写程序,因此有时候也被称为通用编程。在标准C++98添加关键字typename之前,C++使用关键字class来创建模板。在C++11中,可以将class替换为typename。template<class T>void swap(T&a, T&b){ T tem

2021-12-16 13:19:03 6138 1

原创 cudaMemcpyAsync()并非真的Async

最近好奇,cudaMemcpyAsync()这个函数相对于Host端是否真的的异步的。简单测试了一下,发现有些时候并非是异步的。通过阅读文档发现,cudaMemcpyAsync()是否异步遵循以下定义。通过以上文档说明,对于cudaMemcpyAsync(), Host端pinned memory是必须的(与函数参数说明中一直)。非pinned memory的情况下,不是同步的,就是需要将pageable memory转化成pinned memory,之后再异步,非常耗时。...

2021-12-14 09:57:42 6725

原创 [CUDA编译问题] MSB3721(返回值1) & nvcc fatal : Path to libdevice library not specified

问题描述:Visual Studio 2015 + CUDA 11.1环境,之前环境正常, 突然出现以下问题: MSB3721, 返回值1 输出信息显示:nvcc fatal : Path to libdevice library not specified解决方法:根据上面的问题信息,我上网上检索问题解决方案, 方案汇总如下:1、平台信息不对,x64的平台配置成了x86的 2、nvcc.exe的路径或者环境变量配置的不对 3、各种库路径的信息配置的不对 等等.......

2021-12-07 12:49:02 1365

转载 GitHub访问速度慢

github 是全世界最流行的开源项目托管平台,其代表的开源文化从根本上改变了软件开发的方式.基本上所有的需求都能从 github 上或多或少找到现成的实现方案,再也不用重头开始造轮子而是自定义轮子!然而,有时候国内访问 https://github.com/ 速度太慢,如何加速访问 github.com 网站就成了刚需.由于 github.com 网站位于美国旧金山,所以初始访问 github.com 时网络寻址会比较耗费时间,这也是网站打开速度慢的其中一个原因.国外在线检测网站:...

2021-12-01 15:25:08 8687 2

原创 VS2015 CUDA Code调试

1、需要Software(1)Visual Studio 2015(2)Nsight Visual Studio Edition(3)Nsight Monitor2、配置安全连接为了使Visual Studio中的NVIDIA Nsight主机软件和目标机器上的Nsight Monitor能够相互通信,它们的安全设置必须匹配。要启用安全连接:在主机上,打开NVIDIA Nsight选项窗口中的常规页面。a) 从Visual Studio 的Nsight菜单中,选择“Options”。b

2021-11-17 15:34:46 2029

转载 VS 无法打开预编译头文件:“*.pch”的错误

stdafx.h在使用过Visual Studio,VC++的时候,我们新建工程的时候往往在每个.cpp文件的最前面都有一个#include "stdafx.h"。这个文件有他的作用,下面介绍其原理和使用过程中会遇到的一些问题。简介stdafx,全称Standard Application Framework Extensions,标准引用框架扩展。其实就是头文件预编译,我们知道C++文件进行编译时,需要先进行预编译,包括宏定义替换,条件编译以及#include文件包含。这里就是将一个工程

2021-11-16 14:27:24 8942 1

转载 关于extern “C“(详细剖析)

目录引言extern “C”的前世今生小心门后的未知世界c++调用c的方法c调用c++的方法引言在你工作过的系统里,不知能否看到类似下面的代码。这好像没有什么问题,你应该还会想:“嗯⋯是啊,我们的代码都是这样写的,从来没有因此碰到过什么麻烦啊~”。你说的没错,如果你的头文件从来没有被任何C++程序引用过的话。这与C++有什么关系呢? 看看__cplusplus(注意前面是两个下划线) 的名字你就应该知道它与C++有很大关系。__cplusplus是一个C++规范规定的预定义宏。你可以信任的是:所

2021-11-16 13:59:09 1727

转载 CUDA C 项目中 error C2059: 语法错误:“<” 问题

该问题的关键在于理解CUDA项目中C\C++文件需要由c++编译器进行编译,而CUDA C的源文件需要由CUDA的编译器nvcc.exe进行编译。发生该语法错误的原因是cu文件被C++编译器所编译,C++编译器无法识别 “<<<”,导致报错。cu文件会被C++编译器所编译,原因在于我们使用#include将cu文件包含到了C++文件中。对于#include的用途,更简单的理解就是把几个文件合并成一个文件,所以,当编译C++文件中,包含其中的cu文件也会被编译,从而导致 “<&

2021-11-16 12:18:51 3322 2

转载 Window下程序计时

【C/C++】计时函数比较目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但是各种计时函数的精度不一样.下面对各种计时函数,做些简单记录.方法1time()获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系

2021-11-12 12:43:14 492

转载 C++ :const用法

#include<iostream>using namespace std;int main(){ int a1=3; ///non-const data const int a2=a1; ///const data int * a3 = &a1; ///non-const data,non-const pointer const int * a4 = &a1; ///const data,non-const point.

2021-11-10 11:37:18 203

原创 CUDA Tool | Windows10-CUDA11.1-JDK8 环境下安装NVidia Visual Profiler(nvvp)安装笔记

背景:分析CUDA程序的GPU占用情况。除了使用常见的clock、gettimeofday计时分析程序的效率之外,还可以使用nvidia推出的nvprof进行具体的GPU指令耗时分析,为了方便分析,可以使用nvidia visual profiler对nvprof生成的分析报告进行可视化。官方链接:https://developer.nvidia.com/nvidia-visual-profiler准备:Window 10环境下的nvprof工具生成待可视化的目标文件(*.nvvp文件)。.

2021-11-02 11:18:55 2532

原创 CUDA版本与显卡驱动匹配

一、已知显卡驱动,安装对应版本的CUDANVIDIA 控制面板帮助>>系统信息组件可以查看对应的CUDA driver版本,下载对应的驱动。这个CUDA driver是在NVIDIA驱动中自带的。二、想要安装固定版本的CUDA,查看驱动是否匹配,或者更新驱动https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html上面网站是官方的CUDA版本和驱动对应的表格。根...

2021-10-21 16:39:55 22149

原创 显卡、显卡驱动、Nvcc、Cuda Driver、CudaToolkit 、Cudnn到底是什么?

显卡定义显卡显卡(Video card,Graphics card)全称显示接口卡,又称显示适配器,是计算机最基本配置、最重要的配件之一。显卡是电脑进行数模信号转换的设备,承担输出显示图形的任务。具体来说,显卡接在电脑主板上,它将电脑的数字信号转换成模拟信号让显示器显示出来。原始的显卡一般都是集成在主板上,只完成最基本的信号输出工作,并不用来处理数据。随着显卡的迅速发展,就出现了GPU的概念,显卡也分为独立显卡和集成显卡。独立显卡和集成显卡:集成显卡是指显卡集成在主板上,...

2021-10-21 16:21:33 3717 2

原创 理解CUDA中的cudaMalloc()的参数

函数的原型:cudaError_t cudaMalloc (void **devPtr, size_t size ); 返回值是CUDA中定义的一个错误代码。Host端创建一个指针变量,将这个指针变量传入到cudaMalloc()函数。Device端根据设置创建内存后,会将内存首地址赋值给Host端的指针变量,故参数设置需要**(指针变量地址)。例子:float *Device_Matrix = NULL;size_t size = 1024 * sizeof(float);c

2021-10-19 11:45:57 2088

转载 由矩阵运算理解CUDA kernel函数的运行

一、kernel函数介绍kernel在cuda中指的是一个函数,当一个kernel被调用的时候,gpu会同时启动很多个线程来执行这一个kernel,这样就实现了并行化;每个线程执行这一kernel将通过线程号来对应输入数据的下标,这样保证每个thread执行的kernel一样,但是处理的数据不一样。核函数以下几个的前缀分别代表:__global__:在GPU上执行,可以在CPU上被调用,也可以在GPU上被调用__device__:在GPU上执行,只能在GPU上被调用__host__:在CPU..

2021-10-19 11:37:07 3897

转载 2.3CUDA矩阵乘法

CPU 矩阵乘法能相乘的两个矩阵,必须满足一个矩阵的行数和第二个矩阵的列数相同.A(N*P) * B(P*M) = C(N*M). 其中P是行数,N是列数, 从宽高的角度来说,即 A的宽度和B的高度是相同的.C矩阵 = ha * wb.其中C(i,j) = A矩阵中的i行和B矩阵中的j列进行点乘得到该点的值.//C = A*Bvoid MatrixMulCPU(float* _C,const float *_A,const float *_B,int _wa,int _ha,in..

2021-10-19 11:22:10 489

原创 Cuda 11.4和VS2015不兼容

经过几天的折腾,发现Cuda 11.4和VS2015不兼容。我搭环境遇到的问题问题一:安装完Cuda 11.4之后,VS2015新建项目中没有Cuda 11.4的模板。经过一顿折腾之后,解决了。方法连接:https://blog.csdn.net/zjy1175044232/article/details/120746396问题二:可以新建Cuda工程了,发现根本编译不了。MSB3721编译报错。nvcc fatal : nvcc cannot find a su..

2021-10-14 16:32:26 2676 3

转载 C++引用与指针

引用某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;#include <iostream>#include <Windows.h>using namespace std;int main(void){ int a=10; printf("a=%d\n",a); int &b=a; //a的别名 printf("b=%d\n",b); a=100; printf("

2021-10-14 11:09:11 181

原创 Const和指针

Const一个C语言(ANSI C)的关键字。限定一个变量不允许被改变,产生静态作用。Const在一定程度上可以提高程序的安全性和可靠性。Const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被修改的。Const指针Const指针是指针变量的值一经初始化,就不可以改变指向,初始化是必要的。其定义形式如下:type *const 指针名称Const与指针的组合const int * var1; //指向整形常量的指针,它指向的值不能修改int..

2021-10-14 11:02:25 514

原创 VS2015+Cuda 11.4 新建项目CUDA模板

本机环境:Win10 + VS2015 + Cuda 11.4问题 :Cuda正常安装,Visual Studio Integration也正常安装完成,但是新建项目中没有Cuda模板,添加文件也没有Cuda C++文件。解决方法:1、关闭所有的Visual Studio程序。2、确保MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations下有visual_studio_integration\MSBuildExtensions的文件

2021-10-13 16:38:44 1807 2

转载 2.2CUDA-Memory(存储)和bank-conflict

在CUDA基本概念介绍有简单介绍CUDA memory。这里详细介绍:每一个线程拥有自己的私有存储器,每一个线程块拥有一块共享存储器(Shared memory);最后,grid中所有的线程都可以访问同一块全局存储器(global memory)。除此之外,还有两种可以被所有线程访问的只读存储器:常数存储器(constant memory)和纹理存储器(Texture memory),它们分别为不同的应用进行了优化。全局存储器、常数存储器和纹理存储器中的值在一个内核函数执行完成后将被继续保持,可以被同一

2021-10-11 15:04:54 577

转载 2.1CUDA-Thread

在HOST端我们会分配block的dimension, grid的dimension。但是对应到实际的硬件是如何执行这些硬件的呢?如下图:lanuch kernel 执行一个grid。一个Grid有8个block,可以有两个硬件执行单元,一个执行一个block,需要执行4次,或者像右边有4个执行单元,一共执行两次。这个就很灵活,提供啦程序的扩展性,我们在代码中可以根据具体硬件的约束来设置,提高程序的兼容性和扩展性。在CUDA中实际执行thread的硬件我们称作Streaming mult

2021-10-11 14:35:08 997

转载 1.2CPU和GPU的设计区别

CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。于是CPU和GPU就呈现出非常不同的架构(示意图):图片来自nVidia CUDA文档。其中绿色的是计算单元,橙红色的是存储单元,橙黄色的是控制单元。GPU采用了数量众多的计算单元

2021-10-10 13:59:13 312

转载 CUDA网格限制

2021-10-10 11:32:06 153

空空如也

空空如也

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

TA关注的人

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