- 博客(26)
- 资源 (2)
- 收藏
- 关注
原创 【无标题】
基本块调度是指对每个基本块中的指令进行排序和调整,以最大化程序性能和吞吐量。基本块调度通常是在控制流图的基础上进行的,其中每个基本块表示为一个节点,基本块之间的跳转关系表示为有向边。基本块调度的目标是重排每个基本块中的指令,以最大化指令级并行性和流水线利用率。全局调度通常是在数据依赖图的基础上进行的,其中每个指令表示为一个节点,指令之间的数据依赖关系表示为有向边。全局调度的目标是重排整个程序中的指令,以最大化指令级并行性和流水线利用率。在LLVM中,基本块调度和全局调度是指令调度的两个主要阶段。
2023-06-19 09:06:45 102
原创 thread_lock
如果一个线程已经获取了共享锁(通过lock_shared、try_lock_shared),其他线程就无法获取排它锁,但可以获取共享锁。当共享数据可以被任意数量的线程同时安全地读取时,共享互斥体特别有用,但一个线程只能在没有其他线程同时读取或写入时写入相同的数据。如果一个线程已经获得了独占锁(通过lock,try_lock),其他线程就无法获得这把锁(包括共享锁)。只有当独占锁还没有被任何线程获取到时,共享锁才能被多个线程获取到。在一个线程内,同一时间只能获取一把锁(共享锁或独占锁)。
2023-06-03 18:04:13 93
原创 object家族
通过传进的s_s构造一个storage_scope对象,将此对象用于初始化ThreadSyncPlanner类的参数sync_scope_,ThreadSyncPlanner有ThreadSyncPlanner这样一个set,根据op的attr_key(thread_extent,pipeline_exec_scope, device_scope)去判定是否分割。转自nccl doc。
2023-05-19 18:30:17 114
原创 sw pass
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to yo
2023-05-05 16:53:06 125
原创 两种指令调度
如果一条指令在时间t违背了功能部件的约束,则它将也不能放在时间t+delta,或者任意时间t’,其中,t=t’modulo delta.prologue填充部分。epilogue排空部分。
2023-03-26 17:36:38 84
原创 shell编程
Shell编程中Shift的用法位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,0不移动。不带参数的shift命令相当于shift1。非常有用的Unix命令:shift。我们知道,对于位置变量或命令行参数,其个数必须是确定的,或者当Shell程序不知道其个数时,可以把所有参数一起赋值给变量0不移动。不带参数的shift命令相当于shift 1。非常有用的 Unix 命令:shift。我们知道,对于位置变量或命令行参数
2022-05-24 10:23:47 91
原创 shell
1)0shell本身文件名2)0 shell本身文件名2)0shell本身文件名2)? 最后运行命令的返回值3)!shell最后运行的后台process的PID4)! shell最后运行的后台process的PID4)!shell最后运行的后台process的PID4)$ shell本身的pid5)KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲ shell的参数个数6)@ 所有参数列表, 以"$1 $2 … $n"的形式
2022-05-23 15:04:32 95
原创 【无标题】
from .compute_dag import ComputeDAG, LayoutRewriteOption(Finally,since changing the layout of constant tensors can be done incompilation time and brings no runtime overhead, we rewritethe layouts of the constant tensors according to the multi-leveltile
2022-04-14 22:26:03 90
原创 return {}
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { std::unordered_map <int, int> hash_table; for (int i=0; i<nums.size(); ++i) { auto it = hash_table.find(target - nums[i]);
2022-04-14 22:25:42 86
原创 ansor and autotvm
Table 1 compares the workflow for generating code for an operator in AutoTVM and auto-scheduler. In AutoTVM, the developer has to go through three steps. In step 1, the developer has to write the compute definition in TVM’s tensor expression language. Thi.
2022-03-27 16:21:08 408
原创 xgboost
什么是XGBOOST?XGBoost代表 Extreme Gradient Boosting,是一个可扩展的分布式梯度提升决策树(GBDT)机器学习库。它提供并行树提升,是用于回归、分类和排名问题的领先机器学习库。对于理解XGBoost来说,首先掌握XGBoost构建的机器学习概念和算法至关重要:监督机器学习,决策树,集成学习和梯度提升。监督式机器学习使用算法来训练模型,以查找具有标签和特征的数据集中的模式,然后使用训练的模型来预测新数据集特征上的标签。决策树创建一个模型,该模型通过评估 if-t
2022-03-26 15:38:24 1759
原创 多面体编译
https://polly.llvm.org/docs/Architecture.htmlThe ArchitecturePolly is a loop optimizer for LLVM. Starting from LLVM-IR it detects and extracts interesting loop kernels. For each kernel a mathematical model is derived which precisely describes the individ
2022-03-17 16:11:46 562
原创 tvm python and cpp
Python和C++混合编程,TVM使用了统一的PackedFunc机制。PackedFunc可以将C++中的各类函数打包成统一的函数接口,并自动导出到Python模块中进行调用,并且也支持从Python中注册一个函数,并伪装成PackedFunc在C++和Python中调用。1、在c++中注册全局PackedFuncTVM_REGISTER_GLOBAL("myadd").set_body(MyAdd);在python中使用,先使用tvm.get_global_func方法获取c++中的my
2022-03-06 14:38:47 529
原创 tvm relay inline pass
/*! * \brief Inline the global functions marked as `inline` in a given Relay * IRModule. * * \return The pass. */TVM_DLL Pass Inline();https://blog.csdn.net/weixin_42164269/article/details/104291597AST遍历用于遍历Relay程序的基类为【ExprFunctor】。它提供的公共接口是一种【V
2022-03-06 10:17:32 139
原创 hasattr用法
if hasatr(func_name.object, “id”)hasattr(object, name)该实参是一个对象和一个字符串。如果字符串是对象的属性之一的名称,则返回 True,否则返回 False。(此功能是通过调用 getattr(object, name) 看是否有 AttributeError 异常来实现的。)用于搜索ast中的attr很实用...
2022-03-03 15:36:28 228
原创 tvm relay inline pass的调研
tvm relay inline pass的调研relay的流程;pass功能;cpu上跑通单元测例 tests/python/relay/test_pass_inline.py, 明确pass原理; 能否使用inline针对一个网络生成一个call func ,这种方式能很好支持当前bangc优化和代码生成Relay Build-----------Compile the graph to llvm target with given input specification.target = “
2022-02-23 20:47:21 1062
原创 关于python抽象语法树(AST)
在学习tvm script的过程中接触到了python抽象语法树,记录一下linenocol_offsetast.expr 和 ast.stmt 子类的实例有 lineno 和 col_offset 属性。lineno 是源代码的行数(从1开始, 所以第一行行数是1),而 col_offset 是该生成节点第一个token的UTF-8字节偏移量。记录下UTF-8偏移量的原因是parser内部使用UTF-8。“”“什么是上下文管理器?这里先了解下上下文,上下文是 context 直译的叫法,在程
2022-02-16 10:21:56 1238
原创 牛顿迭代法求a的立方根
#include #include using namespace std;int main(){const double EPS = 1e-6;//精度double a,x1,x2;cout<<“请输入a:”<<endl;cin>>a;x2=a;//第一个值取ado{x1=x2;x2=(2x1+a/(x1x1))/3;//计算新值}while (fabs(x2-x1)>=EPS);//控制精度cout << a<
2021-10-11 19:44:19 707
原创 memcheck
Memcheckmemcheck用于检测程序中内存管理存在的问题。它检查所有对内存的读/写操作,并截取所有的malloc/new/free/delete调用。因此memcheck工具能够探测到以下问题:1)使用未初始化的内存2)读/写已经被释放的内存3)读/写内存越界4)读/写不恰当的内存栈空间5)内存泄漏6)使用malloc/new/new[]和free/delete/delete[]不匹配。7)src和dst的重叠–tool=memcheck 指定Valgrind使用的工具。Valgr
2021-10-11 19:19:35 1319
原创 pixelshufflle实现超分辨率重建
pixelshuffle定义:算法思路:图像转张量(NxCxWxH)–增加C的维度–调用pixelshuffle博主最近在做图像超分辨率重建,复现了SRCNN,RDN一些卷积之后concat再进行上采样的算法,今天做了一下简单的pixelshuffle。import torchfrom torch import nnimport cv2import numpy as npfrom torchvision import transformsimg1 = cv2.imread('./107.p
2020-06-28 23:07:50 525
原创 ImportError cannot import name PILLOW_VERSION from PIL
前人栽树:https://www.cnblogs.com/ustarlee/p/12432548.html
2020-06-28 21:09:58 235
原创 AttributeError: ‘NoneType’ object has no attribute ‘text
最近一直在改SSD,今天往数据集里又增添了一些数据,一直报错:Traceback (most recent call last):File “voc_label.py”, line 54, inconvert_annotation(year, image_id)File “voc_label.py”, line 35, in convert_annotationdifficult = obj.find(‘difficult’).textAttributeError: ‘NoneType’ obj
2020-06-22 22:23:54 371
红外数据集10.rar
2020-06-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人