Bridging the Gap: Writing Portable Programs for CPU and GPU1/66Bridging the Gap: Writing Portable Programs for CPU and GPU using CUDA Thomas Mejstrik Sebastian Woblistin 2/66Content 1 Motivation Audience etc.. Cuda crash course Quiz time 2 Patterns Oldschool Motivation Patterns The dark path Cuda proposal Thank you Why write programs for CPU and GPU Difference CPU/GPU Algorithms are designed differently Latency/Throughput Memory bandwidth Number of cores Motivation Patterns The dark path Cuda proposal Thank you Why write programs for CPU and GPU Difference CPU/GPU Why it makes sense? Library/Framework developers Embarrassingly parallel algorithms User0 码力 | 124 页 | 4.10 MB | 6 月前3
2024 中国开源开发者报告MiniMax 等。 其次是由 TogetherAI、Groq、Fireworks、Replicate、硅基流动等组成的 GPU 推理集群 服务提供商,它们处理扩展与缩减等技术难题,并在基本计算费用基础上收取额外费用,从 而让应用公司无需承担构建和管理 GPU 推理集群的高昂成本,而是可以直接利用抽象化的 AI 基础设施服务。 第三类是传统的云计算平台,例如亚马逊的 Amazon Vertex AI 等,允许应用开发者轻松部署和使用标准化或定制化的 AI 模型, 并通过 API 接口调用这些模型。 最后一类是本地推理,SGLang、vLLM、TensorRT-LLM 在生产级 GPU 服务负载中表现 出色,受到许多有本地托管模型需求的应用开发者的欢迎,此外,Ollama 和 LM Studio 也 是在个人计算机上运行模型的优选方案。 62 / 111 除模型层面外,应 软件,例如:微控制处理器(MCU)会运行实时操作系统或者直接运行某个特定程序;中央处 理器(CPU)往往会运行 Windows、Linux 等复杂操作系统作为底座支撑整个软件栈;图形 处理器(GPU)一般不加载操作系统而是直接运行图形图像处理程序,神经网络处理器 (NPU)则直接运行深度学习相关程序。 处理器芯片设计是一项很复杂的任务,整个过程犹如一座冰山。冰山水面上是用户或者大 众看到0 码力 | 111 页 | 11.44 MB | 8 月前3
阿里云容器服务大促备战关注“阿里巴巴云原生”公众号 回复 1124 获取 PPT我是谁挑战在哪里? 极限并发 人为失误 系统瓶颈 雪崩 单点失效 成本控制 用户体验 最终一致性 稳定性 资源不足 资源利用率 安全风险备战工具箱 服务化 开发运维一体化 弹性 极致性能 高可用 全站上云 安全加固 人工智能 大数据 离线计算 全链路压测 边缘计算 敏捷调度 故障演练人为失误 yers-regional- outlook-and-forecast-study/492024云边端一体化协同双十一直播的背后 50% 5倍在线与离线 异构计算能力 ECS, EBM, GPU, FPGA, ECI 高性能网络 VPC, ENI, RDMA, SLB, DNS Public Cloud Edge Computing Private Cloud 高性能存储 EBS 全球化部署 单集群万节点规模 云边端一体化 延时降低75% 混合云2.0架构 交付效率提升3倍 全链路安全架构 实时风险监测、告警、阻断 极速弹性 分钟级1000节点伸缩 异构算力 利用率提升5倍 沙箱容器 强隔离,90%原生性能 容器云应用市场 合作伙伴计划 阿里云容器服务Thank you ! 关注“阿里巴巴云原生”公众号 回复 1124 获取 PPT0 码力 | 17 页 | 17.74 MB | 6 月前3
Hello 算法 1.2.0 简体中文 C# 版案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程 将数据结构存储在内存中,同时编写代码调用 CPU 和 GPU 执行算法。这样一来,我们就能把生活中的问题 转移到计算机上,以更高效的方式解决各种复杂问题。 Tip 如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解,请继续往下阅读,本书将引导你 std::list 通常比 std::vector 更占用空间。 第 4 章 数组与链表 www.hello‑algo.com 88 ‧ 缓存不友好:由于数据不是连续存放的,因此 std::list 对缓存的利用率较低。一般情况下,std::vector 的性能会更好。 另一方面,必要使用链表的情况主要是二叉树和图。栈和队列往往会使用编程语言提供的 stack 和 queue , 而非链表。 Q:操作 ‧ 数组存储需要连续内存空间,因此不适合存储数据量过大的树。 ‧ 增删节点需要通过数组插入与删除操作实现,效率较低。 ‧ 当二叉树中存在大量 None 时,数组中包含的节点数据比重较低,空间利用率较低。 7.4 二叉搜索树 如图 7‑16 所示,二叉搜索树(binary search tree)满足以下条件。 1. 对于根节点,左子树中所有节点的值 < 根节点的值 < 右子树中所有节点的值。0 码力 | 379 页 | 18.48 MB | 10 月前3
Hello 算法 1.2.0 简体中文 Dart 版案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程 将数据结构存储在内存中,同时编写代码调用 CPU 和 GPU 执行算法。这样一来,我们就能把生活中的问题 转移到计算机上,以更高效的方式解决各种复杂问题。 Tip 如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解,请继续往下阅读,本书将引导你 空间开销:由于每个元素需要两个额外的指针(一个用于前一个元素,一个用于后一个元素),所以 std::list 通常比 std::vector 更占用空间。 ‧ 缓存不友好:由于数据不是连续存放的,因此 std::list 对缓存的利用率较低。一般情况下,std::vector 的性能会更好。 另一方面,必要使用链表的情况主要是二叉树和图。栈和队列往往会使用编程语言提供的 stack 和 queue , 而非链表。 第 4 章 然而,数组表示也存在一些局限性。 ‧ 数组存储需要连续内存空间,因此不适合存储数据量过大的树。 ‧ 增删节点需要通过数组插入与删除操作实现,效率较低。 ‧ 当二叉树中存在大量 None 时,数组中包含的节点数据比重较低,空间利用率较低。 7.4 二叉搜索树 如图 7‑16 所示,二叉搜索树(binary search tree)满足以下条件。 1. 对于根节点,左子树中所有节点的值 < 根节点的值 < 右子树中所有节点的值。0 码力 | 378 页 | 18.46 MB | 10 月前3
Hello 算法 1.2.0 简体中文 Kotlin 版案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程 将数据结构存储在内存中,同时编写代码调用 CPU 和 GPU 执行算法。这样一来,我们就能把生活中的问题 转移到计算机上,以更高效的方式解决各种复杂问题。 Tip 如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解,请继续往下阅读,本书将引导你 std::list 通常比 std::vector 更占用空间。 第 4 章 数组与链表 www.hello‑algo.com 88 ‧ 缓存不友好:由于数据不是连续存放的,因此 std::list 对缓存的利用率较低。一般情况下,std::vector 的性能会更好。 另一方面,必要使用链表的情况主要是二叉树和图。栈和队列往往会使用编程语言提供的 stack 和 queue , 而非链表。 Q:操作 ‧ 数组存储需要连续内存空间,因此不适合存储数据量过大的树。 ‧ 增删节点需要通过数组插入与删除操作实现,效率较低。 ‧ 当二叉树中存在大量 None 时,数组中包含的节点数据比重较低,空间利用率较低。 7.4 二叉搜索树 如图 7‑16 所示,二叉搜索树(binary search tree)满足以下条件。 1. 对于根节点,左子树中所有节点的值 < 根节点的值 < 右子树中所有节点的值。0 码力 | 382 页 | 18.48 MB | 10 月前3
Hello 算法 1.2.0 简体中文 JavaScript 版案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程 将数据结构存储在内存中,同时编写代码调用 CPU 和 GPU 执行算法。这样一来,我们就能把生活中的问题 转移到计算机上,以更高效的方式解决各种复杂问题。 Tip 如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解,请继续往下阅读,本书将引导你 空间开销:由于每个元素需要两个额外的指针(一个用于前一个元素,一个用于后一个元素),所以 std::list 通常比 std::vector 更占用空间。 ‧ 缓存不友好:由于数据不是连续存放的,因此 std::list 对缓存的利用率较低。一般情况下,std::vector 的性能会更好。 另一方面,必要使用链表的情况主要是二叉树和图。栈和队列往往会使用编程语言提供的 stack 和 queue , 而非链表。 Q:操作 ‧ 数组存储需要连续内存空间,因此不适合存储数据量过大的树。 ‧ 增删节点需要通过数组插入与删除操作实现,效率较低。 ‧ 当二叉树中存在大量 None 时,数组中包含的节点数据比重较低,空间利用率较低。 7.4 二叉搜索树 如图 7‑16 所示,二叉搜索树(binary search tree)满足以下条件。 1. 对于根节点,左子树中所有节点的值 < 根节点的值 < 右子树中所有节点的值。0 码力 | 379 页 | 18.47 MB | 10 月前3
Hello 算法 1.2.0 简体中文 Swift 版案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程 将数据结构存储在内存中,同时编写代码调用 CPU 和 GPU 执行算法。这样一来,我们就能把生活中的问题 转移到计算机上,以更高效的方式解决各种复杂问题。 Tip 如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解,请继续往下阅读,本书将引导你 空间开销:由于每个元素需要两个额外的指针(一个用于前一个元素,一个用于后一个元素),所以 std::list 通常比 std::vector 更占用空间。 ‧ 缓存不友好:由于数据不是连续存放的,因此 std::list 对缓存的利用率较低。一般情况下,std::vector 的性能会更好。 另一方面,必要使用链表的情况主要是二叉树和图。栈和队列往往会使用编程语言提供的 stack 和 queue , 而非链表。 Q:操作 ‧ 数组存储需要连续内存空间,因此不适合存储数据量过大的树。 ‧ 增删节点需要通过数组插入与删除操作实现,效率较低。 ‧ 当二叉树中存在大量 None 时,数组中包含的节点数据比重较低,空间利用率较低。 7.4 二叉搜索树 如图 7‑16 所示,二叉搜索树(binary search tree)满足以下条件。 第 7 章 树 www.hello‑algo.com 151 1. 对于根节点,左子树中所有节点的值0 码力 | 379 页 | 18.48 MB | 10 月前3
Hello 算法 1.2.0 简体中文 Ruby 版案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程 将数据结构存储在内存中,同时编写代码调用 CPU 和 GPU 执行算法。这样一来,我们就能把生活中的问题 转移到计算机上,以更高效的方式解决各种复杂问题。 Tip 如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解,请继续往下阅读,本书将引导你 空间开销:由于每个元素需要两个额外的指针(一个用于前一个元素,一个用于后一个元素),所以 std::list 通常比 std::vector 更占用空间。 ‧ 缓存不友好:由于数据不是连续存放的,因此 std::list 对缓存的利用率较低。一般情况下,std::vector 的性能会更好。 另一方面,必要使用链表的情况主要是二叉树和图。栈和队列往往会使用编程语言提供的 stack 和 queue , 而非链表。 Q:操作 res ‧ 数组存储需要连续内存空间,因此不适合存储数据量过大的树。 ‧ 增删节点需要通过数组插入与删除操作实现,效率较低。 ‧ 当二叉树中存在大量 None 时,数组中包含的节点数据比重较低,空间利用率较低。 7.4 二叉搜索树 如图 7‑16 所示,二叉搜索树(binary search tree)满足以下条件。 1. 对于根节点,左子树中所有节点的值 < 根节点的值 < 右子树中所有节点的值。0 码力 | 372 页 | 18.44 MB | 10 月前3
24-云原生中间件之道-高磊来,使得计算层彻底变为无状态,可以做到灵活的拓展 能力和故障恢复能力。这样在计算层也实现了Serverless 模式。 • 通过RDMA,绕过CPU,直接和远端内存通信,在计算与 存储分离、计算与内存分离架构上,提升网络利用率和 性能,也能得到传统数据库网络和性能上一样的体验。 • 底层Data Chunk,采用去中心存储,单体失败不影响数 据的完整性,并且自动自愈(Serverless)。 • 通过跨域数据同步能力,实现多地域数据多活。 • 在离线分离部署及粗粒度调度无法提高资源的利用率:在传统Hadoop架构下,离线作业和在线作业往往分属不同的集 群,然而在线业务、流式作业具有明显的波峰波谷特性,在波谷时段,会有大量的资源处于闲置状态,造成资源的浪 费和成本的提升。在离线混部集群,通过动态调度削峰填谷,当在线集群的使用率处于波谷时段,将离线任务调度到 在线集群,可以显著的提高资源的利用率。然而,Hadoop Yarn目前只能通过N ,镜像只需提供应用必须的依赖环境,使其存储空 间得到了极大的减少,上传和下载镜像的时间变的更短,快速启动和销毁变的很容易,总体极大的缩短了应用的 发布周期。 • 在资源利用率方面,借助云原生架构的技术能力,多方位提升系统的资源利用率,如细粒度调度(将CPU和内存 这两个核心资源划分的更细,从而更充分的分配系统资源)、动态调度(基于节点真实负载情况,而非静态划分 的资源,将任务调度到已分配了资源但是0 码力 | 22 页 | 4.39 MB | 6 月前3
共 120 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12













