中文
注册

基本概念

什么是鲲鹏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。解决伪共享的方式有很多,例如:

  1. 使用编译器优化选项。
  2. 通过对内存填充(padding),保证不同线程使用的变量在不同的Cache Line中。
  3. 定义变量时,进行内存对齐。
  4. 用thread local变量。将同一个Cache Line上的变量拷贝一份到本地,进行使用。

鲲鹏DevKit性能分析工具提供了使用内存对齐方法解决伪共享问题的代码样例,具体请参考:https://www.hikunpeng.com/document/detail/zh/kunpengdevps/handon_tutorials/dsug/KunpengDevKitDsug_0025.html

鲲鹏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。
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词