2017-05-05
开源深度学习库

开源深度学习库汇总:

  • mxnet 亚马逊主推
  • caffe FACEBOOK主推
  • tensorflow GOOGLE
  • CNTK 微软
  • Theano
  • Torch

低层库

调用库 mxnet caffe tf cntk theano torch
blas y y y
opencv y y
cuda y y
opencl y
LAPACK y
FFTW y y

caffe
math_functions.cu gpu blas
otherwise using blas.
opencl –> greentea –>greentea_math_functions.cpp

2017-04-13
嵌入式LINUX_RPI3

编译过程

用默认配置编译.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
git clone --depth=1 https://github.com/raspberrypi/linux
KERNEL=kernel
make ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- bcm2709_defconfig
make ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -j4 zImage modules dtbs
sudo make ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- INSTALL_MOD_PATH=mnt/ext4 modules_install
sudo cp arch/arm/boot/zImage mnt/fat32/$KERNEL.img
sudo cp arch/arm/boot/dts/*.dtb mnt/fat32/
sudo cp arch/arm/boot/dts/overlays/*.dtb* mnt/fat32/overlays/
sudo cp arch/arm/boot/dts/overlays/README mnt/fat32/overlays/

阅读此文

2017-04-11
linux内核文件编译分析

MAKEFILE

内核配置完成后,在顶层目录中执行“#make uImage”便开始编译内核。但是,uImage却不是在顶层Makefile中定义,而是在arch/$(ARCH)/Makefile中定义。

顶层Makefile Line 452:
include $(srctree)/arch/$(SRCARCH)/Makefile
其中srctree为源码绝对路径,

即该变量等于架构名称,我们以arm为例进行说明。

arch/arm/Makefile Line 230:
zImage Image xipImage bootpImage uImage: vmlinux
可见uImage依赖于vmlinux,要先生成vmlinux,然后执行下边这条指令完成编译。
arch/arm/Makefile Line 231:
$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@

Q的定义:选择静态编译与否(是否打印编译信息)
MAKE: 系统环境变量,值为make
build: 值为“-f scripts/Makefile.build obj=”实际上就是调用子Makefile–scripts/Makefile.build,然后传递参数目标文件夹。
Kbuild.include被顶层Makefile所包含

源代码定位

配置

/arch/arm/Kconfig 定义了自编译内核配置文件
/arch/arm/configs 和上面的一起.定义不同的CHIP的配置(其实就是定义上面哪些配置要打开. 所以重点还是在Kconfig)

在Kconfig的1080行开始,定义了 source “arch/arm/mach-at91/Kconfig” 也就是不同的芯片会调用各自目录下的Kconfig

通过配置找代码

在MAKEFILE里找到对应配置的代码
plat-$(CONFIG_PLAT_SUNXI) := sunxi
对应的就是plat-sunxi
有的时候对应的源代码很难找. 只能用GREP来了.
比如CONFIG_CSI_OV7670 ,处理它的MAKEFILE在 drivers\media\video\sun4icsi\device\MAKEFILE

2017-04-11
FREEBSD内核文件编译分析

本文不是叫大家怎么做FreeBSD内核,做内核太简单了,不管是Linux和Unix。
在网上找了好久,一点可用的文章都没有找到,FreeBSD的官网的文章也没有给出说法,只能自己在/usr/src和/usr/src/sys和/usr/src/sys/conf下面疯狂的grep,找文件,找引用,才有了自己的一些理解。
先说说Linux的内核文件的编译关联吧,Linux的每个文件的编译和是 kconfig配置关联在一起的,kconfig在经过make menuconfig之后,得到一个.config文件,然后每个文件夹下面的Makefile,会check这个全局的.config文件,来决定哪些 文件该编译,哪些不用编译。多说无益,参考代码即可。
FreeBSD的做法有些不一样了,Linux把哪些文件要编译分散到了每个文件夹,然后check Makefile。FreeBSD是做两个总的文件,决定哪些文件该编译哪些不该,这两个文件分别是这个路径下:
ztz0223@BTazuo:/usr/src/sys/conf % pwd
/usr/src/sys/conf
的两个文件:files,files.i386

阅读此文

2017-04-09
Ubuntu代码分析

代码位置

执行 sudo apt-get install linux-source 才会获取到源代码. 否则只有HEADER文件.
执行完安装后. 代码依然会在/usr/src下 位置和BSD是一样的.

也可以从GITHUB下载. 比如要编译特定的系统的话.

阅读此文

2017-03-27
matlab to Python MATLAB转PYTHON(持续更新)

  1. dot
    1
    np.sum(A.conj()*B), axis=0)

官网

阅读此文

2017-03-22
matlab call python

MATLAB call python

Make sure the Python module is on the Python search path. To test if module mymod is on the path, type:

1
py.importlib.import_module('mymod')

If Python cannot find the module, MATLAB displays a Python error message.

To add mymod, in folder modpath, to the path, type:

1
2
3
4
P = py.sys.path;
if count(P,'modpath') == 0
insert(P,int32(0),'modpath');
end
阅读此文