请选择 进入手机版 | 继续访问电脑版

开源计算机图形学社区(Open Source Computer Graphics Community) |OpenGPU Forum (2007-2013)| OpenGPU Project

 找回密码
 注册
搜索
查看: 1368|回复: 2

请教nvidia fatbin PTX libcuda.so libcudart.so 之间的关系 [复制链接]

Rank: 5Rank: 5

注册时间
2017-1-25
积分
82
发表于 2017-1-25 20:51:41 |显示全部楼层
[size=14.2857141494751px]根据教材和nvidia文档的理解:
[size=14.2857141494751px]libcudart.so 是CUDA的动态链接库,包含运行时API
[size=14.2857141494751px]libcuda.so 是nvida驱动程序的动态链接库,包含驱动API

如果用CUDA的运行时API编写一个通用计算程序,比如向量乘法,用nvcc编译后会产生PTX、SASS代码,和CPU主程序打包到一起。
请高手指点一下,这些代码是如何调用libcudart.so的?
libcudart.so中是什么代码?是需要CPU执行的指令,还是用GPU来执行的指令?如何驱动硬件GPU执行任务的?



Rank: 12Rank: 12Rank: 12

注册时间
2012-7-21
积分
769
发表于 2017-1-27 07:47:22 |显示全部楼层
以我所知,libcudart.so包含有
cudaEventCreate
cudaEventQuery
cudaGetDeviceCount
cudaUnbindTexture
之类需要在CPU上运行的函数;特别地,gpgpu-sim主不 是通过自己另外实现一个 libcudart.so 来“劫持”正常的 libcudart.so 来实现对 GPU 的模拟的。
因为 libcudart 是在 CPU 上运行的,所以它算是 CUDA 工具链的一部分;相比之下, libcuda.so 应该算是 显卡的驱动程序 的一部分。

用 nvcc 编译的时候可以选择静态链接或是动态链接吧,如果是静态链接,就会直接和 libcuda.a 包在一起;而如果是动态链接,那就应该是类似和其它的程序一样用 dlopen 之类的系统调用了吧。

(可能说得有错…)

使用道具 举报

Rank: 5Rank: 5

注册时间
2017-1-25
积分
82
发表于 2017-1-31 10:58:34 |显示全部楼层
非常感谢您的回答,
我觉得问题是自己没有把GPU驱动程序是怎么驱动硬件的过程弄懂,应该先看看这方面的资料。

使用道具 举报

最近看过此主题的会员

您需要登录后才可以回帖 登录 | 注册

‹‹
我的工具栏

关于我们|手机版|Archiver|开源计算机图形学社区(Open Source Computer Graphics Community) | OpenGPU Project | OpenGPU Forum (2007-2013)

GMT+8, 2017-8-18 12:52 , Processed in 0.109137 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部