linux下如何进行cuda debug

debug cuda程序貌似并没有想象中那么容易。

我的环境是ubuntu16.04, cuda_toolkit 8.0 ,显卡驱动为nvidia-367,debug提示:

1
All CUDA devices are used for X11 and cannot be used while debugging

查阅CUDA-GDB发现:

Debugging a CUDA GPU involves pausing that GPU. When the graphics desktop manager is running on the same GPU, then debugging that GPU freezes the GUI and makes the desktop unusable。

解决办法

如果不用图形界面的话,可以直接停止X11 server通过停止lightdm服务;

如果要用图形界面的话,需要使用cuda software preemption.

UEFI和BIOS

【摘抄】

UEFI,全称Unified Extensible Firmware Interface,即“统一的可扩展固件接口”,是一种详细描述全新类型接口的标准,是适用于电脑的标准固件接口,旨在代替BIOS(基本输入/输出系统)。作为传统BIOS(Basic Input/Output System)的继任者,UEFI拥有前辈所不具备的诸多功能,比如图形化界面、多种多样的操作方式、允许植入硬件驱动等等。这些特性让UEFI相比于传统BIOS更加易用、更加多功能、更加方便。而Windows 8在发布之初就对外宣布全面支持UEFI,这也促使了众多主板厂商纷纷转投UEFI,并将此作为主板的标准配置之一。

UEFI抛去了传统BIOS需要长时间自检的问题,让硬件初始化以及引导系统变得简洁快速。换种方式说,UEFI已经把电脑的BIOS变得不像是BIOS,而是一个小型固化在主板上的操作系统一样,加上UEFI本身的开发语言已经从汇编转变成C语言,高级语言的加入让厂商深度开发UEFI变为可能。

使用gparted 扩充vmware中linux硬盘容量

在vmware中使用linux,经常会遇到初始化硬盘容量不够的情况,所以学会扩容很重要。我使用gparted工具进行空间扩展。

虚拟机设置

首先选择虚拟机->设置->硬盘->扩展,输入要扩大的容量。此时只是扩大了虚拟机的容量,还没有扩大分区容量。

安装gparted

进入linux,安装gparted工具。

1
sudo apt-get install gparted

打开gparted,发现有一部分为unallocated,此时需要把unallocated加入到/dev/sda1中,才能使用扩展后的空间。

也可以下载gparted 的iso文件,把iso镜像插入ubuntu启动光驱,启动虚拟机时进入vmware bios设置,选择从CD启动,然后进入gparted分区界面。

详情可以查看以下链接。

使用gparted工具扩充vmware UBUNTU虚拟机磁盘空间

vmware虚拟机的ubuntu系统下不重新分区而扩大磁盘容量

JAVA基础知识点摘录1

摘录一点自己平时遇到的java知识点中模棱两可的地方,仅供参考。

JDK,JVM,JRE傻傻分不清楚

JDK (java development kit),就是java的开发工具集,顾名思义就是做开发用的,其中包括javac (java compiler)以及JRE (java 运行环境)等。jdk本身是由java编写的。

让我们看一下JDK的安装目录。在目录下面有 六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的 是以下四个文件夹:bin、include、lib、 jre。现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。

  • bin:最主要的是编译器(javac.exe)
  • include:java和JVM交互用的头文件
  • lib:类库
  • jre:java运行环境

(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。eclipse、idea等 其他IDE有自己的编译器而不是用JDK bin目录中自带的,所以在安装时你会发现他们只要求你选中jre路径就ok了。

位运算的特殊用法

在计算机中,使用位运算代替一些逻辑运算,可以大大加快运算的速度。所以掌握位运算的一些特殊用法大有必要。

简单位运算

按位与&

清零:如果想将一个单元清零,只要与一个各位都为零的数值相与,结果为零。

取一个数中指定位:找一个数,对应X要取得的位,该数的对应位为1,其余位为零,该数与X进行“与运算”可以得到X中的指定位。

按位或|

将一个数据的某些位置1:找一个数,对应X要置1的位,该数的对应位为1,其余位为零,该数与X相或可使X中的某些位置1。

JSP基础知识摘录

Servlet

Servlet是JSP的前身。是在服务器端运行的小程序。一个Servlet就是一个java类,并可以通过“请求-响应”编程模型访问驻留在服务器内存里的Servlet程序。

执行流程