STARR-seq
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STARR-seq相关的知识,希望对你有一定的参考价值。
STARR-seq peak calling
STARRPeaker 输出文件的格式
Final Peak Call Format (up to v1.0; BED6+4)
- Column 1: Chromosome
- Column 2: Start position
- Column 3: End position
- Column 4: Name (peak rank based on score, 1 being the highest rank)
- Column 5: Score (integer value of "100 * fold change", maxed at 1000 per BED format specification)
- Column 6: Strand
- Column 7: Fold change (output/normalized-input)
- Column 8: Output fragment coverage
- Column 9: -log10 of P-value
- Column 10: -log10 of Q-value (Benjamini-Hochberg False Discovery Rate, FDR)
STARRPeaker uniform processing and accurate identification of STARR-seq active regions.docx
STARR-seq:该方法是用来评估增强子(启动子)活性。
Epromoters: 指的是既可以作为promoters 同时可以作为远端基因的enhancers
enhancers和epromoters的鉴定流程如下图:
主要是从GEO数据库搜集目前已发表的
STARR-seq
和MPRA
数据,然后分别进行Enhancer peak calling ,鉴定具有enhancers和Epromoters活性的序列。
链接:https://www.jianshu.com/p/98ce9a3f3fe5
STARR-seq目前广泛应用于增强子活性检测。但传统的STARR-seq的准确性严重依赖于从报告基因reporter gene启动子开始的自转录mRNA的完全恢复。
在质粒构建过程中,polyadenylation site(PAS)被添加到报告基因的后端,由于这个是设计好的PAS用来给自转录self-transcripts (STs) 做聚腺苷酸化polyadenylation 的,称之为“DPAS”。但是,可能存在alternative另外的 polyadenylation site(PAS)在检测DNA序列中,也是受到了enhancer的潜在影响,称之为“APAS”。APAS在STARR-seq中是不会被检测到的。
链接:https://www.jianshu.com/p/57d18d57d34f
一种高通量的验证方法例如self-transcribing active regulatory region-sequencing(STARR-seq)能够对基因组范围内的CRMs进行大规模的评估。在STARR-seq中,基因组片段被打断并添加barcode,打断后的片段被克隆到报告基因的3’UTR区域,从而创建了一个报告基因库中衍生的RNA片段表明了CRMs的活性(图5B)。
https://zhuanlan.zhihu.com/p/440319953
https://news.sciencenet.cn/htmlpaper/2020/8/20208123422227357873.shtm
https://wenku.baidu.com/view/4ad853d4920ef12d2af90242a8956bec0975a5d4.html?_wkts_=1674140985734&bdQuery=starr-seq
https://www.science.org/doi/10.1126/science.1232542
Genome-Wide Quantitative Enhancer Activity Maps Identified by STARR-seq
COSMAS D. ARNOLD, DANIEL GERLACH, CHRISTOPH STELZER, ŁUKASZ M. BORYŃ, MARTINA RATH, AND ALEXANDER STARK Authors Info & AffiliationsSCIENCE17 Jan 2013Vol 339, Issue 6123pp. 1074-1077Abstract
Genomic enhancers are important regulators of gene expression, but their identification is a challenge, and methods depend on indirect measures of activity. We developed a method termed STARR-seq to directly and quantitatively assess enhancer activity for millions of candidates from arbitrary sources of DNA, which enables screens across entire genomes. When applied to the Drosophila genome, STARR-seq identifies thousands of cell type–specific enhancers across a broad continuum of strengths, links differential gene expression to differences in enhancer activity, and creates a genome-wide quantitative enhancer map. This map reveals the highly complex regulation of transcription, with several independent enhancers for both developmental regulators and ubiquitously expressed genes. STARR-seq can be used to identify and quantify enhancer activity in other eukaryotes, including humans.
Methodology[edit]
Genomic DNA is randomly sheared and broken down to small fragments. Adaptors are ligated to size-selected DNA fragments. Next, adaptor linked fragments are amplified and the PCR products are purified followed by placing candidate sequences downstream of a minimal promoter of screening vectors, giving them an opportunity to transcribe themselves. Candidate cells are then transfected with reporter library and cultured. Thereafter, total RNAs are extracted and poly-A RNAs isolated. Using reverse transcription method, cDNAs are produced, amplified and then candidate fragments are used for high-throughput paired end sequencing. Sequence reads are mapped to the reference genome and computational processing of data is carried out.[1]
https://www.sciencedirect.com/science/article/pii/S0888754315300100
https://en.wikipedia.org/wiki/STARR-seq
https://www.jianshu.com/p/98ce9a3f3fe5
华为Ascend昇腾CANN详细教程
一、参考资料
基于昇腾CANN的推理应用开发——图片分类应用(C&C++)
二、重要说明
-
CANN软件提供进程级环境变量设置脚本,供用户在进程中引用,以自动完成环境变量设置。
# 例如 /home/ma-user/Ascend/ascend-toolkit/set_env.sh
-
物理机场景下,一个Device上最多只能支持64个用户进程,Host最多只能支持Device个数64个进程;虚拟机场景下,一个Device上最多只能支持32个用户进程,Host最多只能支持Device个数32个进程。不支持使用fork函数创建多个进程,且在进程中调用AscendCL接口的场景,否则进程运行时会报错或者卡死 。
三、相关介绍
3.1 Davinci
达芬奇架构,华为自研的新型芯片架构。
3.2 FE
Fusion Engine融合引擎,负责对接GE和TBE算子,具备算子信息库的加载与管理、融合规则管理等能力。提供图优化,图编译实现接口; 实现算子接入管理;实现算子融合优化。
3.3 GE
Graph Engine,MindSpore计算图执行引擎,主要负责根据前端的计算图完成硬件相关的优化(算子融合、内存复用等等)、device侧任务启动。提供了Graph/Operator IR作为安全易用的构图接口集合,用户可以调用这些接口构建网络模型,设置模型所包含的图、图内的算子、以及模型和算子的属性。
3.4 TBE
Tensor Boost Engine,华为自研的NPU算子开发工具,在TVM( Tensor Virtual Machine )框架基础上扩展,提供了一套Python API来实施开发活动,进行自定义算子开发。
环境变量
# TBE operator implementation tool path
export TBE_IMPL_PATH=/home/ma-user/Ascend/ascend-toolkit/latest/opp/op_impl/built-in/ai_core/tbe
# TBE operator compilation tool path
export PATH=/home/ma-user/Ascend/ascend-toolkit/latest/fwkacllib/ccec_compiler/bin/:$PATH
# Python library that TBE implementation depends on
export PYTHONPATH=$TBE_IMPL_PATH:$PYTHONPATH
3.5 OPP
环境变量
# OPP path
export ASCEND_OPP_PATH=/home/ma-user/Ascend/ascend-toolkit/latest/opp
四、相关介绍
4.1 数据排布格式(format)
关键概念
极智AI | 谈谈为什么卷积加速更喜欢 NHWC Layout
Format为数据的物理排布格式,定义了解读数据的维度,比如1D,2D,3D,4D,5D等。
NCHW和NHWC
在深度学习框架中,多维数据通过多维数组存储,比如卷积神经网络的特征图(Feature Map)通常用四维数组保存,即4D,4D格式解释如下:
- N:Batch数量,例如图像的数目。
- H:Height,特征图高度,即垂直高度方向的像素个数。
- W:Width,特征图宽度,即水平宽度方向的像素个数。
- C:Channels,特征图通道,例如彩色RGB图像的Channels为3。
由于数据只能线性存储,因此这四个维度有对应的顺序。不同深度学习框架会按照不同的顺序存储特征图数据,比如:
- Caffe,排列顺序为[Batch, Channels, Height, Width],即NCHW。
- TensorFlow,排列顺序为[Batch, Height, Width, Channels],即NHWC。
如上图所示,以一张格式为RGB的图片为例,NCHW中,C排列在外层,每个通道内,像素紧挨在一起,实际存储的是“RRRRRRGGGGGGBBBBBB”,即同一通道的所有像素值顺序存储在一起;而NHWC中C排列在最内层,每个通道内,像素间隔挨在一起,实际存储的则是“RGBRGBRGBRGBRGBRGB”,即多个通道的同一位置的像素值顺序存储在一起。
NC1HWC0
昇腾AI处理器中,为了提高通用矩阵乘法(GEMM)运算数据块的访问效率,所有张量数据统一采用NC1HWC0的 五维数据格式,如下图所示:
其中C0与微架构强相关,等于AI Core中矩阵计算单元的大小,对于FP16类型为16,对于INT8类型则为32,这部分数据需要连续存储;C1是将C维度按照C0进行拆分后的数目,即C1=C/C0。如果结果不整除,最后一份数据需要补零以对齐C0。
NHWC -> NC1HWC0的转换过程
- 将NHWC数据在C维度进行分割,变成C1份NHWC0。
- 将C1份NHWC0在内存中连续排列,由此变成NC1HWC0。
NHWC->NC1HWC0的转换场景示例
- 首层RGB图像通过AIPP转换为NC1HWC0格式。
- 中间层Feature Map每层输出为NC1HWC0格式,在搬运过程中需要重排。
4.2 Context/Stream/Even
昇腾CANN系列教程-AscendCL特性之运行资源管理(C++)
资源申请与释放
资源申请顺序:SetDevice->CreateContext->CreateStream->CreateEvent
;
资源释放顺序:DestroyEvent->DestroyStream->DestroyContext->ResetDevice
;
同步与异步
同步、异步是站在调用者和执行者的角度,在当前场景下,若在Host调用接口后不等待Device执行完成再返回,则表示Host的调度是异步的;若在Host调用接口后需等待Device执行完成再返回,则表示Host的调度是同步的。
Context
Context作为一个容器,管理了所有对象(包括Stream、Event、设备内存等)的生命周期。不同Context的Stream、不同Context的Event是完全隔离的,无法建立同步等待关系。多线程编程场景下,每切换一个线程,都要为该线程指定当前Context,否则无法获取任何其他运行资源。
Context分为两种
- 默认Context:调用aclrtSetDevice接口指定用于运算的Device时,系统会自动隐式创建一个默认Context,一个Device对应一个默认Context,默认Context不能通过aclrtDestroyContext接口来释放。
- (推荐)显式创建的Context:在进程或线程中调用aclrtCreateContext接口显式创建一个Context。
Context接口调用流程
Stream(异步操作)
与 NVIDIA GPU的Stream类似,可参考资料:CUDA随笔之Stream的使用
Stream用于维护一些异步操作的执行顺序,确保按照应用程序中的代码调用顺序在Device上执行。可以将Stream简单理解为一个异步任务的队列,主线程在调用异步接口时,指定了某个stream,本质上就是把异步任务送进了这个任务队列中。队列中任务的执行是保序的,即运行时环境会根据任务下发的顺序来依次执行,不会出现乱序执行的情况。在AscendCL的后台,运行时环境会自动从stream中依次取出一个个任务来执行。kernel执行和数据传输都显示或者隐式地运行在Stream中。
异步且基于stream的kernel执行和数据传输能够实现以下几种类型的并行:
- Host运算操作和device运算操作并行;
- Host运算操作和host到device的数据传输并行;
- Host到device的数据传输和device运算操作并行;
- Device内的运算并行;
说明:基于Stream的kernel执行和数据传输,能够实现Host运算操作、Host与Device间的数据传输、Device内的运算并行。在许多情况下,花费在执行kernel上的时间要比传输数据多得多,所以很容易想到将Host与Devide之间的交互时间隐藏在其他kernel执行过程中,我们可以将数据传输和kernel执行放在不同的stream中来实现此功能。
Stream分两种:
- 默认Stream:调用aclrtSetDevice接口指定用于运算的Device时,系统会自动隐式创建一个默认Stream,一个Device对应一个默认Stream,默认Stream不能通过aclrtDestroyStream接口来释放。
- 显式创建的Stream:**推荐,**在进程或线程中调用aclrtCreateStream接口显式创建一个Stream。
Stream加速
Event(同步操作)
问题引入
上图中“Stream1->任务4”的执行依赖“Stream2->任务6”执行完毕,而如果还按照之前的方式,任务4执行前等待整个Stream2全部执行完毕,其实是多等了“任务7”、“任务8”的执行时间的。为了对Stream间任务依赖进行精细化管理,我们需要一个新的运行资源:Event。
Event通常用于在Stream之间执行事件同步操作,在两个Stream之间存在任务级别的依赖时尤其有用,如下图所示:
“Stream1->任务4”的确是依赖“Stream2->任务6”的完成,但这两个任务之间是无法直接产生依赖关系的,要使用Event机制来同步:
- Stream2->任务6:在执行完毕后,声明“event1”这一事件已发生;
- Stream1->任务4:在执行之前,等待“event1”这一事件的发生;
两个无法产生直接依赖关系的任务,通过Event实现了依赖机制。
// 在stream上声明event已经发生
aclError aclrtRecordEvent(aclrtEvent event, aclrtStream stream);
// 让stream等待event的发生
aclError aclrtStreamWaitEvent(aclrtStream stream, aclrtEvent event);
相关概念
支持调用AscendCL接口同步Stream之间的任务,包括同步Host与Device之间的任务、Device与Device间的任务。
Events标记了stream执行过程中的一个点,我们就可以检查正在执行的stream中的操作是否到达该点,我们可以把event当成一个操作插入到stream中的众多操作中,当执行到该操作时,所做工作就是设置CPU的一个flag来标记表示完成。
例如,若stream2的任务依赖stream1的任务,想保证stream1中的任务先完成,这时可创建一个Event,并将Event插入到stream1,在执行stream2的任务前,先同步等待Event完成。
Device、Context、Stream之间的关系
-
默认Context、默认Stream一般适用于简单应用,用户仅仅需要一个Device的计算场景下。多线程应用程序建议全部使用显式创建的Context和Stream。
-
线程中创建的多个Context,线程缺省使用最后一次创建的Context。
线程、Context、Stream之间的关系
-
一个用户线程一定会绑定一个Context,所有Device的资源使用或调度,都必须基于Context。
-
一个进程中可以创建多个Context,但一个线程同一时刻只能使用一个Contex,Context中已经关联了本线程要使用的Device。
-
一个线程中可以创建多个Stream,不同的Stream上计算任务是可以并行执行;多线程场景下,也可以每个线程分别创建一个Stream,且线程之间的Stream在Device上相互独立,每个Stream内部的任务是按照Stream下发的顺序执行。
-
多线程的调度依赖于运行应用的 操作系统调度 \\textcolorRed操作系统调度 操作系统调度,多Stream在Device侧的调度,由Device的 调度组件 \\textcolorRed调度组件 调度组件 进行调度。
多线程、多stream的性能说明
- 线程调度依赖运行的操作系统,Stream上下发了任务后,Stream的调度由Device的调度单元调度,但如果一个进程内的多Stream上的任务在Device存在资源争抢的时候,性能可能会比单Stream低。
- 当前昇腾AI处理器有不同的执行部件,如AI Core、AI CPU、Vector Core等,对应使用不同执行部件的任务,建议多Stream的创建按照算子执行引擎划分。
- 单线程多Stream与多线程多Stream(一个进程中可以包含多个线程,每个线程中一个Stream)性能上哪个更优,具体取决于应用本身的逻辑实现,一般来说单线程多Stream性能略好,原因是应用层少了线程调度开销。
- 从同步场景,到Stream场景,再到Callback场景,我们见证了主线程一步一步被释放。在同步场景,所有场景都在主线程完成;在Stream场景,推理送到了Stream来做,而后处理还要主线程完成;而在Callback场景下,推理和后处理就都放到Stream中了。
4.3 内存管理
昇腾CANN系列教程-AscendCL特性之内存管理(C++)
如果进程运行在Host上,就申请Host内存,如果是运行在Device上,申请的就是Device内存。
Host-Device
aclrtMallocHost->aclrtMalloc->aclrtMemcpy(host-device)
模型输入与输出
模型输入
一个模型有且只有1个“输入DataSet”(数据集对象),里边包含所有的输入;而如果有多个输入的话,每个输入用一个“DataBuffer”来承载。
- 一个模型的所有输入抽象为一个“DataSet”对象;
- 每一个输入抽象为一个“DataBuffer”对象;
如上图所示,一个模型有2个输入,其中第一个输入是若干张图片,第二个输入是每张图片的元数据等信息,那么在编程中我们需要这样做:
- 用第一个输入,所有图片,创建一个DataBuffer对象;
- 用第二个输入,图片的信息,创建另一个DataBuffer对象;
- 创建一个DataSet对象;
- 把第1/2步中创建的2个DataBuffer对象放到DataSet对象中;
核心代码
// 创建DataBuffer
aclDataBuffer *aclCreateDataBuffer(void *data, size_t size);
// 创建DataSet
aclmdlDataset *aclmdlCreateDataset();
// 向DataSet中添加DataBuffer
aclError aclmdlAddDatasetBuffer(aclmdlDataset *dataset, aclDataBuffer *dataBuffer);
模型输出
模型输出数据结构,也是一个DataSet,1-N个DataBuffer,但是问题来了,我还没推理,没有数据呢,怎么会有DataBuffer? 其实在模型确定下来之后,基本上输出的个数和占用内存大小就已经完全确定了。比如一个有1000个类别的分类网络的输出,结果就是1000组数据,每组包含一个标签和一个置信度,共2000个数值。那么这个输出所占用的内存大小就很容易计算出来,并在推理之前先申请好内存。没错,AscendCL不支持推理过程中自动申请输出内存,一定要在调用推理接口之前先把输出内存、DataBuffer、DataSet准备好。
核心代码
// 创建一个“模型描述信息”对象,用于收集模型的描述信息,也就是模型的元数据
aclError aclmdlGetDesc(aclmdlDesc *modelDesc, uint32_t modelId);
// 获取模型描述信息
// 可以根据模型的modelId来获取模型描述信息,并将描述信息填充进modelDesc对象中
aclError aclmdlGetDesc(aclmdlDesc *modelDesc, uint32_t modelId);
4.4 npu-smi 命令
NPU信息
npu-smi info
4.5 设置环境变量
如果昇腾AI处理器配套软件包没有安装在默认路径,安装好MindSpore之后,需要导出Runtime相关环境变量,下述命令中LOCAL_ASCEND=/usr/local/Ascend
的/usr/local/Ascend
表示配套软件包的安装路径,需注意将其改为配套软件包的实际安装路径。
# 安装nnae包时配置
. /usr/local/Ascend/nnae/set_env.sh
# 安装tfplugin包时配置
. /usr/local/Ascend/tfplugin/set_env.sh
# 安装toolbox包时配置
. /usr/local/Ascend/toolbox/set_env.sh
# control log level. 0-DEBUG, 1-INFO, 2-WARNING, 3-ERROR, 4-CRITICAL, default level is WARNING.
export GLOG_v=2
# Conda environmental options
export LOCAL_ASCEND=/usr/local/Ascend # the root directory of run package
# lib libraries that the run package depends on
export LD_LIBRARY_PATH=$LOCAL_ASCEND/ascend-toolkit/latest/fwkacllib/lib64:$LOCAL_ASCEND/driver/lib64:$LOCAL_ASCEND/ascend-toolkit/latest/opp/op_impl/built-in/ai_core/tbe/op_tiling:$LD_LIBRARY_PATH
/usr/local/Ascend/driver/lib64/driver
# Environment variables that must be configured
## TBE operator implementation tool path
export TBE_IMPL_PATH=$LOCAL_ASCEND/ascend-toolkit/latest/opp/op_impl/built-in/ai_core/tbe
## OPP path
export ASCEND_OPP_PATH=$LOCAL_ASCEND/ascend-toolkit/latest/opp
## AICPU path
export ASCEND_AICPU_PATH=$ASCEND_OPP_PATH/..
## TBE operator compilation tool path
export PATH=$LOCAL_ASCEND/ascend-toolkit/latest/fwkacllib/ccec_compiler/bin/:$PATH
## Python library that TBE implementation depends on
export PYTHONPATH=$TBE_IMPL_PATH:$PYTHONPATH
4.6 CANN信息
# CANN版本信息
cat /usr/local/Ascend/version.info
输出:
version=21.0.3.1
# CANN安装路径
/usr/local/Ascend
4.7 ascend-toolkit信息
# ascend-toolkit版本信息
/usr/local/Ascend/ascend-toolkit/latest/arm64-linux/toolkit/version.info
输出:
Version=1.75.22.0.220
# ascend-toolkit安装信息
cat /usr/local/Ascend/ascend-toolkit/latest/arm64-linux/ascend_toolkit_install.info
输出:
version=20.1.rc1
arch=arm64
os=linux
path=/usr/local/Ascend/ascend-toolkit/latest/arm64-linux
4.8 ascend_nnae信息
cat /usr/local/Ascend/nnae/latest/ascend_nnae_install.info
输出:
package_name=Ascend-cann-nnae
version=5.0.3
innerversion=V100R001C79B220SPC1011
arch=aarch64
os=linux
path=/usr/local/Ascend/nnae/5.0.3
4.9 ascend_nnrt信息
# nnrt安装信息
cat /usr/local/Ascend/nnrt/latest/ascend_nnrt_install.info
输出:
version=20.0.RC1
arch=arm64
os=linux
gcc=gcc7.3.0
path=/usr/local/Ascend/nnrt/latest
fwkacllib信息
/usr/local/Ascend/nnae/5.0.3/fwkacllib/lib64
auto_tune-0.1.0-py3-none-any.whl libauto_tiling.so libge_executor.so libregister.a
hccl-0.1.0-py3-none-any.whl lib_caffe_parser.so libge_runner.so libregister.so
hccl_reduce_op_ascend710.o libcce_aicore.so libgraph.so libresource.so
hccl_reduce_op_ascend910.o libcce_aicpudev_online.so libhccl.so librs.so
libacl_cblas.so libcce.so libhcom_graph_adaptor.so libruntime.so
libacl_dvpp_mpi.so libcce_tools.so libindextransform.so libte_fusion.so
libacl_dvpp.so libcompress.so libmmpa.a libtiling.so
libacl_op_compiler.so libcompressweight.so libmmpa.so libtsdclient.so
libacl_retr.so libc_sec.so libmsprofiler.so libtvm_runtime.so
libacl_tdt_channel.so libdatatransfer.so libopskernel.so libtvm.so
libaicore_utils.so liberror_manager.a libopt_feature.so libtvm_topi.so
libaicpu_engine_common.so liberror_manager.so libparser_common.so plugin
libalog.so libfmk_onnx_parser.so libplatform.so schedule_search-0.1.0-py3-none-any.whl
libascendcl.a libfmk_parser.so libra_hdc.so stub
libascendcl.so libge_common.so libra_peer.so te-0.4.0-py3-none-any.whl
libascend_protobuf.so.3.13.0.0 libge_compiler.so libra.so topi-0.4.0-py3-none-any.whl
4.10 安装昇腾AI处理器配套软件包
昇腾软件包提供商用版和社区版两种下载途径:
- 商用版下载需要申请权限,下载链接与安装方式请参考Ascend Data Center Solution 22.0.RC1安装指引文档。
- 社区版下载不受限制,下载链接请前往CANN社区版,选择
5.1.RC1.alpha005
版本,以及在固件与驱动链接中获取对应的固件和驱动安装包,安装包的选择与安装方式请参照上述的 商用版 安装指引文档。
表1-1 昇腾软件介绍
软件类型 | 软件介绍 |
---|---|
固件 | 固件包含昇腾AI处理器自带的OS 、电源器件和功耗管理器件控制软件,分别用于后续加载到AI处理器的模型计算、芯片启动控制和功耗控制。 |
驱动 | 部署在昇腾服务器,功能类似英伟达驱动,管理查询昇腾AI处理器,同时为上层CANN软件提供芯片控制、资源分配等接口。 |
CANN | 部署在昇腾服务器,功能类似英伟达CUDA,包含Runtime、算子库、图引擎、媒体数据处理等组件,通过AscendCL(Ascend Computing Language)对外提供Device管理、Context管理、Stream管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等API,帮助开发者实现在昇腾CANN平台上进行深度学习推理计算、图像预处理、单算子加速计算。 |
重要说明:如果是首次安装请按照“驱动 > 固件”的顺序,分别安装驱动和固件包;覆盖安装请按照“固件 > 驱动”的顺序,分别安装固件和驱动包,**vision**表示软件版本号。
五、Ascend-toolkit 开发套件包
Ascend-toolkit 开发套件包。
Ascend-toolkit安装
(ms19) root@80f9a288c6ba:/data/YOYOFile/Downloads# ./Ascend-cann-toolkit_6.0.0.alpha003_linux-aarch64.run --install
Verifying archive integrity... 100% SHA256 checksums are OK. All good.
Uncompressing ASCEND_RUN_PACKAGE 100%
[Toolkit] [20221229-09:15:54] [INFO] LogFile:/var/log/ascend_seclog/ascend_toolkit_install.log
[Toolkit] [20221229-09:15:54] [INFO] install start
[Toolkit] [20221229-09:15:54] [INFO] The installation path is /usr/local/Ascend.
[Toolkit] [20221229-09:15:54] [WARNING] driver package maybe not installed
[Toolkit] [20221229-09:15:54] [WARNING] driver package maybe not installed
[Toolkit] [20221229-09:15:54] [INFO] install package CANN-runtime-6.0.0.alpha003-linux_aarch64.run start
[Toolkit] [20221229-09:16:03] [INFO] CANN-runtime-6.0.0.alpha003-linux_aarch64.run --devel --quiet --nox11 install success
[Toolkit] [20221229-09:16:03] [INFO] install package CANN-compiler-6.0.0.alpha003-linux_aarch64.run start
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[Toolkit] [20221229-09:16:54] [INFO] CANN-compiler-6.0.0.alpha003-linux_aarch64.run --devel --pylocal --quiet --nox11 install success
[Toolkit] [20221229-09:16:54] [INFO] install package CANN-opp-6.0.0.alpha003-linux_aarch64.run start
/root/selfgz5969520074/opp/script/opp_install.sh: 686: /root/selfgz5969520074/opp/script/opp_install.sh: __reverse_list: not found
/root/selfgz5969520074/opp/script/opp_install.sh: 686: /root/selfgz5969520074/opp/script/opp_install.sh: __reverse_list: not found
[Toolkit] [20221229-09:17:39] [INFO] CANN-opp-6.0.0.alpha003-linux_aarch64.run --devel --quiet --nox11 install success
[Toolkit] [20221229-09:17:39] [INFO] install package CANN-toolkit-6.0.0.alpha003-linux_aarch64.run start
[Toolkit] [20221229-09:18:29] [INFO] CANN-toolkit-6.0.0.alpha003-linux_aarch64.run --devel --pylocal --quiet --nox11 install success
[Toolkit] [20221229-09:18:29] [INFO] install package CANN-aoe-6.0.0.alpha003-linux_aarch64.run start
[Toolkit] [20221229-09:18:38] [INFO] CANN-aoe-6.0.0.alpha003-linux_aarch64.run --devel --quiet --nox11 install success
[Toolkit] [20221229-09:18:38] [INFO] install package Ascend-mindstudio-toolkit_6.0.0.alpha003_linux-aarch64.run start
[Toolkit] [20221229-09:18:51] [INFO] Ascend-mindstudio-toolkit_6.0.0.alpha003_linux-aarch64.run --devel --quiet --nox11 install success
[Toolkit] [20221229-09:18:51] [INFO] install package Ascend-test-ops_6.0.0.alpha003_linux.run start
[Toolkit] [20221229-09:18:51] [INFO] Ascend-test-ops_6.0.0.alpha003_linux.run --devel --quiet --nox11 install success
[Toolkit] [20221229-09:18:51] [INFO] install package Ascend-pyACL_6.0.0.alpha003_linux-aarch64.run start
[Toolkit] [20221229-09:18:52] [INFO] Ascend-pyACL_6.0.0.alpha003_linux-aarch64.run --devel --quiet --nox11 install success
[Toolkit] [20221229-09:18:52] [INFO] Please make sure that:
PATH includes :
/usr/local/Ascend/ascend-toolkit/latest/bin:
/usr/local/Ascend/ascend-toolkit/latest/compiler/ccec_compiler/bin:
LD_LIBRARY_PATH includes :
/usr/local/Ascend/ascend-toolkit/latest/lib64:
/usr/local/Ascend/ascend-toolkit/latest/lib64/plugin/opskernel:
/usr/local/Ascend/ascend-toolkit/latest/lib64/plugin/nnengine:
PYTHONPATH includes :
/usr/local/Ascend/ascend-toolkit/latest/python/site-packages:
/usr/local/Ascend/ascend-toolkit/latest/opp/built-in/op_impl/ai_core/tbe:
ASCEND_AICPU_PATH includes :
/usr/local/Ascend/ascend-toolkit/latest:
ASCEND_OPP_PATH includes :
/usr/local/Ascend/ascend-toolkit/latest/opp:
TOOLCHAIN_HOME includes :
/usr/local/Ascend/ascend-toolkit/latest/toolkit:
ASCEND_HOME_PATH includes :
/usr/local/Ascend/ascend-toolkit/latest:
[Toolkit] [20221229-09:18:52] [INFO] If your service is started using the shell script, you can call the /usr/local/Ascend/ascend-toolkit/set_env.sh script to configure environment variables. Note that this script can not be executed mannually.
[Toolkit] [20221229-09:18:52] [INFO] Ascend-cann-toolkit_6.0.0.alpha003_linux-aarch64 install success. The installation path is /usr/local/Ascend.
1. 环境变量
# 以安装用户在开发环境任意目录下执行以下命令,打开.bashrc文件。
vi ~/.bashrc
# 在文件最后一行后面添加如下内容。CPU_ARCH环境变量请根据运行环境cpu架构填写,如export CPU_ARCH=aarch64
export CPU_ARCH=[aarch64/x86_64]
# THIRDPART_PATH需要按照运行环境安装路径设置,如运行环境为arm,指定安装路径为Ascend-arm,则需要设置为export THIRDPART_PATH=$HOME/Ascend-arm/thirdpart/$CPU_ARCH
export THIRDPART_PATH=$HOME/Ascend/thirdpart/$CPU_ARCH #代码编译时链接第三方库
# CANN软件安装后文件存储路径,最后一级目录请根据运行环境设置,运行环境为arm,这里填arm64-linux;运行环境为x86,则这里填x86_64-linux,以下以arm环境为例
export INSTALL_DIR=$HOME/Ascend/ascend-toolkit/latest/arm64-linux
# 执行命令保存文件并退出。
:wq!
# 执行命令使其立即生效。
source ~/.bashrc
# 创建第三方依赖文件夹
mkdir -p $THIRDPART_PATH
# 拷贝公共文件到第三方依赖文件夹
cd $HOME
git clone https://gitee.com/ascend/samples.git
cp -r $HOME/samples/common $THIRDPART_PATH
2. 常用指令
# AscendCL头文件路径
/home/ma-user/Ascend/ascend-toolkit/latest/include/acl
# AscendCL库文件路径
/home/ma-user/Ascend/ascend-toolkit/latest/lib64
# 查看device设备
ls /dev/davinci*
# 驱动安装路径
/usr/local/Ascend/driver/
# 查看 Ascend-cann-toolkit 版本
cd /home/ma-user/Ascend/ascend-toolkit/latest/arm64-linux
cat ascend_toolkit_install.info
查看NPU资源
# 查看npu资源
npu-smi info
watch -n 1 npu-smi info
npu-smi info watch -i 0 -c 0
查看 Ascend-cann-toolkit 版本
cd /home/ma-user/Ascend/ascend-toolkit/latest/arm64-linux
cat ascend_toolkit_install.info
[ma-user@notebook-87136e07-6a9a-4138-beec-742972f7b62f arm64-linux]$ cat ascend_toolkit_install.info
package_name=Ascend-cann-toolkit
version=5.0.3
innerversion=V100R001C79B220SPC1011
arch=aarch64
os=linux
path=/home/ma-user/Ascend/ascend-toolkit/5.0.3/arm64-linux
3. 设置环境变量
设置 INC_PATH、LIB_PATH路径
说明 | 路径 | 变量1 | 变量2 | 变量3 |
---|---|---|---|---|
Ascend安装路径 | $HOME/Ascend/ascend-toolkit/latest | INSTALL_DIR | DDK_PATH | INC_PATH |
Ascend库文件路径 | $INSTALL_DIR/acllib/lib64/stub | NPU_HOST_LIB | LIB_PATH |
设置INC_PATH、LIB_PATH路径有三种方式:
-
临时性设置
$INSTALL_DIR
表示CANN软件安装目录,例如,$HOME/Ascend/ascend-toolkit/latest/arch-os
,arch表示操作系统架构(需根据运行环境的架构选择),os
表示操作系统(需根据运行环境的操作系统选择)。旧版本(默认)
export INSTALL_DIR=$HOME/Ascend/ascend-toolkit/latest export DDK_PATH=$INSTALL_DIR export NPU_HOST_LIB=$INSTALL_DIR/acllib/lib64/stub
新版本(未来)
export INSTALL_DIR=$HOME/Ascend/ascend-toolkit/latest export DDK_PATH=$INSTALL_DIR export NPU_HOST_LIB=$INSTALL_DIR/arch-os/devlib
-
永久性设置
vi ~/.bashrc # 末尾添加环境变量 export DDK_PATH=$INSTALL_DIR export NPU_HOST_LIB=$INSTALL_DIR/acllib/lib64/stub # 更新环境变量 source ~/.bashrc
-
在CMakeLists.txt文件中修改路径
DDK_PATH也即INC_PATH,表示AscendCL头文件路径;NPU_HOST_LIB也即LIB_PATH,表示AscendCL库文件路径。
CMakeLists.txt
文件中会指定 INC_PATH和LIB_PATH,根据真实路径修改。CMakeLists.txt
# CMake lowest version requirement cmake_minimum_required(VERSION 3.5.1) # project information project(AME) # Compile options add_compile_options(-std=c++11) add_definitions(-DENABLE_DVPP_INTERFACE) # Specify target generation path set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "../../../out") set(CMAKE_CXX_FLAGS_DEBUG "-fPIC -O0 -g -Wall") set(CMAKE_CXX_FLAGS_RELEASE "-fPIC -O2 -Wall") # 设置环境变量,DDK_PATH即为INC_PATH set(INC_PATH $ENVDDK_PATH) if (NOT DEFINED ENVDDK_PATH) # set(INC_PATH "/usr/local/Ascend") set(INC_PATH "/home/ma-user/Ascend/ascend-toolkit/latest/arm64-linux") message(STATUS "set default INC_PATH: $INC_PATH") else () message(STATUS "env INC_PATH: $INC_PATH") endif() # 设置环境变量,NPU_HOST_LIB即为LIB_PATH set(LIB_PATH $ENVNPU_HOST_LIB) if (NOT DEFINED ENVNPU_HOST_LIB) # set(LIB_PATH "/usr/local/Ascend/acllib/lib64/stub/") set(LIB_PATH "/home/ma-user/Ascend/ascend-toolkit/latest/arm64-linux/acllib/lib64/stub/") message(STATUS "set default LIB_PATH: $LIB_PATH") else () message(STATUS "env LIB_PATH: $LIB_PATH") endif() # Header path include_directories( $INC_PATH/acllib/include/ ../inc/ ) # add host lib path link_directories( $LIB_PATH ) add_executable(main utils.cpp # dvpp_process.cpp model_process.cpp # singleOp_process.cpp sample_process.cpp main.cpp) target_link_libraries(main ascendcl acl_cblas acl_dvpp stdc++) install(TARGETS main DESTINATION $CMAKE_RUNTIME_OUTPUT_DIRECTORY)
示例:
set(INC_PATH "/usr/local/Ascend")
set(LIB_PATH "/usr/local/Ascend/acllib/lib64/stub/")
修改为
set(INC_PATH "/home/ma-user/Ascend/ascend-toolkit/latest/arm64-linux")
set(LIB_PATH "/home/ma-user/Ascend/ascend-toolkit/latest/arm64-linux/acllib/lib64/stub/")
配置 ascend-toolkit 环境变量
如果不设置环境变量,很多工具无法使用,例如:ATC模型转换工具。
# 设置环境变量
cd /home/ma-user/Ascend/ascend-toolkit
source set_env.sh
set_env.sh
export LD_LIBRARY_PATH=/home/ma-user/Ascend/ascend-toolkit/latest/lib64:/home/ma-user/Ascend/ascend-toolkit/latest/compiler/lib64/plugin/opskernel:/home/ma-user/Ascend/ascend-toolkit/latest/compiler/lib64/plugin/nnengine:$LD_LIBRARY_PATH
export PYTHONPATH=/home/ma-user/Ascend/ascend-toolkit/latest/python/site-packages:/home/ma-user/Ascend/ascend-toolkit/latest/opp/op_impl/built-in/ai_core/tbe:$PYTHONPATH
export PATH=/home/ma-user/Ascend/ascend-toolkit/latest/bin:/home/ma-user/Ascend/ascend-toolkit/latest/compiler/ccec_compiler/bin:$PATH
export ASCEND_AICPU_PATH=/home/ma-user/Ascend/ascend-toolkit/latest
export ASCEND_OPP_PATH=/home/ma-user/Ascend/ascend-toolkit/latest/opp
export TOOLCHAIN_HOME=/home/ma-user/Ascend/ascend-toolkit/latest/toolkit
export ASCEND_AUTOML_PATH=/home/ma-user/Ascend/ascend-toolkit/latest/tools
配置 atc 环境变量
# 设置环境变量
cd /home/ma-user/Ascend/ascend-toolkit
source set_env.sh
配置 tfplugin 环境变量
/home/ma-user/Ascend/tfplugin/set_env.sh
set_env.sh
export PYTHONPATH=/home/ma-user/Ascend/tfplugin/latest以上是关于STARR-seq的主要内容,如果未能解决你的问题,请参考以下文章