小小小草儿的博客哟

追梦,启航

【C++】测试时间

为了精准的获取程序块的运行时间,使用sys/time.h进行时间测试。 struct timeval start; struct timeval end; unsigned long Time = 0; gettimeofday(&start, NULL); ... ge...

2018-10-08 17:48:01

阅读数 172

评论数 0

【C++】g++参数介绍(待整理)

参考:https://www.cnblogs.com/lidan/archive/2011/05/25/2239517.html

2018-09-25 10:15:59

阅读数 76

评论数 0

【汇编编程】查看汇编代码

#include <iostream> using namespace std; int main() { cout << "Hello Wor...

2018-09-21 20:10:19

阅读数 349

评论数 0

【OpenBLAS】BLAS、LAPACK、ATLAS、OpenBLAS区别

1.BLAS Basic Linear Algebra Subprograms,基础线性代数子程序。定义了一组API,可以进行向量之间乘法、矩阵之间的乘法等。使用Fortran语言开发的。 2.LAPACK Linear Algebra Package,线性代数包,底层使用BLAS,使用Fo...

2018-07-25 12:00:03

阅读数 1112

评论数 0

【CUDA】设计优秀的CUDA程序

首先需要对我们的程序进行性能测试: (1)时间:使用CUDA事件的方式进行时间测试。 (2)内存带宽:根据运行时间和传入到核函数的数据内存量进行带宽计算。 优秀的CUDA程序: 1. 在给定的数据规模下,选用算法的复杂度不明显高于最优的算法。 2. Active wrap(激活的...

2018-07-19 17:10:19

阅读数 60

评论数 0

【CUDA】分配内存使用void**

在cuda中分配内存的时候,都是使用void**进行内存的分配。 对于一般情况: void memory(int* p) { p = (int*)malloc(10); } int main() { int* a = 0x0001; memory(a); ...

2018-07-18 16:21:59

阅读数 285

评论数 0

【CUDA】CMakeLists实现CUDA编译

# 设置CMake版本 cmake_minimum_required(VERSION 3.5) project(Test1) set(EXECUTABLE_OUTPUT_PATH ../) # 找到CUDA路径并导入头文件 find_package(CUDA REQUIRED) include_d...

2018-07-18 11:16:05

阅读数 1291

评论数 0

【Neon】arm neon指令集指令解析

在arm neon的指令集中,大多数都是单词的缩写加一些特殊的前后缀修饰符。 正常指令q 可以对任一向量类型执行运算,并生成大小相同且类型与操作数向量相同的结果向量。 长指令l 长指令对双字向量操作数执行运算,并生成四字向量结果。所生成的元素通常是操作数元素宽度的两倍,并属于同一类型。 ...

2018-07-17 10:51:39

阅读数 1017

评论数 0

【C++学习】explicit修饰构造函数

在C++中,可以使用关键字explicit对类的构造函数进行修饰。被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。 官方解释:禁止隐式调用类内的单参数构造函数。 (1)该关键字只能用于修饰类内部的构造函数。 (2)该关键字修饰的构造函数只能是单参数构造函数,对...

2018-07-09 17:40:20

阅读数 134

评论数 0

【C++学习】C++多线程初步入门---thread库

对于多线程编程,一个是并行,另外一个是并发。并行是指两个或多个独立的操作同时进行。并发是指在一个时间段内执行多个操作。例如,在常见的四核四线程可以并行四个线程,但是对于四核八线程是使用了超线程技术,把一个物理模拟为两个逻辑核心。 1 并发编程的方法 1.1 多进程并行 1.2 多线程并行...

2018-07-09 17:25:51

阅读数 284

评论数 0

【OpenMP】多线程计算过程中任务调度问题

对于OpenMP的任务调度主要针对于并行的for循环,当每一次循环过程中的计算时间复杂度不一致的时候,简单的给每一个线程分配相同次数的迭代,会导致线程计算负载不均衡。不仅如此,对于实时计算的计算机,每一个核心的占用率是不一样的。针对该问题,OpenMP中给出多种线程调度的方式。 1. 基本使...

2018-07-07 11:30:48

阅读数 232

评论数 0

【C++学习】C++实现高效内存池

1.内存池简介 2.函数实现 2.1 主函数 2.2 StackAlloc.h 2.3 StackAlloc.cpp 2.4 禁用拷贝赋值 2.5 静态断言与断言 2.6 使用reinterpret_cast 1.内存池简介 内存池是池化技术中的一种形式,通...

2018-07-05 20:15:41

阅读数 403

评论数 0

【C++学习】CMakeLists核心功能

设置可执行文件的输出路径 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${Path}) 设置可执行文件的输出 add_executable(${EXE_FILE} ${MAIN_FILE})

2018-05-09 21:21:28

阅读数 113

评论数 0

【C++学习】在编译过程中出现的错误“未定义的引用”

在编译为目标文件的时候是没有问题的,但是在编译的过程中(其实是链接的过程),生成可执行文件的时候找不到”XXX”的定义。 xxx.cpp(.text+0x1000):对'A'未定义的引用 原因是将C/C++编译为obj文件的时候并不需要函数的具体实现,只需要有函数的原型即可。但是在编译为可...

2018-05-09 18:11:24

阅读数 1199

评论数 0

【C++学习】JNI编译--无法找到jni_md.h

在linux中使用jni编译的过程中,找不到jni_md.h。是因为在/usr/lib/jvm/java-8-openjdk-amd64/include/中的jni.h,#include "jni_md.h"找不到,jni_md.h文件位于linux文件夹下面。...

2018-04-26 14:46:31

阅读数 419

评论数 0

【C++学习】如何在Clion中生成多个可执行文件

在构建一个新的Clion工程的时候,会自动生成一个文件夹cmake-build-debug,可以帮助我们快速的对整个C++工程进行编译运行。而主函数编译后生成的可执行文件就位于cmake-build-debug文件夹下面。 如果我们需要在一个C++工程中构建多个主函数并生成多个可执行文件的话,我...

2018-04-24 10:54:21

阅读数 2714

评论数 1

【C++学习】C语言编译链接过程

将一个后缀为.c的源文件转换为可执行文件的过程就是编译与链接。 编译:将文本形式的源代码转换为机器语言形式的目标文件的过程。 链接:将目标文件、操作系统的启动代码和用到的库文件结合为最终可执行代码的过程。 对于编译阶段分为两个阶段:编译、汇编;编译阶段又分为预处理阶段、编译优化阶段。 预处...

2018-04-23 14:10:35

阅读数 112

评论数 0

【C++学习】关于C++中定义和声明的区别

声明:只是说明一个变量或者是一个类的结构,在声明的过程中,是不会为其分配空间的,编译器仅仅只对其进行词汇分析和名字的判定,不会占用任何内存。 定义:表示对于该对象而言是占用内存的,即在相对内存地址上进行对象定址。 1.对于变量和对象不加extern表示的是定义,否则是声明,也就是说使用关键字e...

2018-04-16 19:40:28

阅读数 41

评论数 0

【C++学习】C++运算符重载

c++中预定义的运算符的操作对象只能是基本数据类型,对于很多的用户自定义类型,也可以进行相似的运算符操作。运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据导致不同类型的行为。 运算符重载的实质就是函数重载。 基本过程:首先要把指定的运算表达式转化为对运算符函数的调用,...

2017-01-02 16:23:49

阅读数 384

评论数 0

【C++学习】构造函数和析构函数

前言 我们不能通过对结构体列表初始化的方式对类的对象初始化。因为在类中,有的数据成员的访问权限是私有的,然后只有本类中的成员函数才能对类中的私有数据成员进行访问,因此只有通过设计合适的成员函数,才能对对象正确的初始化。(如果一个类中的所有数据成员都是公有的,就能采用列表初始化的方式,但是也就违背...

2016-12-10 21:41:13

阅读数 206

评论数 0

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