Basic Concepts
What Is the Kunpeng DevKit?
The Kunpeng DevKit is a comprehensive toolkit that supports application porting, system migration, development, compilation, debugging, testing, performance tuning, and system diagnosis. It consists of the Porting Advisor, Affinity Analyzer, Development Assistant, Compiler and Debugger, System Profiler, Java Profiler, and System Diagnosis tools. With the Kunpeng DevKit, developers can quickly build high-performance software optimized for Kunpeng architectures, simplify application porting, and upgrade their computing capabilities. The Kunpeng DevKit streamlines the entire R&D process to help developers innovate more efficiently across a wide range of development scenarios. The Kunpeng DevKit supports three working modes: IDE plugin (VS Code), WebUI, and CLI. It comprises a client and a server, both of which become available after installing the Kunpeng DevKit and required tools.
What Is False Sharing?
In the symmetric multiprocessing (SMP) architecture, each CPU has a cache to store the currently accessed data and predict the data to be accessed in the future. A cache line is a unit of data that is loaded into the cache at a time. Generally, a cache line is 64 bytes long. However, on the Kunpeng 920 processor, the L3 cache line is 128 bytes. Multiple threads running on different CPUs may modify their own variables simultaneously. Although these variables appear to be separate, they are actually stored in the same cache line. In this case, due to the cache coherence protocol, if two processors hold copies of the same cache line, modifying a variable on one CPU changes the state of its local cache line to Modified. This triggers an Invalidate operation on the other CPU that shares the cache line, changing its state to Invalid. As a result, the cache line must be reloaded from memory. This phenomenon is known as false sharing. There are many ways to resolve false sharing, for example:
- Using compiler tuning options
- Performing memory padding to ensure that variables used by different threads reside in separate cache lines
- Aligning memory when defining variables
- Using the thread local variable, that is, copying the variables of the same cache line to the local host
What Is the Key Difference Between the Kunpeng DevKit WebUI and IDE Modes?
In WebUI mode, you need to download the Kunpeng DevKit software package to your local machine and install it. In IDE mode, the Kunpeng DevKit can be used immediately after installing the plugin in VS Code.
Does the BiSheng JDK Support Development on Windows?
No. The BiSheng JDK is available on Linux.
What Is the IP Address for Logging In to the Kunpeng DevKit?
- It is the IP address of the server where the DevKit is installed, that is, the IP address of the Linux environment where the DevKit has been deployed. Typically, it corresponds to an available network port in the Linux system.
- Login method: After installation, enter the IP address used during installation and click OK. On the login page, set the password for the devadmin account (administrator) during the initial login, then click Log In.

