GPU Resource Management On JDOS可以选择是否监控训练,提供 tensorboard 任务列表 可以指定 git 的 commit-id 发起任务 任务详情 可以查看具体的容器列表,以及查看容器的日志和事件 Serving 服务 提供统一便捷的 Serving 服务,只需用户指定模型,即可提供 grpc 和 rest 服务,同时使用 GPU 复用 +HPA 提高 GPU 利用率 创建 Serving 与训练集成 • 用户只需要简单选择机房和 自有模型 • 用户只需要填写模型地址即 可 GPU 监控 • 容器监控服务,自适 应 GPU 容器,可根据 容器 IP 查询记录 , 便 于用户查看服务状态 ,亦可作为 HPA 的数 据源 • 采集项 name,index,fan.speed,te mperature.gpu,pstate,po wer.draw,power.limit,me mory.used,memory.total, utilization0 码力 | 11 页 | 13.40 MB | 1 年前3
基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺等 系统功能,能大幅减少系统设计的复杂度,降低研发和运营成本,是一个极简的时序数据处理平台。 采用关系型数据库模型 需要建库、建表, 为提升写入和查询效率,要求一个数据采集点一张表 为实现多表聚合,引入超级表概念 子表通过超级表创建,带有标签,通过标签实现多表 高效聚合 高效写入 支持标准 SQL 写入,支持批量写入 支持 Schemaless 全球 50 多个国家安装实例超 270k | GitHub 全球趋势排行榜多次排名第一 TDengine - 数据模型 1. 设备 ID 及关联属性( Tags ) 2. 时间戳 3. 结构化采集量 STable 超级表 Table 子表 CREATE STABLE `meters` ( `ts` TIMESTAMP, `current` FLOAT, `voltage`0 码力 | 29 页 | 2.26 MB | 1 年前3
Zadig 面向开发者的云原生 DevOps 平台边开发、边验证 ● 服务全生命周期而非只关注代码 ● 每天多次提交提早验证 Zadig 采用「云原生产品级交付」设计理念 数字化产研协同 • 环境 - 统一开发者协作平面 • 工作流 - 统一交付变更通道 • 异构支持 - 统一产研运管理平面 重视开发者体验,工程师不再做脏活累活 传统 DevOps 体系 Zadig 云原生 DevOps 平台 高人效 低人效 低人效 团队高效协作:定义团队角色工作流模板,随时可用云上环境 价值清晰呈现:为管理者提供全视角效能数据,赋能数字决策 人工低效操作减少 80% 构建资源利用率提升 60% 业务资源利用率提升 30% 统一治理内部规范,开发 自助上线;解放运维,工 作重心向业务稳定性保 障,建设平台工程体系 研发 研发时间被大量占用: • 本地开发环境难模拟 • 多业务联调艰难,诊断耗时多 • 出现问题诊断耗时多 API/E2E/UI 自动化测试管理 • 与开发协同自动化验收 • 自动化测试效益分析 高效协同的测试管理 • 一套 YAML/Chart 模板管理数百微服务 • 每个技术栈抽象一套构建模板 • 运维统一工作流规范,开发自主使用 • 跨多项目复用模板 扫码查看易快报案例 强大免运维的模板库 • 系统纬度:集群、项目、服务、环境、工作流 • 项目纬度:构建、测试、部署, DevOps 指标0 码力 | 59 页 | 81.43 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程cudaDeviceSynchronize() 等价! 因此前面的 cudaDeviceSynchronize() 实 际上可以删掉了。 统一内存地址技术( Unified Memory ) • 还有一种在比较新的显卡上支持的特性, 那就是统一内存 (managed) ,只需把 cudaMalloc 换成 cudaMallocManaged 即可,释放时也是通过 cudaFree 主机内存 (host) : malloc 、 free • 设备内存 (device) : cudaMalloc 、 cudaFree • 统一内存 (managed) : cudaMallocManaged 、 cudaFree • 如果我没记错的话,统一内存是从 Pascal 架构开始支持的,也就是 GTX9 开头及以上 。 • 虽然方便,但并非完全没有开销,有条件的话还是尽量用分离的设备内存和主机内存吧。 个连续的 int 数 据排列在内存中,而 arr 则是指向其起始 地址。然后把 arr 指针传入 kernel ,即 可在里面用 arr[i] 访问他的第 i 个元素。 • 然后因为我们用的统一内存 (managed) , 所以同步以后 CPU 也可以直接读取。 多个线程,并行地给数组赋值 • 刚刚的 for 循环是串行的,我们可以把线 程数量调为 n ,然后用 threadIdx0 码力 | 142 页 | 13.52 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南分别在各自的目录下有自己的 CMakeLists.txt 。 二、根项目的 CMakeLists.txt 配置 • 在根项目的 CMakeLists.txt 中,设置了默 认的构建模式,设置了统一的 C++ 版本 等各种选项。然后通过 project 命令初始 化了根项目。 • 随后通过 add_subdirectory 把两个子项 目 pybmain 和 biology 添加进来(顺序 )中用到了其他模块( Animal )的类或函数,则需要 在新模块( Carer )的头文件和源文件中都导入其他模块( Animal )的头 文件。 • 注意不论是项目自己的头文件还是外部的系统的头文件,请全部统一采用 < 项目名 / 模块名 .h> 的格式。不要用 “模块名 .h” 这种相对路径的格式,避 免模块名和系统已有头文件名冲突。 十、依赖其他模块但不解引用,则可以只前向声明不导入头文件 • 而且某些库都 具有多个子动态库,例如 Qt 就有 libQt5Core.so 、 libQt5Widgets.so 、 libQt5Network.so 。因此 CMake 要求所有第三方 库作者统一包装成一个 Qt5Config.cmake 文件包含所有相关信息(类似于 nodejs 的 package.json ),比你单独的一个个去找动态库文件要灵活的多。 • 包配置文件由第三方库的作者(0 码力 | 56 页 | 6.87 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南--build 指令,不同平台,统一命 令! • cmake -B build • cmake --build build -j4 • sudo cmake --build build --target install • cmake -B build 免去了先创建 build 目录再切换进去再指定源码目录的麻烦。 • cmake --build build 统一了不同平台( Linux 上会调用 进一步: GLOB_RECURSE 了解一下!能自动包含所有子文件夹下的文件 GLOB_RECURSE 的问题:会把 build 目录里生成的临时 .cpp 文件也 加进来 解决方案:要么把源码统一放到 src 目录下,要么要求使用者不要把 build 放到和源码同一个目录里,我个人的建议是把源码放到 src 目录下 。 第 2 章:项目配置变量 CMAKE_BUILD_TYPE 构建的类型,调试模式还是发布模式 自创的,绕开了编译器和操作系统的各种繁琐规则,保证了跨平台统一性 。 在自己的项目中,我推荐全部用对象库 (OBJECT) 替代静态库 (STATIC) 避免跨平台的麻烦 。 对象库仅仅作为组织代码的方式,而实际生成的可执行文件只有一个,减轻了部署的困难。 静态库的麻烦: GCC 编译器自作聪明,会自动剔除没有引用符号的那些对 象 对象库可以绕开编译器的不统一:保证不会自动剔除没引用到的对象文件 虽然动0 码力 | 166 页 | 6.54 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 12 从计算机组成原理看 C 语言指针标准化的类型: stdint.h • 而实际上,尽管主流操作系统上 int 都是 32 位的, C 语言标准并没有规定 int 就是 32 位 的。 • int 甚至可以是 16 位的!只不过主流操作系统一致认为是 32 位的而已,并不是标准所保 证的。 • 为了解决不同操作系统上对类型定义混乱的问题, C 语言标准引入了 stdint.h 这个头文件 。 • 他里面包含一系列类型别名 (typedef) C/C++/Fortran 会采用当前硬件架构的字节序,比如在 x86 上就会变成小端字节序。 Java 这种虚拟机语言会采用大端字节序,因此在小端字节序的硬件上会比较低效,需要额外的字节序转换工作。 为了统一,互联网标准规定,协议包头中传输的数据类型(但凡是多个字节组成的)必须是大端字节序。 假如 x=0x01234567 ,则: int 类型对应的指针类型: int* • 指针,顾名思义,就是“指向”一个内存中的变量。 1 ; sizeof(short) = 2 • sizeof(size_t) = 8 (在 64 位系统上) • sizeof(size_t) = 4 (在 32 位系统上) • 结论:我们以后统一用这个形式: • T *a = (T*)malloc(n * sizeof(T)) • 就能分配长度为 n 的任意类型 T 的数组了。 • 当然别忘了最后通过 free(a) 释放。 如果想要的是任意类型的数组呢?0 码力 | 128 页 | 2.95 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 06 TBB 开启的并行编程之旅64 ,尹伟达的 wrap 大小 32 高性能计算既然要高性能,必须针对不同硬 件优化,而优化策略都不一样,何谈统一? 黄仁勋回应称:单机上 CPU 的并行,多机上的 CPU 并行,单机单卡 GPU ,单机 多卡 GPU ,每一种要采用的策略都完全不同,表示不看好 oneapi 能统一异构计算 …… 现在流行改名运动? Facebook 改名 Meta ? TBB 改名 OneTBB ? 方便割投资人韭菜?0 码力 | 116 页 | 15.85 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化分开存”是没问题的。 • 而且 SOA 在遇到存储不是 vector ,而是稀疏的哈希网格之类索引有一定 开销的数据结构,可能就不适合了。这就是为什么王鑫磊最喜欢 AOSOA :在高层保持 AOS 的统一索引,底层又享受 SOA 带来的矢量化 和缓存行预取等好处……就是随机索引比较麻烦。 结构体剥离: https://blog.csdn.net/qq_36287943/article/details/103601176 = malloc(n * m * sizeof(float)); 可以在堆上分配 n 行 m 列的二维数组。 • 通过 a[i * m + j] 访问第 i 行,第 j 列的元素。 • 释放时,统一用 free(a) • 注意到:动态的数组,因为编译器光从指针没办法推断出列数 m ,因此要手动扁平化。 C++ 动态数组 • vectora(n); 可以在堆上分配有 n 个元素的一维数组。 0 码力 | 147 页 | 18.88 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串表示繁体中文的字符,日本又推出了 Shift-JIS 编码格式表示日语的字符…… 再后来,为了促进两岸统一,中国又有了包含同时简体和繁体的 GB18030 编 码,包含了 27484 个汉字。 • 但是随着富连网的普及,很多网站都会跨国访问,如果你的电脑配置为 GBK ,那么看到其他编码格式的网站就会出现乱码。如何统一世界上这么多 文字的编码?所以出现了俗称“万国码”的 Unicode 。他给世界上所有的字符编0 码力 | 162 页 | 40.20 MB | 1 年前3
共 16 条
- 1
- 2













