Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • Paddle
  • 合并请求
  • !27279

P
Paddle
  • 项目概览

PaddlePaddle / Paddle
大约 2 年 前同步成功

通知 2325
Star 20933
Fork 5424
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 1423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
P
Paddle
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 1,423
    • Issue 1,423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
    • 合并请求 543
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板

use clcache in windows !27279

  • Report abuse
!27279 已合并 9月 14, 2020 由 saxon_zh@saxon_zh 创建
#<User:0x00007f0e5076b4d8>
  • 概览 4
  • 提交 6
  • 变更 1

Created by: wanghuancoder

PR types

Others

PR changes

Others

Describe

使用clcache加速windows CI编译速度

一、背景

Linux下使用ccache加速编译速度,但windows下没有使用ccache。因此,本次工作调研,在windows下使用ccache。

ccache的原理,这篇文章做了简单介绍:https://www.cnblogs.com/oracleloyal/p/5315083.html

二、clcache介绍

2.1 官方ccache目前不支持Windows MSVC编译器。官方支持说明:https://ccache.dev/platform-compiler-language-support.html

2.2 经调研,发现两款开源项目,支持了windows MSVC的cache,功能类似ccache:

  • clcache: https://github.com/frerich/clcache
  • inorton/cclash: https://github.com/inorton/cclash 两个项目使用量均不大,但相对来说clcache的使用量、文档情况、维护情况要好于inorton/cclash,因此选择clcache作为Paddle windows MSVC的编译加速cache。

三、clcache的使用

3.1 安装 官网给出了多种安装方法:https://github.com/frerich/clcache/wiki/Installation

  • PyInstaller(失败)
pip install pyinstaller
pyinstaller pyinstaller/clcache_main.py

经实验,这种安装方法没有成功。python运行各种报错。而且,有文档提到,这种安装方式生成的clcache.exe可能存在性能问题。

  • pip(成功)
pip install clcache

经实验,这种有效。其会在%PYTHON_ROOT%\Scripts目录下安装clcache.exe、clcache-server.exe。 clcache.exe是clcache的主程序。 clcache-server.exe用于加速计算哈希值用的。但是实验过程中,clcache-server.exe运行不成功,后放弃。

3.2 配置 官网没有给出必要的配置说明,以下为摸索后的结论。

  • 环境变量 USE_CLCACHE 是否使用clcache的开关,必须打开。set USE_CLCACHE=1
  • 环境变量 CLCACHE_OBJECT_CACHE_TIMEOUT_MS 我的理解:cache的使用是互斥的,paddle编译是多进程的,可能会竞争使用cache,如果cache被别的进程占用,自己等待时间过程,会报错退出。修改CLCACHE_OBJECT_CACHE_TIMEOUT_MS,将超时退出时间改打。set CLCACHE_OBJECT_CACHE_TIMEOUT_MS=1000000
  • 环境变量 CLCACHE_HARDLINK 使用硬连接,有些场景可以减少一次文件拷贝,提高性能。set CLCACHE_HARDLINK=1
  • 环境变量 CLCACHE_DIR cache文件的存放目录。默认实在C盘,用户目录下。如果C盘不是固态硬盘,建议修改目录,将文件放到固态硬盘上。
  • 最大缓存大小配置 clcache.exe -M 21474836480 配置会落盘到CLCACHE_DIR目录的config.txt文件中。一次配置,永久生效。 其它: 1)这里介绍了一些提升clcache性能的建议:https://github.com/frerich/clcache/wiki/Performance 2)如果不知道有哪些环境变量可以配置,可以使用“os.environ”全文检索clcache源码,通过源码分析其配置。 3.3 使用 官网的使用方法文档:https://github.com/frerich/clcache/wiki/Integration 最终Paddle中使用: msbuild /m:%PARALLEL_PROJECT_COUNT% /p:TrackFileAccess=false /p:CLToolExe=clcache.exe /p:CLToolPath=%PYTHON_ROOT%\Scripts /p:Configuration=Release /verbosity:minimal paddle.sln 其中 /p:TrackFileAccess=false /p:CLToolExe=clcache.exe /p:CLToolPath=%PYTHON_ROOT%\Scripts是用于clcache的。
指派人
分配到
审核者
Request review from
无
里程碑
无
分配里程碑
工时统计
标识: paddlepaddle/Paddle!27279
Source branch: github/fork/wanghuancoder/develop_win_clcache
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7