并行程序学习

一、一些概念准备

1、一些概念

  1. 核心密集型:该类型不太依赖内存的访问速度;
  2. 存储密集型:该类型内存的访问速度高度敏感;

比如,8核心8线程和8核心16线程,后者对访问速度更加敏感。8核心16线程会公用一些资源,甚至出现争抢资源的情况!

将数据读取到内存这个比较耗时间,一般单线程程序就能达到I/O读取的极限。编写多线程程序时时刻注意,I/O是计算机中速度中最慢的部分;同时需要注意的是,从CPU到GPU的数据传输要通过I/O子系统的PCI express总线进行。

2、调试

在Unix-like系统中调试一般用gdb或者valgrind(可以显示内存泄漏的问题);或者古典调试法。

在调试c程序时gdb可能会更加方便些;在cuda编程中可以使用古典调试法和nvvp(nvidia内置调试工具)。古典方法,比如:使用assert()和printf()函数告诉我们程序内部发生了什么;在程序之间加入return,如果没有出错,那么rerun之前的代码是正确的,这个可以快速定位;

 

你可能感兴趣的:(cuda)