How Long Does It Take to Migrate from x86 to Arm?
It depends on the programming language and whether it is compiled or interpreted. You are advised to use the Porting Advisor in the Kunpeng DevKit to quickly analyze and provide modification suggestions. For a Java application, analyze whether third-party SO dependencies exist. For a C application, identify cross-platform instruction differences, assembly code, and linked libraries, and verify what must be replaced or modified. The Porting Advisor can cut the development period to two person-days per application.
Can the Kunpeng Porting Advisor Be Used on Windows?
No.
Does the Source Code Porting Feature of the Kunpeng DevKit Support UOS 1050a?
No, compatibility with UOS 1050a has not been verified. If you still want to use the Kunpeng DevKit with UOS 1050a, you can try installing a version close to UOS 1050a. However, some functions and features of the Kunpeng DevKit may not be available.
How Do I Check Whether Vectorization Has Been Performed During Code Compilation?
During code development, if you are unsure whether vectorization has been performed during compilation or do not know why it was not applied, you can print logs to investigate the cause.
If LLVM is used, you can add the following compiler options to print log information:
- -Rpass=loop-vectorize: Prints loops that are successfully vectorized.
- -Rpass-missed=loop-vectorize: Prints loops that cannot be vectorized.
- -Rpass-analysis=loop-vectorize: Prints the reasons why loops cannot be vectorized.
- -Rpass=slp-vectorizer: Prints code snippets that are successfully vectorized using superword-level parallelism (SLP).
- -Rpass-missed=slp-vectorizer: Prints code snippets that cannot be vectorized using SLP.
- -Rpass-analysis=slp-vectorizer: Prints the reasons why code snippets cannot be vectorized SLP.
If GCC is used, you can add the following compiler options to print log information:
- -fopt-info-vec: Prints the location of the code that is successfully vectorized.
- -fopt-info-vec-missed: Prints the locations of code snippets that are successfully vectorized.
- -fdump-tree-vect-details=stdout: Prints the vectorization process information to stdout.
Why Is the Login Page Displayed Again After Refreshing the Page Following a Successful OAuth2 SSO login to the DevKit?
The single sign-on (SSO) login system is integrated as a subsystem of the DevKit rather than operating as an independent system. Therefore, the token validity between the two systems should be kept as consistent as possible. On each page refresh, authorization is revalidated with the main system. When the main system token is within its validity period, the DevKit performs automatic reauthentication. A successful reauthentication preserves the login session.
Does the Kunpeng DevKit Allow Multiple Simultaneous Logins for a Single Account?
No. Each account supports single sign-on (SSO) only and does not allow concurrent logins. If multiple users are required, create separate user accounts to isolate their services. For details about DevKit users, see "User Management" in DevKit User Guide (WebUI).
How Does the HPC Application Analysis Feature of the Kunpeng DevKit Analyze .py Files?
HPC application analysis is designed for OpenMP and MPI applications and is initiated using mpirun. Python files are not supported analysis targets.
The command format is as follows:
mpirun -n 4 devkit tuner hpc-perf -L summary <command> [<options>]
Why Does a Source Code Porting Analysis Report Not Show the .bin File and Its Location for the x86 Architecture?
Due to security requirements, the DevKit does not scan or analyze executable files during source code analysis. Only certain shell scripts are granted the execute permission.
Why Cannot I Access the DevKit Using Firefox After Installation?
The DevKit does not support the Firefox browser. For details about the browsers and versions supported by the DevKit, see "Logging In to the Kunpeng DevKit" in DevKit User Guide (WebUI).
Why Do I Need to Specify the -fsigned-char Compiler Option on the Kunpeng Platform?
The default symbol of the char variable varies depending on the CPU architecture. In the x86 architecture, the default symbol is signed char. In the AArch64 architecture, the default symbol is unsigned char. During the porting process, you need to set the char variable to signed char. Therefore, add the -fsigned-char compiler option and set the char variable in the AArch64 platform to signed char.
Is the Optimization Effect of the Cache Line Alignment Programming Technique the Same as That of the Cache Line Alignment Feature In the DevKit?
No. The cache line alignment programming technique (see Kunpeng Programming and Tuning Guide) supports dynamic memory allocation and padding. The cache line alignment check feature of the DevKit checks the 128-byte alignment of structure variables in C/C++ source code.
Both alignment methods may be used. Choose the one that fits your application scenario. For example, use the padding method to prevent memory fragmentation when the defined structure is less than 128 bytes. If it is 128 bytes, use the cache line alignment check feature of the DevKit.
Why Does a Microarchitecture Analysis Task Fail to Be Executed in the Huawei Cloud Environment?
The Huawei Cloud environment has resource configuration restrictions. For example, it does not support PMU events or SPE hardware configurations, which means it does not meet the prerequisites for performance profiling. As a result, task analysis fails and best practice operations cannot be performed.
What Are the Performance Issues of Core Pinning When Using the DevKit?
- By default, a multi-process program allocates idle CPU cores randomly.
- The core pinning tuning suggestions provided by the task are based on theory and practical documentation. Actual results may vary, so you should verify the suggestions in your specific scenario.
- Core pinning has two advantages: it reduces the overhead caused by CPU scheduling and improves hardware affinity in NUMA architectures.
- For a single process with multiple threads, it is reasonable to specify a number of CPU cores equal to the number of threads. You can also assign all CPU cores, but any extra cores will remain unused. For a single process with a single thread, assigning all CPU cores provides no benefit.
- Start one single-process, single-thread application per CPU core. CPU usage alone does not determine performance; other factors, such as network I/O and drive read/write operations, must also be considered.
How Do I Export and View Analysis Reports of the DevKit System Profiler in WebUI Mode?
The DevKit allows you to export analysis reports. To view an exported analysis report, import the analysis report data package in the DevKit. For details about import and export, see "Task Management" in Kunpeng DevKit User Guide (WebUI).
How Many Users Can Be Created in the DevKit WebUI?
There is no limit to the number of common users that can be created. However, a maximum of 20 common users can be online simultaneously, and this limit can be configured in System Settings.
Does the DevKit support EulerOS 2.10?
Not yet. If you still want to use it, you can try installing a version close to this version. Note that some DevKit functions and features may not be available.
Is Software Porting Assessment Limited to the x86 Architecture?
No. Software porting assessment supports both software package analysis and installed software analysis. Installed software analysis is available only on the x86 platform; on the Arm platform, this function is disabled.
[Source Code Porting] What Are the Differences Between Make and CMake Build Files Across Platforms, and How Can I Identify Them?
The Porting Advisor identifies compiler options and macros that are incompatible across platforms and provides suggestions for handling dependency libraries in compilation files.
[Source code porting] What Are the Source Code Issues That Need to Be Modified for Cross-platform C/C++ Files?
The tool provides suggestions for modifying compiler macros, built-in functions, inline assembly, and SSE intrinsic functions in the source code.
[Source Code Porting] How Do I Handle Dependency Libraries Across Platforms?
The tool identifies, analyzes, and determines the dependency libraries used during file building, and tells whether dependency libraries with the same name exist on the Kunpeng platform. If yes, the download source is provided. If no, a message is displayed.
[Source Code Porting] How Do I Port Source Code and Evaluate the Workload?
- The tool can locate the lines of code to be ported and provide modification suggestions or quick fixes.
- It evaluates the porting workload based on the total number of lines of code to be ported.
How Do I View the Function Changes of the Kunpeng DevKit? Does it Support HPC Software Porting?
No. The HPC software porting capability is now provided by the HPC compatibility software repository of the Kunpeng community. As a result, this feature has been removed from the DevKit.
For details about the latest capabilities provided by the DevKit, see Release Notes.
Which Databases Are Supported by the JDBC Features of the Java Profiler?
After completing real-time profiling using the Java Profiler, you can view Java database connectivity (JDBC) information on the Database tab page. As long as the analyzed application connects to the database using JDBC, SQL information can be automatically collected, regardless of the database type.
Does the System Migration Feature Support Migrating Redis Sharded Clusters, Including Their Software, Data, and Configurations?
No. The tool supports only automatic migration of Redis in single-node or primary-secondary (Sentinel) mode. Software, data, and configurations are migrated together. For details about how to manually migrate a cluster, see Rebuilding a Redis Cluster.
Is the Kunpeng DevKit Free?
Yes, it is free of charge.