![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机语言
文章平均质量分 70
icfg66
“君子终日乾乾,夕惕若厉,无咎。”
展开
-
RK3399pro装labelme
一、硬件与系统操作系统(cat /etc/issue):Ubuntu 18.04硬件(lscpu):aarch64,Cotex-A53,二、基本情况嵌入式系统里面只有python3.5,labelme只能支持python3.6以上。由于嵌入式系统空间有限,anaconda不太方便安装,版本管理就不那么方便。不同于x86架构,安装简单的labelme花了九牛二虎之力。三、排坑之路安装python3.6之后,pip总是对应python3.5,在知乎上找到这篇多版本Python安装pip及pip版原创 2021-10-25 10:24:00 · 276 阅读 · 0 评论 -
内联汇编的妙用
一、问题描述AES加密模式中,有一种CTR模式,其流程如下图:加密时,除了明文和密钥外,还需要一个初始向量COUNTER1,将其加密的结果和明文异或,即可得到密文;下一块明文加密时,COUNTER1加1得到COUNTER2。详情可以查看博文AES的五种加密模式。以下是我用拓展指令集在AES加速的CTR模式代码,测试的了三块数据,初始向量vi=“0102030405060708”(128bit),但编译之后,加密的结果只有第一块正确,其余两块不正确,vivado查看波形,发现三次的COUNTER没有改原创 2021-05-23 20:01:38 · 295 阅读 · 0 评论 -
Docker 入门+实战
一、缘起导师让我跑一个忆阻器网络的GitHub项目,需要C++编译,还要用pytorch训练。自己的电脑是win10,C++编译需要用虚拟机里的linux系统;pytorch还没装,而且虚拟机肯定跑不了这种强度的训练。因此申请使用课题组的服务器,顺利登陆后,发现g++都没有!IT反问我一句:“为什么不用Docker?”,于是便开启了我docker速成之路二、简单明了说Docker我也是花了挺久在弄明白Docker(容器)的概念。不得不说,它真是很有用,正是需求促进了Docker的产生。为了弄清doc原创 2021-02-21 20:03:46 · 220 阅读 · 0 评论 -
C++多线程4——锁竞争
一、为什么要锁锁是为了防止多线访问共同内存时的冲突问题,先看实例:两个线程分别对全局变量累加://gcc lock_test.c -lpthread#include <stdio.h>#include <unistd.h>#include <pthread.h>int num = 0; //设置为全局变量,在全局区域共享void* myfun(void* arg);pthread_mutex_t mtx;int main(){ //1.产生两个原创 2021-02-13 10:32:37 · 940 阅读 · 2 评论 -
C++多线程3——线程池
一、线程池的好处如果任务的数量一开始不确定,我们该如何开辟线程?如果来一个任务开辟一个线程,任务结束之后又销毁线程,那么整体的效率会很低,大多数时间都在产生和销毁线程,该如何摆脱这种困境?线程池的概念孕育而生,我们可以一次产生4个线程,它们组成一个线程池,相当于食堂的打菜大妈;接着会有一波任务接连过来,这些线程便依次完成这些任务,如果暂时没有任务,它们也不销毁,继续等待,直到设定的一定之间后,才销毁线程池。线程池能够大大提高任务执行的效率。二、线程池实例如果从头开始写线程池,会非常复杂,目前我也没原创 2021-02-13 10:31:41 · 367 阅读 · 0 评论 -
C++多线程2——亲和性
一、多核CPU的结构服务器的多核结构属于NUMA(Non-Uniform Memory Access,非一致性内存访问)架构。这里有一篇很好的介绍NUMA架构理解。以我们课题组的服务器为例,上面有两个“插槽”,即两个socket(物理概念),逻辑上称为节点node。每个插槽10个物理核core,每个物理核通过超线程技术可以产生两个逻辑核processor。因此我们服务器可以有$ 2 \times 10 \times 2=40$个线程 。CPU亲和的意思是,假设我们产生40个线程,希望每个线程运行在原创 2021-02-13 10:30:31 · 836 阅读 · 0 评论 -
C++多线程1——pthread
一、多核时代随着数字IC工艺的提升,单核性能越来越高,但随之来的是功率密度增大,芯片发热严重,要进一步提升性能,很自然会想到C多核。将计算任务分配到不同的cpu,最后将结果整合,完成多核并行。二、C\C++的多线程C提供了很方便的多线程库,最基本的是pthread库,C++里有thread库(调用起来更加方便),还有omp库(不必自己设置线程,已封装好),接下来将介绍C++pthread库的应用实例,这些实例能够很方便移植到不同的应用中。omp库的实例可参看C++openmp并行计算实例。三、实例原创 2021-02-13 10:27:46 · 1871 阅读 · 3 评论 -
C++openmp并行计算实例
C++利用内部库<omp.h>进行并行加速的实例,但实际效果确更慢,找不出原因。希望各路大神帮忙。基本功能是计算π\piπ:π=4∫0111+x2dx\pi = 4\int^1_0 \frac{1}{1+x^2}dxπ=4∫011+x21dx//g++ avx_omp.cpp -fopenmp -O2 #include <iostream>#include <ctime>#include <omp.h>using namespace st原创 2020-10-07 14:17:40 · 1338 阅读 · 2 评论 -
C++avx256指令集加速实例
背景avx256是x86cpu架构下实现SIMD(单指令多数据)的指令集。它能够利用cpu内部256bit的寄存器,同时对4位double或8位int类型的数操作,达到很好的加速效果。这里通过一个计算π\piπ的实例来展示其威力:π=4∫0111+x2dx\pi = 4\int_0^1\frac{1}{1+x^2}dxπ=4∫011+x21dxlinux系统下可以通过如下命令查看电脑是否支持avx256指令集:cat /proc/cpuinfo | grep flagssse4就表示原创 2020-10-07 12:47:31 · 6794 阅读 · 1 评论 -
MIPS模拟器MARS汇编入门
前言B站有个入门视频,文中的例子来自MIPS汇编语言小科普我会在代码中添加详细的注解,方便自己日后查看。这里使用的是MARS模拟器,很小巧方便。三段小程序(1) Hello World!C语言的Hello World! 如何转变为汇编语言呢?#include<stdio.h>int main(){ printf("Hello World!"); return 0;}汇编语言实际上是对寄存器进行操作,需要向外输出时,应调用syscall指令,配合v0(2号寄存原创 2020-06-10 08:51:52 · 7256 阅读 · 2 评论 -
win10 预览窗口显示.py文件内容
win10的窗口预览功能非常方便,我们只需要选中文件,但无需打开,就可以在任务管理器的侧栏预览文件的内容。如图但是,如果查看python的.py文件,matlab的.m文件,就预览不了,有什么办法像预览.txt一样预览.py 文件呢?全网找遍了没有看到合适的方法,基本上是如何开启预览功能的帖子,功夫不负有心人,用bing搜索英文论坛竟然立马得到了解答!Mark python files t...原创 2020-04-05 17:06:05 · 1439 阅读 · 3 评论 -
《汇编语言》笔记
学习完王爽的《汇编语言》确实有一种豁然开朗的感觉,书中很多实践例题,感觉是他带着我们一步一步做实验,非常容易理解,是不可多得的好书!本书汇编语言的环境是8086CPU为中央处理器的PC机,原因是它常用而且结构简洁。一、计算机的结构最核心的部件有三个:CPU、内存、I/O设备。CPU负责运算加工数据,这些数据处理好后存入内存,I/O设备通过端口可以显示存储器中的内容,也可以向CPU传输数据,实...原创 2020-03-27 20:21:53 · 535 阅读 · 0 评论