- 博客(80)
- 资源 (9)
- 收藏
- 关注
原创 LSTM 优化之路
本文首发于滴滴云公众号:https://mp.weixin.qq.com/s/H0AKuKn1XQDEa06jDm3Nug导读谈到神经网络,相信是当下比较火的一个词。它的发展不是一蹴而就,而是通过各代人的智慧,经过一次一次的优化,迭代才慢慢建立起当下的各种网络结构,从最简单的 MLP,到 CNN,RNN,再到增强网络,对抗网络。每一种网络结构的诞生,都是为了解决某一类特定场景的问题。本文中涉及的 ...
2018-07-11 11:01:21
26479
6
原创 FPGA 那些事儿之异构计算
FPGA 那些事儿之异构计算FPGA 那些事儿之异构计算简介FPGA 概览传统 FPGA 开发传统 FPGA 与软件开发对比传统 FPGA 开发方式基于 OpenCL 的 FPGA 开发OpenCL 是个 whatOpenCL 案例分析采用 CPU 模拟仿真 FPGAFPGA 设备上运行矩阵乘小结简介对于一个软件开发人员,可能听说过 FPGA,甚至在大学课程设计中,可能拿FPG
2016-09-28 14:26:48
15155
22
原创 Ubuntu-14.04 安装 R 语言开发环境
R 简介R 环境R 安装R 简介R 是一种统计计算和图表的编程语言和编程环境。它是和 S 语言相似的 GNU 项目,由 Bell 实验室 John Chambers 和 colleagues 开发。R 可以考虑是 S 语言的一种不同的实现,他们之间有一些重要的不同点,但是大部分的 S 语言代码可以在 R 语言下运行。R 提供了一种广泛的统计和图表技术(线性,非线性模型,经典统计测试,时间序列分析
2015-02-25 18:09:23
6821
1
原创 阿里集团2015实习生招聘内部推荐
阿里集团2015实习生招聘内部推荐 阿里集团2015实习生招聘内部推荐已经启动,欢迎大家把简历发送给我,我可以帮忙内推,只要你够优秀,就放心的把简历发给我吧。搜寻目标2016年及以后毕业的应届生(本科及以上学历者):毕业时间以毕业证时间为准适合研发工程师、算法工程师、测试开发工程师、客户端开发工程师、系统工程师、安全工程师、数据分析师、数据挖掘工程师、数据研发工程师、前端开发工程师、交互设
2015-02-14 11:54:57
1994
翻译 卷积神经网络的并行化模型——One weird trick for parallelizing convolutional neural networks
前段时间一直在关注 CNN 的实现,查看了 caffe 的代码以及 convnet2 的代码。目前对单机多卡的内容比较感兴趣,因此特别关注 convnet2 关于 multi-GPU 的支持。其中 cuda-convnet2 的项目地址发布在:Google Code:cuda-convnet2关于 multi-GPU 的一篇比较重要的论文就是:One weird trick for parallelizing convolutional neural networks本文也将针对这篇文章给出分析。
2015-01-06 11:34:07
14334
4
原创 GPU 编程入门到精通(五)之 GPU 程序优化进阶
博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GPU 编程,因此在这里特地学习一下 GPU 上面的编程。有志同道合的小伙伴,欢迎一起交流和学习,我的邮箱: <caijinping220@gmail.com> 。使用的是自己的老古董笔记本上面的 Geforce 103m 显卡,虽然显卡相对于现在主流的系列已经非常的弱,但是对于学习来说,还是可以用的。本系列博文也遵从由简单到复杂,记录自己学习的过程。
2014-10-23 17:22:37
9892
1
原创 GPU 编程入门到精通(四)之 GPU 程序优化
博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GPU 编程,因此在这里特地学习一下 GPU 上面的编程。有志同道合的小伙伴,欢迎一起交流和学习,我的邮箱: caijinping220@gmail.com 。使用的是自己的老古董笔记本上面的 Geforce 103m 显卡,虽然显卡相对于现在主流的系列已经非常的弱,但是对于学习来说,还是可以用的。本系列博文也遵从由简单到复杂,记录自己学习的过程。
2014-10-21 15:48:59
9524
2
原创 GPU 编程入门到精通(三)之 第一个 GPU 程序
博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GPU 编程,因此在这里特地学习一下 GPU 上面的编程。有志同道合的小伙伴,欢迎一起交流和学习,我的邮箱:caijinping220@gmail.com 。使用的是自己的老古董笔记本上面的 Geforce 103m 显卡,虽然显卡相对于现在主流的系列已经非常的弱,但
2014-10-20 21:31:43
43794
1
原创 通过 Perf 对 OpenSSL 中 RSA 加密解密进行性能分析
1、测试用例:rsa_test.c#include #include #include #include #include #include #define OPENSSL_KEY "./2048.pem"#define PUBLIC_KEY "./2048_pub.pem"#define BUFFER_SIZE 2048char* my_encrypt(char *s
2014-07-20 18:38:59
3760
原创 OpenSSL 中 RSA 加密解密实现源码分析
1、RSA 公钥和私钥的组成,以及加密和解密的公式:2、模指数运算:先做指数运算,再做模运算,如 5^3 mod 7 = 125 mod 7 = 63、RSA加密算法流程:选择一对不同的、并且足够大的素数 p 和 q计算 n = p * q计算欧拉函数 f(n) = (p-1) * (q-1),p 和 q 需要保密寻找与 f(
2014-07-13 19:13:07
6689
1
原创 利用 PlxSdk 工具包开发 Linux 下 PCI 设备驱动
最近实验室需要做一个 Linux 与 FPGA 之间的快速接口,考虑高速的特性,选择了 PCI 接口实现。FPGA 选择 altera 的 EP2C20F484C8PCI 接口芯片选择 PLX8311操作系统选择 ubuntu10.041、Linux 检测 PCI将板卡插入到主机 PCI 插槽内,开机,通过 lspci 命令可以检测到当前系统下所有的 PCI 设备。
2014-06-19 13:31:06
9207
1
原创 Ubuntu 之间通过 VNC 远程访问
最近在使用Linux的过程中,为了方便,需要通过我的笔记本访问别的一台安装了 Ubuntu 的机器,方便起见,直接用了图形化远程登录,其中需要用到的就是 VNC。它的配置过程分为两部分,服务器端(另一台机器),客户端(我的笔记本)。服务器端:安装VNC服务程序:$ sudo apt-get install vnc4server给当前用户设置v
2014-06-09 17:25:40
1336
原创 C 语言写的爱情诗歌
/* ************************************************ File Name: Love.c***** Description: Love Story about you and me***** Author: JPing.Cai***** Date: 2014-5-10***** Last Version: 1.0* *******
2014-05-10 16:07:13
2714
1
原创 Ubuntu12.04 之 CUDA 编程 (二) ~~~ GPU 程序加速
关于 Ubuntu12.04 下 CUDA5.5 的安装请参看如下链接Ubuntu-12.04 安装 CUDA-5.5关于 Ubuntu12.04 下 CUDA5.5 程序的运行请参看如下链接Ubuntu12.04 之 CUDA 编程 (一) ~~~ GPU 运行程序1、程序的并行化前一篇文章讲到了如何利用 CUDA5.5 在 GPU 中运行一个程序。通过程序的
2014-05-07 14:54:04
4883
1
原创 GPU 编程入门到精通(二)之 运行第一个程序
博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GPU 编程,因此在这里特地学习一下 GPU 上面的编程。有志同道合的小伙伴,欢迎一起交流和学习,我的邮箱: caijinping220@gmail.com 。使用的是自己的老古董笔记本上面的 Geforce 103m 显卡,虽然显卡相对于现在主流的系列已经非常的弱,但是对于学习来说,还是可以用的。本系列博文也遵从由简单到复杂,记录自己学习的过程。
2014-04-21 22:06:20
23904
5
原创 GPU 编程入门到精通(一)之 CUDA 环境安装
博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GPU 编程,因此在这里特地学习一下 GPU 上面的编程。有志同道合的小伙伴,欢迎一起交流和学习,我的邮箱: caijinping220@gmail.com 。使用的是自己的老古董笔记本上面的 Geforce 103m 显卡,虽然显卡相对于现在主流的系列已经非常的弱,但是对于学习来说,还是可以用的。本系列博文也遵从由简单到复杂,记录自己学习的过程。
2014-04-11 21:14:19
45192
原创 Redis源码学习——字典
字典在Redis中应用十分广泛,它是实现数据库的基础,特别的它是数据库键空间的实现方式,因此非常必要研究透彻字典的构建。1、散列方法也就是hash方法。思想:根据节点的关键码值确定存储地址。核心:散列函数。原理:对于任意给定的查找表 DL,选定“理想”的散列函数 h 及相应的散列表 HT ,则对于 DL 中每个元素 X ,函数值 h(X.key) 为 X 在
2014-03-17 14:24:37
1596
原创 Redis源码学习——双端链表
双端链表在Redis中的地位:它作为一种通用数据结构,在Redis的内部使用非常多。是Redis列表结构的底层实现之一,也被大量Redis模块使用,用于构建其他功能。1、双端链表的定义Redis双端列表的定义可以参看 adlist.h 和 adlist.c 两个文件。与双链表定义一致,引入了链表节点,并在此基础上增加头尾节点构建双端链表。链表节点如下定义:/
2014-03-14 17:32:52
1330
原创 Redis源码学习——简单动态字符串SDS(Simple Dynamic String)
前两天听了学长们的交流会,偶尔接触到了redis,考虑到redis只有2W多行代码,感觉代码量不是很大,所以决心看看他的源代码。 由于刚刚接触redis,所以就跟着大牛的文章一步一步的学下去了。 打算按照《Redis 设计与实现》http://www.redisbook.com/en/latest/#id1 这本书慢慢的学下去,希望今天是一个良好的起点。
2014-03-13 17:25:12
2463
1
原创 两个精巧的算法
1、计算一个二进制数中1的个数如给定一个整型数 x = 10,它的二进制表达式是(1010)B,题意就是计算出x的二进制表示中一的个数是2。分析如下:如果将x转化为二进制,就可以计算出1的个数了,此时复杂度是o(log n)的,复杂度还可以。int func(int x){ int count = 0; while(x){ if(x%2 == 1) count++; x
2014-03-03 14:53:38
1360
原创 Java——协变数组和类型擦除(covariant array & type erasure)
1、数组的协变性数组的协变性(covariant)是指:如果类Base是类Sub的基类,那么Base[]就是Sub[]的基类。而泛型是不可变的(invariant),List不会是List的基类,更不会是它的子类。数组的协变性可能会导致一些错误,比如下面的代码:public static void main(String[] args) { Object[] ar
2014-01-08 21:38:47
3424
1
原创 Tiny6410杂项设备驱动之——led驱动
1、硬件设备GPIO:英文全称为General-Purpose IO ports,也就是通用IO口。嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭。对这些设备/电路的控制,使用传统的串行口或并行口都不合适。所以在微控制
2013-12-09 16:02:20
1280
原创 ubuntu下为Tiny6410搭建nfs服务器
1、开发环境服务器端:ubuntu12.04客户机端:tiny6410(arm11)2、服务器端安装NFS服务器使用以下命令安装nfs服务器程序软件包,在命令执行过程中,默认启动SUNRPC服务和nfs服务,并创建/etc/exports和、etc /default/nfs-kernel-server配置文件,等待用户完成nfs安装后,配置将要共享的资源。
2013-12-09 14:19:24
1373
原创 Tiny6410内核模块编译之helloworld
由于项目,需要自己编译内核驱动,但是考虑到编译内核比较麻烦,而且需要重新烧写系统,不是很方便,所以研究了一下通过模块的方式加载驱动。用一个 helloworld的程序说明一下整个流程,记下来,以便以后查阅。编译环境说明:主机操作系统:ubuntu12.04编译的linux内核:linux-2.6.38嵌入式系统:tiny6410一、编译zImage 在编译
2013-12-06 21:23:37
1899
原创 X86控制寄存器和系统地址寄存器+实模式和保护模式
80386控制寄存器和系统地址寄存器如下表所示。它们用于控制工作方式,控制分段管理机制及分页管理机制的实施。控 制寄存器CRxBIT31BIT30—BIT12BIT11—BIT5BIT4BIT3BIT2BIT1BIT0CR0
2013-12-02 17:30:16
3367
2
原创 GCC内嵌AT&T汇编语法
一 基本语法1 寄存器引用引用寄存器要在寄存器号前加百分号%,如“movl %eax, %ebx”。 80386有如下寄存器:1、8个32-bit寄存器 %eax,%ebx,%ecx,%edx,%edi,%esi,%ebp,%esp; 2、8个16-bit寄存器,它们事实上是上面8个32-bit寄存器的低16位:%ax,%bx,%cx,%dx,%di,%si,%bp,%
2013-12-01 22:43:56
4286
原创 Linux内核--内核数据类型
将linux 移植到新的体系结构时,开发者遇到的若干问题都与不正确的数据类型有关。坚持使用严格的数据类型和使用 -Wall -Wstrict-prototypes 进行编译可能避免大部分的 bug。-Wall显示所有的警告-Wstrict-prototypes严格的检测原型,如果不一致,则出现警告内核数据使用的数据类型主要分为3个类型
2013-11-18 22:38:30
2277
原创 Tiny6410声卡驱动——录音与回放
在Linux下,音频设备程序的实现与文件系统的操作密切相关。Linux将各种设备以文件的形式给出统一的接口,这样的设计使得对设备的编程与对文件的操作基本相同,对Linux内核的系统调用也基本一致,从而简化了设备编程。 如何对各种音频设备进行操作是在Linux上进行音频编程的关键,通过内核提供的一组系统调用,应用程序能够访问声卡驱动程序提供的各种音频设备接口,这是在Linux下进
2013-11-17 19:52:39
1685
原创 Linux操作系统下的多线程编程详细解析
使用多线程的理由之一是和进程相比,它是一种非常"节俭"的多任务操作方式。我们知道,在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远
2013-11-15 15:34:25
1311
原创 gcc基本指令+gdb调试
-o生成指定名字可执行文件 gcc hello.c -o hello-c只编译,生成.o目标文件 gcc -c hello.c-g产生调试工具gdb所必要的符号信息 gcc -g hello.c -o hello-O对程序进行优化编译、链接,可提高编译、链接速度-O2优化更加彻底,不过编译时间更长-I
2013-11-14 21:03:05
1309
原创 linux下tar.gz、tar、bz2、zip等命令小结
Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩了,所以首先就来讲讲tar命令的基本用法: tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面 来举例说明一下: # tar -cf all.tar *.jpg
2013-11-14 20:57:08
1357
原创 win7下建立与linux文件共享——samba
SambaSamba是Ubuntu和Windows进行网络共享的工具,比如分享打印机,互相之间传输资料文件。[编辑 ] 安装Samba安装sambasudo apt-get install samba[编辑 ] 配置1.windows 访问 ubuntu第一步创建共享目录: 比如要创建/home/用户名/share首先创建这个文件夹
2013-11-12 14:16:40
2595
原创 tiny6410的Linux系统修改IP地址
Linux系统启动时执行了\etc\init.d\ifconfig-eth0脚本,这个ifconfig-eth0脚步会查找/etc下是否存在eth0-setting文件,如果有则执行"source eth0-setting",使用其中配置的IP,如果没有找到这个文件则使用默认的192.168.1.230。所以只要修改/etc/eth0-setting中的IP地址即可。修改以
2013-11-06 19:20:28
1865
原创 JSTL标签
来源jsp中有大量java片段jsp中html标签+jsp标签+java片段提出把java片段用标签替换C标签标签最常用的标签,用于在 JSP 中显示数据c:out value="hello world" >c:out>h1> 如何输出request/sess
2013-10-28 14:57:05
1021
原创 win7系统MySQL-5.0.18安装图解
用的可执行文件的方式安装。打开下载的mysql安装文件mysql-5.0.18-win32.zip,双击解压缩,运行“setup.exe”,出现如下界面mysql安装向导启动,按“Next”继续 选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,我们选择“Custom”,用来熟悉安装过程:
2013-10-23 22:54:02
5824
原创 Request和Session的区别
说简单点 request对象和session对象的最大区别是生命周期。requestrequest范围较小一些,只是一个请求。request对象的生命周期是针对一个客户端(说确切点就是一个浏览器应用程序)的一次请求,当请求完毕之后,request里边的内容也将被释放点 。简单说就是你在页面上的一个操作,request.getParameter()就是从上一个页面中的url、
2013-10-21 15:01:25
16065
2
原创 MVC模型之用户登录系统
1、什么是MVC模型2、用户登录系统的MVC模型3、用户登录系统详解3.1 登录界面 login.jsp它主要完成用户登录界面,只是完成MVC中的V(view),也就是他只完成登录界面。当提交登录按钮以后,把用户验证交给一个servlet去完成,因servlet的效率较高。跳转的servlet通过loginClServlet完
2013-10-17 12:26:12
2425
1
原创 MyEclipse+tomcat开发环境配置
配置使用1、建立工程2、新建JSP文件解决中文问题 page language= "java" import ="java.util.*" pageEncoding="gbk" %>3
2013-10-15 16:41:32
1207
原创 Servlet+Tomcat 界面登录
1、文件夹建立(必须按照这个规范,文件名和文件夹名必须一致)a、在%TOMCAT_HOME%\webapps下建立一个文件夹,取名MyWebsitb、在MyWebsit文件夹下新建WEB_INF文件夹c、在WEB_INF文件夹下建立classes文件夹以及web.xml(网络配置文件)2、开发servleta、引入servlet-api.
2013-10-11 20:07:50
1842
原创 java+socket 简易聊天工具
1、服务器端程序package com.test3;import java.io.*;import java.net.*;import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;public class MyServer3 extends JFrame implem
2013-10-10 21:55:35
2823
GCC手册.chm
2013-11-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人