linux
linxxx3
CUDA,Phi,Multi-core Parallel programming
展开
-
内存设置的一些有用技巧
<br />向baoyg师兄学习,由衷敬佩。<br /> <br />一些有用的技巧<br />1 内核中获取模块变量的物理地址x86_64平台中,内核变量可以通过直接减一个固定偏移(START_KERNEL_map = 0xffffffff80000000)来获得物理地址;但是Module中的变量还是需要查询页表才能获得物理地址,可以通过调用lookup_address来获得对应的PTE<br />2 设置页面为Uncacheable有两种方法:<br />2.1 一种是使用MTRR。原创 2010-09-21 15:13:00 · 568 阅读 · 0 评论 -
C程序中简单获取机器的CPU物理核数和主频(Redhat Linux系统)
获取这两个参数,主要的目的是计算机器的理论浮点峰值。言归正传,问题有两个部分,一个是如何获取这两个值,另一个是怎么传递到C程序中。1. 获取(以下内容在非Redhat 系统上需要变通以下,不能用是正常的)先看一个cpuinfo的例子:$cat /proc/cpuinfoprocessor : 0vendor_id :GenuineIntelcpu family原创 2013-03-26 18:56:37 · 839 阅读 · 0 评论 -
拷贝或者迁移openmpi
很多时候你会想要把一台机器上已经安装的openmpi 工具拷到其他机器上直接用,而不必在每一台机器上都重新安装一次。如果保证目标机器的openmpi文件夹路径与安装源的一致,那么没有问题。如果想换一个文件夹,即使是在同一台机器上迁移,openmpi是跑不起来的,原因是二进制程序里hard code了安装时的prefix 路径。好在很早(1.2.1 版本以后)官方对这个就给了一个解决方案原创 2013-04-03 18:20:21 · 529 阅读 · 0 评论 -
vim在xshell等终端下的配色方案,推荐darkburn
用过的都知道,xshell默认的配色下,vi的注释颜色非常不友好,其他配色也存在对比度低的问题。社区里有个名叫darkburn的配色方案,用过之后欲罢不能啊,如果结合 :set t_Co=256 (设为256色方案),用起来就更完美了。背景呈暗绿色,文字反白,很舒服。配色脚本下载:darkburn.vim ,安装方法页面上有讲。csdn不能上传附件,可惜了。 vim.org原创 2011-04-29 19:38:00 · 8655 阅读 · 0 评论 -
scp 出现 protocol error: bad mode 错误的解决过程
刚碰到的一个诡异问题,两台配置完全相同的实验机,用scp传文件,出现“protocol error: bad mode”错误。一看基本超出我能处理的范围,首先求助google,大多数回复是基于字面的猜测,是不是TCP/IP等协议不匹配的问题。但是首先ssh登录没有问题,只是scp才出错,不太可能是真的协议问题;并且两台机器的软硬件配置是相同的,排除。直到某国外论坛上看到有一个回复是原创 2012-10-10 17:47:43 · 2625 阅读 · 1 评论 -
用汇编调试的方法窥探库函数的实现
这篇笔记的起因是我想要偷窥一下IntelMKL库中spmv的实现细节,有可能的话看是不是可以在汇编层面做一些优化的工作。需要分析的MKL库函数是:void mkl_scsrmv (char *transa, MKL_INT *m, MKL_INT *k, float *alpha, char *matdescra, float *val, MKL_INT *indx,MKL_INT *pntr原创 2012-09-10 16:03:51 · 850 阅读 · 1 评论 -
linux如何迁移用户账户
其实账户名和密码迁移很容易,老的系统加密密码在 /etc/passwd 中,较新的系统放在 /etc/shadow,另外加上用户组信息 /etc/group,共三个文件复制到新的系统上就完成了,立即生效,不用重启。较困难的工作是之后怎么建立每个用户的主目录,甚至迁移已有的目录和文件,这个网上可以找到脚本;另一个方法是把/home文件夹所在的文件系统做成nfs,直接挂上来,非常方便原创 2012-03-28 20:54:27 · 825 阅读 · 0 评论 -
如何控制Linux下多个Shell脚本串行执行
当你在一个类似批处理的脚本里启动多个shell脚本的时候,可能没有意识到shell背后的调度器会将这些脚本在多个CPU上并行执行。当同时执行的脚本访问某些共享资源(通常是文件)时,可能造成执行的结果错误,而且经常让你意识不到。不同于低级语言中提供同步等机制,shell提供的逻辑执行的机制可以用于串行化执行,例如:1.sh && 2.sh && [...]不过这种方法的一个问题是原创 2012-03-27 04:40:58 · 3473 阅读 · 1 评论 -
f77与gfortran在external symbol(外部符号)上的区别,注意下划线
今天先简单写一下,以后完善一篇C-fortran互相调用要注意的要点 ^_^!!!实验平台 CentOS 5.3如果.f文件中的函数名称都不含有下划线“_”,f77与gfortran编译出的.o文件中,导出的外部符号是相同的,可以用nm命令查看。例:add.fsubroutine add(a, b, sum)……$ f77 -c add.f$ nm add.o00原创 2012-02-13 05:19:49 · 689 阅读 · 0 评论 -
比较两个文件中行乱序的相同行与不同行
<br />为了check多线程程序的结果,经常需要比较行乱序的两个文件中的内容。起初的想法是用perl之类的处理一下,之后发现利用grep工具本身的功能就可以完成简单的工作。<br /> <br />输出相同行:<br />$grep -wf file1 file2<br /> <br />输出不同行:<br />$grep -wvf file1 file2<br /> <br />关键是grep的参数-f,可以从文件中取得pattern;-w指定必须匹配整个word;-v输出不匹配的行原创 2011-05-06 11:40:00 · 1374 阅读 · 0 评论 -
在shell里做浮点计算
<br />如果两个变量做基本的整数运算,在shell里是很容易实现的,只需(($a+$b))就可以;但是shell本身是不支持浮点计算的,不过我们可以用变通的方法——使用常用的计算器工具bc就可以实现浮点计算:<br /> <br />#! /bin/sh<br /> <br />sum=$(echo "$1+$2" | bc )<br />echo $sum<br /> <br />下一篇要写一写怎么从文件中提取数值赋值给变量(折腾了好久 Orz)原创 2011-04-29 22:46:00 · 813 阅读 · 0 评论 -
当while遇到重定向----sh的陷阱
<br />PS:我自己的系统里sh直接指向bash,估计不存在这个问题<br /> <br />以下是我在编程时的亲身体会:<br />先看如下的程序:<br />#!/bin/sh<br /><br />count=0<br />while read LINE<br />do<br />count=`expr $count + 1`<br />done < file<br />echo $count<br />问题是这个程序能得到什么样的结果?仿佛很明显,能够统计文件file的行数,然而你若执行一下便知转载 2011-04-29 20:55:00 · 522 阅读 · 0 评论 -
OpenMP笔记——打开编译报告
linux平台上使用 -openmp-report 2 打开完全的OMP编译报告,包括所有编译指导是否成功。如果使用级别1,报告loop,region,section的并行是否成功。原创 2011-04-28 18:54:00 · 542 阅读 · 0 评论 -
linux终止其他用户会话的方法
<br />或许你也遇到这种情况,在管理或者别的时候,需要将某些用户的会话强制关闭。一般大家可能熟知的方法是查找该用户会话的所有进程,然后kill掉。这种方法大部分情况下是可以工作的。但是,若在用户会话非正常退出时,就难以达到效果了。<br /><br />本文讲述两种方法,来删除指定用户的会话。均是可以在不知道用户进程号的情况下完成的,提高了工作效率。<br /><br />使用tty命令,查看本会话的会话号。不要将自己给kill掉了,那是日本人喜欢做的事,不是我们大汉民族的所作所为:<br /><br转载 2011-04-07 11:18:00 · 2975 阅读 · 1 评论 -
linux中的spinlock和mutex
<br /><br />内核同步措施<br /> 为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。 我们的重点不是介绍这些方法的详细用法,而是强调为什么使用这些方法和它们之间的差别。<br /> Linux 使用的同步机制可以说从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随 Linux从单处理器到对称多处理器的过度;伴随着从非抢占内核到抢占内核的过度。锁机制越来越有效,也越来越复杂。<br /> 目转载 2011-03-23 17:06:00 · 347 阅读 · 0 评论 -
linux使用openmp及math库的小问题
<br />有些小问题在初次使用的时候很烦,知道了就很容易。下面的麻烦事我自己碰到的,分享一下,大牛见笑。<br /> <br />gcc和g++本身包含openmp的支持,但是使用上有一点区别:gcc或者icc只需要添加-fopenmp编译即可使用,但是g++需要包含<omp.h>头文件以使用某些C风格的函数,比如omp_get_num_procs。<br /> <br />我使用的redhat enterprise 6 系统的math动态库 libm.so在默认链接路径下,但是如果使用-static静态原创 2011-03-16 19:02:00 · 1455 阅读 · 0 评论 -
检查文件依赖的动态链接库
<br />如果想要确认编译时链接的动态库是否正确(属于隐式调用),或者运行时是否加载了已安装的新库,这时可以用ldd命令。<br /> <br />语法很简单:ldd [file]<br /> <br />返回结果类似下面这样:<br /> libcufft.so.3 => /usr/local/cuda/lib64/libcufft.so.3 (0x00002ba67e3aa000)<br /> libcuda.so.1 => /usr/lib64/libcuda.so.1 (0x000原创 2010-09-28 10:00:00 · 874 阅读 · 0 评论 -
安装nvidia driver出错,需要内核模块签名(signed kernel module)的解决过程
有一段时间没写博客了,今天遇到的问题耗费了很多精力,需要记录一下。同样问题的完整解决过程,我没有在google上搜到。 安装nvidia driver,会有build kernel module的过程,安装kernel-devel包之后,正常的安装步骤略去不表,一般情况下,一路确定下去基本不会有问题。如果内核编译时,选择加载模块强制需要签名,就会碰到下面的问题,war原创 2014-01-21 19:28:12 · 2505 阅读 · 0 评论