CUDA实践指南(三十二)

简介:

CUDA工具包库再分发:
CUDA工具包的最终用户许可协议(EULA)允许在特定条款和条件下重新分配许多CUDA库。 这允许依赖于这些库的应用程序重新分配构建和测试的库的确切版本,从而避免为可能安装了不同版本的CUDA Toolkit(或者根本不可能)的最终用户带来麻烦 他们的机器。 详情请参阅EULA。
这不适用于NVIDIA驱动程序; 最终用户仍然必须下载并安装适合其GPU和操作系统的NVIDIA驱动程序。
要重新分配哪些文件:
重新分配一个或多个CUDA库的动态链接版本时,识别需要重新分配的确切文件非常重要。 以下示例使用CUDA Toolkit 5.5中的cuBLAS库作为示例:
Linux:
在Linux上的共享库中,有一个名为SONAME的字符串字段,它指示库的二进制兼容级别。 构建应用程序的库的SONAME必须与应用程序重新分发的库的文件名匹配。
例如,在标准的CUDA工具包安装中,文件libcublas.so和libcublas.so.5.5都是指向特定版本的cuBLAS的符号链接,其名称类似于libcublas.so.5.5.x,其中x是内部版本号 (例如,libcublas.so.5.5.17)。 但是,该库的SONAME以“libcublas.so.5.5”的形式给出:

$ objdump -p /usr/local/cuda/lib64/libcublas.so | grep SONAME
SONAME libcublas.so.5.5

因此,即使在链接应用程序时使用-lcublas(没有指定版本号),链接时发现的SONAME意味着“libcublas.so.5.5”是动态加载程序将查找的文件的名称 当加载应用程序时,因此必须是与应用程序重新分发的文件名(或符号链接)。
ldd工具对于识别应用程序期望在运行时期望找到的库的确切文件名以及动态加载器在加载给定当前库的应用程序时将选择的该库副本的路径(如果有的话)很有用 搜索路径:

$ ldd a.out | grep libcublas
libcublas.so.5.5 => /usr/local/cuda/lib64/libcublas.so.5.5
M

Mac:
在Mac OS X上的共享库中,有一个名为“安装名称”的字段,用于指示库的预期安装路径和文件名; CUDA库也使用这个文件名来表示二进制兼容性。 该字段的值将传播到针对库构建的应用程序中,并用于在运行时查找正确版本的库。
要查看库的安装名称,请使用otool -L命令:

$ otool - L a.out
a.out:
    @rpath/libcublas.5.5.dylib(...)

Windows:
Windows上的CUDA库的二进制兼容版本被指定为文件名的一部分。
例如,链接到cuBLAS 5.5的64位应用程序将在运行时查找cublas64_55.dll,因此即使cublas.lib是该应用程序链接的文件,该文件也应该与该应用程序重新分发。 对于32位应用程序,该文件将是cublas32_55.dll。
要验证应用程序在运行时期望找到的确切DLL文件名,请使用Visual Studio命令提示符下的dumpbin工具:

