分类: C/C++

CUDA零复制内存

Pre 零复制(Zero Copy)(零拷贝内存) 三件事 启用零复制 分配主机内存 将常规的主机指针转换成指向设备内存空间的指针 代码参考 Reference Pre 之前的博客CUDA锁页内存和零复制只是简单介绍了下零复制内存,并没有详细说明,这里参考《CUDA并行程序设计-GPU编程指南》这本书再详细说明下。 零复制(Zero Copy)(零拷贝内存) 零复制是一种特殊形式的内存映射,它允许你将主机内存直接映射到GPU内存空间上。因此,当你对GPU上的内存解引用时,如果它是基于GPU的,那...

GPGPU-Sim安装

Pre 我的安装环境 CUDA Toolkit 安装 设置环境变量 GPU Computing SDK 安装 设置环境变量 处理GPGPU-Sim的依赖 设置环境 benchmark测试 编译 配置文件 运行 Debug Reference Pre GPGPU-sim 是一个模拟NVIDIA GPU的开发工具。 官方主页 我的安装环境 Ubuntu 14.04 x64 无NVIDIA显卡 Lenovo Y471A CUDA Toolkit 安装 由于gpgpu-sim仅最高支持cudatoolk...

Cuda锁页内存和零复制

Pre 为了对某一数据集进行操作,你需要将数据从主机传输到设备上、在数据集上进行操作,然后将结果传输回主机。由于是在完全串行的方式下执行的,这将导致主机和设备在一段时间内都是闲置的,白白浪费了传输能力和计算能力。本文介绍了锁页内存(Pinned Memory/PageLocked Memory)和零复制(Zero Copy)来节省甚至去掉数据传输耗费。 锁页内存(Pinned Memory/PageLocked Memory) 主机处理器支持虚拟内存系统,其中物理内存也可以标记为换出状态,然后将...

Cuda基础

主机与设备 线程结构 关键特性 硬件映射 执行模型 nvcc编译器 CUDA存储器模型 主机与设备 运行在GPU上的CUDA并行计算函数成为kernel(内核函数),不是一个完整的程序,而是整个CUDA程序中一个可以被并行的步骤。一个完整的CUDA程序是有一系列的设备段kernel函数并行步骤和主机端的串行处理步骤共同组成的。这么步骤会按照程序中相应语句的顺序依次执行,满足顺序一致性 一个kernel函数中有两个层次的并行:Grid中的block间的并行和thread间并行。 在设备端运行的线程...

OpenGL三维绘图学习4裁剪(画半球体)

图像变换 使用opengl一定要建立一个观念,所有的变化都是矩阵变换,可以变换,也就可以还原。即push和pop matrix 示例 GLdouble eqn [4]={0.0,0.0,-1.0,0.0}; glClipPlane(GL_CLIP_PLANE0,eqn); glEnable(GL_CLIP_PLANE0); glutSolidSphere(headR,slices,slices); //截完了之后,再撤消,防止对其他部分产生影响。该实验的代码,我都没有用push和pop但是实际上...

OpenGL三维绘图学习3键盘监听

Pre 不深入了解,只说明满足实验要求的。 实验中要求按钮对应事件是旋转和前进后退。 代码 static GLfloat spin=0.0; static GLfloat movtion=0.0; static void key(unsigned char key, int x, int y) { switch (key) { case 27 : case ‘q’: exit(0); break; //按ESC键(ASCII码为27)和q键为退出 case ‘a’: spin>360?sp...

OpenGL三维绘图学习2画常见立体图形

Pre 有同学用的是手算看到图形的比例,然后给出一个正方体的参数(约定好某个点+边长)来画,我偷懒直接用库函数。 库函数 //球 glutWireSphere(8.0f,20,20); glutSolidSphere(8.0f,20,20); //锥体 glutWireCone(4.0f,8.0f,20,20); glutSolidCone(4.0f,8.0f,20,20); //立体 glutWireCube(8.0f); glutSolidCube(8.0f); //甜圈 glutWireT...

OpenGL三维绘图学习1入门

Pre 入门 坐标系 gluPerspective 函数原型 gluLookAt 函数原型 注意 建议 示例代码 总结: opengl三维绘图入门系列: Reference: Pre 五一三天假期,本来说要写图形学实验,结果前两天一直没有做,被某人说不靠谱。 不!靠!谱!从来不适用于哥! 第三天花了一天时间来写实验,最后写了差不多吧,就是一些细节问题了。 入门 个人感觉入门只需要搞明白两个函数: gluPerspective和gluLookAt 请阅读此文时,抛去你前面几个实验的所有概念。 坐标...

简易HttpServer(500行左右代码)

简易HttpServer 1.说明 Code: gitOSC开源中国 2.HTTP GET POST 3.HTTP Response 响应格式 响应实例: 最常用的状态码 4.主要函数 5.思路: 6.cgi支持 7.日志记录 8.遇到的问题 pthread_create传递参数 client与server交互 buf设置过小 判断服务器文件or目录 Reference: 简易HttpServer 1.说明 该httpserver主要是对Tinyhttpd的中文注释以及一些bug的修复以及几个新...

strcpy详解[转]

题目: 已知strcpy函数的原型是: char * strcpy(char * strDest, const char * strSrc); 1.不调用库函数,实现strcpy函数 2.解释为什么要返回char * 一. 实现strcpy //1.strcpy的实现代码 char * strcpy(char * strDest,const char * strSrc) { if ((NULL==strDest)||(NULL==strSrc)) //[1] throw "Invali...