基本概念
什么是鲲鹏DevKit?
鲲鹏DevKit是一款提供涵盖应用迁移、系统迁移、开发调试、编译、测试、性能调优及系统诊断等各环节的开发使能工具集,包含应用迁移工具、亲和分析工具、应用开发工具、编译调试工具、系统性能工具、Java性能分析工具及系统诊断工具。既方便开发者快速开发出鲲鹏亲和的高性能软件,同时也能够帮助开发者加速应用迁移和算力升级,面向全研发作业流程,提升应用迁移和调优效率,加速原生开发。迁移、开发、调优全程无缝衔接。鲲鹏DevKit支持IDE插件(VS Code)、浏览器、命令行三种工作模式。分为客户端、服务器端两部分,需要安装鲲鹏DevKit及所需工具后使用。
关于鲲鹏DevKit的更多信息请参见:https://www.hikunpeng.com/developer/devkit
什么是false sharing?
在SMP(Symmetric multiprocessing)架构中,每个CPU拥有一个cache,用来存储当前访问以及预测接下来会访问到的数据。Cache Line是一次加载到cache中的数据单元。通常是64 byte,但在鲲鹏920上的L3 cacheline是128byte。多个CPU上的多个线程同时修改自己的变量,这些变量表面上是不同的变量,但实际上却存储在同一条Cache Line里。在这种情况下,由于Cache一致性协议,两个处理器都存储有相同的Cache Line拷贝的前提下,本地CPU变量的修改会导致本地Cache Line变成Modified状态,然后在其它共享此Cache Line的CPU上,引发Cache Line的Invalidate操作,导致Cache Line变为Invalidate状态,因此必须从memory加载,这种现象就叫做伪共享false sharing。解决伪共享的方式有很多,例如:
- 使用编译器优化选项。
- 通过对内存填充(padding),保证不同线程使用的变量在不同的Cache Line中。
- 定义变量时,进行内存对齐。
- 用thread local变量。将同一个Cache Line上的变量拷贝一份到本地,进行使用。
鲲鹏DevKit Web模式和IDE模式有哪些差异?
DevKit Web模式需要您下载软件包至本地后安装使用,IDE模式支持在Visual Studio Code平台安装插件后即可使用。
毕昇JDK是否支持Windows开发?
不支持,毕昇JDK目前只支持Linux平台开发。
登录鲲鹏DevKit的IP地址是什么?
- IP地址:安装DevKit要求的服务器IP地址,是已准备好部署DevKit的Linux环境IP地址(一般是Linux系统可用网口IP地址)。
- 登录方法:根据流程安装完成后,填写已安装的IP地址作为服务,单击“确定”后,会自动弹出登录窗口,首次登录需创建管理员devadmin账户密码,然后单击“登录”即可。
应用从x86架构迁移到ARM架构的开发周期是多少?
需要区分编译型和解释型,推荐使用鲲鹏开发套件DevKit中应用迁移工具,可以快速分析给出修改建议。Java语言支持跨平台,主要分析是否存在第三方SO依赖;C语言主要识别跨平台指令、汇编和链接库等分析,替换修改后验证。目前应用迁移工具适配目标实现周期为2人天/单应用。
鲲鹏应用迁移工具是否支持在Window上使用?
应用迁移工具不支持在Windows下部署。
鲲鹏DevKit源码迁移是否支持统信UOS 1050a版本?
统信UOS 1050a版本目前未验证兼容性,若仍想在该系统中使用,可以尝试安装趋近的版本,但无法保证所有功能特性均正常可用。鲲鹏DevKit兼容性列表请参见https://www.hikunpeng.com/zh/developer/developtool。
如何确认代码编译时已经做了向量化?
开发代码时,若用户不确定编译的时候是否已经自动完成了向量化,以及不知道怎么确认未向量化的原因,可以通过打印日志信息查看。
若使用的是llvm,可以在编译时选择添加以下编译选项打印日志信息:
- -Rpass=loop-vectorize:打印成功向量化的循环。
- -Rpass-missed=loop-vectorize:打印不能向量化的循环。
- -Rpass-analysis=loop-vectorize:打印循环不能向量化的原因。
- -Rpass=slp-vectorizer:打印成功SLP(Superword-Level Parallelism)向量化的代码块。
- -Rpass-missed=slp-vectorizer:打印不能SLP向量化的代码块。
- -Rpass-analysis=slp-vectorize:打印不能SLP向量化的原因。
若使用的是gcc,可以在编译时选择添加以下编译选项打印日志信息:
- -fopt-info-vec:打印成功向量化的代码位置。
- -fopt-info-vec-missed:打印向量化的错误信息。
- -fdump-tree-vect-details=stdout:打印向量化的过程信息到stdout。
在进行Nginx专项软件迁移时提示操作系统不符合要求,如何确认环境是否满足要求?
请先检查操作系统是否符合要求,若操作系统符合要求,则当前环境需满足在“/usr/bin”或“/usr/local/bin”路径下存在gcc,且版本不低于7.3.0。
Debugger工具是否支持浏览器模式?
DevKit-Debugger-x.x.x-Linux-platform.tar.gz软件包不支持浏览器模式,可通过浏览器模式安装全量包或VS Code插件模式安装,但是该功能仅支持在VS Code插件模式下使用。
DevKit OAuth2 SSO登录后,为什么刷新页面会跳转登录页,重新登录?
因为DevKit考虑的SSO不是作为独立系统,是作为子系统被集成,考虑双方系统token有效性尽可能一致,每次刷新类操作,都会重新去获取主系统的授权,主系统token在有效时间内,DevKit登录就会很快重新鉴权,如果没有问题即可登录。
鲲鹏DevKit支持一个账号,多次登录么?
同一个账户只允许单点登录,无法设置同时登录。如果需要多人使用,可以创建多个用户,相互之间业务隔离。
鲲鹏DevKit的HPC应用分析怎么对py文件分析?
HPC应用分析是面向OpenMP和MPI应用进行分析,以mpirun开头,python文件不是HPC应用分析支持的分析对象(浏览器模式、VS Code模式和命令行模式)。
使用命令行模式时的格式:
mpirun -n 4 devkit tuner hpc-perf -L summary <command> [<options>]