CUDA Programming - (1) CUDA简介

1. GPU 简介

处理器一般包含以下几部分:Cache 缓存,ALU 计算单元,Control 控制中心,RAM 内存。

CPU(Central Processing Unit):中央处理器。适合进行逻辑,ALU计算核心较少。适合控制性密集任务。

GPU(Graphics Processing Unit):图形处理器。也称显卡(graphics card),适合进行密集数据运算,包含大量ALU计算核心。

1.2 CPU与GPU的主要区别:

一个典型的CPU拥有少数几个快速的计算核心,而一个典型的GPU拥有几百到几千个不那么快速的计算核心。

CPU中有更多的晶体管用于数据缓存(cache)和流程控制(control),但GPU中有更多的晶体管用于算术逻辑单元(ALU)。

GPU的浮点运算峰值比同时期的CPU高一个量级。而GPU的内存带宽峰值也比同时期CPU高一个量级。GPU是靠众多的计算核心来获得相对较高的计算性能的。

CPU与GPU都有一个动态随机存取存储器,通过PCle总线进行交互。

1.3 CPU+GPU异构架构

异构计算(heterogeneous computing): GPU本身并不能单独计算,CPU+GPU组成异构(heterogenerous)计算架构;

一块单独的GPU是无法独立完成所有计算任务的,它必须在CPU的调度下才能完成特定任务。

CPU起到控制作用,称为Host,主机。

GPU作为CPU的协处理器,一般称为Device,设备。

主机和设备之间都有自己的DRAM(Dynamic Random-Access Memory,动态随机存取内存),内存访问一般通过PCLe总线连接。

1.4 GPU性能指标

1.核心数  

2.GPU显存容量 ,可计算量越大

3.GPU计算峰值,最大计算能力

GPU并不是计算能力越高,性能就越高,两者之间没有简单的正比关系。表征计算性能的一个重要参数式浮点数的运算峰值,即每秒最多能执行的浮点数运算次数,英文维 Floating-point operations per second,缩写维 FLOPS。GPU的浮点数运算峰值在10^12 FLOPs,即teraFLOPS量级。

浮点数运算峰值有单精度和双精度之分。对于计算双精度还是Tesla好,GeForce双精度就差很多。

4.显存带宽:运算单元与显存的传输速率,带宽越大,交换速率越大

GPU中的内存常称为显存。显存容量是制约应用程序性能的一个因素。

2. 什么是CUDA?(异构编程语言)

CUDA(compute unified device architecture):统一计算设备架构。CUDA是建立在NVIDIA的CPU上的一个通用并行计算平台和编程模型,是一个软件平台,配合GPU使用。目前支持CUDA编程的只有英伟达Nvidia公司推出的GPU,如Quadro OpenGL渲染,专业绘图设计,GeForce游戏娱乐,科学计算,Jetson嵌入式设备。

其他异构编程语言,如OpenCL(open computing language),OpenACC(open accelerators),和CUDA Fortan。

OpenCL是一个更为通用的为各种异构平台编写并行程序的框架,是AMD(Ad vanced Micro Devices)公司的 GPU 的主要程序开发工具。

2.1 CUDA运行时API

CUDA提供两层API接口:CUDA 驱动(driver)API 和 CUDA 运行时(runtime)API。

CUDA驱动API:是更底层的API,为程序员提供了更为灵活的编程接口。

CUDA运行时API:是在CUDA驱动API的基础上构建的一个更为高级的API。

从程序的可读性来看,用CUDA运行时API是更好的选择。在其他编程语言中使用CUDA的时候,驱动API很多时候是必需的。两种API调用性能几乎无差异。

          

CUDA的版本是GPU软件开发平台的版本,在CUDA C++程序中,既有运行于主机的代码,也有运行于设备的代码。其中,运行于主机的代码需要由主机 的C++编译器编译和链接。

2.2 GPU模式

GPU处于WDDM(windowsdisplaydrivermodel)模式。另一个可能的模式是TCC (tesla compute cluster)

2.3 GPU计算模式

Default :在默认模 式中,同一个GPU中允许存在多个计算进程,但每个计算进程对应程序的运行速度 一般来说会降低。

E.Process,指的是独占进程模式(exclusiveprocess mode),但不适用于处于WDDM模式的GPU。在独占进程模式下,只能运行一个计算进程独占该GPU。

参考文章:

cuda编程(一)cuda简介-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/399551.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业源代码加密软件有哪些?2024最好用的十款源代码加密软件

在当今快速发展的技术环境中,企业源代码的安全性至关重要。源代码不仅包含着企业的核心知识产权,还可能涉及敏感的商业数据。因此,选择一款合适的源代码加密软件,对于保护企业资产和避免数据泄露风险至关重要。随着安全技术的不断…

Codeforces Pinely Round 4 (Div. 1 + Div. 2) A~G

A.Maximize the Last Element(枚举) 题意: 给你一个由 n n n个整数组成的数组 a a a,其中 n n n是奇数。 在一次操作中,你将从数组 a a a中删除两个相邻的元素,然后将数组的剩余部分连接起来。例如&…

git常见命令和常见问题解决

文章目录 常见命令问题问题1(git push相关)问题2(git push相关)问题3(git push相关)删除github的仓库github新创建本地仓库的操作…or create a new repository on the command line…or push an existing …

led台灯对眼睛好不好?揭秘使用护眼台灯能不能有效预防近视

在当前社会,近视的影响不容小视,除了对视觉健康的影响外,近视还可能对个人的心理健康产生负面影响。视力不佳可能导致自卑感和社会交往障碍,尤其是在儿童和青少年时期。保护视力健康要从小做起,家长们可以关注孩子的用…

