• [优秀实践] 鲲鹏众智Glibc time函数优化项目实践心得
           非常荣幸能够跟随赵宏智老师参与华为的glibc time函数优化项目,这是我第一次参与的大型企业项目,收获颇丰。与优秀的学长学姐一起组建项目团队,切实感受到团队合作的重要性,在整个参与过程中学到了许多新知识,对计算机体系结构有了更加深刻的认识,对鲲鹏服务器的使用也更加熟练。       此次参与的项目是glibc time函数的优化,我们作为计算机体系结构研究团队,该项目经历对我们今后的研究提供了丰富的研究思路,也学到了很多计算机底层框架的知识。glibc作为系统基础库,是GNU发布的libc库,是linux系统中最底层的api,几乎其他任何运行库都会依赖于glibc。我们对其中的time相关函数进行加速优化,提升该库在鲲鹏平台的性能。因为glibc time函数可以看作是把gettimeofday包装了一层,因此是对time函数和gettimeofday函数的优化。      我们优化的目的就是减少系统开销,简化调用流程,提升执行效率。我们分析glibc time函数源代码,通过反汇编代码,用gbc调试分析代码调用逻辑,主要从系统调用、虚拟动态共享对象(VDSO)以及内存屏障等方面寻找优化方法,我们主要的优化思路如下:1、time函数的优化       取消time函数中对gettimeofday函数的调用,转而将gettimeofday函数的源代码精简后直接移植到time函数中。精简后的gettimeofday函数代码只保留顺序锁及其中部分代码。2、gettimeofday函数优化       分析内存屏障,从内存屏障类型和指令出发,去除部分内存屏障,更改指令执行顺序。       现代操作系统的进程空间分为用户空间(user space)与内核空间(kernel space)。通常程序运行在用户空间中,当涉及一些敏感指令执行的时候,比如与硬件交互的操作,需要切换到内核空间,相关指令执行完毕后再返回用户空间继续执行。系统调用(syscall)在此过程中作为沟通用户空间与内核空间的桥梁存在。arm处理器模式切换可以通过软件控制进行切换,即修改CPSR模式位,但这是在特权模式下,当我们处于用户模式下,是没有权限实现模式转换的。若想实现模式切换,只能由另一种方法来实现,即通过外部中断或是异常处理过程进行切换。于是ARM指令集中提供了两条产生异常的指令,通过这两条指令可以用软件的方法实现异常,其中一个就是中断指令SWI(arm64下中断指令是SVC)。ARM Linux 系统利用SWI(SVC)指令来从用户空间进入内核空间,SWI(SVC)指令用于产生软件中断,从而实现从用户模式变换到管理模式,CPSR保存到管理模式的SPSR,执行转移到SWI(SVC)向量。在其他模式下也可使用SWI(SVC)指令,处理器同样地切换到管理模式。系统调用要走复杂的中断流程,所以开销大。所以我们分析并简化glibc time函数的系统调用过程,提高执行效率。       VDSO的出现是为了给外部比如glibc一个统一的系统调用接口,自动判断该使用 int 80(x86),SWI(arm32),SVC(arm64)还是比如sysenter、syscall 等,同时也为了加速部分系统调用比如time、getcpu等,直接在用户空间完成。vsyscall(virtual system call)提供了一种在用户空间下快速执行系统调用的方法,加速原理是对特定的系统调用使用函数调用代替。map 的起始地址固定(0xffffffffff600000),地址固定不变,有安全风险。VDSO是用来代替 vsyscall 的,vsyscall之所以还存在,是为了兼容性考虑。VDSO其实是一个动态库,它由内核提供,映射到每个进程的地址空间。VDSO利用 ASLR(address space layout randomization)增强安全性,也就是每次程序运行,VDSO的虚拟地址都会变化,有时候为了调试,可以关闭随机地址。我们可以分析并修改动态库逻辑,优化time函数的调用过程。       而内存屏障是从数据存储访问的角度优化time函数的执行逻辑。其中涉及到的指令包括DMB、DSB、ISB。DMB,数据存储器隔离。保证该指令前的所有存储器访问操作都执行完毕后,才提交(commit)在它后面的存储器访问操作。DSB,数据同步隔离。比DMB严格,仅当所有在它前面的存储器访问操作都执行完毕后,才执行在它后面的指令。ISB,指令同步隔离。最严格。确保在ISB指令完成后,按照程序顺序在ISB指令之后的所有指令都从高速缓存或存储器中取出。       从不同角度进行time函数优化,并设计了完整的测试方案,最终的优化结果超出了我们的预期,也是给我的第一个项目经历画上了完整的句号。整个项目过程从一开始的摸不到头脑,无从下手,团队分工合作,分析代码逻辑,敲定优化方案,到最后完成全部测试,项目提交完成,切实了解体会整个项目过程,理解什么是科研。并不是说与研究方向相似的项目就能直接上手,接触项目后才发现自己的知识储备、研究工具的熟练使用还差很多,很多时候是一边学习一边研究,从闻所未闻到熟悉理解,从未接触到熟练运用,参与项目让我弥补了很多知识漏洞,学会了许多知识,对自己的研究方向有很大的帮助。我们也看到华为一直在努力拜托“卡脖子”的困境,之前描绘的宏伟蓝图一直在一步步稳定实现。我很荣幸能够参加华为鲲鹏众智项目,感谢华为方面的老师和赵宏智老师的悉心指导,希望今后能够有更多的机会参与到华为项目中,也希望不久将来中国能够彻底拜托“卡脖子”的局面。                                                                                                                                          北京交通大学-计算机学院体系结构团队-赵津铫                                                                                                                                                                                      指导老师:赵宏智
  • [优秀实践] 鲲鹏众智安卓应用兼容4期项目过程分享
    很荣幸参加鲲鹏众智的安卓应用兼容4期项目,项目主要是在kbox2.0上兼容几款办公和娱乐的应用软件。项目中我主要负责应用兼容问题的分析和问题解决,并输出问题的分析报告和解决方案。作为一个习惯在物理机上开发的android系统工程师而言,首次遇到容器手机方案时感觉特别的新奇。与常规模拟器的方案相比,我更好奇它的实现原理、I/O通信、界面渲染的实现等。所以在项目初期我学习了一些与kbox相关知识。这些对于分析定位kbox上兼容app问题起了很大的作用。下面是我在项目中遇到的一些问题及解决办法,Android中为我们提供了logcat日志,以及一些分析工具,可以快速的帮我们定位问题。所以出现问题的时候最直接的方式就是看android的logcat日志,有些问题我们那可以直接从logcat中看出,比如飞书中共享桌面崩溃时的logcat,我们看到红框位置提示没有找到submix,直接到系统中查找submix的对应的库文件是否存在。我们在编译的android系统中新编译submix库,崩溃问题就解决了。还有的问题除了要分析logcat日志以外,还需要同步分析tombstone日志。Tombstone日志可以告诉我们具体报错的进程。如果此进程在打包的镜像中包含它的调试符号信息,我们可以使用addr2line命令获取具体报错的位置。如下日志告诉我们发生崩溃的是surfaceflinger进程。可以根据tid和pid知道进程调用关系。这里可以用到kbox渲染相关的知识。还有一种是比较麻烦的兼容适配问题,就是应用本身会出现问题。项目中有一个应用在kbox上测试出现错误日志打印,虽然可以修改android系统源码规避此问题,但是不能从根本上解决问题。好在应用的官方发布了升级版本,在升级版本中就没有此问题。出现这样的情况,最好的方式就是在物理机上同步测试,如果物理机上也出现,大概率可以判断是应用本身问题,可以不用花费大量精力去分析日志了。在项目过程中发现kbox方案可以更好的解决和替代之前工作中遇到的一些实用方案。期待kbox开源部分功能。
  • [优秀实践] 鲲鹏众智Android应用兼容项目性能测试使用的技术介绍
    非常荣幸能参加鲲鹏众智Android应用兼容4期项目,项目主要是在国产鲲鹏PC上搭建Android 容器,在容器内兼容几款常用办公和娱乐应用。在项目中,我主要是负责功能和性能测试。因为之前做过手机应用相关的性能测试,再结合项目对性能测试的具体要求,很快就决定使用monkey测试和python3+weditor+uiautomator2来进行性能测试。下面着重介绍下性能测试使用的方法和技术。Monkey测试又被称作猴子测试,是指通过向系统发送伪随机用户事件流对Android 系统和应用做测试,用来检测应用稳定性和健壮性,主要目的是检测应用是否会出现crash、冻屏和资源异常。monkey测试测试环境搭建和使用这里不在细聊,想了解可以直接问度娘。测试时使用的命令如下:adb shell monkey -p 包名 --hprof --pct-touch 50 --pct-motion 30 --pct appswitch 10 --pct-majornav 10 --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --ignore-crashes --throttle 500 -v -v -v 190000 1>/home/kylin/Desktop/monkey_test_info.log 2>/home/kylin/Desktop/monkey_log/monkey_test_error.logpython3+weditor+uiautomator2 主要是结合项目性能要求,默认用户正常操作来对应用的稳定性进行测试。在使用前需要安装python3环境和adb环境,然后在python内使用pip 安装python 三方库weditor和uiautomator2。安装完成后在pycharm新建python项目,使用venv虚拟环境,cmd进入到venv虚拟环境目录,执行下面命令激活虚拟环境:python -m venv env;source env/bin/acticate。在虚拟环境venv目录输入weditor,会弹出一个weditor网页界面。最左侧是手机通过adb连接的画面,通过鼠标在上面进行操作,相关操作的详细信息会被记录在中间一栏;最右侧是自动录制的脚本,可以直接回放。下面是项目中结合性能要求使用的一段代码,主要是实现对应用主要功能进行遍历测试,仅供参考。代码如下:import uiautomator2 as u2import timeusb_connect_addr="0.0.0.0:8501"d=u2.connect(usb_connect_addr)d.loggerfor i in range (5000):    try:        d.xpath(            '//*[@resource-id="com.pingan.smt:id/app_navigation"]/android.widget.LinearLayout[1]/android.support.v7.app.ActionBar-b[2]/android.widget.RelativeLayout[1]/android.widget.ImageView[1]').click()        time.sleep(0.5)        d.xpath(            '//*[@resource-id="com.pingan.smt:id/recycler_view"]/android.widget.FrameLayout[1]/android.view.ViewGroup[1]/android.widget.ImageView[1]').click()        time.sleep(0.5)        d.xpath(            '//*[@resource-id="com.pingan.smt:id/officehall_recyclerView"]/android.widget.LinearLayout[3]/android.widget.ImageView[1]').click()        time.sleep(1)        d.xpath('//*[@text="二、三级运动员授予"]').click()        time.sleep(4)        d.xpath('//*[@resource-id="com.pingan.smt:id/iv_title_left"]').click()        d.xpath('//*[@resource-id="com.pingan.smt:id/iv_title_left"]').click()        time.sleep(0.5)        d.xpath('//*[@resource-id="com.pingan.smt:id/iv_title_left"]').click()        d.xpath(            '//*[@resource-id="com.pingan.smt:id/app_navigation"]/android.widget.LinearLayout[1]/android.support.v7.app.ActionBar-b[1]/android.widget.RelativeLayout[1]/android.widget.ImageView[1]').click()        time.sleep(30)        print(i)        print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))        d.p    except:        pass湖南麒麟信安科技股份有限公司-华为鲲鹏众智项目团队--黄美建指导老师:邓旺波
  • [优秀实践] 鲲鹏众智对称矩阵线性求解算法项目心得感受
           很荣幸能够在攻读硕士研究生期间有机会参与华为鲲鹏众智项目。我们的项目目的是在鲲鹏多核处理器上实现多线程的对称矩阵分解算法,对标LAPACK和INTEL的MKL线性代数算法库进行正确性和性能的检验,涉及线性代数、数值分析、多线程编程、编译器、软件工程等多方面内容。       项目初期,由于小组成员在华为生态软硬件等相关方面的知识储备有限,加之多线程下的对称矩阵分解算法也非常复杂,因此我们首先花费了不少时间去熟悉华为生态的软硬件,例如鲲鹏处理器、OpenEuler操作系统等。而后,我们花了大量的时间进行算法设计理解与正确性和性能的测试上。这期间为了能够调试出正确结果和更高性能,我们小组成员在实验室熬过了很多个万籁俱寂的夜晚,甚至为了一个很小的逻辑错误,整个小组团队一起绞尽脑汁地调试了一天一夜。最后经过大家的团结协作和不懈努力,顺利完成了项目。由于不少的应用软件和科学计算都直接或间接地使用线性代数数值分析算法,因此线性代数数值分析算法库是一个软硬件生态体系中非常重要的组成部分。可以说,这一项目的完成充实了鲲鹏国产软硬件平台上的线性代数数值分析算法库。       在参与项目的过程中,我不仅锻炼了自身的算法设计能力、编程实现能力和团队协作能力,更重要的收获是,我真正理解并践行了工匠精神,而这正是承自华为和项目团队严谨认真的工作态度和精益求精的工匠精神,尤其是项目中的许多小事和细节,比如在项目进行软件测试的过程中,我们不仅需要对自己实现的对称矩阵分解算法进行正确性和性能的进行测试,还需要对错误的输入(例如不合法的参数或者奇异矩阵)进行容错性测试,对项目代码进行覆盖率的测试等。       在百花齐放、百家争鸣的信息时代,国家之间、企业之间的科技竞争如火如荼,在基础架构领域的竞争更是日益激烈。面对如此局面,华为愿集众家之所长发展布局国产处理器上的研究和应用实属高明之举。希望我以后能够再次参与这样的项目中,也希望华为能够不断集思广益,众“智”成城,以期鲲鹏展翅,扶摇直上!北京航空航天大学-中德联合软件研究所-林新源指导老师:刘轶,杨海龙
  • [HPC] WRF,OpenFOAM,GFS移植OpenEuler平台心得体会
    我们项目的内容主要是从x86平台移植3款HPC软件WRF,OpenFOAM,GFS。随着信息化社会的飞速发展,人类对信息处理能力的要求越来越高,高性能计算(High Performance Computing, HPC) 应运而生,其能够通过聚合结构,使用多台计算机和存储设备,以极高速度处理大量数据,帮助人们探索解决大规模的科学问题,如气象预报、计算模拟、军事研究、CFD/CAE、生物制药、基因测序、图像处理等等。高性能计算 (High Performance Computing, HPC) 是国之重器,其以极高速度处理大量数据,帮助人们解决大规模科学问题,是国家的核心科技力量,大国竞争的重要舞台。华为鲲鹏生态与HPC领域十分契合。华为鲲鹏生态在芯片、网络、编译器,MPI库等多个方面做出了自主创新和突破,在HPC领域做到更自主的同时,取得更强化的计算能力。在移植过程中,我们遇到了不少困难,尤其是依赖较多的软件,各个依赖间可能存在版本不兼容的问题。我们使用的是鲲鹏生态中的毕昇编译器,它是基于Clang的。有的软件使用GCC能编译,使用Clang时需要设置额外的编译选项,甚至有的依赖会触发编译器的bug。但是在团队同学和学校和华为的老师的帮助下解决了这些问题。从这里项目经历中我学到了很多有用的知识,对linux系统更加熟悉,更能理解和排查各种编译报错,锁定问题并解决。同时,这次项目经历也增强了我和团队成员协作交流的能力。在最后的性能测试中,我们发现就我们项目中涉及到的HPC应用而言,基于鲲鹏生态的HPC应用效率一般要与原来的版本高出10%左右。其鲲鹏BoostKit HPC使能套件文档也比较清晰,且已有常见的HPC应用及其各项依赖的安装指南,从这些优势我们可以看出鲲鹏生态在HPC已经比较成熟了。复杂多变的国际形势下,实现自主、可控是对国产 HPC 平台的巨大挑战。实现 HPC 全栈自主可控是系统工程,其中软硬件平台是基础、应用生态是关键。硬件方面,凭借以华为为代表的企业在 CPU、操作系统等领域的发力,硬件性能差距已经缩小,基础软件已经具备,生态已经日趋完善,我们相信以后也会做得越来越好。                                                                                                                             电子科技大学                                                                                                                             指导老师:卢国明老师
  • [技术干货] Delly移植指南 (CentOS 7.6)
    1 介绍Delly是一种集成的结构变异(SV)预测方法,可以在短期读取大规模并行测序数据,以单核苷酸分辨率发现基因分型和可视化缺失、串联重复、倒位和易位等缺陷。它使用配对末端,拆分阅读和阅读深度来敏感而准确地描绘整个基因组的重排。关于Delly的更多信息请访问:https://tobiasrausch.com/delly/。语言:C++一句话描述:结构变异(SV)预测。建议的版本建议使用版本为“DELLY 0.8.5”。2 环境要求硬件要求硬件要求如表2-1所示。表2-1 硬件要求项目说明CPUKunpeng 920 软件要求软件要求如表2-2所示。表2-2 软件要求项目版本下载地址cmake3.17.3https://cmake.org/files/v3.17/cmake-3.17.3.tar.gzboost1.66.0https://boostorg.jfrog.io/artifactory/main/release/1.66.0/source/boost_1_66_0.tar.gzsalmon1.4.0https://github.com/COMBINE-lab/salmon/archive/v1.4.0.tar.gzjellyfish2.2.10https://github.com/gmarcais/Jellyfish/releases/download/v2.2.10/jellyfish-2.2.10.tar.gzhtslib1.11https://github.com/samtools/htslib/archive/1.11.tar.gzsamtools1.11https://github.com/samtools/samtools/archive/1.11.tar.gzbowtie22.3.5.1https://netix.dl.sourceforge.net/project/bowtie-bio/bowtie2/2.3.5.1/bowtie2-2.3.5.1-source.zipboost1.66https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.gzsamtools1.10https://github.com/samtools/samtools/archive/1.10.tar.gzbcftools1.10.2https://github.com/samtools/bcftools/releases/download/1.10.2/bcftools-1.10.2.tar.bz2bwa0.7.17https://sourceforge.net/projects/bio-bwa/files/delly0.8.5https://github.com/dellytools/delly/archive/v0.8.5.tar.gzhtslib1.10.2https://github.com/samtools/htslib/archive/1.10.2.tar.gz测试算例hg19.fahttps://obs.cn-north-1.myhuaweicloud.com/obs-82bb/open_database/hg19/gatk_bundle/hg19.faB17NC_R1.fq.gzhttps://obs.cn-north-1.myhuaweicloud.com/obs-82bb/data/Panel/B17NC_R1.fastq.gz 操作系统要求操作系统要求如表2-3所示。表2-3 操作系统要求项目版本下载地址CentOS7.6https://www.centos.org/download/Kernel4.14.0-115.el7a.0.1https://www.centos.org/download/3 移植规划数据本章节给出MM5软件在移植过程中涉及到的相关软件安装规划路径的用途及详细说明。表3-1 移植规划数据序号软件安装规划路径用途说明1/path/to/KPGCC鲲鹏GCC的安装规划路径参考《鲲鹏编译器》中“安装鲲鹏GCC”章节,将鲲鹏GCC安装到规划路径2/path/to/DELLY/delly-0.8.5Delly的安装规划路径。这里的安装规划路径只是一个举例说明,建议部署在共享路径中。现网需要根据实际情况调整,后续章节凡是遇到安装路径的命令,都以现网实际规划的安装路径为准进行替换,不再单独说明。3/path/to/DELLY/boostBoost的安装规划路径。4/path/to/DELLY/CASE算例规划路径。4 配置编译环境前提条件使用SFTP工具将各安装包上传至服务器对应目录下。配置流程表4-1 配置流程序号配置项说明1开源环境搭建参考《HPC解决方案 基础环境搭建指导书》中“单机场景环境搭建”章节。2鲲鹏编译器环境搭建参考《鲲鹏编译器用户指南》。3安装boost 4安装bwa 5安装samtools 6安装bcftools 4.1 安装boost操作步骤步骤 1     执行以下命令,解压安装包。cd /path/to/BOOST && tar -zxf boost_1_66_0.tar.gz步骤 2     执行以下命令,进入安装目录cd boost_1_66_0步骤 3     执行以下命令,进行编译安装CC=`which gcc` CXX=`which g++` ./bootstrap.sh --prefix=/path/to/BOOST./b2 -j 32./b2 install4.2 安装bwa操作步骤步骤 1     执行以下命令,解压安装包。tar -xvf bwa-0.7.17.tar.bz2步骤 2     执行以下命令,进入安装目录cd bwa-0.7.17步骤 3     执行以下命令,修改“Makefile”文件vi Makefile1 CC=               /path/to/GNU/bin/gcc2 CFLAGS=         -g -Wall -Wno-unused-function -O2 -fcommon..14 INCLUDES=       -I/path/to/GNU/gcc/include 原始内容:1 CC=               gcc2 CFLAGS=         -g -Wall -Wno-unused-function -O2..14 INCLUDES=步骤 4     执行以下命令,修改“ksw.c”文件vi ksw.c29 #include <sse2neon.h>原始内容:29 #include <emmintrin.h>步骤 5     在https://github.com/DLTcollab/sse2neon/blob/master/sse2neon.h获取“sse2neon.h”文件,将“Neon指令转换代码”拷贝到编译器特定目录下cp sse2neon.h /path/to/GNU/gcc/include步骤 6     执行以下命令进行编译make步骤 7     执行以下命令设置BWA的环境变量export PATH=/path/to/BMA/bwa-0.7.17:$PATH 4.3 安装samtools操作步骤步骤 1     执行以下命令,解压安装包cd /path/to/SAMTOOLS && tar -zxf samtools-1.11.tar.gz步骤 2     执行以下命令,进入安装目录cd samtools-1.11步骤 3     执行以下命令,进行配置。autoheaderautoconfsed -i 's/\-O2/\-O3 -march=armv8.2-a -mtune=tsv110/g' `grep -lr "\-O2" ./`CC=`which gcc` ./configure --prefix=/path/to/SAMTOOLS --with-htslib=/path/to/HTSLIB步骤 4     执行以下命令,进行编译安装。make -j 16make install步骤 5     执行以下命令设置samtools的环境变量。export PATH=/path/to/SAMTOOLS/bin:$PATH4.4 安装bcftools操作步骤步骤 1     执行以下命令,解压安装包tar -zxf bcftools-1.11.tar.gz步骤 2     执行以下命令,进入安装目录cd bcftools-1.11步骤 3     执行以下命令,进行配置。autoheaderautoconfsed -i 's/\-O2/\-O3 -march=armv8.2-a -mtune=tsv110/g' `grep -lr "\-O2" ./`CC=`which gcc` ./configure --prefix=/path/to/bcftools步骤 4     执行以下命令,进行编译安装。make -j 16make install步骤 5     执行以下命令设置bcftools的环境变量。export PATH=/path/to/bcftools/bin:$PATH5 获取源码操作步骤步骤 1     下载下载Delly安装包“v0.8.5.tar.gz”以及htslib安装包“1.10.2.tar.gz”。Delly安装包:https://github.com/dellytools/delly/archive/v0.8.5.tar.gzhtslib安装包:https://github.com/samtools/htslib/archive/1.10.2.tar.gz步骤 2     使用SFTP工具将安装包上传至服务器“/path/to/DELLY”目录。----结束6 编译和安装操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令,清理环境。yum erase `yum list installed |grep boost|awk {'print $1'}` -y步骤 3     执行以下命令,安装依赖。yum install -y libcurl libcurl-devel openssl openssl-devel zlib-devel bzip2 bzip2-devel xz-devel步骤 4     执行以下命令,设置环境变量。export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/path/to/boost/includeexport LIBRARY_PATH=$LIBRARY_PATH:/path/to/boost/libexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/boost/lib步骤 5     执行以下命令,解压Delly和htslib安装包。cd /path/to/DELLY && tar -zxf v0.8.5.tar.gz && tar -zxf 1.10.2.tar.gz步骤 6     执行以下命令,将htslib的源码移动到Delly源码下的src/htslib目录里。mv htslib-1.10.2/* delly-0.8.5/src/htslib/步骤 7     执行以下命令,修改Makefile文件cd /path/to/DELLY/delly-0.8.5sed -i 's/g++/`which g++`/g' Makefilesed -i 's/\.\/configure/CC=`which gcc` CXX=`which g++` \.\/configure/g' Makefilesed -i 's/O3/O3 -std=c++11 -march=armv8.2-a -mtune=tsv110/g' Makefile 步骤 8     执行以下命令,进行编译CC=`which gcc` CXX=`which g++` make PARALLEL=1 all说明:参数“PARALLEL=1”为开启多线程模式,不要此参数则不开启多线程模式步骤 9     执行以下命令,加载环境变量。export PATH=/path/to/DELLY/delly-0.8.5/src:$PATH   ----结束7 运行和验证操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令,进入算例目录。cd /path/to/DELLY/CASE步骤 3     执行以下命令,解压算例。gzip -d B17NC_R1.fq.gz步骤 4     执行以下命令,创建索引文件。bwa index -a bwtsw hg19.fa步骤 5     执行以下命令,生成.sam文件。bwa mem -t 96 hg19.fa B17NC_R1.fastq > bwa.sam步骤 6     执行以下命令,生成并处理.bam文件samtools view -bS bwa.sam > B17NC_R1.bamsamtools sort -@96 B17NC_R1.bam -o B17NC_R1.sort.bamsamtools index -@96 B17NC_R1.sort.bam B17NC_R1.sort.bam.bai步骤 7     执行以下脚本复制.bam文件,用于模拟同时运行多个样本。#!/bin/bashfor varible1 in {1..127}docp B17NC_R1.sort.bam B17NC_R1${varible1}.sort.bam && cp B17NC_R1.sort.bam.bai B17NC_R1${varible1}.sort.bam.baidone步骤 8     执行以下命令,运行算例cp /path/to/DELLY/delly-0.8.5/excludeTemplates/human.hg19.excl.tsv ./{ time OMP_NUM_THREADS=128 delly call -x human.hg19.excl.tsv -o delly.bcf -g hg19.fa B17NC_R1*.sort.bam; } 2>&1 | tee -a kp920-7265.log 说明:Delly主要在样本级别进行并行化。因此,OMP_NUM_THREADS应始终小于或等于输入样本的数量。此处为128个样本,所以OMP_NUM_THREADS设置成128。 显示如图,则说明运行成功步骤 9     执行以下命令,将结果转成VCF格式并查看输出结果bcftools view delly.bcf > delly.vcf && cat delly.vcf | more结果如图----结束
  • [技术干货] Trinity移植指南 (CentOS 7.6)
    1 介绍由布罗德研究所和耶路撒冷希伯来大学开发的Trinity代表了一种从RNA-seq数据高效、可靠地从头重建转录组的新方法。Trinity结合了三个独立的软件模块:Inchworm,Chrysalis和Butterfly,这些模块依次应用于处理大量RNA-seq读取。Trinity将序列数据划分为许多个独立的de Bruijn图,每个图代表给定基因或基因座的转录复杂性,然后独立处理每个图以提取全长剪接同工型,并挑出源自旁系基因的转录本。关于Trinity的更多信息请访问Trinity官网。语言:Perl一句话描述:基因组装。建议的版本建议使用版本为“TRINITY 2.11.0”。2 环境要求硬件要求硬件要求如表2-1所示。表2-1 硬件要求项目说明CPUKunpeng 920 软件要求软件要求如表2-2所示。表2-2 软件要求项目版本下载地址cmake3.17.3https://cmake.org/files/v3.17/cmake-3.17.3.tar.gzboost1.66.0https://boostorg.jfrog.io/artifactory/main/release/1.66.0/source/boost_1_66_0.tar.gzsalmon1.4.0https://github.com/COMBINE-lab/salmon/archive/v1.4.0.tar.gzjellyfish2.2.10https://github.com/gmarcais/Jellyfish/releases/download/v2.2.10/jellyfish-2.2.10.tar.gzhtslib1.11https://github.com/samtools/htslib/archive/1.11.tar.gzsamtools1.11https://github.com/samtools/samtools/archive/1.11.tar.gzbowtie22.3.5.1https://netix.dl.sourceforge.net/project/bowtie-bio/bowtie2/2.3.5.1/bowtie2-2.3.5.1-source.zipsse2nenomasterhttps://github.com/jratcliff63367/sse2neon/archive/master.zipSIMDev0.7.0-rc-1https://github.com/simd-everywhere/simde/archive/v0.7.0-rc-1.tar.gzpython3.8https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgzCython0.29.21https://files.pythonhosted.org/packages/6c/9f/f501ba9d178aeb1f5bf7da1ad5619b207c90ac235d9859961c11829d0160/Cython-0.29.21.tar.gznumpy1.19.4https://files.pythonhosted.org/packages/c5/63/a48648ebc57711348420670bb074998f79828291f68aebfff1642be212ec/numpy-1.19.4.zipTrinity2.11.0https://github.com/trinityrnaseq/trinityrnaseq/archive/v2.11.0.tar.gzInchwormmasterhttps://github.com/trinityrnaseq/Inchworm/archive/master.zipChrysalismasterhttps://github.com/trinityrnaseq/Chrysalis/archive/8ef13ed1fa618186ec3dc04522115c99fdfacda2.zipseqtk-trinitymasterhttps://github.com/trinityrnaseq/seqtk-trinity/archive/f5e229dc164823c3ef14e8b8e2ba7d84c8d80e6c.zipbamsiftermasterhttps://github.com/trinityrnaseq/bamsifter/archive/f034f247d5fa1fd9847c390d99bfd918da7d7739.zip算例1SRR3050898_1.fastqhttp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR305/008/SRR3050898/SRR3050898_1.fastq.gz算例2SRR3050898_2.fastqhttp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR305/008/SRR3050898/SRR3050898_2.fastq.gz 操作系统要求操作系统要求如表2-3所示。表2-3 操作系统要求项目版本下载地址CentOS7.6https://www.centos.org/download/Kernel4.14.0-115.el7a.0.1https://www.centos.org/download/3 移植规划数据本章节给出MM5软件在移植过程中涉及到的相关软件安装规划路径的用途及详细说明。表3-1 移植规划数据序号软件安装规划路径用途说明1/path/to/KPGCC鲲鹏GCC的安装规划路径参考《鲲鹏编译器》中“安装鲲鹏GCC”章节,将鲲鹏GCC安装到规划路径2/path/to/SALMONsalmon的安装规划路径。这里的安装规划路径只是一个举例说明,建议部署在共享路径中。现网需要根据实际情况调整,后续章节凡是遇到安装路径的命令,都以现网实际规划的安装路径为准进行替换,不再单独说明。3/path/to/JELLYFISHjellyfish的安装规划路径。4/path/to/BOWTIE2Bowtie2的安装规划路径。5/path/to/HTSLIBhtslib的安装规划路径。6/path/to/SAMTOOLSsamtools的安装规划路径。7/path/to/PYTHONpython的安装规划路径。8/path/to/BOOSTboost的安装规划路径。9/path/to/TRINITYTrinity的安装规划路径。10/path/to/CMAKEcmake的安装规划路径。11/path/to/CASE算例放置路径。4 配置编译环境前提条件使用SFTP工具将各安装包上传至服务器对应目录下。配置流程表4-1 配置流程序号配置项说明1开源环境搭建参考《HPC解决方案 基础环境搭建指导书》中“单机场景环境搭建”章节。2鲲鹏编译器环境搭建参考《鲲鹏编译器用户指南》。3Yum安装依赖 4安装perl 5安装boost 6安装cmake 7安装salmon 8安装htslib 9安装samtools 10安装jellyfish 11安装bowtie2 12安装python 13安装Cython 14安装numpy 4.1 Yum安装依赖操作步骤步骤 1     执行以下命令,yum安装所有依赖。yum install -y java-1.8.0-openjdk-devel.aarch64 libcurl libcurl-devel openssl openssl-devel zlib-devel bzip2 bzip2-devel xz-devel boost-devel ncurses ncurses-base ncurses-libs ncurses-devel zlib zlib-devel zlib-static install gcc make zlib zlib-devel bzip2-devel ncurses-devel openssl openssl-devel xz lzma xz-devel readline readline-devel sqlite sqlite-devel gdbm gdbm-devel tk tk-devel libffi libffi-devel libcurl libcurl-devel openssl openssl-devel zlib-devel bzip2 bzip2-devel bzip2-libs xz-devel boost-devel atlas4.2 安装perl操作步骤步骤 1     执行以下命令下载perl安装包。wget https://www.cpan.org/src/5.0/perl-5.28.0.tar.gz步骤 2     执行如下命令,解压软件包tar -zxvf perl-5.28.0.tar.gz步骤 3     执行如下命令,进入perl安装目录cd perl-5.28.0步骤 4     执行如下命令,配置编译并安装perl源码./Configure -de -Dusethreadsmake -j4make testmake install 4.3 安装boost操作步骤步骤 1     执行以下命令,解压安装包。cd /path/to/BOOST && tar -zxf boost_1_66_0.tar.gz步骤 2     执行以下命令,进入安装目录cd boost_1_66_0步骤 3     执行以下命令,进行编译安装CC=`which gcc` CXX=`which g++` ./bootstrap.sh --prefix=/path/to/BOOST./b2 -j 32./b2 install4.4 安装cmake操作步骤步骤 1     执行以下命令,解压安装包。cd /path/to/CMAKE && tar -zxf cmake-3.17.3.tar.gz步骤 2     执行以下命令,进入安装目录cd cmake-3.17.3步骤 3     执行以下命令,进行编译安装CC=`which gcc` CXX=`which g++` ./bootstrap --prefix=/path/to/CMAKEgmake && gmake install4.5 安装salmon操作步骤步骤 1     执行以下命令,设置环境变量。export PATH=/path/to/CMAKE/bin:$PATH步骤 2     执行以下命令,解压安装包cd /path/to/SALMON && tar -zxf v1.4.0.tar.gz步骤 3     执行以下命令,进入安装目录cd salmon-1.4.0步骤 4     执行以下命令,创建“build”目录并进入“build”目录mkdir build && cd build步骤 5     执行以下命令,进行编译安装CC=`which gcc` CXX=`which g++` cmake -DNO_IPO=TRUE -DCMAKE_C_FLAGS="-O3 -march=armv8.2-a -mtune=tsv110" -DCMAKE_CXX_FLAGS="-O3 -march=armv8.2-a -mtune=tsv110" -DCMAKE_INSTALL_PREFIX=/path/to/SALMON -DBOOST_INCLUDEDIR=/path/to/BOOST/include -DBOOST_LIBRARYDIR=/path/to/BOOST/lib ..make -j && make install4.6 安装htslib操作步骤步骤 1     执行以下命令,解压安装包cd /path/to/HTSLIB && tar -zxf htslib-1.11.tar.gz步骤 2     执行以下命令,进入安装目录mv htslib-1.11 htslib && cd htslib步骤 3     执行以下命令,进行配置。autoheaderautoconfsed -i 's/\-O2/\-O3 -march=armv8.2-a -mtune=tsv110/g' `grep -lr "\-O2" ./`CC=`which gcc` ./configure --prefix=/path/to/HTSLIB步骤 4     执行以下命令,进行编译安装make -j 16make install4.7 安装samtools操作步骤步骤 1     执行以下命令,解压安装包cd /path/to/SAMTOOLS && tar -zxf samtools-1.11.tar.gz步骤 2     执行以下命令,进入安装目录cd samtools-1.11步骤 3     执行以下命令,进行配置。autoheaderautoconfsed -i 's/\-O2/\-O3 -march=armv8.2-a -mtune=tsv110/g' `grep -lr "\-O2" ./`CC=`which gcc` ./configure --prefix=/path/to/SAMTOOLS --with-htslib=/path/to/HTSLIB步骤 4     执行以下命令,进行编译安装。make -j 16make install4.8 安装jellyfish操作步骤步骤 1     执行以下命令,解压安装包cd /path/to/JELLYFISH && tar -zxf jellyfish-2.2.10.tar.gz步骤 2     执行以下命令,进入安装目录cd jellyfish-2.2.10步骤 3     执行以下命令,进行配置。CC=`which gcc` CXX=`which g++` ./configure --prefix=/path/to/JELLYFISH CXXFLAGS='-O3 -std=c++11 -march=armv8.2-a -mtune=tsv110 -flto' CFLAGS='-O3 -march=armv8.2-a -mtune=tsv110 -flto'步骤 4     执行以下命令,进行编译安装。make -j && make install4.9 安装bowtie2操作步骤步骤 1     执行以下命令,解压安装包并进入解压后的目录cd /path/to/BOWTIE2unzip bowtie2-2.3.5.1-source.ziptar -zxf v0.7.0-rc-1.tar.gzunzip master.zipcd bowtie2-2.3.5.1步骤 2     执行以下命令,将SIMDe的文件拷贝到bowtie2cp -a ../simde-0.7.0-rc-1/simde third_party/simde步骤 3     执行以下命令,将sse2neon.h文件拷贝到bowtie2。cp -a ../sse2neon-master/SSE2NEON.h third_party/simde/simde/x86/步骤 4     执行以下命令,进行编译安装。CC=`which gcc` CXX=`which g++` CXXFLAGS='-O3 -march=armv8.2-a -mtune=tsv110' CFLAGS='-O3 -march=armv8.2-a -mtune=tsv110' make NO_TBB=1 POPCNT_CAPABILITY=0 all4.10 安装python操作步骤步骤 1     执行以下命令,解压安装包并进入解压后的目录tar -zxf Python-3.8.0.tgz && cd Python-3.8.0步骤 2     执行以下命令,配置编译信息./configure --prefix=/path/to/PYTHON --enable-shared --enable-loadable-sqlite-extensions --enable-optimization步骤 3     执行以下命令,进行编译安装。make -j && make install4.11 安装cython操作步骤步骤 1     执行以下命令,设置环境变量export PATH=/path/to/PYTHON/bin:$PATHexport LD_LIBRARY_PATH=/path/to/PYTHON/lib:$LD_LIBRARY_PATH步骤 2     执行以下命令,解压安装包并进入解压后的目录tar -zxf Cython-0.29.21.tar.gz && cd Cython-0.29.21步骤 3     执行以下命令,进行编译安装。python3 setup.py build && python3 setup.py install4.12 安装numpy操作步骤步骤 1     执行以下命令,设置环境变量export PATH=/path/to/PYTHON/bin:$PATHexport LD_LIBRARY_PATH=/path/to/PYTHON/lib:$LD_LIBRARY_PATH步骤 2     执行以下命令,解压安装包并进入解压后的目录unzip numpy-1.19.4.zip && cd numpy-1.19.4步骤 3     执行以下命令,进行编译安装。python3 setup.py build && python3 setup.py install ----结束5 获取源码操作步骤步骤 1     下载Trinity、Inchworm、Chrysalis、seqtk-trinity、bamsifter、htslib的安装包”。Trinity下载地址:https://github.com/trinityrnaseq/trinityrnaseq/archive/v2.11.0.tar.gzInchworm下载地址:https://github.com/trinityrnaseq/Inchworm/archive/master.zipChrysalis下载地址:https://github.com/trinityrnaseq/Chrysalis/archive/8ef13ed1fa618186ec3dc04522115c99fdfacda2.zipseqtk-trinity下载地址:https://github.com/trinityrnaseq/seqtk-trinity/archive/f5e229dc164823c3ef14e8b8e2ba7d84c8d80e6c.zipbamsifter下载地址:https://github.com/trinityrnaseq/bamsifter/archive/f034f247d5fa1fd9847c390d99bfd918da7d7739.ziphtslib下载地址:https://github.com/samtools/htslib/archive/1.11.zip步骤 2     使用SFTP工具将安装包上传至服务器“/path/to/TRINITY”目录。----结束6 编译和安装操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令,进入安装目录并解压软件包。cd /path/to/TRINITYtar -zxf v2.11.0.tar.gzunzip master.zipunzip 8ef13ed1fa618186ec3dc04522115c99fdfacda2.zipunzip f034f247d5fa1fd9847c390d99bfd918da7d7739.zipunzip f5e229dc164823c3ef14e8b8e2ba7d84c8d80e6c.zipunzip 1.11.zip步骤 3     执行以下命令,将Inchworm、Chrysalis、seqtk-trinity、bamsifter的源码放入到Tinity源码中相应的目录里。cp -rf Chrysalis-8ef13ed1fa618186ec3dc04522115c99fdfacda2/* trinityrnaseq-2.11.0/Chrysaliscp -rf Inchworm-master/* trinityrnaseq-2.11.0/Inchwormcp -rf seqtk-trinity-f5e229dc164823c3ef14e8b8e2ba7d84c8d80e6c/* trinityrnaseq-2.11.0/trinity-plugins/seqtk-trinitycp -rf bamsifter-f034f247d5fa1fd9847c390d99bfd918da7d7739/* trinityrnaseq-2.11.0/trinity-plugins/bamsiftercp -rf htslib-1.11/* trinityrnaseq-2.11.0/trinity-plugins/bamsifter/htslib步骤 4     执行以下命令,解压文件“ParaFly-0.1.0.tar.gz”。cd trinityrnaseq-2.11.0/trinity-plugins && tar -zxf ParaFly-0.1.0.tar.gz步骤 5     执行以下命令,将x86的编译参数“-m64”替换成“-mabi=lp64”。cd /path/to/TRINITY/trinityrnaseq-2.11.0sed -i '/tar -zxvf ${PARAFLY_CODE}.tar.gz/d' trinity-plugins/Makefilesed -i 's/\-m64/\-mabi=lp64/g' `grep -rl "\-m64" ./` 步骤 6     执行以下命令,添加编译优化参数。sed -i 's/cmake/cmake -DCMAKE_CXX_FLAGS="-O3 -march=armv8.2-a -mtune=tsv110"/g' ./Chrysalis/Makefile ./Inchworm/Makefilesed -i 's/\-fopenmp/-O3 -march=armv8.2-a -mtune=tsv110 -fopenmp/g' ./trinity-plugins/Makefile步骤 7     执行以下命令,设置环境变量export PATH=/path/to/CMAKE/bin:$PATH步骤 8     执行以下命令修改配置vim ./trinity-plugins/bamsifter/sift_bam_max_cov.cpp14 #include <string>15 #include "htslib/sam.h" 原始内容:14 #include "htslib/sam.h"步骤 9     执行以下命令,进行编译安装。make –j安装完后显示如下图所示则表示安装成功:----结束7 运行和验证操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令,设置环境变量。export PATH=/path/to/SAMTOOLS/bin:$PATHexport PATH=/path/to/SALMON/bin:$PATHexport PATH=/path/to/JELLYFISH/bin:$PATHexport PATH=/path/to/BOWTIE2/bowtie2-2.3.5.1:$PATHexport LD_LIBRARY_PATH=/path/to/PYTHON/lib:$LD_LIBRARY_PATHexport PATH=/path/to/PYTHON/bin:$PATHexport PATH=/path/to/TRINITY/trinityrnaseq-2.11.0:$PATHexport LD_LIBRARY_PATH=/path/to/HTSLIB/lib:$LD_LIBRARY_PATH步骤 3     执行以下命令,进入算例目录并解压算例。cd /path/to/CASEgzip -d SRR3050898_1.fastq.gz && gzip -d SRR3050898_2.fastq.gz步骤 4     执行以下命令调整JAVA最大Heap的大小为30G。sed -i 's/bflyHeapSpaceMax = "10G"/bflyHeapSpaceMax = "30G"/g' /path/to/TRINITY/trinityrnaseq-2.11.0/Trinity步骤 5     执行以下命令,运行算例。{ time Trinity --seqType fq --left SRR3050898_1.fastq --right SRR3050898_2.fastq --CPU 128 --max_memory 200G --output trinity_kp_`date '+%Y%m%d%H%M%S'`; } 2>&1 | tee -a `hostname`_`date '+%Y%m%d%H%M%S'`.log结果图所示: ----结束
  • [技术干货] STAR-Fusion移植指南 (CentOS 7.6)
    1 介绍STAR-Fusion是一款基于STAR比对结果进行融合基因鉴定的软件。开发语言:perl一句话描述:融合基因鉴定开源协议:BSD-3建议使用版本为“STAR-FUSION-v1.6.0”。2 环境要求硬件要求硬件要求如表2-1所示。表2-1 硬件要求项目说明CPUKunpeng 920 软件要求软件要求如表2-2所示。表2-2 软件要求项目版本下载地址STAR-FUSION1.6.0https://github.com/STAR-Fusion/STAR-Fusion/releases/download/v1.6.0/STAR-Fusion-v1.6.0.FULL.tar.gz测试算例文件GRCh37_gencode_v19_CTAT_lib_Mar012021.plug-n-play.tar.gzhttps://data.broadinstitute.org/Trinity/CTAT_RESOURCE_LIB/GRCh37_gencode_v19_CTAT_lib_Mar012021.plug-n-play.tar.gz 操作系统要求操作系统要求如表2-3所示。表2-3 操作系统要求项目版本下载地址CentOS7.6https://www.centos.org/download/Kernel4.14.0-115.el7a.0.1https://www.centos.org/download/3 移植规划数据本章节给出MM5软件在移植过程中涉及到的相关软件安装规划路径的用途及详细说明。表3-1 移植规划数据序号软件安装规划路径用途说明1/path/to/KPGCC鲲鹏GCC的安装规划路径参考《鲲鹏编译器》中“安装鲲鹏GCC”章节,将鲲鹏GCC安装到规划路径2/path/to/STAR-FUSIONSTAR-FUSION的安装规划路径。这里的安装规划路径只是一个举例说明,建议部署在共享路径中。现网需要根据实际情况调整,后续章节凡是遇到安装路径的命令,都以现网实际规划的安装路径为准进行替换,不再单独说明。4 配置编译环境前提条件使用SFTP工具将各安装包上传至服务器对应目录下。配置流程表4-1 配置流程序号配置项说明1开源环境搭建参考《HPC解决方案 基础环境搭建指导书》中“单机场景环境搭建”章节。2鲲鹏编译器环境搭建参考《鲲鹏编译器用户指南》。----结束5 获取源码操作步骤步骤 1     下载STAR-FUSION安装包“STAR-Fusion-v1.6.0.FULL.tar.gz”。STAR-FUSION安装包下载地址:https://github.com/STAR-Fusion/STAR-Fusion/releases/download/v1.6.0/STAR-Fusion-v1.6.0.FULL.tar.gz。步骤 2     使用SFTP工具将安装包上传至服务器“/path/to/STAR-FUSION”目录。----结束6 编译和安装操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令解压并进入源码包。tar -zxvf STAR-Fusion-v1.6.0.FULL.tar.gz && cd STAR-Fusion-v1.6.0步骤 3     执行以下命令编译STAR-Fusion。make -j12 ----结束7 运行和验证操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令下载测试所需的文件。cd /optwget https://data.broadinstitute.org/Trinity/CTAT_RESOURCE_LIB/GRCh37_gencode_v19_CTAT_lib_Mar012021.plug-n-play.tar.gz步骤 3     执行以下命令解压算例文件。tar -zxvf GRCh37_gencode_v19_CTAT_lib_Mar012021.plug-n-play.tar.gz步骤 4     执行以下命令测试程序。cd /path/to/STAR-Fusion-v1.6.0/testinggzip -d reads_1.fq.gzgzip -d reads_2.fq.gz../STAR-Fusion --left_fq reads_1.fq --right_fq reads_2.fq --genome_lib_dir /opt GRCh37_gencode_v19_CTAT_lib_Mar012021.plug-n-play/ctat_genome_lib_build_dir --CPU 12 执行完毕后出会出现如下回显,并且在当前目录下生成一个“STAR-Fusion_outdir”目录,输出文件全部在该目录中: * STAR-Fusion complete. See output: star-fusion.fusion_candidates.tsv(or .abridged.tsv version) ----结束
  • [版主交流] 【华为云社区外部版主】精彩内容展示(上)
    2022年7月Devcloud版块作者:氟西汀《用c语言组合排列实现0-10的奇数问题——原创》                             《FAQ—DevCloud论坛(问题求助)总结-7月》作者:赫塔穆勒《7月份技术干货贴总结分享》                        《记一次大批量数据质检,心得分享。》  作者:加油O幸福《客服系统敏感词过滤功能开发》应用服务版块作者:仙女本仙《哈夫曼树的实现-python》《FAQ—应用服务论坛(问题求助)总结-7月-仙女本仙》                      作者:多米诺的古牌《应用服务版块各种应用教程贴之汇总贴》《【原创】Spring Security安全框架初识》《Spring Security实现登陆以及权限认证》《js的相关知识》《@ResponseBody注解的总结》《关于File文件的相关知识》《$.ajax中get和post请求的小知识点》《InputStream和OutputStream流的使用》EI企业智能版块作者:黄生                       《ModelArts模型到端侧的落地 - ModelBox端云协同AI开发套件(RK3568)体验》    《EI企业智能2022年7月高热贴合集》作者:运气男孩《基于ModelArts生成“最伟大的作品”歌词》《基于ModelArts训练自动驾驶-车道线检测模型》《ModelArts热门模型合集》昇腾版块作者:张辉《昇腾论坛2022年原创技术干货整理(2022.6.19-2022.7.16)》      《【MindSpore易点通·漫游世界】在Jetson AGX Orin上安装MindSpore 1.7.0 GPU版》《【MindSpore易点通·漫游世界】在Jetson AGX Orin上源码编译安装MindSpore 1.8.0 GPU版》《【CANN体验官第五期】【CANN训练营2022年第二期】CANN目标检测与识别一站式方案体验纪实》《CUDA编程(一)在WSL ubuntu 20.04上安装CUDA环境》《CUDA编程(二)CUDA代码执行原理》《CUDA编程(三)线程层次》《CUDA编程(四)Global Memory》《CUDA编程(五)Event》《CUDA编程(六)存储单元》《在200DK上玩转CANN目标检测与识别一站式方案》《玩转CANN目标检测与识别一站式方案 学习笔记》《CANN目标检测与识别一站式方案体验纪实》《昇思大模型体验平台体验记录》作者:小小啦啦《昇腾7月问题求助合计》《UML(统一建模语言)建模工具及类图画法的详细介绍》IoT物联网版块作者:DS小龙哥《基于STM32设计的智能家居控制系统(华为云IOT+语音控制+环境检测)》   《GPS原始坐标转百度地图坐标(纯C代码)》     《STM32+BH1750光敏传感器获取光照强度》  《STM32+MFRC522完成IC卡号读取、密码修改、数据读写》《STM32+HC05串口蓝牙设计简易的蓝牙音箱》《基于STM32单片机设计的红外测温仪(带人脸检测)》《STM32+MPU6050设计便携式Mini桌面时钟(自动调整时间显示方向)》《STM32+OLED显示屏制作指针式电子钟》《STM32+ULN2003驱动28BYJ4步进电机(根据圈数正转、反转)》《STM32F103ZE+SHT30检测环境温度与湿度(IIC模拟时序)》《STM32F103实现IAP在线升级应用程序》《STM32封装ESP8266一键配置函数:实现实现AP模式和STA模式切换、服务器与客户端创建》《STM32入门开发 NEC红外线协议解码(超低成本无线传输方案)》《STM32入门开发 编写DS18B20温度传感器驱动(读取环境温度、支持级联)》《STM32入门开发 采用IIC硬件时序读写AT24C08(EEPROM)》《基于STM32+华为云IOT设计的智能鱼缸》《嵌入式单片机-STM32物联网开发案例整理》作者:中华小能能《stm32+AT指令+ESP8266接入华为云物联网平台并完成属性上报与下发的命令处理》作者:DevFeng《nginx编译安装操作手册》《1267 - Illegal mix of collations (utf8_croatian_ci,IMPLICIT) and》《7月份物联网原创博客合集》智慧园区版块作者:智慧园区张师傅《智慧园区BBS论坛七月技术贴汇总一览(七月持续更新)》鲲鹏版块作者:乌龟哥哥《华为云鲲鹏论坛7月热门问题汇总》                 作者:Jack20《路由与交换VPN基础笔记分享》《鲲鹏7月精彩资讯内容汇总看》2022年6月Devcloud版块作者:氟西汀《python练习题-原创 难度从小到中到大~欢迎评论交流》                   《数据结构之线性表实现实验—原创》 《实时更新*FAQ—DevCloud论坛(问题求助)总结-6月》作者:赫塔穆勒《springboot 部分注解解析》                        《华为数据库技术干货及问题汇总【省心省时一贴看完!!!】》  作者:加油O幸福《应用魔方AppCube问题汇总》《springboot集成IM即时通讯》应用服务版块作者:仙女本仙    《基于华为云产品上线部署---qqfarm—原创》          《FAQ—应用服务论坛(问题求助)总结1月-6月 集合》           EI企业智能版块作者:黄生                       《强大的视频抠图(RVM)无障碍使用》    《EI企业智能2022年6月高热贴合集》作者:运气男孩《基于ModelArts实现"魔法换天"视频操作》《ModelArts最新动态合集》昇腾版块作者:张辉《昇腾论坛2022年原创技术干货整理(2022.5.19-2022.6.18)》      作者:多米诺的古牌《昇腾论坛六月问题解决汇总贴》《Redis持久化机制之RDB》作者:小小啦啦《昇腾趣味学习案例汇总》IoT物联网版块作者:DS小龙哥《基于STM32+华为云IOT设计的老人防摔倒报警系统》   《基于物联网设计的铂电阻气体测温仪(华为云IOT)》     《C语言-基本数据类型与位运算》  《C语言-语句(if,for,while,switch,goto,return,break,continue)》《C语言-数组》《C语言-函数的定义、声明、传参》《C语言-一维指针定义与使用》《C语言-内联函数、递归函数、指针函数》《C语言-void类型作为万能指针类型》《C语言-指针作为函数形参类型》《C语言-字符串处理》《C语言-结构体与位域》《C语言-学生管理系统(结构体+数组实现)》《C语言-预处理(#define、#if...)》《基于STM32设计的智能家居控制系统(华为云IOT+语音控制+环境检测)》《C语言程序设计全套知识点合集(物联网、单片机底层开发必备)》作者:星恒《6月IOT论坛干货合集》作者:中华小能能《基于TCP/IP协议的物联网安卓应用开发基础教程(Android Studio开发)》作者:DevFeng《pyautogui基本使用》《6月份IOT问题合集》智慧园区版块作者:智慧园区张师傅《智慧园区BBS论坛六月技术贴汇总一览(六月持续更新)》华为云Stack版块作者:huohaohao《华为云---云产品之计算》          《Mysql主从复制配置》           鲲鹏版块作者:乌龟哥哥《基于鲲鹏亲和开发框架进行原生开发》                 《第一讲:鲲鹏DevKit工具基础知识读书笔记--鲲鹏DevKit工具基础知识》《第二讲:鲲鹏代码迁移工具基础知识读书笔记》《基于鲲鹏亲和开发框架进行原生开发》《第三讲:手把手带你使用鲲鹏代码迁移工具实现源码迁移笔记》《第三讲:鲲鹏代码迁移工具基础知识笔记--鲲鹏迁移实战》《linux存储结构与磁盘划分》《浅谈鲲鹏DevKit工具》《华为云鲲鹏论坛6月热门问题汇总》作者:Jack20《好课推荐 | 六大模块,带你快速入门openGauss 数据库》《什么是GO类型系统》《GO语言类型系统之为类型添加方法笔记分享》《GO语言类型系统之值语义和引用语义笔记分享》《GO语言类型系统之结构体与初始化笔记分享》  2022年5月Devcloud版块作者:氟西汀《python之future对象-利用自定义函数、遍历来实现搜索~》           《FAQ—DevCloud论坛(问题求助)总结-5月》 作者:赫塔穆勒《PostgreSQL-14.3稳定版SQL语法》                        《【速进】再也不用爬楼啦。3-5月份所有AppCube已解决及之前经典问题整理汇总》  作者:加油O幸福《华为大赛集合》《5分钟玩转AI语音合成》应用服务版块作者:仙女本仙    《社区论坛活动集合——5月-活动全集》          《如何利用python来实现简单的智能对话?》           EI企业智能版块作者:黄生                       《强大的视频抠图(RVM)在AI Gallery的Notebook案例使用》    《EI企业智能2022年5月高热贴合集》作者:运气男孩《基于华为云ModelArts深度学习算法的语音识别实践》《ModelArts新人学习合集(建议收藏)》作者:可爱又积极《使用kenlm训练语言模型,并对句子进行打分》昇腾版块作者:张辉《【MindSpore易点通】体验 MindSpore v1.7 之 MindSpore Vision》《玩转Atlas 200DK(一)分设环境之开发环境准备》《玩转Atlas 200DK(二)分设环境之运行环境准备》《玩转Atlas 200DK(三)分设环境之运行环境准备(dd镜像方式)》《玩转Atlas 200DK(四)MindStudio安装与配置》《玩转Atlas 200DK(五)OpenCV的安装》《玩转Atlas 200DK(六)番外篇:寻找失去的网卡》《玩转Atlas200DK(七)合设环境准备》《玩转Atlas200DK(八)完成CANN训练营进阶班大作业》《玩转Atlas200DK(九)ATC模型转换》《玩转Atlas 200DK(十)安装华为AI框架MindSpore》《玩转Atlas200DK(十一)番外篇:TF卡扩容》《玩转Atlas200DK(十二)更好的TF卡扩容方式》《玩转Atlas200DK(十三)尝试昇思跑LeNet》《玩转Atlas200DK(十四)玩转CSI摄像头》《MindSpore漫游世界(总目录,不断更新中)》《Windows 11安装TinyMS 0.3.1》《昇腾论坛2022年原创技术干货整理(2022.4.18-2022.5.18)》《【易用性SIG】MindSpore漫游世界》作者:多米诺的古牌《昇腾论坛五月问题解决汇总贴》《@RequestParam和@PathVariable的区别和使用》作者:小小啦啦《ModelZoo提供可用的深度学习算法网络》《Python中OpenCV的基础知识》IoT物联网版块作者:DS小龙哥《基于CC2530和数字温湿度传感器的温湿度采集系统(报告) 》   《GB2312、GBK汉字取模与字库偏移地址的计算-单片机上常用》     《华为云设备接入IoTDA+应用侧开发案例整理分享》  《基于STM32+华为云IOT设计智能称重系统》《基于STM32+华为云IOT设计的智慧路灯》《基于STM32+华为云IOT设计的智能防盗单车锁》作者:星恒《5月IoT论坛资料汇总》作者:中华小能能《微信小程序调用华为云物联网平台的接口【基础教程】》作者:DevFeng《四款华为云严选市场1-100元以内的物联网应用产品》《eth0,lo,virbr0分别是什么》智慧园区版块作者:智慧园区张师傅    《智慧园区BBS论坛五月技术贴汇总一览(五月持续更新)》华为云Stack版块作者:huohaohao《华为伙伴暨开发者大会2022活动指南》          《Oracle常见错误代码及解决方法》           鲲鹏版块作者:乌龟哥哥《华为云鲲鹏论坛5月热门问题汇总》                 作者:Jack20《GO语言问题追踪和调试笔记分享》《GO语言错误处理之panic()和recover()函数笔记分享》《GO语言错误处理之defer接口笔记分享》《GO语言错误处理之error接口笔记分享》  2022年4月Devcloud版块作者:氟西汀《解析policy.json-原创》                         《FAQ—DevCloud论坛(问题求助)总结-4月》 作者:赫塔穆勒《MySQL 的数值数据类型》                        《【速进】四月活动合集【升级版,更全面】,我又来了。全论坛有奖活动合集,只看这一篇就够啦。!!!》  作者:加油O幸福《华为云Devcloud论坛4月AppCube热门问题汇总》应用服务版块作者:仙女本仙    《来体验下python代码带给你的编程体验~【原创】》          《4月论坛活动最新汇总全!快来围观》           EI企业智能版块作者:黄生                       《RVM(视频人像抠图)论文介绍》                                      《EI企业智能2022年4月高热贴合集》作者:@Wu《ModelArts AI和你一起在这个春天挖野菜》                      作者:运气男孩《使用A3C算法玩乒乓球游戏案例实操》《AI Gallery 精彩NoteBook案例合集》作者:可爱又积极《LSTM + Transformer (RTLM)语言模型》昇腾版块作者:张辉《【CANN训练营进阶班应用课笔记】大作业2实战趟坑记录(基于Atlas 200DK)》《【CANN训练营进阶班应用课笔记】大作业附加题实战趟坑记录(基于Atlas 200DK)》《【Atlas200DK】TinyMS 0.3.1安装手记》《在WSL的Ubuntu 20.04上一键安装MindSpore GPU版本的尝试》《ubuntu虚拟机网卡突然找不到的解决方案》《CANN 5.1? CANN 5.0.4?张小白又一次的折腾手记》《如何给dd镜像制作的Atlas200DK扩容》《张小白教你如何给Atlas 200DK扩容(另一种方式,跟前面不同)》《【CANN训练营新手班应用课笔记】大作业实战记录(基于Atlas 200DK)》《昇腾论坛2022年原创技术干货整理(2022.3.20-2022.4.17)》《【MindSpore漫游世界】在Jetson Orin上体验MindSpore 1.6.1》作者:多米诺的古牌《昇腾论坛四月问题解决汇总贴》作者:Tianyi_Li《【2022年第一期 CANN训练营进阶班应用课】第一次大作业》《【2022年第一期 CANN训练营进阶班应用课】第二次大作业》《【2022年第一期 CANN训练营进阶班应用课】附加题——媒体数据处理+模型推理》《【2022年第一期 CANN训练营进阶班模型课】第一次大作业和附加内容》IoT物联网版块作者:DS小龙哥《基于STM32+华为云IOT设计的云平台监控系统》   《STM32+华为云IOT设计的动态密码锁》               《深入学习华为云IOT云平台,了解设备上云,数据处理、应用开发【合集】》  《基于STM32+华为云IOT设计的酒驾监控系统》《采用ENC28J60以太网模块移植UIP、LWIP协议完成上云过程》《RC522射频卡模块与IC卡完成充值消费查询的技术实现思路》作者:星恒《4月IoT物联网论坛问题求助和技术干货汇总》作者:中华小能能《华为云IOT的Android应用开发【详细教程】》《详细教程:应用侧开发Java Demo》作者:DevFeng《4月-5月华为云热门活动一览》鲲鹏版块作者:乌龟哥哥《鲲鹏linux操作系统常用命令》                 《华为云鲲鹏论坛4月热门问题汇总》       作者:Jack20《路由与交换IPsec VPN 笔记》《数据结构考点笔记》《计算机算法考点笔记》《常用DOS命令笔记之磁盘操作类命令分享(下)》  2022年3月Devcloud版块作者:氟西汀《js单线程理解笔记-原创》                    《快来围观最新DevCloud论坛问题总结来啦~[3月]》《多端口和单臂路由器互联VLAN实验》                    作者:赫塔穆勒《三月份,全平台正在进行的活动合集,小伙伴们进来瞅瞅啦。!! 》  作者:加油O幸福《3月份论坛活动及中奖汇总》   应用服务版块作者:仙女本仙    《js的内存管理原理及概念理解》                   《2022-03活动论坛总结来喽~》            EI企业智能版块作者:黄生《AI做阅读理解》                                                                              《【EI企业智能】2022年3月高热贴合集》      作者:运气男孩《手把手教您体验ModelArts Notebook》《手把手教你玩转汤圆表情包》《EI论坛ModelArts技术干货FAQ合集》             《一键体验AI口红试色》作者:可爱又积极《轻量模块ECANet----通道注意力超强改进》昇腾版块作者:张辉《昇腾论坛2022年原创技术干货整理(不含MindSpore论坛,截止到2022.3.19)》《【CANN训练营进阶班应用课笔记】2022年第一季进阶班参与纪实》《昇思MindSpore TechDay Day1》《昇思MindSpore TechDay Day2》《昇思MindSpore TechDay Day3》《【CANN训练营进阶班应用课笔记】大作业1实战趟坑记录》《【CANN训练营进阶班应用课笔记】大作业1实战趟坑记录(基于Atlas 200DK)》《Atlas200DK安装MindSpore 1.6.1折腾纪实》《AI1S服务器安装MindSpore 1.6.1折腾纪实》《MindSpore漫游世界》作者:多米诺的古牌《昇腾论坛已结帖问题整理汇总帖》IoT物联网版块作者:DS小龙哥《BC20-NBIOT模块通过MQTT协议连接华为云服务器调试过程》            《关于硬件设备上云,应用侧开发等相关知识点的文章合集》《基于华为云物联网平台设计的浇花神器(STM32设备)》《ESP8266串口WIFI编程介绍》《实现STM32在线程序升级功能》《物联网应用开发实践案例-智慧农业》作者:星恒《从零开始学习物联网资料汇总》作者:DevFeng《IoT物联网论坛三月问题技术与资讯整理汇总帖》鲲鹏版块作者:乌龟哥哥《华为云鲲鹏论坛3月热门问题汇总》                                                         《华为数字化转型实践》                                                  作者:Jack20《常用DOS命令笔记分享(一)》《常用DOS命令笔记分享(二)》《常用DOS命令笔记之磁盘操作类命令分享(上)》《DOS命令笔记之文件操作类命令分享(上)》《DOS命令笔记之文件操作类命令分享(下)》2022年2月昇腾版块作者:张辉《Jetson Nano安装MindSpore 1.6 CPU版记录》《Jetson Nano源码编译MindSpore 1.6 GPU版编译记录 》《Jetson Nano源码编译MindSpore 1.6 GPU版编译的再次尝试(连载中)》                《树莓派也可以装MindSpore 1.6.0 CPU版》《树莓派源码安装gcc 7.3.0》《树莓派4B源码编译Mindspore 1.60CPU版本》作者:多米诺的古牌《Redis基础知识》IoT物联网版块作者:中华小能能《教你如何使用esp8266接入华为云物联网平台(IOTDA)(Arduino IDE开发)》                作者:DS小龙哥《基于华为云IoT设计的健康管理系统并完成应用侧开发 》《基于华为云IoT设计的云端绿化管理系统(小熊派开发板) 》《华为云IOT应用侧开发思路-开发上位机与云端交互(桌面软件、小程序、手机APP) 》作者:DevFeng《华为云物联网学习路线》作者:JeckXu666《小熊派实现鸿蒙开机界面(LiteOS+LVGL)》《小熊派LiteOS移植LVGL 》《小熊派移植 LiteOS-M(MDK)  》《小熊派低功耗串口接受数据异常》《LiteOS + PahoMQTT 连接华为云》EI企业智能版块作者:黄生《盘古大模型和工业化的AI开发 》                                                               作者:运气男孩《基于ModelArts实现视频天空背景转换 》《ModelArts自动学习实现北京冬奥会与残奥会吉祥物识别》 作者:可爱又积极《kaldi中文语音识别---multi_cn案例整理及模型对比》应用服务版块作者:仙女本仙    《Shell的echo命令教程(原创)  》               数据库版块作者:窗台    《函数、匿名函数、立即执行函数  》                     Devcloud版块作者:氟西汀《如何利用华为ensp实现internet接入? 》                      《快来围观最新DevCloud论坛问题总结来啦~[2月]  》作者:赫塔穆勒《Mysql架构与内部模块(一)  》                       作者:加油O幸福《你们心心念念的华为云论坛活动汇总,安排*.*(二月份活动) 》        鲲鹏版块作者:乌龟哥哥《linux 鲲鹏服务器入门指令 》                    《几种数据库存储引擎对比 》                 《华为云鲲鹏论坛2月热门问题汇总》作者:Jack20《GRE VPN 技术原理笔记 》《路由与交换HA高可靠性概述笔记》《信息安全和加密学》《鲲鹏2月热点资讯盘点》作者:运维@大白鹅《if-elif-else 语句 》《match-case语句》2022年1月 Devcloud版块作者:客《如何利用pycharm制作一个简单的贪吃蛇小游戏  》《2022新年祝福代码诠释(1)》《pycharm之爬虫教程(仅限于技术交流)》《如何实现centos7中俩个服务器或三个及三个以上的服务器免密登录呢?》 《华为ensp网络之如何实现集线器和换机工作理验证实验?》《华为ensp网络之如何实现交换机的vlan配置?》作者:加油O幸福《DevCloud板块学习资料汇总 》EI企业智能版块作者:黄生《Text-To-SQL:不会SQL也能统计数据》       作者:运气男孩《ModerArts常见问题解决合集》昇腾版块作者:张辉   《昇腾论坛已解决问题整理V0.1》                                                              《张小白AI博文知识点串烧V20220105  》      鲲鹏版块作者:乌龟哥哥《新手入门鲲鹏入门资料汇总(文章篇) 》                                                    《新手入门鲲鹏入门资料汇总(实验篇) 》    
  • [技术干货] 鲲鹏上编译mongodb 4.4版本报build arm64/crc32-arm64.o failed: Error解决方法
    【问题描述】鲲鹏上编译mongodb 4.4版本报build/opt/third_party/wiredtiger/src/checksum/arm64/crc32-arm64.o failed: Error 1错误,详细报错如下:scons: *** [build/opt/third_party/wiredtiger/src/checksum/arm64/crc32-arm64.o] Error 1scons: building terminated because of errors.build/opt/third_party/wiredtiger/src/checksum/arm64/crc32-arm64.o failed: Error 1【解决方法】在编译命令中增加CFLAGS="-march=armv8-a+crc -mtune=generic",详细命令参考如下:python3 buildscripts/scons.py MONGO_VERSION=4.4.0 install-all CFLAGS="-march=armv8-a+crc -mtune=generic" -j64 DESTDIR=/home/local/mongo --disable-warnings-as-errors
  • [优秀实践] 一图读懂鲲鹏BoostKit分布式存储全局缓存
    ![51eb34380a6831a60d841eb37de68a1a.jpg](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20223/2/1646222163748307146.jpg) 转自华为云微信公众号
  • [交流吐槽] 有啦有啦,闹元宵 · 猜鲲鹏灯谜,华为音箱、码豆等你来拿!结果出来啦
    一缕阳光_666、为伊疯狂你们关注的活动结果出来了,你们都好厉害,小糖饼得了一个音箱还有1万5千豆啊,真让人羡慕。活动链接:https://bbs.huaweicloud.com/forum/thread-178634-1-1.html恭喜以下用户获奖!请获奖实物奖品的用户于3月6日前尽快填写收奖信息,逾期未反馈视为自动放弃奖品!点击填写收奖信息:https://devcloud.huaweicloud.com/expertmobile/qtn?id=26a2f3e274ba4f1b924ca415fb6f49fd
  • [问题求助] 【鲲鹏ECS】【编译适配hudi-0.10.0】编译打包报错问题
    【功能模块】基础环境:centos 7.9 openjdk-1.8  maven-3.5.4 hudi-0.10.0【操作步骤&问题现象】wget https://dlcdn.apache.org/hudi/0.10.0/hudi-0.10.0.src.tgz --no-check-certificatetar -xf hudi-0.10.0.src.tgzcd hudi-0.10.0mvn clean package -DskipTests -DskipITs -Dcheckstyle.skip=true -Drat.skip=true -Dhadoop.version=3.2.2 -Dscala-2.12 -Dspark3 -Pflink-bundle-shade-hive3【截图信息】boacuo报错:qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory鲲鹏arm的环境,肯定没有这个文件,要如何适配
  • [问题求助] 鲲鹏服务器安装麒麟系统,通过快照恢复磁盘,网卡地址丢失,无法恢复
    【功能模块】网卡模块【操作步骤&问题现象】1、鲲鹏服务器安装私有得麒麟系统,做了系统盘和数据盘得快照,然后进行快照恢复,无法连接服务器,通过vnc进入服务器系统看不到网卡得信息,2、进入到网卡得配置文件发现现在使用得网卡和系统中存在得网卡不一致,可以看截图信息【截图信息】【日志信息】(可选,上传日志内容或者附件)求助有没有遇到问题得朋友如何解决。
  • [技术干货] 鲲鹏GPU生态应用NAMD移植指南 (CentOS 8.2)
    1.1 介绍NAMD(NAnoscale Molecular Dynamics)是用于分子动力学模拟的计算机软件,使用Charm++并行编程模型编写。它以其并行效率而著称,通常用于模拟大型系统(数百万个原子)。NAMD是由伊利诺伊大学厄巴纳香槟分校的理论和计算生物物理学组(TCB)和并行编程实验室(PPL)合作开发的。关于NAMD的更多信息请访问NAMD官网。语言:C++。一句话描述:分子动力学模拟的开源程序包。开源协议:自定义开源协议。建议的版本建议使用的版本为“NAMD 2.14 ”。1.2 环境要求硬件要求硬件要求如表4-1所示。表1-1 硬件要求项目说明CPU鲲鹏920处理器。 软件要求软件要求如表4-2所示。表1-2 软件要求项目版本下载地址NAMD2.14https://www.ks.uiuc.edu/Research/namdFFTW3.3.8http://www.fftw.org/fftw-3.3.8.tar.gz毕昇编译器1.3.3https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_compiler/bisheng-compiler-1.3.3-aarch64-linux.tar.gzHyper MPI1.1.1https://support.huaweicloud.com/usermanual-kunpenghpcs/userg_huaweimpi_0010.htmlNVIDIA CUDA组件11.4https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux_sbsa.run测试算例stmv_nve_cudahttps://www.ks.uiuc.edu/Research/namd/utilities/stmv.tar.gz 操作系统要求操作系统要求如表4-3所示。表1-3 操作系统要求项目版本下载地址CentOS8.2https://vault.centos.org/8.2.2004/isos/aarch64/CentOS-8.2.2004-aarch64-dvd1.isoKernel4.18.0-193https://vault.centos.org/8.2.2004/BaseOS/Source/SPackages/kernel-4.18.0-193.el8.src.rpm 1.3 移植规划数据本章节给出NAMD软件在移植过程中涉及到的相关软件安装规划路径的用途及详细说明。表1-4 移植规划数据序号软件安装规划路径用途说明1-基础环境搭建中的各安装包安装路径。参考《HPC解决方案 基础环境搭建指导书》中“安装规划数据”章节。2/path/to/FFTWFFTW的安装规划路径。这里的安装规划路径只是一个举例说明,建议部署在共享路径中。现网需要根据实际情况调整,后续章节凡是遇到安装路径的命令,都以现网实际规划的安装路径为准进行替换,不再单独说明。3/path/to/NAMDNAMD的安装规划路径。4/path/to/CASENAMD的测试规划路径。 1.4 配置编译环境前提条件使用SFTP工具将各安装包上传至服务器对应目录下。配置流程表1-5 配置流程序号配置项说明1基础环境搭建参考《HPC解决方案 基础环境搭建指导书》中“集群场景环境搭建”章节。2安装FFTW和TCL参考1.4.1 安装FFTW和TCL。3禁用nouveau驱动参考1.4.2 禁用nouveau驱动。4安装NVIDIA CUDA组件参考1.4.3 安装NVIDIA CUDA组件。5安装毕昇编译器参考1.4.4 安装毕昇编译器。 1.4.1 安装FFTW和TCL操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令安装FFTW、TCL安装包。yum -y install fftw-devel tcl-devel----结束1.4.2 禁用nouveau驱动操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令查看nouveau驱动是否已禁用。lsmod |grep nouveaul   若有回显信息,表示nouveau驱动未禁用,则执行步骤3。l   若无回显信息,表示nouveau驱动已禁用,则结束操作。步骤 3     执行以下命令禁用nouveau驱动。1.       新建文件“disable-nouveau.conf”。vi /etc/modprobe.d/disable-nouveau.conf2.       按“i”进入编辑模式,添加如下内容。blacklist nouveauoptions nouveau modeset=03.       按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。步骤 4     执行以下命令备份并生成新的“initramfs”文件cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.imgdracut -f /boot/initramfs-$(uname -r).img $(uname -r)步骤 5     执行以下命令重启机器。reboot----结束1.4.3 安装NVIDIA CUDA组件操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令获取NVIDIA CUDA组件。wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux_sbsa.run步骤 3     执行以下命令安装NVIDIA CUDA组件。sudo shcuda_11.4.0_470.42.01_linux_sbsa.run步骤 4     执行以下命令进行验证。ls -l /usr/local/cuda-11.4/步骤 5     执行以下命令配置CUDA的环境变量。export CUDA_HOME=/usr/local/cuda-11.4export PATH=/usr/local/cuda-11.4/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64:$LD_LIBRARY_PATH----结束1.4.4 安装毕昇编译器操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令获取毕昇编译器软件包。wget https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_compiler/bisheng-compiler-1.3.3-aarch64-linux.tar.gz步骤 3     执行以下命令创建毕昇编译器安装目录(这里以/opt/compiler为例)。mkdir -p /opt/compiler步骤 4     执行以下命令将毕昇编译器压缩包拷贝到安装目录下。cp -r bisheng-compiler-1.3.3-aarch64-linux.tar.gz /opt/compiler步骤 5     执行以下命令进入压缩包目录。cd /opt/compiler步骤 6     执行以下命令解压缩软件包。tar -zxvf bisheng-compiler-1.3.3-aarch64-linux.tar.gz步骤 7     执行以下命令配置毕昇编译器的环境变量。export PATH=/opt/compiler/bisheng-compiler-1.3.3-aarch64-linux/bin:$PATHexport LD_LIBRARY_PATH=/opt/compiler/bisheng-compiler-1.3.3-aarch64-linux/lib:$LD_LIBRARY_PATHexport CC=clang CXX=clang++ FC=flang步骤 8     执行以下命令验证。clang -v若返回结果已包含毕昇编译器版本信息,说明安装成功。----结束1.5 获取源码操作步骤 步骤 1     下载NAMD安装包,需要注册账号。下载地址:https://www.ks.uiuc.edu/Research/namd步骤 2     使用SFTP工具将NAMD安装包上传至服务器“/path/to/NAMD”目录。----结束1.6 编译和安装操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令进入主程序安装目录。cd /path/to/NAMD步骤 3     执行以下命令解压NAMD安装包。tar -xvf NAMD_2.14_Source.tar.gz步骤 4     执行以下命令进入解压后的NAMD_2.14_Source目录。cd NAMD_2.14_Source步骤 5     执行以下命令解压charm-6.10.2.tar安装包。tar xvf charm-6.10.2.tar步骤 6     执行以下命令进入解压后的charm-6.10.2目录。cd charm-6.10.2步骤 7     执行以下命令进行配置。./build charm++ multicore-arm8 clang  flang  --with-production步骤 8     执行以下命令进入解压后路径。cd  multicore-arm8-flang-clang/tests/charm++/megatest/步骤 9     执行以下命令安装组件。make pgm./pgm +p4步骤 10     执行以下命令修改FFTW、TCL配置项。1.       复制FFTW3的模板。cd /path/to/NAMDcp arch/Linux-x86_64.fftw3 arch/Linux-ARM64.fftw2.       打开arch/Linux-ARM64.fftw文件。vi arch/Linux-ARM64.fftw3.       按“i”进入编辑模式,修改将路径FFTDIR修改为/usr。FFTDIR=/usr4.       按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。5.       打开arch/Linux-ARM64.tcl文件。vi arch/Linux-ARM64.tcl6.       按“i”进入编辑模式,将路径TCLDIR修改为/usr,库文件版本修改为-ltcl8.6。TCLDIR=/usrTCLLIB=-L$(TCLDIR)/lib -ltcl8.6 -ldl -lpthread7.       按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。步骤 11     执行以下命令编译NAMD。./config Linux-ARM64-g++ --charm-arch multicore-arm8-flang-clang --with-cuda --cxx clang++ --cc clangcd Linux-ARM64-g++/make编译完成后在当前目录下生成namd2执行程序。----结束1.7 运行和验证操作步骤步骤 1     使用PuTTY工具,以root用户登录服务器。步骤 2     执行以下命令创建工作目录。mkdir -p path/to/CASE步骤 3     执行以下命令进入工作目录。cd /path/to/CASE步骤 4     执行以下命令获取算例和二进制文件。wget https://www.ks.uiuc.edu/Research/namd/utilities/stmv.tar.gzwget https://www.ks.uiuc.edu/Research/namd/2.13/benchmarks/stmv_nve_cuda.namd步骤 5     执行以下命令解压stmv.tar.gz。tar xvf stmv.tar.gz步骤 6     执行以下命令把“stmv_nve_cuda.namd”文件拷贝到stmv目录下。cp stmv_nve_cuda.namd stmv步骤 7     执行以下命令运行算例, 开始测试。cd stmv/path/to/NAMD/NAMD_2.14_Source/Linux-ARM64-g++/namd2 +p96 +setcpuaffinity +maffinity +isomalloc_sync +devices 0,1 stmv_nve_cuda.namd需要查看日志中的“day/ns”数值,数值越小性能越优。----结束
总条数:2922 到第
上滑加载中