$ dumpbin / IMPORTS a.exe
Microsoft(R) COFF / PE Dumper Version 10.00.40219.01
Copyright(C) Microsoft Corporation.All rights reserved.
Dump of file a.exe
File Type : EXECUTABLE IMAGE
Section contains the following imports :
...
cublas64_55.dll
目录
相关文章
|
JSON 前端开发 JavaScript
前端如何使用WebSocket发送消息
WebSocket是一种在Web应用程序中实现实时双向通信的协议。相比传统的HTTP协议,WebSocket提供了更高效、更快速的双向通信方式,可以在客户端和服务器之间实时交换数据。本文将详细介绍前端如何使用WebSocket发送消息,包括创建WebSocket对象、监听WebSocket事件、发送消息以及关闭连接等步骤,帮助开发者深入了解和应用WebSocket技术。
1495 2
|
SQL 分布式计算 数据可视化
Apache Zeppelin系列教程第一篇——安装和使用
Apache Zeppelin系列教程第一篇——安装和使用
1216 0
|
关系型数据库 Linux PostgreSQL
Linux centos8 docker中安装postgresql12.4及远程访问设置
Linux centos8 docker中安装postgresql12.4及远程访问设置
1939 0
|
存储 并行计算 调度
迈向可编程观测:在GPU Kernel中构建类eBPF风格的性能探针
本文旨在梳理作者学习路径,带领读者共同探索 GPU Kernel 性能分析从宏观到微观的技术演进。
1341 24
迈向可编程观测:在GPU Kernel中构建类eBPF风格的性能探针
|
10月前
|
人工智能 JSON 机器人
10分钟!用飞书卡片+n8n零代码搞定自动化
手把手教你用飞书卡片+n8n搭建零代码自动化应用。
|
人工智能 达摩院 搜索推荐
通义大模型:解码中国AI的"通"与"义"
“通义”取自中国传统文化中“通晓大义”,寓意技术与人文的结合。作为阿里巴巴旗下的超大规模语言模型,通义在知识蒸馏、动态稀疏激活和文化感知模块上实现三大突破,大幅提升效率与适切性。其已在医疗、司法、文化传播等领域落地,如辅助病历处理、法律文书生成及文物解说等。测试显示,通义在中文诗歌创作、商业报告生成等方面表现优异。同时,开放的开发者生态已吸引5万+创新者。未来,通义将探索长期记忆、自我反思及多智能体协作,向AGI迈进,成为智能本质的载体。其对中文语境情感的精准把握,更是中国AI“通情达义”的典范。
4397 22
|
人工智能 自然语言处理 算法
DeepSeek:国产AI新势力,普通人如何用它赚钱?
DeepSeek 是一款由中国团队开发的大型语言模型,以其强大的自然语言处理能力迅速崛起,成为ChatGPT等国外大模型的强劲对手。它支持智能写作、代码生成、内容创作等多种功能,广泛应用于自媒体、编程、商业分析等领域。DeepSeek不仅免费且部分开源,用户可以直接访问官网体验,无需科学上网。其长文本处理能力和编程辅助功能尤为突出,适合长文写作和代码优化。DeepSeek还提供了多种变现途径,如自媒体写作、AI编程服务、课程咨询等,帮助用户在AI时代创造额外收入。掌握DeepSeek,开启AI变现之旅! 注:关注微信公众号“飞川”,发送“deepseek”获取丰富的资料包。
1654 73
|
机器学习/深度学习 人工智能 自然语言处理
Qwen3:小而强,思深,行速
Qwen3(千问3)于北京时间4月29日凌晨发布,是Qwen系列大型语言模型的最新成员,具备全系列、开源最强、混合推理等特性。它包括两款MoE模型(Qwen3-235B-A22B和Qwen3-30B-A3B)及六个Dense模型,支持119种语言。Qwen3在代码、数学和通用能力测试中超越行业顶尖模型,如DeepSeek-R1和Grok-3。其旗舰版Qwen3-235B-A22B仅需4张H20即可本地部署,成本为DeepSeek-R1的35%。此外,Qwen3原生支持思考模式与非思考模式切换,降低复杂任务门槛,并支持MCP协议优化Agent架构。
9978 2
|
机器学习/深度学习 人工智能 芯片
一文详解多模态大模型发展及高频因子计算加速GPU算力 | 英伟达显卡被限,华为如何力挽狂澜?
近年来,全球范围内的芯片禁令不断升级,给许多企业和科研机构带来了很大的困扰,需要在技术层面进行创新和突破。一方面,可以探索使用国产芯片和其他不受限制的芯片来替代被禁用的芯片;另一方面,可以通过优化算法和架构等方法来降低对特定芯片的依赖程度。
1954 0
|
SQL 安全 前端开发
毕设答辩问题讲解说明:基于SpringBoot+Vue的汉服文化交流社区平台设计与开发
这篇文章是关于一个基于SpringBoot+Vue的汉服文化交流社区平台的毕业设计答辩问题讲解,涵盖了系统功能、亮点创新、数据库设计、积分领取机制、数据库安全和个人密码修改功能等方面的答辩问题和回答要点。

热门文章

最新文章