[openSSL]TLS 1.3握手分析

文章目录 前言一、ECDHE密钥交换二、TLS单向身份认证三、TLS双向身份认证 前言 关于TLS握手网上资料很多,但是有一些写的很不清楚,导致学习时对概念和流程出现混淆,以下是我觉得写得比较清晰和准确的供学习参考。 浅析 TLS(ECDHE…

超算互联网-Stable Diffusion 2.1文生图教程

一、名词简介 1. 超算互联网 超算互联网是一种基于云计算的高性能计算平台,用户可以通过互联网接入超级计算资源。它集成了大量的计算节点,提供强大的计算能力,适用于科学计算、深度学习、人工智能等领域。用户可以利用超算互联网平台运行复…

老阳推荐的temu选品师项目能不能做成?

在不断变化的电商领域,temU选品师项目作为一种新兴职业,受到了越来越多的关注。老阳的推荐使得这一项目引起了不少人的兴趣,那么,temU选品师项目究竟能否成功呢?让我们从一个新的角度来探讨这一问题。 新兴市场的机遇与挑战 temU…

基于VEH的无痕HOOK

这里的无痕HOOK指的是不破坏程序机器码,这样就可以绕过CRC或MD5的校验。 VEH利用了Windows的调试机制和异常处理,人为抛出异常,从异常的上下文中获取寄存器信息。 DLL入口 // dllmain.cpp : 定义 DLL 应用程序的入口点。 #include "pch.h" #include "CHoo…

jenkins一键推送到远程服务器并用docker容器启动

1.安装jenkins 我后端使用的是宝塔面板来安装的容器化jenkins,要选中允许外部访问,安装完之后没有那个选项了,一开始安装的时候要选中不使用域名和后面的允许外部访问。Jenkins 版本为: 2.462.1 2.配置Jenkins 2.1 Git plugin 安装完毕之…

100 Exercises To Learn Rust 挑战!构文・整数・变量

前一篇文章 【0】准备 【1】构文・整数・变量 ← 本次全部文章列表 《100 Exercise To Learn Rust》第2回,也就是实际演习的第1回!从这次开始,我们会适度减少前置说明,直接进入问题的解决! 本次的相关页面 1.1. Syn…

Java:接口interface

文章目录 接口interface好处为什么要用接口 接口案例需求思路代码Student.javaClassManage.javaStudentOperator 接口StudentOperatorImpl1.javaStudentOperatorImpl2.javaTest.java 黑马程序员学习笔记 接口interface 接口中:变量默认为常量,方法默认为…

全网最详细HAProxy入门小知识

目录 一. 负载均衡 负载均衡的意义: 负载均衡的类型: 二. HAProxy 简介 HAProxy 的特点: 社区版和企业版: 三. HAProxy 的安装和服务信息 1、实验环境 1)安装并配置 Nginx 2)在客户端测试 2、安装…

使用C语言构建Lua库

Lua 本身是用 C 语言编写的,因此使用 C 编写扩展可以更好地与 Lua 引擎集成,减少性能瓶颈,同时C 语言提供了对底层硬件和操作系统功能的直接访问能力,让 Lua 可以通过 C 扩展来实现对文件系统、网络等高级功能的支持。因为C 语言非…

大语言模型的模型量化(INT8/INT4)技术

目录 一、LLM.in8 的量化方案 1.1 模型量化的动机和原理1.2 LLM.int8 量化的精度和性能1.3 LLM.int8 量化的实践 二、SmoothQuant 量化方案 2.1 SmoothQuant 的基本原理2.2 SmoothQuant 的实践 三、GPTQ 量化训练方案 3.1 GPTQ 的基本原理3.2 GPTQ 的实践 参考资料 一、LLM.i…

SD-WAN企业组网:与传统组网有何不同?

很多企业已经尝试过使用SD-WAN来进行组网。SD-WAN代表着一种新兴的网络连接技术,与传统的网络架构相比,它在许多方面都有明显的不同。 SD-WAN基于软件定义网络(SDN)的概念,提供集中化的网络控制和智能优化,…

macos重装系统 启动U盘制作方法 - createinstallmedia 命令使用方法总结

macos重装系统比windows要稍微复杂一些,不过还好,macos系统安装app这个Apple官方提供的系统软件里面默认就内置了一个可用为我们制作启动盘的工具 createinstallmedia 我们下载的apple安装镜像要门是 dmg/pkg/iso 的压缩档案格式的,要么是 x…

电子行业数字工厂管理系统解决方案

电子行业数字工厂管理系统解决方案是针对电子企业特定需求而设计的一套综合管理系统,旨在通过数字化手段提升生产效率、优化资源配置、降低运营成本,并确保高品质产品的输出。以下是一个详细的电子行业数字工厂管理系统解决方案的概述: 一、系…

WebAssembly最详教程

WebAssembly 是一种新的编码方式,可以在现代的 Web 浏览器中运行——它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如 C/C、C# 和 Rust 等语言提供编译目标,以便它们可以在 Web 上运行…

面试 | Python 自动化测试技术面试真题

本文为面试某公司测试开发/自动化测试工程师时的面试题笔记。 全部笔试内容没有全部写全,只贴通用性的技术相关的笔试面试题,至于测试理论和团队管理的问题,都是大同小异,也没什么实际的参考价值。 1.直接手写一个 P…

AWS云服务器选择最佳区域

2024年,随着全球云计算的持续发展和AWS在全球不断扩展的数据中心网络,选择合适的AWS云服务器区域成为了企业和开发者需要认真考虑的问题。九河云告诉你在做出选择之前,需要考虑以哪些关键因素: 地理位置和用户分布 选择AWS云服务…