From 81b847e6f03cbd41eb9dd4c66db876df2b8cafa7 Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Fri, 18 Feb 2022 16:45:08 +0800 Subject: [PATCH 01/33] optimize softmax --- python/jittor/__init__.py | 2 +- python/jittor/nn.py | 3 + python/jittor/other/code_softmax.py | 93 +++++++++++++++++++++++++++++ python/jittor/test/test_misc_op.py | 30 ++++++++++ 4 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 python/jittor/other/code_softmax.py diff --git a/python/jittor/__init__.py b/python/jittor/__init__.py index 05c83935..f953c0d3 100644 --- a/python/jittor/__init__.py +++ b/python/jittor/__init__.py @@ -91,7 +91,7 @@ def safeunpickle(path): import torch except: raise RuntimeError("pytorch need to be installed when load pth format.") - model_dict = torch.load(path, map_location=torch.device('cpu')) + model_dict = torch.load(path, map_location='cpu') try: for k, v in model_dict.items(): try: diff --git a/python/jittor/nn.py b/python/jittor/nn.py index f1a1e35a..44ed27dc 100644 --- a/python/jittor/nn.py +++ b/python/jittor/nn.py @@ -489,6 +489,9 @@ class BCEWithLogitsLoss(Module): return binary_cross_entropy_with_logits(output,target,self.weight,self.pos_weight,self.size_average) def softmax(x, dim = None): + import jittor.other.code_softmax as code_softmax + if code_softmax.can_softmax_v1(x, dim): + return code_softmax.softmax_v1(x) if dim is None: x = (x - x.max()).exp() ret = x / x.sum() diff --git a/python/jittor/other/code_softmax.py b/python/jittor/other/code_softmax.py new file mode 100644 index 00000000..f167e497 --- /dev/null +++ b/python/jittor/other/code_softmax.py @@ -0,0 +1,93 @@ +import jittor as jt +from jittor import nn + +def can_softmax_v1(a, dim): + if not jt.flags.use_cuda: + return False + if dim != -1 and dim != len(a.shape)-1: + return False + if a.shape[len(a.shape)-1] > 10000: + return False + return True + +def softmax_v1(a): + assert can_softmax_v1(a, -1) + length = a.shape[-1] + # tnum = 1024 + tnum = 500 if length % 500 == 0 else 512 + # tnum = 250 + per_thread = (length-1) // tnum + 1 + for_loop = f""" + #pragma unroll + for (int i=0; i<{per_thread}; i++) + """ + if length % tnum == 0: + for_loop += f"if (i*{tnum}+threadIdx.x < len)\n" + + return jt.code(a.shape, a.dtype, [a], cuda_header=f''' +#include <{jt.compile_extern.cub_home}cub/cub.cuh> +''', cuda_src=f''' +__global__ void kernel(in0_type* x, out0_type* y, int len) {{ + typedef cub::BlockReduce BlockReduce; + __shared__ typename BlockReduce::TempStorage temp_storage; + + int id = blockIdx.x * len; + in0_type v[{per_thread}]; + {for_loop} v[i] = x[id+i*{tnum}+threadIdx.x]; + float v1 = v[0]; + {for_loop} v1 = max(v1, v[i]); + __shared__ float vmax; + auto tmp = BlockReduce(temp_storage).Reduce(v1, cub::Max()); + if (threadIdx.x == 0) + vmax = tmp; + __syncthreads(); + + v1 = 0; + {for_loop} {{ + v[i] = expf(v[i] - vmax); + v1 += v[i]; + }} + + tmp = BlockReduce(temp_storage).Sum(v1); + __shared__ float vsum; + if (threadIdx.x == 0) + vsum = tmp; + __syncthreads(); + + {for_loop} y[id+i*{tnum}+threadIdx.x] = v[i] / vsum; +}} +int len = in0->shape[in0->shape.size()-1]; +int bnum = in0->numel() / len; +cudaGetLastError(); +kernel<<>>(in0_p, out0_p, len); +CHECK(0 == cudaGetLastError()); +''', cuda_grad_src=[f""" +__global__ void kernel(pout0_type* x, dout_type* y, out0_type* z, int len) {{ + int id = blockIdx.x * len; + in0_type vx[{per_thread}]; + in0_type vy[{per_thread}]; + {for_loop} {{ + vx[i] = x[id+i*{tnum}+threadIdx.x]; + vy[i] = y[id+i*{tnum}+threadIdx.x]; + }} + float v1 = 0; + {for_loop} v1 += vx[i]*vy[i]; + + + typedef cub::BlockReduce BlockReduce; + __shared__ typename BlockReduce::TempStorage temp_storage; + auto tmp = BlockReduce(temp_storage).Sum(v1); + __shared__ float reduce_var; + if (threadIdx.x == 0) + reduce_var = tmp; + __syncthreads(); + + {for_loop} + z[id+i*{tnum}+threadIdx.x] = vx[i] * (vy[i] - reduce_var); +}} +int len = in0->shape[in0->shape.size()-1]; +int bnum = in0->numel() / len; +cudaGetLastError(); +kernel<<>>(pout0_p, dout_p, out0_p, len); +CHECK(0 == cudaGetLastError()); +"""]) \ No newline at end of file diff --git a/python/jittor/test/test_misc_op.py b/python/jittor/test/test_misc_op.py index 1d2bee6d..144002f8 100644 --- a/python/jittor/test/test_misc_op.py +++ b/python/jittor/test/test_misc_op.py @@ -257,5 +257,35 @@ class TestOther(unittest.TestCase): a = jt.arctan2(jt.array([1,1.0,0]), jt.array([1,0.0,-1])) np.testing.assert_allclose(a.data, [0.7853982,1.5707964,3.1415927]) + def test_code_softmax(self): + if not jt.has_cuda: return + + def softmax(x, dim = None): + if dim is None: + x = (x - x.max()).exp() + ret = x / x.sum() + else: + x = (x-x.max(dim, keepdims=True)).exp() + ret = x / x.sum(dim, keepdims=True) + return ret + from jittor.other.code_softmax import softmax_v1 + + with jt.flag_scope(use_cuda = 1): + shape = (120, 2000, 2000) + # shape = (3,3) + a = jt.rand(shape) + c = jt.rand(shape) + b = softmax(a, -1) + bb = softmax_v1(a) + + err = (bb - b).abs().max() + assert err.item() < 1e-5 + + d1 = jt.grad(b*c, a) + d2 = jt.grad(bb*c, a) + err = (d1 - d2).abs().max() + assert err.item() < 1e-5 + + if __name__ == "__main__": unittest.main() \ No newline at end of file From bcb57086c3a1a46ff7866a46e0afba059b2175ab Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Sun, 20 Feb 2022 20:34:49 +0800 Subject: [PATCH 02/33] fp16 support, opbytype interface --- python/jittor/compiler.py | 1 + python/jittor/pool.py | 18 ++- python/jittor/src/op_compiler.cc | 26 ++++ python/jittor/src/ops/binary_op.cc | 3 +- python/jittor/src/ops/binary_op_defs.h | 61 -------- python/jittor/src/ops/op_defs.cc | 159 +++++++++++++++++++++ python/jittor/src/ops/op_register.cc | 8 ++ python/jittor/src/ops/op_register.h | 8 ++ python/jittor/src/ops/reduce_op.cc | 5 +- python/jittor/src/ops/reindex_reduce_op.cc | 5 +- python/jittor/src/ops/setitem_op.cc | 5 +- python/jittor/src/ops/unary_op.cc | 3 +- python/jittor/src/ops/unary_op_defs.h | 84 ----------- python/jittor/src/utils/str_utils.cc | 14 ++ python/jittor/src/utils/str_utils.h | 2 + python/jittor/test/test_op_compiler.py | 11 -- 16 files changed, 234 insertions(+), 179 deletions(-) delete mode 100644 python/jittor/src/ops/binary_op_defs.h create mode 100644 python/jittor/src/ops/op_defs.cc delete mode 100644 python/jittor/src/ops/unary_op_defs.h diff --git a/python/jittor/compiler.py b/python/jittor/compiler.py index 2527f20c..c92f56c6 100644 --- a/python/jittor/compiler.py +++ b/python/jittor/compiler.py @@ -1235,6 +1235,7 @@ files4 = [ f[len(jittor_path)+1:] for f in files4 ] # files4 = run_cmd('find -L src | grep '+grep_args, jittor_path).splitlines() at_beginning = [ "src/ops/op_utils.cc", + "src/ops/op_register.cc", "src/event_queue.cc", "src/mem/allocator/sfrl_allocator.cc", "src/mem/allocator.cc", diff --git a/python/jittor/pool.py b/python/jittor/pool.py index 150aff68..0f1fe12e 100644 --- a/python/jittor/pool.py +++ b/python/jittor/pool.py @@ -60,14 +60,14 @@ class Pool(Module): ''' if not self.return_indices: forward_body += f''' - @out(i0, i1, i2, i3) = init_{self.op}(out_type); + @out(i0, i1, i2, i3) = @expand_op(init_{self.op}, @out_type); for (int p = k2; p < k2_; ++p) for (int q = k3; q < k3_; ++q) - @out(i0, i1, i2, i3) = {self.op}(out_type, @out(i0, i1, i2, i3), @in0(i0, i1, p, q)); + @out(i0, i1, i2, i3) = @expand_op({self.op}, @out_type, @out(i0, i1, i2, i3), @out_type, @in0(i0, i1, p, q), @in0_type); ''' else: forward_body += f''' - auto out_value = init_{self.op}(out_type); + auto out_value = @expand_op(init_{self.op}, @out_type); int out_index = -1; for (int p = k2; p < k2_; ++p) for (int q = k3; q < k3_; ++q) @@ -105,7 +105,6 @@ class Pool(Module): return_dtypes = x.dtype out = jt.code(return_shapes, return_dtypes, [x], cuda_header=""" - #include #include """, cuda_src=f''' @@ -153,7 +152,7 @@ class Pool(Module): dim3 s2_(tx, ty); kernel3<<>>(@ARGS); '''], - cpu_header='#include ', + cpu_header='', cpu_src=f''' using namespace std; for (int i0=0; i0 #include """, cuda_src=f''' @@ -349,7 +347,7 @@ class Pool3d(Module): dim3 s2(tx, ty, tz); kernel3<<>>(@ARGS); '''], - cpu_header='#include ', + cpu_header='', cpu_src=f''' using namespace std; for (int i0=0; i0& macros) { } } +string expand_op_search(const vector& args) { + for (auto op_type : op_types) { + string ret = op_type->expand_op(args); + if (ret.size()) + return ret; + } + LOGf << "No expand op pattern found for args:" << args; + return ""; +} + void expand_macro(const string& macro, const vector& args, string& new_src) { LOGvvvv << "expand_macro" << macro << "args:" << args; if (macro.size() == 0 || macro[0] != '<') { @@ -434,6 +444,7 @@ string precompile(unordered_map defs, string src, unordered_map args; size_t l = k+1; if (expr == "for" || expr == "if" || expr == "expand_macro" || + expr == "expand_op" || expr == "is_def" || expr == "python" || (k defs, string src, unordered_map bool { if (unchanged.count(s)) return true; + for (auto op_type : op_types) + if (op_type->types.count(s)) + return true; return (s.find("::") != string::npos) || (s.find("LOG") != string::npos); }; // regex find XxxXxxOp::jit_run diff --git a/python/jittor/src/ops/binary_op.cc b/python/jittor/src/ops/binary_op.cc index 7946ea61..3594303a 100644 --- a/python/jittor/src/ops/binary_op.cc +++ b/python/jittor/src/ops/binary_op.cc @@ -8,7 +8,6 @@ #include "var.h" #include "ops/binary_op.h" #include "ops/broadcast_to_op.h" -#include "ops/binary_op_defs.h" #include "ops/op_register.h" namespace jittor { @@ -554,7 +553,7 @@ void BinaryOp::jit_run() { auto* __restrict__ zp = z->ptr(); index_t num = z->num; for (index_t i=0; i. -// This file is subject to the terms and conditions defined in -// file 'LICENSE.txt', which is part of this source code package. -// *************************************************************** -#pragma once -#include "common.h" - -namespace jittor { - -#ifdef JIT_cuda -#define pow(T,a,b) ::pow(a,b) -#define maximum(T,a,b) ::max(T(a), T(b)) -#define minimum(T,a,b) ::min(T(a), T(b)) -#define mod(T,a,b) @if(@strcmp(@T,float32)==0,(a-::floorf((a)/(b))*(b)),@if(@strcmp(@Tx,float64)==0,(a-::floor((a)/(b))*(b)),(a%b))) -#else // JIT_cpu -#define pow(T,a,b) std::pow(a,b) -#define maximum(T,a,b) std::max(T(a), T(b)) -#define minimum(T,a,b) std::min(T(a), T(b)) -#define mod(T,a,b) @if(@strcmp(@T,float32)==0,(a-std::floor((a)/(b))*(b)),@if(@strcmp(@Tx,float64)==0,(a-std::floor((a)/(b))*(b)),(a%b))) -#endif -#define add(T,a,b) ((a)+(b)) -#define subtract(T,a,b) ((a)-(b)) -#define multiply(T,a,b) ((a)*(b)) -#define divide(T,a,b) (T((T(a))/(T(b)))) -#define floor_divide(T,a,b) (T((T(a))/(T(b)))) -#define less(T,a,b) ((a)<(b)) -#define less_equal(T,a,b) ((a)<=(b)) -#define greater(T,a,b) ((a)>(b)) -#define greater_equal(T,a,b) ((a)>=(b)) -#define equal(T,a,b) ((a)==(b)) -#define not_equal(T,a,b) ((a)!=(b)) -#define left_shift(T,a,b) ((a)<<(b)) -#define right_shift(T,a,b) ((a)>>(b)) -#define logical_and(T,a,b) ((a)&&(b)) -#define logical_or(T,a,b) ((a)||(b)) -#define logical_xor(T,a,b) ((bool(a))!=(bool(b))) -#define bitwise_and(T,a,b) ((a)&(b)) -#define bitwise_or(T,a,b) ((a)|(b)) -#define bitwise_xor(T,a,b) ((a)^(b)) -#define mean(T,a,b) ((a)+T(b)*(T(rcount))) - -#ifdef JIT_cuda -#define init_maximum(T) ::numeric_min() -#define init_minimum(T) ::numeric_max() -#else -#define init_maximum(T) std::numeric_limits::lowest() -#define init_minimum(T) std::numeric_limits::max() -#endif -#define init_add(T) T(0) -#define init_multiply(T) T(1) -#define init_logical_and(T) true -#define init_logical_or(T) false -#define init_logical_xor(T) false -#define init_bitwise_and(T) T(-1) -#define init_bitwise_or(T) T(0) -#define init_bitwise_xor(T) T(0) -#define init_mean(T) T(0) - -} // jittor \ No newline at end of file diff --git a/python/jittor/src/ops/op_defs.cc b/python/jittor/src/ops/op_defs.cc new file mode 100644 index 00000000..3c9f42ad --- /dev/null +++ b/python/jittor/src/ops/op_defs.cc @@ -0,0 +1,159 @@ +// *************************************************************** +// Copyright (c) 2021 Jittor. All Rights Reserved. +// Maintainers: Dun Liang . +// This file is subject to the terms and conditions defined in +// file 'LICENSE.txt', which is part of this source code package. +// *************************************************************** +#include "common.h" +#include "utils/str_utils.h" +#include "ops/op_register.h" + +namespace jittor { + +extern int use_cuda; + +struct CommonOpType : OpByType { + CommonOpType() { + types = { + "bool", + "int8", + "int16", + "int32", + "int64", + "uint8", + "uint16", + "uint32", + "uint64", + "float32", + "float64", + }; + } + + string expand_op(const vector& args) { + for (int i=1; i cuda_map = { + {"logical_not", "(!($2))"}, + {"bitwise_not", "(~($2))"}, + {"negative", "(-($2))"}, + {"abs", "::abs($2)"}, + {"log", "::logf(($1)($2))"}, + {"exp", "::expf(($1)($2))"}, + {"sqrt", "::sqrtf(($1)($2))"}, + {"round", "(($1) ::roundf(($2)))"}, + {"floor", "(($1) ::floorf(($2)))"}, + {"ceil", "(($1) ::ceilf(($2)))"}, + {"round_int", "(($1) ::roundf(($2)))"}, + {"floor_int", "(($1) ::floorf(($2)))"}, + {"ceil_int", "(($1) ::ceilf(($2)))"}, + {"sin", "(($1) ::sinf(($2)))"}, + {"asin", "(($1) ::asinf(($2)))"}, + {"sinh", "(($1) ::sinhf(($2)))"}, + {"asinh", "(($1) ::asinhf(($2)))"}, + {"cos", "(($1) ::cosf(($2)))"}, + {"acos", "(($1) ::acosf(($2)))"}, + {"cosh", "(($1) ::coshf(($2)))"}, + {"acosh", "(($1) ::acoshf(($2)))"}, + {"tan", "(($1) ::tanf(($2)))"}, + {"atan", "(($1) ::atanf(($2)))"}, + {"tanh", "(($1) ::tanhf(($2)))"}, + {"atanh", "(($1) ::atanhf(($2)))"}, + {"sigmoid", "(($1) (1.0f/(1.0f+::expf((::min($1(-($2)), $1(@if(@strcmp($1,float32)==0,30,300))))))))"}, + {"erf", "(($1) ::erff(($2)))"}, + {"erfinv", "(($1) ::erfinvf(($1)($2)))"}, + {"cast", "(($1)($2))"}, + {"pow", "::pow(($2),($4))"}, + {"maximum", "::max($1($2), $1($4))"}, + {"minimum", "::min($1($2), $1($4))"}, + {"mod", "@if(@strcmp($1,float32)==0,(($2)-::floorf(($2)/($4))*($4)),@if(@strcmp(@Tx,float64)==0,(($2)-::floor(($2)/($4))*($4)),(($2)%($4))))"}, + {"init_maximum", "::numeric_min<$1>()"}, + {"init_minimum", "::numeric_max<$1>()"}, + }; + + static unordered_map cpu_map = { + {"logical_not", "(!($2))"}, + {"bitwise_not", "(~($2))"}, + {"negative", "(-($2))"}, + {"abs", "std::abs($2)"}, + {"log", "std::log(($1)($2))"}, + {"exp", "std::exp(($1)($2))"}, + {"sqrt", "std::sqrt(($1)($2))"}, + {"round", "(($1)std::round(($2)))"}, + {"floor", "(($1)std::floor(($2)))"}, + {"ceil", "(($1)std::ceil(($2)))"}, + {"round_int", "(($1)std::round(($2)))"}, + {"floor_int", "(($1)std::floor(($2)))"}, + {"ceil_int", "(($1)std::ceil(($2)))"}, + {"sin", "(($1) std::sin(($2)))"}, + {"asin", "(($1) std::asin(($2)))"}, + {"sinh", "(($1) std::sinh(($2)))"}, + {"asinh", "(($1) std::asinh(($2)))"}, + {"cos", "(($1) std::cos(($2)))"}, + {"acos", "(($1) std::acos(($2)))"}, + {"cosh", "(($1) std::cosh(($2)))"}, + {"acosh", "(($1) std::acosh(($2)))"}, + {"tan", "(($1) std::tan(($2)))"}, + {"atan", "(($1) std::atan(($2)))"}, + {"tanh", "(($1) std::tanh(($2)))"}, + {"atanh", "(($1) std::atanh(($2)))"}, + {"sigmoid", "(($1) (1.0f/(1.0f+std::exp(std::min($1(-($2)), $1(@if(@strcmp($1,float32)==0,30,300)))))))"}, + {"erf", "(($1) std::erf(($2)))"}, + {"erfinv", "(jittor::_erfinv($2))"}, + {"cast", "(($1)($2))"}, + {"pow", "std::pow(($2),($4))"}, + {"maximum", "std::max($1($2), $1($4))"}, + {"minimum", "std::min($1($2), $1($4))"}, + {"mod", "@if(@strcmp($1,float32)==0,(($2)-std::floor(($2)/($4))*($4)),@if(@strcmp(@Tx,float64)==0,(($2)-std::floor(($2)/($4))*($4)),(($2)%($4))))"}, + {"init_maximum", "std::numeric_limits<$1>::lowest()"}, + {"init_minimum", "std::numeric_limits<$1>::max()"}, + }; + + static unordered_map both_map { + {"add", "(($2)+($4))"}, + {"subtract", "(($2)-($4))"}, + {"multiply", "(($2)*($4))"}, + {"divide", "($1(($1($2))/($1($4))))"}, + {"floor_divide", "($1(($1($2))/($1($4))))"}, + {"less", "(($2)<($4))"}, + {"less_equal", "(($2)<=($4))"}, + {"greater", "(($2)>($4))"}, + {"greater_equal", "(($2)>=($4))"}, + {"equal", "(($2)==($4))"}, + {"not_equal", "(($2)!=($4))"}, + {"left_shift", "(($2)<<($4))"}, + {"right_shift", "(($2)>>($4))"}, + {"logical_and", "(($2)&&($4))"}, + {"logical_or", "(($2)||($4))"}, + {"logical_xor", "((bool($2))!=(bool($4)))"}, + {"bitwise_and", "(($2)&($4))"}, + {"bitwise_or", "(($2)|($4))"}, + {"bitwise_xor", "(($2)^($4))"}, + {"mean", "(($2)+$1($4)*($1(rcount)))"}, + {"init_add", "$1(0)"}, + {"init_multiply", "$1(1)"}, + {"init_logical_and", "true"}, + {"init_logical_or", "false"}, + {"init_logical_xor", "false"}, + {"init_bitwise_and", "$1(-1)"}, + {"init_bitwise_or", "$1(0)"}, + {"init_bitwise_xor", "$1(0)"}, + {"init_mean", "$1(0)"}, + }; + + string ret; + if (both_map.count(args.at(0))) + ret = both_map[args.at(0)]; + else if (use_cuda) + ret = cuda_map[args.at(0)]; + else + ret = cpu_map[args.at(0)]; + return format(ret, args); + } +}; + + +static int _ = registe_op_type(new CommonOpType()); + +} \ No newline at end of file diff --git a/python/jittor/src/ops/op_register.cc b/python/jittor/src/ops/op_register.cc index 7c9a5647..23879ab3 100644 --- a/python/jittor/src/ops/op_register.cc +++ b/python/jittor/src/ops/op_register.cc @@ -33,4 +33,12 @@ OpInfo get_op_info(const string& name) { return op_info_map.at(op_file_name); } +vector op_types; + +int registe_op_type(OpByType* op_type) { + op_types.push_back(op_type); + return 0; +} + + } // jittor \ No newline at end of file diff --git a/python/jittor/src/ops/op_register.h b/python/jittor/src/ops/op_register.h index 989e588c..8f830b4f 100644 --- a/python/jittor/src/ops/op_register.h +++ b/python/jittor/src/ops/op_register.h @@ -32,4 +32,12 @@ void op_registe(const OpInfo& op_info); bool has_op(const string& name); OpInfo get_op_info(const string& name); +struct OpByType { + unordered_set types; + virtual string expand_op(const vector& args) = 0; +}; + +extern vector op_types; +int registe_op_type(OpByType*); + } // jittor \ No newline at end of file diff --git a/python/jittor/src/ops/reduce_op.cc b/python/jittor/src/ops/reduce_op.cc index fd4c5f29..4c0b3056 100644 --- a/python/jittor/src/ops/reduce_op.cc +++ b/python/jittor/src/ops/reduce_op.cc @@ -8,7 +8,6 @@ #include #include "var.h" #include "ops/reduce_op.h" -#include "ops/binary_op_defs.h" #include "ops/op_register.h" #include "executor.h" @@ -364,14 +363,14 @@ void ReduceOp::jit_run() { Ty rcount = Ty(y->num) / Ty(x->num); @for(d, 0, DIM,@if(REDUCE>>d&1,, for (index_t xi@d=0; xi@d < xshape@d; xi@d++))) { auto yid = 0 @for(d, 0, DIM,@if(REDUCE>>d&1,, + xi@d * ystride@d)); - yp[yid] = @expand_macro(init_@OP, Ty); + yp[yid] = @expand_op(init_@OP, @Ty); } @for(d, 0, DIM,@if(REDUCE>>d&1,, for (index_t xi@d=0; xi@d < xshape@d; xi@d++))) { @for(d, 0, DIM,@if(REDUCE>>d&1, for (index_t xi@d=0; xi@d < xshape@d; xi@d++),)) { auto yid = 0 @for(d, 0, DIM,@if(REDUCE>>d&1,, + xi@d * ystride@d)); auto xid = 0 @for(d, 0, DIM, + xi@d * xstride@d); - yp[yid] = @expand_macro(@OP, Ty, yp[yid], xp[xid]); + yp[yid] = @expand_op(@OP, @Ty, yp[yid], @Ty, xp[xid], @Tx); } } (void)count, (void)rcount, (void)yshape0, (void)ystride0; diff --git a/python/jittor/src/ops/reindex_reduce_op.cc b/python/jittor/src/ops/reindex_reduce_op.cc index c7ae1d34..93b958e6 100644 --- a/python/jittor/src/ops/reindex_reduce_op.cc +++ b/python/jittor/src/ops/reindex_reduce_op.cc @@ -8,7 +8,6 @@ #include #include "var.h" #include "ops/reindex_reduce_op.h" -#include "ops/binary_op_defs.h" #include "ops/op_register.h" namespace jittor { @@ -112,7 +111,7 @@ void ReindexReduceOp::jit_run() { @for(d, 0, XDIM, for (index_t i@d=0; i@d < xshape@d; i@d++)) { auto xid = @for(d, 0, XDIM, + i@d * xstride@d); - xp[xid] = @expand_macro(init_@OP, Tx); + xp[xid] = @expand_op(init_@OP, @Tx); } // generate d-for loop @for(d, 0, YDIM, for (index_t i@d=0; i@d < yshape@d; i@d++)) { @@ -121,7 +120,7 @@ void ReindexReduceOp::jit_run() { auto xid = @for(d, 0, XDIM, + xid@d * xstride@d); bool check_overflow = 0 @for(d, 0, XDIM, || xid@d<0 || xid@d>=xshape@d) @for(d, 0, OSIZE, || (@expand_macro(OFD@d))); if (!check_overflow) - xp[xid] = @expand_macro(@OP, Tx, xp[xid], yp[yid]); + xp[xid] = @expand_op(@OP, @Tx, xp[xid], @Tx, yp[yid], @Tx); } } #endif // JIT diff --git a/python/jittor/src/ops/setitem_op.cc b/python/jittor/src/ops/setitem_op.cc index 13836f36..e0ce1c53 100644 --- a/python/jittor/src/ops/setitem_op.cc +++ b/python/jittor/src/ops/setitem_op.cc @@ -9,7 +9,6 @@ #include "ops/setitem_op.h" #include "ops/getitem_op.h" #ifdef JIT -#include "ops/binary_op_defs.h" #ifdef JIT_cuda #include #include "helper_cuda.h" @@ -340,12 +339,12 @@ void SetitemOp::jit_run() { @if(@is_def(JIT_cpu), @if(@strcmp(@OP,void)==0, op[iid] = (Ti)dp[did], - op[iid] = @expand_macro(@OP, Ti, op[iid], dp[did]) + op[iid] = @expand_op(@OP, @Ti, op[iid], @Ti, dp[did], @Td) ); , @if(@strcmp(@OP,void)==0, op[iid] = (Ti)dp[did], @if(@strcmp(@OP,add)==0, atomicAdd(&op[iid], (Ti)dp[did]), - op[iid] = @expand_macro(@OP, Ti, op[iid], dp[did]) + op[iid] = @expand_op(@OP, @Ti, op[iid], @Ti, dp[did], @Td) ) ); ) diff --git a/python/jittor/src/ops/unary_op.cc b/python/jittor/src/ops/unary_op.cc index c1ef95d2..a7b1fad1 100644 --- a/python/jittor/src/ops/unary_op.cc +++ b/python/jittor/src/ops/unary_op.cc @@ -8,7 +8,6 @@ #include "misc/cpu_math.h" #include "var.h" #include "ops/unary_op.h" -#include "ops/unary_op_defs.h" #include "ops/op_register.h" namespace jittor { @@ -688,7 +687,7 @@ void UnaryOp::jit_run() { auto* __restrict__ yp = y->ptr(); index_t num = y->num; for (index_t i=0; i. -// This file is subject to the terms and conditions defined in -// file 'LICENSE.txt', which is part of this source code package. -// *************************************************************** -#pragma once -#include "common.h" - -namespace jittor { - -#define logical_not(T,x) (!(x)) -#define bitwise_not(T,x) (~(x)) -#define negative(T,x) (-(x)) -#ifdef JIT_cuda -// TODO: add float64 version -#define abs(T,x) ::abs(x) -#define log(T,x) ::logf((T)(x)) -#define exp(T,x) ::expf((T)(x)) -#define sqrt(T,x) ::sqrtf((T)(x)) -#define round(T,x) ((T) ::roundf((x))) -#define floor(T,x) ((T) ::floorf((x))) -#define ceil(T,x) ((T) ::ceilf((x))) -#define round_int(T,x) ((T) ::roundf((x))) -#define floor_int(T,x) ((T) ::floorf((x))) -#define ceil_int(T,x) ((T) ::ceilf((x))) - -#define sin(T,x) ((T) ::sinf((x))) -#define asin(T,x) ((T) ::asinf((x))) -#define sinh(T,x) ((T) ::sinhf((x))) -#define asinh(T,x) ((T) ::asinhf((x))) - -#define cos(T,x) ((T) ::cosf((x))) -#define acos(T,x) ((T) ::acosf((x))) -#define cosh(T,x) ((T) ::coshf((x))) -#define acosh(T,x) ((T) ::acoshf((x))) - -#define tan(T,x) ((T) ::tanf((x))) -#define atan(T,x) ((T) ::atanf((x))) -#define tanh(T,x) ((T) ::tanhf((x))) -#define atanh(T,x) ((T) ::atanhf((x))) - -#define sigmoid(T,x) ((T) (1.0f/(1.0f+::expf((::min(T(-(x)), T(@if(@strcmp(@T,float32)==0,30,300)))))))) - -#define erf(T,x) ((T) ::erff((x))) -#define erfinv(T,x) ((T) ::erfinvf((T)(x))) - -#else -#define abs(T,x) std::abs(x) -#define log(T,x) std::log((T)(x)) -#define exp(T,x) std::exp((T)(x)) -#define sqrt(T,x) std::sqrt((T)(x)) -#define round(T,x) ((T)std::round((x))) -#define floor(T,x) ((T)std::floor((x))) -#define ceil(T,x) ((T)std::ceil((x))) -#define round_int(T,x) ((T)std::round((x))) -#define floor_int(T,x) ((T)std::floor((x))) -#define ceil_int(T,x) ((T)std::ceil((x))) - -#define sin(T,x) ((T) std::sin((x))) -#define asin(T,x) ((T) std::asin((x))) -#define sinh(T,x) ((T) std::sinh((x))) -#define asinh(T,x) ((T) std::asinh((x))) - -#define cos(T,x) ((T) std::cos((x))) -#define acos(T,x) ((T) std::acos((x))) -#define cosh(T,x) ((T) std::cosh((x))) -#define acosh(T,x) ((T) std::acosh((x))) - -#define tan(T,x) ((T) std::tan((x))) -#define atan(T,x) ((T) std::atan((x))) -#define tanh(T,x) ((T) std::tanh((x))) -#define atanh(T,x) ((T) std::atanh((x))) - -#define sigmoid(T,x) ((T) (1.0f/(1.0f+std::exp(std::min(T(-(x)), T(@if(@strcmp(@T,float32)==0,30,300))))))) - -#define erf(T,x) ((T) std::erf((x))) -#define erfinv(T,x) (jittor::_erfinv(x)) - -#endif - -#define cast(T,x) ((T)(x)) - -} // jittor \ No newline at end of file diff --git a/python/jittor/src/utils/str_utils.cc b/python/jittor/src/utils/str_utils.cc index 0c340b65..6dbd1121 100644 --- a/python/jittor/src/utils/str_utils.cc +++ b/python/jittor/src/utils/str_utils.cc @@ -47,4 +47,18 @@ string strip(const string& s) { return s.substr(i,j-i); } +string format(const string& s, const vector& v) { + string ss; + for (int i=0; i split(const string& s, const string& sep, int max_split=0); string strip(const string& s); +string format(const string& s, const vector& v); + } // jittor \ No newline at end of file diff --git a/python/jittor/test/test_op_compiler.py b/python/jittor/test/test_op_compiler.py index 01bf12e8..dc203a9c 100644 --- a/python/jittor/test/test_op_compiler.py +++ b/python/jittor/test/test_op_compiler.py @@ -111,17 +111,6 @@ class TestOpCompiler(unittest.TestCase): check("@{a^b == 7}", "2") check("@{(a^b) == 7}", "1") check("@{b< Date: Sun, 20 Feb 2022 21:06:09 +0800 Subject: [PATCH 03/33] check crlf --- python/jittor/src/utils/cache_compile.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/jittor/src/utils/cache_compile.cc b/python/jittor/src/utils/cache_compile.cc index 617a0f12..4765d0a4 100644 --- a/python/jittor/src/utils/cache_compile.cc +++ b/python/jittor/src/utils/cache_compile.cc @@ -167,14 +167,14 @@ void process(string src, vector& input_names, string& cmd) { // #include "a.h" // i jk l auto j=i+1; - while (j=src.size()) return; if (j-i != 8 && j-i != 6) continue; auto k=j+1; while (k=src.size()) return; auto l=k+1; - while (l Date: Sun, 20 Feb 2022 21:15:56 +0800 Subject: [PATCH 04/33] rename common_op_type --- python/jittor/src/{ops/op_defs.cc => type/common_op_type.cc} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename python/jittor/src/{ops/op_defs.cc => type/common_op_type.cc} (100%) diff --git a/python/jittor/src/ops/op_defs.cc b/python/jittor/src/type/common_op_type.cc similarity index 100% rename from python/jittor/src/ops/op_defs.cc rename to python/jittor/src/type/common_op_type.cc From 7c7b856dcf54a95956b87b683f4764fd1bcde4c7 Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Sun, 20 Feb 2022 21:27:31 +0800 Subject: [PATCH 05/33] fix op stat --- python/jittor/src/op.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/python/jittor/src/op.cc b/python/jittor/src/op.cc index f60955e2..60256fe5 100644 --- a/python/jittor/src/op.cc +++ b/python/jittor/src/op.cc @@ -268,11 +268,15 @@ void Op::jit_run(JK& jk) { void Op::statistics(uint64_t& in, uint64_t& out, uint64_t& compute) { in = out = compute = 0; - for (Var* var : inputs()) { + for (auto& e : _inputs) { + auto var = e.node->var(); + if (e.back->index<0) continue; in += var->size; compute = std::max(compute, (uint64_t)var->num); } - for (Var* var : outputs()) { + for (auto& e : _outputs) { + auto var = e.node->var(); + if (e.index<0) continue; out += var->size; compute = std::max(compute, (uint64_t)var->num); } From 7cf6165a100d40e639f6f1f01c49174f6f417e26 Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Sat, 26 Feb 2022 16:14:52 +0800 Subject: [PATCH 06/33] profiler polish --- python/jittor/__init__.py | 4 +- python/jittor/src/executor.h | 4 + python/jittor/src/op_compiler.cc | 11 +- python/jittor/src/profiler/profiler.cc | 151 ++++++++++++++++++++----- python/jittor/src/profiler/profiler.h | 5 + python/jittor/src/utils/str_utils.cc | 15 +++ python/jittor/src/utils/str_utils.h | 4 + python/jittor/test/test_profiler.py | 24 ++++ 8 files changed, 184 insertions(+), 34 deletions(-) create mode 100644 python/jittor/test/test_profiler.py diff --git a/python/jittor/__init__.py b/python/jittor/__init__.py index f953c0d3..dd0267df 100644 --- a/python/jittor/__init__.py +++ b/python/jittor/__init__.py @@ -231,19 +231,19 @@ class profile_scope(_call_no_record_scope): def __enter__(self): assert not flags.profiler_enable - profiler.start(self.warmup, self.rerun) self.report = [] try: self.fs.__enter__() + profiler.start(self.warmup, self.rerun) return self.report except: profiler.stop() raise def __exit__(self, *exc): - self.fs.__exit__(*exc) profiler.stop() self.report.extend(profiler.report()) + self.fs.__exit__(*exc) class __single_process_scope: def __init__(self, rank=0): diff --git a/python/jittor/src/executor.h b/python/jittor/src/executor.h index 8e37c361..dc21d096 100644 --- a/python/jittor/src/executor.h +++ b/python/jittor/src/executor.h @@ -22,6 +22,10 @@ struct Executor { Allocator* temp_allocator; bool last_is_cuda = false; void run_sync(vector vars, bool device_sync); + + inline Allocation alloc_temp(size_t size) { + return Allocation(temp_allocator, size); + } }; EXTERN_LIB Executor exe; diff --git a/python/jittor/src/op_compiler.cc b/python/jittor/src/op_compiler.cc index fbb623f3..fe32d043 100644 --- a/python/jittor/src/op_compiler.cc +++ b/python/jittor/src/op_compiler.cc @@ -1064,13 +1064,22 @@ jit_op_entry_t OpCompiler::compile(const string& jit_key, const string& src) { // add extra flags for custom ops bool is_cuda = _op->flags.get(NodeFlags::_cuda); auto op_info = get_op_info(_op->name()); - return jit_compiler::compile(jit_key, src, is_cuda, op_info.extra_flags); + string extra_flags = op_info.extra_flags; + for (auto v : _op->outputs()) + if (v->loop_options) + for (auto& kv : v->loop_options.data()) { + if (kv.second && startswith(kv.first, "FLAGS:")) + extra_flags += " " + kv.first.substr(6) + " "; + } + return jit_compiler::compile(jit_key, src, is_cuda, extra_flags); } jit_op_entry_t OpCompiler::do_compile(Op* op) { jittor::lock_guard lg; OpCompiler oc(op); string* src = &oc.src; + for (auto op_type : op_types) + op_type->post_pass(&oc); string src_after_passes; // if is fused op if (oc.op) { diff --git a/python/jittor/src/profiler/profiler.cc b/python/jittor/src/profiler/profiler.cc index 262ac2cf..fc3379b1 100644 --- a/python/jittor/src/profiler/profiler.cc +++ b/python/jittor/src/profiler/profiler.cc @@ -23,6 +23,7 @@ #include "fused_op.h" #include "profiler/memory_checker.h" #include "misc/deleter.h" +#include "executor.h" namespace jittor { @@ -30,6 +31,8 @@ Profiler profiler; DEFINE_FLAG(int, profiler_warmup, 0, "Profiler warmup."); DEFINE_FLAG(int, profiler_rerun, 0, "Profiler rerun."); +DEFINE_FLAG(int, profiler_record_peek, 0, "Profiler record peek mem bandwidth."); +DEFINE_FLAG(int, profiler_record_shape, 0, "Profiler record shape for op."); DEFINE_FLAG(int, profiler_hide_relay, 0, "Profiler hide relayed op."); DEFINE_FLAG_WITH_SETTER(int, profiler_enable, 0, "Enable profiler."); @@ -54,6 +57,8 @@ void Profiler::start(int64 warmup, int64 rerun) { profiler.records.clear(); profiler.warmup = warmup; profiler.rerun = rerun; + profiler.relay_extra_cost = 0; + profiler.relay_fop = 0; } void Profiler::stop() { @@ -138,6 +143,60 @@ static string get_stack_info(Op* op) { } } +static void stat_peek_bandwidth(uint64 in, uint64 out, uint64 loop, uint64& peek_time_total) { + auto size = (in+out) / 2; + // memcpy in some not aligned case will drop performance + size &= ~((1 << 12)-1); + // size = 7680000*4; + auto temp1 = exe.alloc_temp(size); + auto temp2 = exe.alloc_temp(size); + loop = 1 << loop; + int warmup = std::max(loop/8, (uint64)1); + for (int i=0; i(finish-start).count(); + peek_time_total += total_ns; +} + +struct RecordExtraCost { + int ck; + std::chrono::high_resolution_clock::time_point start; + + RecordExtraCost(int ck) : ck(ck) { + if (!ck) return; + start = std::chrono::high_resolution_clock::now(); + } + + ~RecordExtraCost() { + if (!ck) return; + auto finish = std::chrono::high_resolution_clock::now(); + auto total_ns = (int64_t)std::chrono::duration_cast(finish-start).count(); + profiler.relay_extra_cost += total_ns; + } +}; + void Profiler::record_and_run( jit_op_entry_t jit_entry, Op* op, @@ -151,7 +210,10 @@ void Profiler::record_and_run( jit_key : ikey->second.c_str(); auto iter = profiler.records.find(key); uint64_t in, out, compute; - op->statistics(in, out, compute); + if (profiler.relay_fop) + profiler.relay_fop->statistics(in, out, compute); + else + op->statistics(in, out, compute); if (iter == profiler.records.end()) { profiler.records[key] = Info{ 0, 0, -1ull, 0, @@ -165,7 +227,7 @@ void Profiler::record_and_run( bool is_fused = op->name() == string("fused"); uint64* shape_time = nullptr; - if (trace_py_var) { + if (trace_py_var || profiler_record_shape) { // record shape NanoVector shape; int64 num = 0; @@ -193,41 +255,62 @@ void Profiler::record_and_run( iter->second.shapes[shape].second += 1; shape_time = &iter->second.shapes[shape].first; } - int loop = (is_fused && - ((FusedOp*)op)->get_loop_option("insert_profile_loop")) ? 10 : 0; - int64_t warmup = profiler.warmup ? std::max(profiler.warmup>>loop, (int64_t)1) : 0; - int64_t rerun = std::max((profiler.rerun+1)>>loop, (int64_t)1); - // prevent relayed op being rerun - auto warmup_bk = profiler.warmup; - auto rerun_bk = profiler.rerun; - profiler.warmup = profiler.rerun = 0; - Deleter del([&]() { - profiler.warmup = warmup_bk; - profiler.rerun = rerun_bk; - }); - - for (int64_t i=0; icontext && fop->context->entry) { + // relay op + loop = rerun; + profiler.relay_extra_cost = 0; + profiler.relay_fop = fop; + _d.del = [&]() { + profiler.relay_extra_cost = 0; + profiler.relay_fop = 0; + }; + } else + loop = fop->get_loop_option("insert_profile_loop") ? 10 : 0; + } + int64 num = 1<<(rerun - loop); + + { + profiler_enable = 0; + Deleter del([&]() { profiler_enable = 1;}); + RecordExtraCost rec(profiler.relay_fop && profiler.relay_fop != op); + for (int64_t i=0; i(finish-start).count(); - // 24ns function call overhead - total_ns = std::max((int64_t)1, total_ns-24); - iter->second.update(loop, total_ns, in, out, compute); - if (shape_time) shape_time[0] += total_ns; - LOGvvvv << "Duration" << total_ns >> "ns running" << op; } + #ifdef HAS_CUDA + if (use_cuda) + checkCudaErrors(cudaDeviceSynchronize()); + #endif + auto finish = std::chrono::high_resolution_clock::now(); + auto total_ns = (int64_t)std::chrono::duration_cast(finish-start).count(); + if (profiler.relay_fop == op) { + total_ns -= profiler.relay_extra_cost; + } + // 24ns function call overhead + total_ns = std::max((int64_t)1, total_ns-24); + iter->second.update(rerun, total_ns, in, out, compute); + if (shape_time) shape_time[0] += total_ns; + + RecordExtraCost rec(profiler.relay_fop && profiler.relay_fop != op); + if (profiler_record_peek) + stat_peek_bandwidth(in, out, rerun, iter->second.peek_time_total); + LOGvvvv << "Duration" << total_ns >> "ns running" << op; if (is_fused && ((FusedOp*)op)->get_loop_option("check_cache")) { auto fname = Op::get_filename_from_jit_key(key, ".so"); @@ -239,6 +322,8 @@ void Profiler::record_and_run( vector> Profiler::report(const string& sort_key) { vector> rep = {{"Name", "FileName", "Count", "TotalTime", "AvgTime", "MinTime", "MaxTime", "Input", "Output", "InOut", "Compute"}}; + if (profiler_record_peek) + rep[0].push_back("Peek"); vector names, fnames; vector> info; vector order; @@ -295,6 +380,10 @@ vector> Profiler::report(const string& sort_key) { (double)(kinfo.in_total+kinfo.out_total)*1e9 / kinfo.time_total, // InOut (double)kinfo.compute_total*1e9 / kinfo.time_total, // Compute }); + if (profiler_record_peek) + info.back().push_back( + (double)(kinfo.in_total+kinfo.out_total)*1e9 / kinfo.peek_time_total // Peek + ); } if (sort_key_id>=2) std::sort(order.begin(), order.end(), [&](int i, int j) { @@ -363,7 +452,7 @@ vector> Profiler::report(const string& sort_key) { << std::setw(3) << std::setprecision(p) << cum_time / total_time * 100 << "%)"; } - } else if (j<=7) { + } else if (j<=7 || j==9) { // output thoughtput output_float(" KMG", 1024, "B/s", k); } else { diff --git a/python/jittor/src/profiler/profiler.h b/python/jittor/src/profiler/profiler.h index 19c02d2a..90aed655 100644 --- a/python/jittor/src/profiler/profiler.h +++ b/python/jittor/src/profiler/profiler.h @@ -24,6 +24,8 @@ struct Profiler { uint64_t in_total, out_total; // compute thoughtput in ops uint64_t compute_total; + // peek time use memcopy + uint64_t peek_time_total; // cache test info unique_ptr cache_info; cstr stack_info; @@ -56,6 +58,9 @@ struct Profiler { int64_t warmup=0, rerun=0; unordered_map records; + int64 relay_extra_cost; + FusedOp* relay_fop; + ~Profiler(); }; diff --git a/python/jittor/src/utils/str_utils.cc b/python/jittor/src/utils/str_utils.cc index 6dbd1121..73be4b5c 100644 --- a/python/jittor/src/utils/str_utils.cc +++ b/python/jittor/src/utils/str_utils.cc @@ -61,4 +61,19 @@ string format(const string& s, const vector& v) { return ss; } +string join(const vector& vs, const string& x) { + string s; + for (int i=0; i& v); +string replace(const string& a, const string& b, const string& c); + +string join(const vector& vs, const string& x); + } // jittor \ No newline at end of file diff --git a/python/jittor/test/test_profiler.py b/python/jittor/test/test_profiler.py new file mode 100644 index 00000000..2293dc0f --- /dev/null +++ b/python/jittor/test/test_profiler.py @@ -0,0 +1,24 @@ +# *************************************************************** +# Copyright (c) 2021 Jittor. All Rights Reserved. +# Maintainers: Dun Liang . +# This file is subject to the terms and conditions defined in +# file 'LICENSE.txt', which is part of this source code package. +# *************************************************************** +import unittest +import jittor as jt +import numpy as np +import os + +class TestProfiler(unittest.TestCase): + def test_profiler(self): + a = jt.rand(1000,1000) + b = jt.rand(1000,1000) + jt.sync_all() + with jt.profile_scope(10, 100, profiler_record_peek=1) as rep: + jt.matmul(a, b).sync() + x = float(rep[-1][4]) + y = float(rep[-2][4]) + assert abs(x-y)/x < 1e-3 + +if __name__ == "__main__": + unittest.main() \ No newline at end of file From 15f162d4f3e63a64b5a6da63d3435854e330c597 Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Thu, 10 Mar 2022 17:11:55 +0800 Subject: [PATCH 07/33] cuda11.4 in windows disabled --- python/jittor/__init__.py | 2 +- python/jittor_utils/install_cuda.py | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/python/jittor/__init__.py b/python/jittor/__init__.py index a0a72b4e..ac3a4f34 100644 --- a/python/jittor/__init__.py +++ b/python/jittor/__init__.py @@ -9,7 +9,7 @@ # file 'LICENSE.txt', which is part of this source code package. # *************************************************************** -__version__ = '1.3.1.46' +__version__ = '1.3.1.47' from jittor_utils import lock with lock.lock_scope(): ori_int = int diff --git a/python/jittor_utils/install_cuda.py b/python/jittor_utils/install_cuda.py index 4d28e69f..e07b2bbb 100644 --- a/python/jittor_utils/install_cuda.py +++ b/python/jittor_utils/install_cuda.py @@ -54,10 +54,12 @@ def install_cuda(): LOG.i("JTCUDA_VERSION: ", cuda_driver_version) if os.name == 'nt': - if cuda_driver_version >= [11,4]: - cuda_tgz = "cuda11.4_cudnn8_win.zip" - md5 = "06eed370d0d44bb2cc57809343911187" - elif cuda_driver_version >= [11,2]: + # TODO: cuda11.4 has bug fit with + # current msvc, FIXME + # if cuda_driver_version >= [11,4]: + # cuda_tgz = "cuda11.4_cudnn8_win.zip" + # md5 = "06eed370d0d44bb2cc57809343911187" + if cuda_driver_version >= [11,2]: cuda_tgz = "cuda11.2_cudnn8_win.zip" md5 = "b5543822c21bc460c1a414af47754556" elif cuda_driver_version >= [11,]: From 39ecdd84fdf15a4c782fecd4576982bd82b28245 Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Tue, 15 Mar 2022 17:45:39 +0800 Subject: [PATCH 08/33] add fp16 support --- python/jittor/__init__.py | 58 ++- python/jittor/compile_extern.py | 35 +- .../extern/cuda/cublas/inc/cublas_wrapper.h | 4 +- .../cublas/ops/cublas_batched_matmul_op.cc | 4 + .../cuda/cublas/ops/cublas_matmul_op.cc | 4 + .../extern/cuda/cudnn/ops/cudnn_conv_op.cc | 5 + python/jittor/misc.py | 11 +- python/jittor/models/resnet.py | 2 +- python/jittor/nn.py | 148 +++---- python/jittor/other/code_softmax.py | 75 +++- python/jittor/pool.py | 20 +- python/jittor/src/grad.cc | 18 +- python/jittor/src/jit_key.h | 2 +- python/jittor/src/misc/deleter.h | 3 +- python/jittor/src/misc/nano_string.cc | 35 +- python/jittor/src/misc/nano_string.h | 108 +++-- python/jittor/src/node.h | 10 +- python/jittor/src/op.cc | 3 +- python/jittor/src/op.h | 2 +- python/jittor/src/op_compiler.cc | 2 +- python/jittor/src/ops/binary_op.cc | 10 +- python/jittor/src/ops/op_register.h | 2 + python/jittor/src/ops/reduce_op.cc | 8 +- python/jittor/src/ops/reindex_op.cc | 2 +- python/jittor/src/ops/transpose_op.cc | 6 + python/jittor/src/ops/unary_op.cc | 20 +- python/jittor/src/opt/tuner/conv_tuner.cc | 12 +- python/jittor/src/profiler/profiler.cc | 2 +- python/jittor/src/pyjt/numpy.cc | 6 +- python/jittor/src/pyjt/numpy.h | 6 +- python/jittor/src/pyjt/py_array_op.cc | 2 +- python/jittor/src/pyjt/py_converter.h | 4 +- python/jittor/src/pyjt/py_ring_buffer.cc | 2 +- python/jittor/src/type/common_op_type.cc | 80 ++-- python/jittor/src/type/fp16_compute.h | 164 ++++++++ python/jittor/src/type/fp16_op_type.cc | 188 +++++++++ python/jittor/src/types.h | 2 +- python/jittor/src/var.cc | 4 +- python/jittor/src/var.h | 6 +- python/jittor/test/__main__.py | 4 + python/jittor/test/misc/superglue.py | 374 ++++++++++++++++++ python/jittor/test/test_benchmark.py | 344 ++++++++++++++++ python/jittor/test/test_binary_op.py | 42 +- python/jittor/test/test_fp16.py | 342 ++++++++++++++++ python/jittor/test/test_misc_op.py | 43 +- python/jittor/test/test_resnet.py | 39 +- python/jittor/test/test_superglue.py | 121 ++++++ python/jittor/test/test_unary_op.py | 30 +- python/jittor/utils/data.gz | Bin 421964 -> 422607 bytes 49 files changed, 2124 insertions(+), 290 deletions(-) create mode 100644 python/jittor/src/type/fp16_compute.h create mode 100644 python/jittor/src/type/fp16_op_type.cc create mode 100644 python/jittor/test/misc/superglue.py create mode 100644 python/jittor/test/test_benchmark.py create mode 100644 python/jittor/test/test_fp16.py create mode 100644 python/jittor/test/test_superglue.py diff --git a/python/jittor/__init__.py b/python/jittor/__init__.py index dd0267df..c8dc1d0e 100644 --- a/python/jittor/__init__.py +++ b/python/jittor/__init__.py @@ -9,7 +9,7 @@ # file 'LICENSE.txt', which is part of this source code package. # *************************************************************** -__version__ = '1.3.1.38' +__version__ = '1.3.1.38.1' from jittor_utils import lock with lock.lock_scope(): ori_int = int @@ -304,15 +304,52 @@ Var.cast = Var.cast def array(data, dtype=None): if isinstance(data, core.Var): if dtype is None: - return data.clone() - return cast(data, dtype) - if dtype is not None: + ret = data.clone() + else: + ret = cast(data, dtype) + elif dtype is not None: if isinstance(dtype, NanoString): dtype = str(dtype) elif callable(dtype): dtype = dtype.__name__ - return ops.array(np.array(data, dtype)) - return ops.array(data) + ret = ops.array(np.array(data, dtype)) + else: + ret = ops.array(data) + # TODO: move those code to core + amp_reg = jt.flags.amp_reg + if amp_reg and ret.numel() != 1 and ret.dtype.is_float(): + if amp_reg & 16: + if amp_reg & 1: + if ret.dtype != "float32": + return ret.float32() + elif amp_reg & 2: + if ret.dtype != "float16": + return ret.float16() + return ret + +def random(shape, dtype="float32", type="uniform"): + # TODO: move those code to core + if dtype == "float16": + # TODO: make curand support fp16 + ret = ops.random(shape, "float32", type).float16() + else: + ret = ops.random(shape, dtype, type) + amp_reg = jt.flags.amp_reg + if amp_reg: + if amp_reg & 16: + if amp_reg & 1: + if ret.dtype != "float32": + return ret.float32() + elif amp_reg & 2: + if ret.dtype != "float16": + return ret.float16() + return ret + +def float_auto(x): + if jt.flags.amp_reg & 2: + return x.float16() + return x.float32() +Var.float_auto = float_auto def array64(data, dtype=None): with jt.flag_scope(auto_convert_64_to_32=0): @@ -1419,18 +1456,15 @@ Var.size = size def to_int(v): - dtype = str(v.dtype) - assert dtype.startswith("int") + assert v.dtype.is_int() return v.item() def to_float(v): - dtype = str(v.dtype) - assert dtype.startswith("float") + assert v.dtype.is_float() return v.item() def to_bool(v): - dtype = str(v.dtype) - assert dtype.startswith("int") or dtype=="bool" + assert v.dtype.is_int() or v.dtype.is_bool() return ori_bool(v.item()) Var.__int__ = to_int diff --git a/python/jittor/compile_extern.py b/python/jittor/compile_extern.py index 7fbf6c61..893a5ca0 100644 --- a/python/jittor/compile_extern.py +++ b/python/jittor/compile_extern.py @@ -210,6 +210,12 @@ def setup_cuda_extern(): LOG.w(f"CUDA found but cub is not loaded:\n{line}") libs = ["cublas", "cudnn", "curand"] + # in cuda 11.4, module memory comsumptions: + # default context: 259 MB + # cublas: 340 MB + # cudnn: 340 MB + if int(os.environ.get("conv_opt", "0")): + libs = ["cublas", "curand"] for lib_name in libs: try: setup_cuda_lib(lib_name, extra_flags=link_cuda_extern) @@ -309,22 +315,27 @@ def install_cutt(root_folder): if md5 != true_md5: os.remove(fullname) shutil.rmtree(dirname) - if not os.path.isfile(os.path.join(cache_path, "libcutt"+so)): - LOG.i("Downloading cutt...") - download_url_to_local(url, filename, root_folder, true_md5) + CUTT_PATH = os.environ.get("CUTT_PATH", "") + if not os.path.isfile(os.path.join(cache_path, "libcutt"+so)) or CUTT_PATH: + if CUTT_PATH: + dirname = CUTT_PATH + else: + LOG.i("Downloading cutt...") + download_url_to_local(url, filename, root_folder, true_md5) - import zipfile + import zipfile - zf = zipfile.ZipFile(fullname) - try: - zf.extractall(path=root_folder) - except RuntimeError as e: - print(e) - raise - zf.close() + zf = zipfile.ZipFile(fullname) + try: + zf.extractall(path=root_folder) + except RuntimeError as e: + print(e) + raise + zf.close() LOG.i("installing cutt...") - arch_flag = "" + # -Xptxas -dlcm=ca actually not work + arch_flag = " -Xptxas -dlcm=ca " if len(flags.cuda_archs): arch_flag = f" -arch=compute_{min(flags.cuda_archs)} " arch_flag += ''.join(map(lambda x:f' -code=sm_{x} ', flags.cuda_archs)) diff --git a/python/jittor/extern/cuda/cublas/inc/cublas_wrapper.h b/python/jittor/extern/cuda/cublas/inc/cublas_wrapper.h index 67d46a69..5ff0de2c 100644 --- a/python/jittor/extern/cuda/cublas/inc/cublas_wrapper.h +++ b/python/jittor/extern/cuda/cublas/inc/cublas_wrapper.h @@ -23,8 +23,8 @@ EXTERN_LIB cublasHandle_t cublas_handle; static inline cudaDataType get_dtype(NanoString dtype) { if (dtype == ns_float32) return CUDA_R_32F; - // if (dtype == ns_float64) return CUDA_R_64F; - // if (dtype == ns_float16) return CUDA_R_16F; + if (dtype == ns_float64) return CUDA_R_64F; + if (dtype == ns_float16) return CUDA_R_16F; LOGf << "not support type" << dtype; return CUDA_R_32F; } diff --git a/python/jittor/extern/cuda/cublas/ops/cublas_batched_matmul_op.cc b/python/jittor/extern/cuda/cublas/ops/cublas_batched_matmul_op.cc index 6ab519a0..47874ef3 100644 --- a/python/jittor/extern/cuda/cublas/ops/cublas_batched_matmul_op.cc +++ b/python/jittor/extern/cuda/cublas/ops/cublas_batched_matmul_op.cc @@ -124,6 +124,10 @@ void CublasBatchedMatmulOp::jit_run() { if (use_tensorcore) { computeType = CUBLAS_COMPUTE_32F_FAST_16F; } + if (a->dtype() == ns_float16 + || b->dtype() == ns_float16 || c->dtype() == ns_float16) { + computeType = CUBLAS_COMPUTE_16F; + } checkCudaErrors(cublasGemmStridedBatchedEx(handle_, CUBLAS_OP_@Trans_b, CUBLAS_OP_@Trans_a, k, n, m, &alpha, diff --git a/python/jittor/extern/cuda/cublas/ops/cublas_matmul_op.cc b/python/jittor/extern/cuda/cublas/ops/cublas_matmul_op.cc index 0ed46bc4..95de20f7 100644 --- a/python/jittor/extern/cuda/cublas/ops/cublas_matmul_op.cc +++ b/python/jittor/extern/cuda/cublas/ops/cublas_matmul_op.cc @@ -81,6 +81,10 @@ void CublasMatmulOp::jit_run() { if (use_tensorcore) { computeType = CUBLAS_COMPUTE_32F_FAST_16F; } + if (a->dtype() == ns_float16 + || b->dtype() == ns_float16 || c->dtype() == ns_float16) { + computeType = CUBLAS_COMPUTE_16F; + } checkCudaErrors(cublasGemmEx(handle_, CUBLAS_OP_@Trans_b, CUBLAS_OP_@Trans_a, k, n, m, &alpha, diff --git a/python/jittor/extern/cuda/cudnn/ops/cudnn_conv_op.cc b/python/jittor/extern/cuda/cudnn/ops/cudnn_conv_op.cc index acb9bd52..c495fdb6 100644 --- a/python/jittor/extern/cuda/cudnn/ops/cudnn_conv_op.cc +++ b/python/jittor/extern/cuda/cudnn/ops/cudnn_conv_op.cc @@ -174,6 +174,11 @@ void CudnnConvOp::jit_run() { if(use_tensorcore){ checkCudaErrors( cudnnSetConvolutionMathType(cudnnConvDesc, CUDNN_TENSOR_OP_MATH_ALLOW_CONVERSION) ); } + + if (x->dtype() == ns_float16 + || y->dtype() == ns_float16 || w->dtype() == ns_float16) { + checkCudaErrors( cudnnSetConvolutionMathType(cudnnConvDesc, CUDNN_TENSOR_OP_MATH_ALLOW_CONVERSION) ); + } int dimY[] = { (int)y->shape[findc("@YFORMAT", 'a')], // n diff --git a/python/jittor/misc.py b/python/jittor/misc.py index 15d68915..7b2c64af 100644 --- a/python/jittor/misc.py +++ b/python/jittor/misc.py @@ -488,18 +488,11 @@ def arctan2(y,x): angle = jt.zeros(x.shape,dtype=x.dtype) x = (x!=0.0).ternary(x, x+1e-30) angle = (y/x).arctan() - - mask = (y<0) & (x<0) - if angle[mask].numel()>0: - angle[mask] -= np.pi - - mask = (y>=0) &(x<0) - if angle[mask].numel()>0: - angle[mask] +=np.pi + mask = y<0 | ((y==0) & (x<0)) + angle = angle + mask*np.pi return angle - def nonzero(x): r''' Return the index of the elements of input tensor which are not equal to zero. diff --git a/python/jittor/models/resnet.py b/python/jittor/models/resnet.py index 1ef54d65..3aa60928 100644 --- a/python/jittor/models/resnet.py +++ b/python/jittor/models/resnet.py @@ -143,7 +143,7 @@ class ResNet(nn.Module): x = self.layer2(x) x = self.layer3(x) x = self.layer4(x) - x = self.avgpool(x) + x = self.avgpool(x).float_auto() x = jt.reshape(x, (x.shape[0], -1)) x = self.fc(x) return x diff --git a/python/jittor/nn.py b/python/jittor/nn.py index 44ed27dc..a0079948 100644 --- a/python/jittor/nn.py +++ b/python/jittor/nn.py @@ -37,9 +37,10 @@ def matmul_transpose(a, b): assert len(a.shape) == 2 and len(b.shape) == 2 shape = list(a.shape)[:-1] + list(b.shape) - a = a.broadcast(shape, [len(shape)-2]) - b = b.broadcast(shape) - return (a*b).sum(len(shape)-1) + with jt.flag_scope(amp_reg = jt.flags.amp_reg | 4): + a = a.broadcast(shape, [len(shape)-2]) + b = b.broadcast(shape) + return (a*b).sum(len(shape)-1) def bmm_transpose(a, b): @@ -108,47 +109,48 @@ Example:: c = jt.matmul(a, b) assert c.shape == [8, 10, 3, 5] ''' - len_a = len(a.shape) - len_b = len(b.shape) - if len_b == 1: - # a: [n, m], b:[m], c:[n] - return (a*b).sum(-1) - if len_a == 1: - # a: [n], b:[n,k], c:[k] - return (a.broadcast(b, [-1]) * b).sum(0) - if len_a>=3 and len_a==len_b: - # bmm - # a: [..., n, m], b: [..., m, k], c:[..., n, k] - if jt.flags.use_cuda and jt.compile_extern.cublas_ops: - return jt.compile_extern.cublas_ops.cublas_batched_matmul(a, b, 0, 0) - shape = [] - len_c = max(len_a, len_b) - (n, m), (m_, k) = a.shape[-2:], b.shape[-2:] - assert m == m_, f"dimension not match, a.shape:{a.shape}, b.shape:{b.shape}" - # a: [..., n, m] - # b: [..., m, k] - # cc:[..., n, m, k] - # --> - # 012 - if len_b == 2 and len_a>2: - # TODO:ugly implementation for tuner - aa = a.reshape((-1, m)) - cc = matmul(aa, b) - # print(a.shape, b.shape, cc.shape) - return cc.reshape(a.shape[:-1] + [k]) - for i in range(len_c-2): - ai = len_a-(len_c-i) - bi = len_b-(len_c-i) - an = a.shape[ai] if ai>=0 else 1 - bn = b.shape[bi] if bi>=0 else 1 - if an!=1 and bn!=1: - assert an == bn, f"dimension not match, a.shape:{a.shape}, b.shape:{b.shape}" - cn = max(an, bn) - shape.append(cn) - shape.extend([n, m, k]) - a = a.broadcast(shape, [-1]) - b = b.broadcast(shape, [-3]) - return (a*b).sum(-2) + with jt.flag_scope(amp_reg = jt.flags.amp_reg | 4): + len_a = len(a.shape) + len_b = len(b.shape) + if len_b == 1: + # a: [n, m], b:[m], c:[n] + return (a*b).sum(-1) + if len_a == 1: + # a: [n], b:[n,k], c:[k] + return (a.broadcast(b, [-1]) * b).sum(0) + if len_a>=3 and len_a==len_b: + # bmm + # a: [..., n, m], b: [..., m, k], c:[..., n, k] + if jt.flags.use_cuda and jt.compile_extern.cublas_ops: + return jt.compile_extern.cublas_ops.cublas_batched_matmul(a, b, 0, 0) + shape = [] + len_c = max(len_a, len_b) + (n, m), (m_, k) = a.shape[-2:], b.shape[-2:] + assert m == m_, f"dimension not match, a.shape:{a.shape}, b.shape:{b.shape}" + # a: [..., n, m] + # b: [..., m, k] + # cc:[..., n, m, k] + # --> + # 012 + if len_b == 2 and len_a>2: + # TODO:ugly implementation for tuner + aa = a.reshape((-1, m)) + cc = matmul(aa, b) + # print(a.shape, b.shape, cc.shape) + return cc.reshape(a.shape[:-1] + [k]) + for i in range(len_c-2): + ai = len_a-(len_c-i) + bi = len_b-(len_c-i) + an = a.shape[ai] if ai>=0 else 1 + bn = b.shape[bi] if bi>=0 else 1 + if an!=1 and bn!=1: + assert an == bn, f"dimension not match, a.shape:{a.shape}, b.shape:{b.shape}" + cn = max(an, bn) + shape.append(cn) + shape.extend([n, m, k]) + a = a.broadcast(shape, [-1]) + b = b.broadcast(shape, [-3]) + return (a*b).sum(-2) jt.Var.matmul = jt.Var.__matmul__ = matmul jt.Var.__imatmul__ = lambda a,b: a.assign(matmul(a,b)) @@ -488,22 +490,22 @@ class BCEWithLogitsLoss(Module): def execute(self, output, target): return binary_cross_entropy_with_logits(output,target,self.weight,self.pos_weight,self.size_average) -def softmax(x, dim = None): +def softmax(x, dim=None, log=False): import jittor.other.code_softmax as code_softmax if code_softmax.can_softmax_v1(x, dim): - return code_softmax.softmax_v1(x) + return code_softmax.softmax_v1(x, log) if dim is None: x = (x - x.max()).exp() ret = x / x.sum() else: x = (x-x.max(dim, keepdims=True)).exp() ret = x / x.sum(dim, keepdims=True) + if log: return ret.log() return ret jt.Var.softmax = softmax def log_softmax(x,dim=None): - x = softmax(x,dim=dim) - return jt.log(x) + return softmax(x,dim=dim, log=True) jt.Var.log_softmax = log_softmax def log_sigmoid(x): @@ -832,15 +834,16 @@ class Conv(Module): oh = (H+self.padding[0]*2-Kh*self.dilation[0]+self.dilation[0]-1)//self.stride[0]+1 ow = (W+self.padding[1]*2-Kw*self.dilation[1]+self.dilation[1]-1)//self.stride[1]+1 assert oh>0 and ow>0 - xx = x.reindex([N,self.out_channels,C,oh,ow,Kh,Kw], [ - 'i0', # Nid - 'i2', # Cid - f'i3*{self.stride[0]}-{self.padding[0]}+i5*{self.dilation[0]}', # Hid+Khid - f'i4*{self.stride[1]}-{self.padding[1]}+i6*{self.dilation[1]}', # Wid+KWid - ]) - ww = self.weight.broadcast(xx.shape, [0,3,4]) - yy = xx*ww - y = yy.sum([2,5,6]) # Kc, Kh, Kw + with jt.flag_scope(amp_reg = jt.flags.amp_reg | 4): + xx = x.reindex([N,self.out_channels,C,oh,ow,Kh,Kw], [ + 'i0', # Nid + 'i2', # Cid + f'i3*{self.stride[0]}-{self.padding[0]}+i5*{self.dilation[0]}', # Hid+Khid + f'i4*{self.stride[1]}-{self.padding[1]}+i6*{self.dilation[1]}', # Wid+KWid + ]) + ww = self.weight.broadcast(xx.shape, [0,3,4]) + yy = xx*ww + y = yy.sum([2,5,6]) # Kc, Kh, Kw if self.bias is not None: b = self.bias.broadcast(y.shape, [0,2,3]) y = y + b @@ -1008,6 +1011,18 @@ class Conv3d(Module): def execute(self, x): return conv3d(x, self.weight, self.bias, self.stride, self.padding, self.dilation, self.groups) + +class Conv1d_sp(Linear): + def __init__(self, inchannels, outchannels, kernel_size=1, bias=True): + super().__init__(inchannels, outchannels, bias=bias) + assert kernel_size == 1 + + def execute(self, x): + x = x.transpose(0, 2, 1) + x = super().execute(x) + x = x.transpose(0, 2, 1) + return x + def conv2d(x, weight, bias=None, stride=1, padding=0, dilation=1, groups=1): ''' Applies a 2D convolution over an input signal composed of several input planes. @@ -1048,15 +1063,16 @@ def conv2d(x, weight, bias=None, stride=1, padding=0, dilation=1, groups=1): Kh, Kw = weight.shape[-2:] oh = (H+padding[0]*2-Kh*dilation[0]+dilation[0]-1)//stride[0]+1 ow = (W+padding[1]*2-Kw*dilation[1]+dilation[1]-1)//stride[1]+1 - xx = x.reindex([N,out_channels,C,oh,ow,Kh,Kw], [ - 'i0', # Nid - 'i2', # Cid - f'i3*{stride[0]}-{padding[0]}+i5*{dilation[0]}', # Hid+Khid - f'i4*{stride[1]}-{padding[1]}+i6*{dilation[1]}', # Wid+KWid - ]) - ww = weight.broadcast(xx.shape, [0,3,4]) - yy = xx*ww - y = yy.sum([2,5,6]) # Kc, Kh, Kw + with jt.flag_scope(amp_reg = jt.flags.amp_reg | 4): + xx = x.reindex([N,out_channels,C,oh,ow,Kh,Kw], [ + 'i0', # Nid + 'i2', # Cid + f'i3*{stride[0]}-{padding[0]}+i5*{dilation[0]}', # Hid+Khid + f'i4*{stride[1]}-{padding[1]}+i6*{dilation[1]}', # Wid+KWid + ]) + ww = weight.broadcast(xx.shape, [0,3,4]) + yy = xx*ww + y = yy.sum([2,5,6]) # Kc, Kh, Kw if bias is not None: b = bias.broadcast(y.shape, [0,2,3]) y = y + b diff --git a/python/jittor/other/code_softmax.py b/python/jittor/other/code_softmax.py index f167e497..8534f0cb 100644 --- a/python/jittor/other/code_softmax.py +++ b/python/jittor/other/code_softmax.py @@ -10,32 +10,48 @@ def can_softmax_v1(a, dim): return False return True -def softmax_v1(a): +def softmax_v1(a, log=False): assert can_softmax_v1(a, -1) length = a.shape[-1] # tnum = 1024 tnum = 500 if length % 500 == 0 else 512 + tnum = 125 if length % 125 == 0 else 128 + # tnum = 125 + # tnum = 1000 if length % 1000 == 0 else 1024 # tnum = 250 per_thread = (length-1) // tnum + 1 + ILP = 1 + for ilp in [8,4,2]: + if length % tnum == 0 and per_thread % ilp == 0: + ILP = ilp + per_thread //= ILP + break for_loop = f""" #pragma unroll for (int i=0; i<{per_thread}; i++) """ - if length % tnum == 0: - for_loop += f"if (i*{tnum}+threadIdx.x < len)\n" + if length % tnum != 0: + for_loop += f"if ((i*{tnum}+threadIdx.x)*{ILP} < len)\n" return jt.code(a.shape, a.dtype, [a], cuda_header=f''' #include <{jt.compile_extern.cub_home}cub/cub.cuh> +#include ''', cuda_src=f''' __global__ void kernel(in0_type* x, out0_type* y, int len) {{ typedef cub::BlockReduce BlockReduce; __shared__ typename BlockReduce::TempStorage temp_storage; int id = blockIdx.x * len; - in0_type v[{per_thread}]; - {for_loop} v[i] = x[id+i*{tnum}+threadIdx.x]; - float v1 = v[0]; - {for_loop} v1 = max(v1, v[i]); + in0_type v[{per_thread}][{ILP}]; + {for_loop} + vload(v[i], &x[id+(i*{tnum}+threadIdx.x)*{ILP}]); + // v[i] = x[id+i*{tnum}+threadIdx.x]; + float v1 = -1e30; + {for_loop} + #pragma unroll + for (int j=0; j<{ILP}; j++) {{ + v1 = max(v1, float(v[i][j])); + }} __shared__ float vmax; auto tmp = BlockReduce(temp_storage).Reduce(v1, cub::Max()); if (threadIdx.x == 0) @@ -43,10 +59,12 @@ __global__ void kernel(in0_type* x, out0_type* y, int len) {{ __syncthreads(); v1 = 0; - {for_loop} {{ - v[i] = expf(v[i] - vmax); - v1 += v[i]; - }} + {for_loop} + #pragma unroll + for (int j=0; j<{ILP}; j++) {{ + v[i][j] = expf(float(v[i][j]) - vmax); + v1 += float(v[i][j]); + }} tmp = BlockReduce(temp_storage).Sum(v1); __shared__ float vsum; @@ -54,7 +72,15 @@ __global__ void kernel(in0_type* x, out0_type* y, int len) {{ vsum = tmp; __syncthreads(); - {for_loop} y[id+i*{tnum}+threadIdx.x] = v[i] / vsum; + {for_loop} + #pragma unroll + for (int j=0; j<{ILP}; j++) + v[i][j] = { + "@expand_op(log,@in0_type,float(v[i][j])/vsum)" if log + else "float(v[i][j])/vsum" + }; + {for_loop} + vload(&y[id+(i*{tnum}+threadIdx.x)*{ILP}], v[i]); }} int len = in0->shape[in0->shape.size()-1]; int bnum = in0->numel() / len; @@ -64,15 +90,17 @@ CHECK(0 == cudaGetLastError()); ''', cuda_grad_src=[f""" __global__ void kernel(pout0_type* x, dout_type* y, out0_type* z, int len) {{ int id = blockIdx.x * len; - in0_type vx[{per_thread}]; - in0_type vy[{per_thread}]; + in0_type vx[{per_thread}][{ILP}]; + in0_type vy[{per_thread}][{ILP}]; {for_loop} {{ - vx[i] = x[id+i*{tnum}+threadIdx.x]; - vy[i] = y[id+i*{tnum}+threadIdx.x]; + vload(vx[i], &x[id+(i*{tnum}+threadIdx.x)*{ILP}]); + vload(vy[i], &y[id+(i*{tnum}+threadIdx.x)*{ILP}]); }} float v1 = 0; - {for_loop} v1 += vx[i]*vy[i]; - + {for_loop} + #pragma unroll + for (int j=0; j<{ILP}; j++) + v1 += {"vy[i][j];" if log else "vx[i][j]*vy[i][j];"} typedef cub::BlockReduce BlockReduce; __shared__ typename BlockReduce::TempStorage temp_storage; @@ -83,7 +111,16 @@ __global__ void kernel(pout0_type* x, dout_type* y, out0_type* z, int len) {{ __syncthreads(); {for_loop} - z[id+i*{tnum}+threadIdx.x] = vx[i] * (vy[i] - reduce_var); + #pragma unroll + for (int j=0; j<{ILP}; j++) + vx[i][j] = { + "vy[i][j] - expf(vx[i][j]) * reduce_var;" if log + else "vx[i][j] * (vy[i][j] - reduce_var);" + } + + {for_loop} + vload(&z[id+(i*{tnum}+threadIdx.x)*{ILP}], + vx[i]); }} int len = in0->shape[in0->shape.size()-1]; int bnum = in0->numel() / len; diff --git a/python/jittor/pool.py b/python/jittor/pool.py index 0f1fe12e..fd3c681c 100644 --- a/python/jittor/pool.py +++ b/python/jittor/pool.py @@ -120,8 +120,8 @@ class Pool(Module): for (int i2 = p2; i2 < out_shape2; i2 += s2) {{ {forward_body} }} }} - int tx = min(1024, out_shape3); - int ty = min(1024 / tx, out_shape2); + int tx = std::min(1024, out_shape3); + int ty = std::min(1024 / tx, out_shape2); int bx = (out_shape2 - 1) / ty + 1; int by = out_shape1; int bz = out_shape0; @@ -143,8 +143,8 @@ class Pool(Module): {{ {backward_body} }} }} cudaMemsetAsync(out_p, 0, out->size); - int tx = min(1024, pout_shape3); - int ty = min(1024 / tx, pout_shape2); + int tx = std::min(1024, pout_shape3); + int ty = std::min(1024 / tx, pout_shape2); int bx = (pout_shape2 - 1) / ty + 1; int by = pout_shape1; int bz = pout_shape0; @@ -310,9 +310,9 @@ class Pool3d(Module): for (int i2 = p2; i2 < out_shape2; i2 += s2) {{ {forward_body} }} }} - int tx = min(1024, out_shape4); - int ty = min(1024 / tx, out_shape3); - int tz = min(1024 / tx / ty, out_shape2); + int tx = std::min(1024, out_shape4); + int ty = std::min(1024 / tx, out_shape3); + int tz = std::min(1024 / tx / ty, out_shape2); int bx = (out_shape2 - 1) / tz + 1; int by = out_shape1; int bz = out_shape0; @@ -337,9 +337,9 @@ class Pool3d(Module): {{ {backward_body} }} }} cudaMemsetAsync(out_p, 0, out->size); - int tx = min(1024, pout_shape4); - int ty = min(1024 / tx, pout_shape3); - int tz = min(1024 / tx / ty, pout_shape2); + int tx = std::min(1024, pout_shape4); + int ty = std::min(1024 / tx, pout_shape3); + int tz = std::min(1024 / tx / ty, pout_shape2); int bx = (pout_shape2 - 1) / tz + 1; int by = pout_shape1; int bz = pout_shape0; diff --git a/python/jittor/src/grad.cc b/python/jittor/src/grad.cc index 34879757..5e891714 100644 --- a/python/jittor/src/grad.cc +++ b/python/jittor/src/grad.cc @@ -39,11 +39,24 @@ template struct StackIniter { #define STACK_ALLOC2(T, a, n) T a[n] #endif +struct AmpGradGuard { + int amp_reg_bk; + AmpGradGuard(Op* op) { + amp_reg_bk = amp_reg; + amp_reg |= (op->flags.flags >> NodeFlags::_prefer_32); + } + + ~AmpGradGuard() { + amp_reg = amp_reg_bk; + } +}; + VarPtr make_grad(Op* op, Var* out, Var* dout, Var* x, int x_index) { if (dout == nullptr) return nullptr; if (x_index<0) return nullptr; LOGvvvv << "Make grad op:" >> op->name() << "inputs:" >> op->inputs() << "out:" >> out << "dout:" >> dout << "x:" >> x << "xid:" >> x_index; + AmpGradGuard agg(op); auto dx = op->grad(out, dout, x, x_index); if (x->loop_options) dx->loop_options = x->loop_options; @@ -182,7 +195,10 @@ vector grad(Var* loss, vector targets) { douts[i] = nullptr; } trace_grad_op = op; - op->grads(douts, dins); + { + AmpGradGuard agg(op); + op->grads(douts, dins); + } // dump "for (Var* in : op->inputs())" for (int i=0; i del; inline Deleter(std::function&& func) : del(move(func)) {} - inline ~Deleter() { del(); } + inline Deleter() {} + inline ~Deleter() { if (del) del(); } }; } // jittor diff --git a/python/jittor/src/misc/nano_string.cc b/python/jittor/src/misc/nano_string.cc index b85bf861..e97523f5 100644 --- a/python/jittor/src/misc/nano_string.cc +++ b/python/jittor/src/misc/nano_string.cc @@ -9,6 +9,17 @@ namespace jittor { +DEFINE_FLAG(int, amp_reg, 0, "Auto mixed-precision control registers, bit 0: prefer 32; bit 1: prefer 16; bit 2: keep reduce type; bit 3 keep white list type; bit 4: array like op prefer too"); + +DEFINE_FLAG_WITH_SETTER(int, auto_mixed_precision_level, 0, "Auto mixed-precision optimization level, 0: not use fp16, 1-3: preserve level, not use fp16 for now; 4: perfer fp16, but some ops use fp32 e.g. sum,exp; 5: simular with 4, and array op will automatically convert to fp16; 6: all ops prefer fp16"); + +void setter_auto_mixed_precision_level(int value) { + if (value <= 3) amp_reg = 0; else + if (value == 4) amp_reg = amp_prefer16; else + if (value == 5) amp_reg = amp_prefer16 | amp_array_prefer; else + if (value == 6) amp_reg = amp_prefer16 | amp_array_prefer | amp_keep_reduce | amp_keep_white; +} + #define FOR_ALL_TYPES(m) \ m(bool) \ m(int8) \ @@ -89,15 +100,18 @@ static unordered_set unary_ops = { "erfinv" }; -static unordered_set unary_float_ops = { +static unordered_set float_ops = { "log", "exp", "sqrt", + "mean", + "divide", }; -static unordered_set unary_int_ops = { +static unordered_set int_ops = { "round_int", "floor_int", "ceil_int", + "floor_divide", }; static unordered_set binary_ops = { @@ -127,6 +141,13 @@ static unordered_set binary_ops = { "mean", }; + +static unordered_set white_ops = { + // "log", + "exp", + "pow", +}; + #define DEFINE_NS(T) NanoString ns_##T; FOR_ALL_NS(DEFINE_NS); @@ -135,6 +156,9 @@ char __ns_to_string[ns_max_size*ns_max_len]; int __ns_len[ns_max_size]; static void init_ns() { + dsize_map["float16"] = 1; + is_float_map["float16"] = 1; + is_unsigned["float16"] = 0; NanoString::ns_t i=0; auto func = [&](const char* name, NanoString& ns) { ns.set(NanoString::_index, i++, NanoString::_index_nbits); @@ -149,13 +173,16 @@ static void init_ns() { if (unary_ops.count(name)) { ns.set(NanoString::_type, NanoString::_unary, NanoString::_type_nbits); ns.set(NanoString::_bool, is_bool.count(name)); - ns.set(NanoString::_int, unary_int_ops.count(name)); - ns.set(NanoString::_float, unary_float_ops.count(name)); + ns.set(NanoString::_int, int_ops.count(name)); + ns.set(NanoString::_float, float_ops.count(name)); } else if (binary_ops.count(name)) { ns.set(NanoString::_type, NanoString::_binary, NanoString::_type_nbits); ns.set(NanoString::_bool, is_bool.count(name)); + ns.set(NanoString::_int, int_ops.count(name)); + ns.set(NanoString::_float, float_ops.count(name)); } + ns.set(NanoString::_white_list, white_ops.count(name)); __string_to_ns[name] = ns; auto name2 = ns.to_cstring(); int len=0; diff --git a/python/jittor/src/misc/nano_string.h b/python/jittor/src/misc/nano_string.h index 12feb331..02440985 100644 --- a/python/jittor/src/misc/nano_string.h +++ b/python/jittor/src/misc/nano_string.h @@ -24,6 +24,7 @@ constexpr int ns_max_len = 16; m(uint16) \ m(uint32) \ m(uint64) \ + m(float16) \ m(float32) \ m(float64) \ \ @@ -100,7 +101,7 @@ struct NanoString { typedef uint16 ns_t; enum Flags { // bit0~7: index - _index=0, _index_nbits=8, + _index=0, _index_nbits=7, _n=_index_nbits, // bit0-1: type @@ -116,6 +117,8 @@ struct NanoString { _float=_n+5, // bit6-7: dsize(1,2,4,8 byte) _dsize=_n+6, _dsize_nbits=2, + // bit8: white list + _white_list=_n+8, }; ns_t data=0; @@ -130,11 +133,16 @@ struct NanoString { inline ns_t index() const { return get(_index, _index_nbits); } inline int len() const { return __ns_len[index()]; } inline ns_t type() const { return get(_type, _type_nbits); } - inline ns_t is_bool() const { return get(_bool); } - inline ns_t is_int() const { return get(_int); } - inline ns_t is_unsigned() const { return get(_unsigned); } - inline ns_t is_float() const { return get(_float); } + // @pyjt(is_bool) + inline bool is_bool() const { return get(_bool); } + // @pyjt(is_int) + inline bool is_int() const { return get(_int); } + inline bool is_unsigned() const { return get(_unsigned); } + // @pyjt(is_float) + inline bool is_float() const { return get(_float); } + inline ns_t is_white() const { return get(_white_list); } inline ns_t dsize() const { return 1< jit_ops; string_view_map jit_key_mapper; -int64_t Op::number_of_lived_ops = 0; +int64 Op::number_of_lived_ops = 0; Op::Op() { flags.set(NodeFlags::_var, 0); flags.set(NodeFlags::_cpu, 1); + flags.flags |= ((amp_reg & 7) << NodeFlags::_prefer_32); number_of_lived_ops++; if (PREDICT_BRANCH_NOT_TAKEN(trace_py_var)) trace_data.record_node(this); } diff --git a/python/jittor/src/op.h b/python/jittor/src/op.h index 25d752e5..957e435a 100644 --- a/python/jittor/src/op.h +++ b/python/jittor/src/op.h @@ -15,7 +15,7 @@ namespace jittor { enum OpType {other=0, element=1, broadcast=2, reduce=3}; struct Op : Node { vector outputs_holder; - static int64_t number_of_lived_ops; + static int64 number_of_lived_ops; inline Caster inputs() { CHECK_EXIST; return &_inputs; } inline Caster outputs() { CHECK_EXIST; return &_outputs; } diff --git a/python/jittor/src/op_compiler.cc b/python/jittor/src/op_compiler.cc index fe32d043..1b4a7e96 100644 --- a/python/jittor/src/op_compiler.cc +++ b/python/jittor/src/op_compiler.cc @@ -112,7 +112,7 @@ int OpCompiler::total_member_count() { return member_count; } -int64_t OpCompiler::eval(const string& expr, const unordered_map& vars) { +int64 OpCompiler::eval(const string& expr, const unordered_map& vars) { if (expr.find("@") != string::npos) { string new_expr; for (size_t i=0; i binary_ops = { "bitwise_xor", }; -NanoString binary_dtype_infer(NanoString op, Var* x, Var* y) { - if (op == ns_mean) return dtype_infer(x->ns, y->ns, 2); // force float - int force_type=0; - if (op == ns_divide) force_type=2; // force float - if (op == ns_floor_divide) force_type=1; // force int - return op.is_bool() ? ns_bool : dtype_infer(x->ns, y->ns, force_type, op); -} - BinaryOp::BinaryOp(Var* x, Var* y, NanoString op) : x(x), y(y) { flags.set(NodeFlags::_cpu); flags.set(NodeFlags::_cuda); set_type(OpType::element); ns = op; ASSERT(ns.is_binary()); - z = create_output(nullptr, binary_dtype_infer(op, x, y)); + z = create_output(nullptr, binary_dtype_infer(op, x->ns, y->ns)); } VarPtr dirty_clone_broadcast(Var* v) { diff --git a/python/jittor/src/ops/op_register.h b/python/jittor/src/ops/op_register.h index 8f830b4f..bfb56295 100644 --- a/python/jittor/src/ops/op_register.h +++ b/python/jittor/src/ops/op_register.h @@ -32,9 +32,11 @@ void op_registe(const OpInfo& op_info); bool has_op(const string& name); OpInfo get_op_info(const string& name); +struct OpCompiler; struct OpByType { unordered_set types; virtual string expand_op(const vector& args) = 0; + virtual void post_pass(OpCompiler*) = 0; }; extern vector op_types; diff --git a/python/jittor/src/ops/reduce_op.cc b/python/jittor/src/ops/reduce_op.cc index 4c0b3056..d5f1935c 100644 --- a/python/jittor/src/ops/reduce_op.cc +++ b/python/jittor/src/ops/reduce_op.cc @@ -271,7 +271,7 @@ ReduceOp::ReduceOp(Var* x, NanoString op, NanoVector dims, bool keepdims) if (x->dtype() == ns_bool) y = create_output(nullptr, ns_int32); else - y = create_output(nullptr, binary_dtype_infer(ns, x, x)); + y = create_output(nullptr, reduce_dtype_infer(ns, x->ns)); } ReduceOp::ReduceOp(Var* x, NanoString op, uint dims_mask, uint keepdims_mask) @@ -283,7 +283,7 @@ ReduceOp::ReduceOp(Var* x, NanoString op, uint dims_mask, uint keepdims_mask) ASSERT(ns.is_binary()); reduce_mask = dims_mask; this->keepdims_mask = keepdims_mask; - y = create_output(nullptr, binary_dtype_infer(ns, x, x)); + y = create_output(nullptr, reduce_dtype_infer(ns, x->ns)); } ReduceOp::ReduceOp(Var* x, NanoString op, int dim, bool keepdims) @@ -359,8 +359,8 @@ void ReduceOp::jit_run() { @for(i, DIM-2, -1, -1, auto ystride@i = ystride@{i+1} * yshape@{i+1};) index_t xstride@{DIM-1} = 1; @for(i, DIM-2, -1, -1, auto xstride@i = xstride@{i+1} * xshape@{i+1};) - Ty count = Ty(x->num) / Ty(y->num); - Ty rcount = Ty(y->num) / Ty(x->num); + Ty count = x->num*1.0 / y->num; + Ty rcount = y->num*1.0 / x->num; @for(d, 0, DIM,@if(REDUCE>>d&1,, for (index_t xi@d=0; xi@d < xshape@d; xi@d++))) { auto yid = 0 @for(d, 0, DIM,@if(REDUCE>>d&1,, + xi@d * ystride@d)); yp[yid] = @expand_op(init_@OP, @Ty); diff --git a/python/jittor/src/ops/reindex_op.cc b/python/jittor/src/ops/reindex_op.cc index 03110d7d..be38b97d 100644 --- a/python/jittor/src/ops/reindex_op.cc +++ b/python/jittor/src/ops/reindex_op.cc @@ -132,7 +132,7 @@ void ReindexOp::jit_run() { @for(d, 0, XDIM, index_t xid@d = @expand_macro(INDEX@d);) auto xid = @for(d, 0, XDIM, + xid@d * xstride@d); bool check_overflow = 0 @for(d, 0, XDIM, || xid@d<0 || xid@d>=xshape@d) @for(d, 0, OSIZE, || (@expand_macro(OFD@d))); - yp[yid] = check_overflow ? (@OVERFLOW) : xp[xid]; + yp[yid] = check_overflow ? Tx(@OVERFLOW) : xp[xid]; } } #endif // JIT diff --git a/python/jittor/src/ops/transpose_op.cc b/python/jittor/src/ops/transpose_op.cc index 85888b95..94d9576e 100644 --- a/python/jittor/src/ops/transpose_op.cc +++ b/python/jittor/src/ops/transpose_op.cc @@ -28,6 +28,12 @@ TransposeOp::TransposeOp(Var* x, NanoVector axes_) : x(x), axes(axes_) { for (int i=0; i<(int)xdim; i++) axes.push_back(xdim-1-i); } + if (axes.size() < xdim || (axes.size() == xdim && axes[xdim-1]==xdim-1)) { + static VarPtr(*fuse_transpose)(Var*, NanoVector) = get_op_info("fuse_transpose").get_constructor(); + auto var = fuse_transpose(x, axes); + forward(var); + return; + } #ifdef HAS_CUDA if (use_cuda) { static VarPtr(*cutt_transpose)(Var*, NanoVector) = nullptr; diff --git a/python/jittor/src/ops/unary_op.cc b/python/jittor/src/ops/unary_op.cc index a7b1fad1..9a95d6df 100644 --- a/python/jittor/src/ops/unary_op.cc +++ b/python/jittor/src/ops/unary_op.cc @@ -32,6 +32,7 @@ static unordered_set unary_ops = { "uint16", "uint32", "uint64", + "float16", "float32", "float64", // please keep float64 the last type @@ -533,22 +534,15 @@ UnaryOp::UnaryOp(Var* x, NanoString op) : x(x) { ns = op; ASSERT(ns.is_unary() | ns.is_dtype()); NanoString dtype; + if (ns == x->dtype()) { + forward(x); + return; + } if (ns.is_dtype()) { - if (ns == x->dtype()) { - forward(x); - return; - } dtype = ns; ns = ns_cast; - } else if (ns.is_bool()) - dtype = ns_bool; - else if (ns.is_float()) - dtype = dtype_infer(x->ns, x->ns, 2); - else if (ns.is_int()) - dtype = dtype_infer(x->ns, x->ns, 1); - else { - dtype = x->ns; - } + } else + dtype = unary_dtype_infer(ns, x->ns); y = create_output(nullptr, dtype); } diff --git a/python/jittor/src/opt/tuner/conv_tuner.cc b/python/jittor/src/opt/tuner/conv_tuner.cc index 738746d4..c043c1b5 100644 --- a/python/jittor/src/opt/tuner/conv_tuner.cc +++ b/python/jittor/src/opt/tuner/conv_tuner.cc @@ -25,6 +25,7 @@ namespace jittor { using namespace expr; +extern int use_cuda; struct OpInspector { // binary mask for @@ -229,9 +230,14 @@ void ConvTuner::forwardTune(FusedOp* fop) { if (!(bop->y->input() && bop->x->input() && fop->has(bop->x->input()) && fop->has(bop->y->input()))) continue; if (!(bop->x->input()->type()==OpType::broadcast && bop->y->input()->type()==OpType::broadcast)) return; - // only support float32 currently - if (bop->z->dtype() != ns_float32) - continue; + // only support float32,float16 currently + if (use_cuda) { + if (bop->z->dtype() != ns_float32 && bop->z->dtype() != ns_float16) + continue; + } else { + if (bop->z->dtype() != ns_float32) + continue; + } Op* ops[3] = {op, bop->x->input(), bop->y->input()}; int ok = 0; LOGvvvv << "conv like op" << fop << fop->get_jit_key(get_jk()); diff --git a/python/jittor/src/profiler/profiler.cc b/python/jittor/src/profiler/profiler.cc index fc3379b1..12aa8e37 100644 --- a/python/jittor/src/profiler/profiler.cc +++ b/python/jittor/src/profiler/profiler.cc @@ -262,7 +262,7 @@ void Profiler::record_and_run( Deleter _d; if (is_fused) { auto fop = ((FusedOp*)op); - if (fop->context && fop->context->entry) { + if (fop->context && fop->context->vrm.relay_groups.size()) { // relay op loop = rerun; profiler.relay_extra_cost = 0; diff --git a/python/jittor/src/pyjt/numpy.cc b/python/jittor/src/pyjt/numpy.cc index 6546e56c..cda93085 100644 --- a/python/jittor/src/pyjt/numpy.cc +++ b/python/jittor/src/pyjt/numpy.cc @@ -21,7 +21,9 @@ NanoString npy2ns[] = { ns_int64, ns_uint64, ns_float32, ns_float64, ns_float64, ns_void, ns_void, ns_void, - ns_void + ns_void, // 17 + ns_void, ns_void, ns_void, ns_void, ns_void, // 22 + ns_float16, // 23 }; NPY_TYPES ns2npy[] = { @@ -34,7 +36,7 @@ NPY_TYPES ns2npy[] = { NPY_BYTE, NPY_SHORT, NPY_INT, NPY_LONGLONG, NPY_UBYTE, NPY_USHORT, NPY_UINT, NPY_ULONGLONG, #endif - NPY_FLOAT, NPY_DOUBLE + NPY_HALF, NPY_FLOAT, NPY_DOUBLE }; void** PyArray_API; diff --git a/python/jittor/src/pyjt/numpy.h b/python/jittor/src/pyjt/numpy.h index 1a544edf..6328eb0a 100644 --- a/python/jittor/src/pyjt/numpy.h +++ b/python/jittor/src/pyjt/numpy.h @@ -48,6 +48,8 @@ enum NPY_TYPES { NPY_FLOAT, NPY_DOUBLE, NPY_LONGDOUBLE, NPY_CFLOAT, NPY_CDOUBLE, NPY_CLONGDOUBLE, NPY_OBJECT=17, + NPY_HALF=23, + NPY_END=24, }; EXTERN_LIB NanoString npy2ns[]; @@ -60,11 +62,11 @@ EXTERN_LIB NPY_TYPES ns2npy[]; inline bool is_c_style(PyArray_Proxy* obj) { return obj->flags & 1; } inline NanoString get_type_str(PyArray_Proxy* obj) { NanoString type = ns_void; - if (obj->descr->type_num < NPY_OBJECT) + if (obj->descr->type_num < NPY_END) type = npy2ns[obj->descr->type_num]; CHECK(type != ns_void) << "Numpy type not support, type_num:" << obj->descr->type_num - << "type_char:" << obj->descr->type; + << "type_char:" << obj->descr->type << NPY_END << npy2ns[obj->descr->type_num]; return type; } diff --git a/python/jittor/src/pyjt/py_array_op.cc b/python/jittor/src/pyjt/py_array_op.cc index 683e48bb..79a711a8 100644 --- a/python/jittor/src/pyjt/py_array_op.cc +++ b/python/jittor/src/pyjt/py_array_op.cc @@ -141,7 +141,7 @@ ArrayOp::ArrayOp(PyObject* obj) { } else { // this is non-continue numpy array #if defined(__linux__) || defined(_WIN32) - STACK_ALLOC(int64, dims, args.shape.size()); + STACK_ALLOC(int64_t, dims, args.shape.size()); #elif defined(__APPLE__) long dims[args.shape.size()]; #endif diff --git a/python/jittor/src/pyjt/py_converter.h b/python/jittor/src/pyjt/py_converter.h index 3cafc103..512742a7 100644 --- a/python/jittor/src/pyjt/py_converter.h +++ b/python/jittor/src/pyjt/py_converter.h @@ -274,7 +274,7 @@ DEF_IS(ArrayArgs, bool) is_type(PyObject* obj) { DEF_IS(ArrayArgs, PyObject*) to_py_object(const T& a) { #if defined(__linux__) || defined(_WIN32) - STACK_ALLOC(int64, dims, a.shape.size()); + STACK_ALLOC(int64_t, dims, a.shape.size()); #elif defined(__APPLE__) long dims[a.shape.size()]; #endif @@ -390,7 +390,7 @@ DEF_IS(VarHolder*, T) from_py_object(PyObject* obj, unique_ptr& holde struct DataView; DEF_IS(DataView, PyObject*) to_py_object(T a) { #if defined(__linux__) || defined(_WIN32) - STACK_ALLOC(int64, dims, a.shape.size()); + STACK_ALLOC(int64_t, dims, a.shape.size()); #elif defined(__APPLE__) long dims[a.shape.size()]; #endif diff --git a/python/jittor/src/pyjt/py_ring_buffer.cc b/python/jittor/src/pyjt/py_ring_buffer.cc index 3f46f4f8..3347553c 100644 --- a/python/jittor/src/pyjt/py_ring_buffer.cc +++ b/python/jittor/src/pyjt/py_ring_buffer.cc @@ -110,7 +110,7 @@ static void push_py_object(RingBuffer* rb, PyObject* obj, uint64& __restrict__ o rb->push(size, offset); args.ptr = rb->get_ptr(size, offset); #if defined(__linux__) || defined(_WIN32) - STACK_ALLOC(int64, dims, args.shape.size()); + STACK_ALLOC(int64_t, dims, args.shape.size()); #elif defined(__APPLE__) long dims[args.shape.size()]; #endif diff --git a/python/jittor/src/type/common_op_type.cc b/python/jittor/src/type/common_op_type.cc index 3c9f42ad..305917d4 100644 --- a/python/jittor/src/type/common_op_type.cc +++ b/python/jittor/src/type/common_op_type.cc @@ -12,6 +12,44 @@ namespace jittor { extern int use_cuda; +unordered_map common_op_type_cuda_map = { + {"logical_not", "(!($2))"}, + {"bitwise_not", "(~($2))"}, + {"negative", "(-($2))"}, + {"abs", "::abs($2)"}, + {"log", "::logf(($1)($2))"}, + {"exp", "::expf(($1)($2))"}, + {"sqrt", "::sqrtf(($1)($2))"}, + {"round", "(($1) ::roundf(($2)))"}, + {"floor", "(($1) ::floorf(($2)))"}, + {"ceil", "(($1) ::ceilf(($2)))"}, + {"round_int", "(($1) ::roundf(($2)))"}, + {"floor_int", "(($1) ::floorf(($2)))"}, + {"ceil_int", "(($1) ::ceilf(($2)))"}, + {"sin", "(($1) ::sinf(($2)))"}, + {"asin", "(($1) ::asinf(($2)))"}, + {"sinh", "(($1) ::sinhf(($2)))"}, + {"asinh", "(($1) ::asinhf(($2)))"}, + {"cos", "(($1) ::cosf(($2)))"}, + {"acos", "(($1) ::acosf(($2)))"}, + {"cosh", "(($1) ::coshf(($2)))"}, + {"acosh", "(($1) ::acoshf(($2)))"}, + {"tan", "(($1) ::tanf(($2)))"}, + {"atan", "(($1) ::atanf(($2)))"}, + {"tanh", "(($1) ::tanhf(($2)))"}, + {"atanh", "(($1) ::atanhf(($2)))"}, + {"sigmoid", "(($1) (1.0f/(1.0f+::expf((::min($1(-($2)), $1(@if(@strcmp($1,float32)==0,30,300))))))))"}, + {"erf", "(($1) ::erff(($2)))"}, + {"erfinv", "(($1) ::erfinvf(($1)($2)))"}, + {"cast", "(($1)($2))"}, + {"pow", "::pow(($2),($4))"}, + {"maximum", "::max($1($2), $1($4))"}, + {"minimum", "::min($1($2), $1($4))"}, + {"mod", "@if(@strcmp($1,float32)==0,(($2)-::floorf(($2)/($4))*($4)),@if(@strcmp(@Tx,float64)==0,(($2)-::floor(($2)/($4))*($4)),(($2)%($4))))"}, + {"init_maximum", "::numeric_min<$1>()"}, + {"init_minimum", "::numeric_max<$1>()"}, +}; + struct CommonOpType : OpByType { CommonOpType() { types = { @@ -34,43 +72,7 @@ struct CommonOpType : OpByType { if (!types.count(args[i])) return ""; } - static unordered_map cuda_map = { - {"logical_not", "(!($2))"}, - {"bitwise_not", "(~($2))"}, - {"negative", "(-($2))"}, - {"abs", "::abs($2)"}, - {"log", "::logf(($1)($2))"}, - {"exp", "::expf(($1)($2))"}, - {"sqrt", "::sqrtf(($1)($2))"}, - {"round", "(($1) ::roundf(($2)))"}, - {"floor", "(($1) ::floorf(($2)))"}, - {"ceil", "(($1) ::ceilf(($2)))"}, - {"round_int", "(($1) ::roundf(($2)))"}, - {"floor_int", "(($1) ::floorf(($2)))"}, - {"ceil_int", "(($1) ::ceilf(($2)))"}, - {"sin", "(($1) ::sinf(($2)))"}, - {"asin", "(($1) ::asinf(($2)))"}, - {"sinh", "(($1) ::sinhf(($2)))"}, - {"asinh", "(($1) ::asinhf(($2)))"}, - {"cos", "(($1) ::cosf(($2)))"}, - {"acos", "(($1) ::acosf(($2)))"}, - {"cosh", "(($1) ::coshf(($2)))"}, - {"acosh", "(($1) ::acoshf(($2)))"}, - {"tan", "(($1) ::tanf(($2)))"}, - {"atan", "(($1) ::atanf(($2)))"}, - {"tanh", "(($1) ::tanhf(($2)))"}, - {"atanh", "(($1) ::atanhf(($2)))"}, - {"sigmoid", "(($1) (1.0f/(1.0f+::expf((::min($1(-($2)), $1(@if(@strcmp($1,float32)==0,30,300))))))))"}, - {"erf", "(($1) ::erff(($2)))"}, - {"erfinv", "(($1) ::erfinvf(($1)($2)))"}, - {"cast", "(($1)($2))"}, - {"pow", "::pow(($2),($4))"}, - {"maximum", "::max($1($2), $1($4))"}, - {"minimum", "::min($1($2), $1($4))"}, - {"mod", "@if(@strcmp($1,float32)==0,(($2)-::floorf(($2)/($4))*($4)),@if(@strcmp(@Tx,float64)==0,(($2)-::floor(($2)/($4))*($4)),(($2)%($4))))"}, - {"init_maximum", "::numeric_min<$1>()"}, - {"init_minimum", "::numeric_max<$1>()"}, - }; + auto& cuda_map = common_op_type_cuda_map; static unordered_map cpu_map = { {"logical_not", "(!($2))"}, @@ -151,6 +153,10 @@ struct CommonOpType : OpByType { ret = cpu_map[args.at(0)]; return format(ret, args); } + + void post_pass(OpCompiler*) { + return; + } }; diff --git a/python/jittor/src/type/fp16_compute.h b/python/jittor/src/type/fp16_compute.h new file mode 100644 index 00000000..93833704 --- /dev/null +++ b/python/jittor/src/type/fp16_compute.h @@ -0,0 +1,164 @@ +// *************************************************************** +// Copyright (c) 2021 Jittor. All Rights Reserved. +// Maintainers: Dun Liang . +// This file is subject to the terms and conditions defined in +// file 'LICENSE.txt', which is part of this source code package. +// *************************************************************** +#pragma once +#include "common.h" + +#ifdef JIT_cuda + +#include +#include + +namespace jittor { + +typedef __half float16; + +#if CUDA_ARCH >= 800 +inline __device__ float16 max(float16 a, float16 b) { return __hmax(a, b); } +inline __device__ float16 min(float16 a, float16 b) { return __hmin(a, b); } +#else +inline __device__ float16 max(float16 a, float16 b) { return a +__device__ inline void vload(T* __restrict__ a, T* __restrict__ b) { + if constexpr (nbyte<=0) return; + if constexpr (nbyte>=16) { + auto __restrict__ aa = (float4* __restrict__)a; + auto __restrict__ bb = (float4* __restrict__)b; + aa[0] = bb[0]; + return vload(aa+1, bb+1); + } + if constexpr (nbyte>=8) { + auto __restrict__ aa = (float2* __restrict__)a; + auto __restrict__ bb = (float2* __restrict__)b; + aa[0] = bb[0]; + return vload(aa+1, bb+1); + } + if constexpr (nbyte>=4) { + auto __restrict__ aa = (float* __restrict__)a; + auto __restrict__ bb = (float* __restrict__)b; + aa[0] = bb[0]; + return vload(aa+1, bb+1); + } + if constexpr (nbyte>=2) { + auto __restrict__ aa = (__half* __restrict__)a; + auto __restrict__ bb = (__half* __restrict__)b; + aa[0] = bb[0]; + return vload(aa+1, bb+1); + } + if constexpr (nbyte>=1) { + auto __restrict__ aa = (int8_t* __restrict__)a; + auto __restrict__ bb = (int8_t* __restrict__)b; + aa[0] = bb[0]; + return vload(aa+1, bb+1); + } +} + + +} + +using jittor::max; +using jittor::min; +using jittor::pow; + +#else + +namespace jittor { + +struct float16 { + uint16 x; + + inline float16(float32 f) { + unsigned x = *((int*)(void*)(&f)); + unsigned u = (x & 0x7fffffff), remainder, shift, lsb, lsb_s1, lsb_m1; + unsigned sign, exponent, mantissa; + + + // Get rid of +NaN/-NaN case first. + if (u > 0x7f800000) { + this->x = 0x7fffU; + return; + } + + sign = ((x >> 16) & 0x8000); + + // Get rid of +Inf/-Inf, +0/-0. + if (u > 0x477fefff) { + this->x = sign | 0x7c00U; + return; + } + if (u < 0x33000001) { + this->x = sign | 0x0000U; + return; + } + + exponent = ((u >> 23) & 0xff); + mantissa = (u & 0x7fffff); + + if (exponent > 0x70) { + shift = 13; + exponent -= 0x70; + } else { + shift = 0x7e - exponent; + exponent = 0; + mantissa |= 0x800000; + } + lsb = (1 << shift); + lsb_s1 = (lsb >> 1); + lsb_m1 = (lsb - 1); + + // Round to nearest even. + remainder = (mantissa & lsb_m1); + mantissa >>= shift; + if (remainder > lsb_s1 || (remainder == lsb_s1 && (mantissa & 0x1))) { + ++mantissa; + if (!(mantissa & 0x3ff)) { + ++exponent; + mantissa = 0; + } + } + + this->x = (sign | (exponent << 10) | mantissa); + } + + inline operator float() { + + unsigned sign = ((x >> 15) & 1); + unsigned exponent = ((x >> 10) & 0x1f); + unsigned mantissa = ((x & 0x3ff) << 13); + + if (exponent == 0x1f) { /* NaN or Inf */ + mantissa = (mantissa ? (sign = 0, 0x7fffff) : 0); + exponent = 0xff; + } else if (!exponent) { /* Denorm or Zero */ + if (mantissa) { + unsigned int msb; + exponent = 0x71; + do { + msb = (mantissa & 0x400000); + mantissa <<= 1; /* normalize */ + --exponent; + } while (!msb); + mantissa &= 0x7fffff; /* 1.mantissa is implicit */ + } + } else { + exponent += 0x70; + } + + int temp = ((sign << 31) | (exponent << 23) | mantissa); + + return reinterpret_cast(temp); + } +}; + +} + +#endif \ No newline at end of file diff --git a/python/jittor/src/type/fp16_op_type.cc b/python/jittor/src/type/fp16_op_type.cc new file mode 100644 index 00000000..1d6c14cb --- /dev/null +++ b/python/jittor/src/type/fp16_op_type.cc @@ -0,0 +1,188 @@ +// *************************************************************** +// Copyright (c) 2021 Jittor. All Rights Reserved. +// Maintainers: Dun Liang . +// This file is subject to the terms and conditions defined in +// file 'LICENSE.txt', which is part of this source code package. +// *************************************************************** +#include "common.h" +#include "utils/str_utils.h" +#include "ops/op_register.h" +#include "op_compiler.h" + +namespace jittor { + +extern int use_cuda; + +extern unordered_map common_op_type_cuda_map; + +static bool isvar(char x) { return isalnum(x) || x == '_' || x == ':'; } + +struct FP16OpType : OpByType { + FP16OpType() { + types = { + "float16", + }; + } + + string expand_op(const vector& args) { + bool found_fp16 = 0; + for (int i=1; i cuda_map = { + {"logical_not", "(!($2))"}, + {"bitwise_not", "(~($2))"}, + {"negative", "(-($2))"}, + {"abs", "::abs($2)"}, + {"log", "::hlog(($1)($2))"}, + {"exp", "::hexp(($1)($2))"}, + {"sqrt", "::hsqrt(($1)($2))"}, + {"round", "(($1) ::roundf(($2)))"}, + {"floor", "(($1) ::floorf(($2)))"}, + {"ceil", "(($1) ::ceilf(($2)))"}, + {"round_int", "(($1) ::roundf(($2)))"}, + {"floor_int", "(($1) ::floorf(($2)))"}, + {"ceil_int", "(($1) ::ceilf(($2)))"}, + {"sin", "(($1) ::sinf(($2)))"}, + {"asin", "(($1) ::asinf(($2)))"}, + {"sinh", "(($1) ::sinhf(($2)))"}, + {"asinh", "(($1) ::asinhf(($2)))"}, + {"cos", "(($1) ::cosf(($2)))"}, + {"acos", "(($1) ::acosf(($2)))"}, + {"cosh", "(($1) ::coshf(($2)))"}, + {"acosh", "(($1) ::acoshf(($2)))"}, + {"tan", "(($1) ::tanf(($2)))"}, + {"atan", "(($1) ::atanf(($2)))"}, + {"tanh", "(($1) ::tanhf(($2)))"}, + {"atanh", "(($1) ::atanhf(($2)))"}, + {"sigmoid", "(($1) (1.0f/(1.0f+::expf((::min($1(-($2)), $1(@if(@strcmp($1,float16)==0,30,300))))))))"}, + {"erf", "(($1) ::erff(($2)))"}, + {"erfinv", "(($1) ::erfinvf(($1)($2)))"}, + {"cast", "(($1)($2))"}, + {"pow", "::pow(($2),($4))"}, + {"maximum", "::max($1($2), $1($4))"}, + {"minimum", "::min($1($2), $1($4))"}, + {"mod", "$1(($2)-::hfloor(($2)/($4))*($4))"}, + {"init_maximum", "-32768.0f"}, + {"init_minimum", "32768.0f"}, + }; + + static unordered_map cpu_map = { + {"logical_not", "(!($2))"}, + {"bitwise_not", "(~($2))"}, + {"negative", "(-($2))"}, + {"abs", "std::abs($2)"}, + {"log", "std::log(($1)($2))"}, + {"exp", "std::exp(($1)($2))"}, + {"sqrt", "std::sqrt(($1)($2))"}, + {"round", "(($1)std::round(($2)))"}, + {"floor", "(($1)std::floor(($2)))"}, + {"ceil", "(($1)std::ceil(($2)))"}, + {"round_int", "(($1)std::round(($2)))"}, + {"floor_int", "(($1)std::floor(($2)))"}, + {"ceil_int", "(($1)std::ceil(($2)))"}, + {"sin", "(($1) std::sin(($2)))"}, + {"asin", "(($1) std::asin(($2)))"}, + {"sinh", "(($1) std::sinh(($2)))"}, + {"asinh", "(($1) std::asinh(($2)))"}, + {"cos", "(($1) std::cos(($2)))"}, + {"acos", "(($1) std::acos(($2)))"}, + {"cosh", "(($1) std::cosh(($2)))"}, + {"acosh", "(($1) std::acosh(($2)))"}, + {"tan", "(($1) std::tan(($2)))"}, + {"atan", "(($1) std::atan(($2)))"}, + {"tanh", "(($1) std::tanh(($2)))"}, + {"atanh", "(($1) std::atanh(($2)))"}, + {"sigmoid", "(($1) (1.0f/(1.0f+std::exp(std::min($1(-($2)), $1(@if(@strcmp($1,float32)==0,30,300)))))))"}, + {"erf", "(($1) std::erf(($2)))"}, + {"erfinv", "(jittor::_erfinv($2))"}, + {"cast", "(($1)($2))"}, + {"pow", "std::pow(($2),($4))"}, + {"maximum", "std::max($1($2), $1($4))"}, + {"minimum", "std::min($1($2), $1($4))"}, + {"mod", "$1(($2)-std::floor(($2)/($4))*($4))"}, + {"init_maximum", "-32768.0f"}, + {"init_minimum", "32768.0f"}, + }; + + static unordered_map both_map { + {"add", "(($2)+($4))"}, + {"subtract", "(($2)-($4))"}, + {"multiply", "(($2)*($4))"}, + {"divide", "($1(($1($2))/($1($4))))"}, + {"floor_divide", "($1(($1($2))/($1($4))))"}, + {"less", "(($2)<($4))"}, + {"less_equal", "(($2)<=($4))"}, + {"greater", "(($2)>($4))"}, + {"greater_equal", "(($2)>=($4))"}, + {"equal", "(($2)==($4))"}, + {"not_equal", "(($2)!=($4))"}, + {"left_shift", "(($2)<<($4))"}, + {"right_shift", "(($2)>>($4))"}, + {"logical_and", "(($2)&&($4))"}, + {"logical_or", "(($2)||($4))"}, + {"logical_xor", "((bool($2))!=(bool($4)))"}, + {"bitwise_and", "(($2)&($4))"}, + {"bitwise_or", "(($2)|($4))"}, + {"bitwise_xor", "(($2)^($4))"}, + {"mean", "(($2)+($4)*($1(rcount)))"}, + {"init_add", "$1(0)"}, + {"init_multiply", "$1(1)"}, + {"init_logical_and", "true"}, + {"init_logical_or", "false"}, + {"init_logical_xor", "false"}, + {"init_bitwise_and", "$1(-1)"}, + {"init_bitwise_or", "$1(0)"}, + {"init_bitwise_xor", "$1(0)"}, + {"init_mean", "$1(0)"}, + }; + + string ret; + if (both_map.count(args.at(0))) + ret = both_map[args.at(0)]; + else if (use_cuda) + ret = cuda_map[args.at(0)]; + else + ret = cpu_map[args.at(0)]; + if (use_cuda) { + if (args[1] == "float32" && !both_map.count(args.at(0))) { + ret = common_op_type_cuda_map[args.at(0)]; + } + if (args[1] == "float16" || args[1] == "float32") { + for (int i=3; isrc; + if (src.find("float16") == string::npos) + return; + int i = src.rfind("#include"); + if (i<0) i=0; + i = src.find('\n', i) + 1; + src = src.substr(0, i) + "#include \"type/fp16_compute.h\"\n" + + src.substr(i); + return; + } +}; + + +static int _ = registe_op_type(new FP16OpType()); + +} \ No newline at end of file diff --git a/python/jittor/src/types.h b/python/jittor/src/types.h index e3942146..43c18b27 100644 --- a/python/jittor/src/types.h +++ b/python/jittor/src/types.h @@ -18,7 +18,7 @@ namespace jittor { typedef int8_t int8; typedef int16_t int16; typedef int int32; -typedef int64_t int64; +typedef long long int64; typedef uint8_t uint8; typedef uint16_t uint16; typedef uint32_t uint32; diff --git a/python/jittor/src/var.cc b/python/jittor/src/var.cc index 97a8e2a0..b4339575 100644 --- a/python/jittor/src/var.cc +++ b/python/jittor/src/var.cc @@ -14,7 +14,7 @@ namespace jittor { -int64_t Var::number_of_lived_vars = 0; +int64 Var::number_of_lived_vars = 0; DEFINE_FLAG(fast_shared_ptr, compile_options, {}, "Override the default loop transfrom options"); @@ -42,7 +42,7 @@ string Var::to_string() { return s; } -int64_t Var::numel() { +int64 Var::numel() { if (!shape.size()) return size=num=-1; bool negtive = 0; num=1; diff --git a/python/jittor/src/var.h b/python/jittor/src/var.h index 78e09aa8..941ef215 100644 --- a/python/jittor/src/var.h +++ b/python/jittor/src/var.h @@ -18,13 +18,13 @@ struct Var : Node { NanoVector shape; cstr name; fast_shared_ptr loop_options; - static int64_t number_of_lived_vars; + static int64 number_of_lived_vars; // this var will be generated after alloc. void* mem_ptr = nullptr; Allocator* allocator = nullptr; size_t allocation; - int64_t size, num; + int64 size, num; inline bool is_float() const { CHECK_EXIST; return ns.is_float(); } inline int dsize() const { CHECK_EXIST; return ns.dsize(); } inline NanoString dtype() const { CHECK_EXIST; return ns; } @@ -40,7 +40,7 @@ struct Var : Node { Var(NanoVector shape, NanoString dtype); string to_string(); - int64_t numel(); + int64 numel(); void set_shape(NanoVector shape); bool alloc(Allocator* allocator); inline void share_with(Var* x, size_t offset = 0) { CHECK_EXIST; allocator = (Allocator*)x; allocation = offset; } diff --git a/python/jittor/test/__main__.py b/python/jittor/test/__main__.py index 7b26a16c..3904fa48 100644 --- a/python/jittor/test/__main__.py +++ b/python/jittor/test/__main__.py @@ -15,6 +15,7 @@ if __name__ == "__main__": skip_l = int(os.environ.get("test_skip_l", "0")) skip_r = int(os.environ.get("test_skip_r", "1000000")) + skip = os.environ.get("test_skip", "").split(",") test_only = None if "test_only" in os.environ: test_only = set(os.environ.get("test_only").split(",")) @@ -34,6 +35,9 @@ if __name__ == "__main__": continue if test_only and test_name not in test_only: continue + for s in skip: + if s in test_name: + continue print("Add Test", _, test_name) suite.addTest(tests) diff --git a/python/jittor/test/misc/superglue.py b/python/jittor/test/misc/superglue.py new file mode 100644 index 00000000..44af14fd --- /dev/null +++ b/python/jittor/test/misc/superglue.py @@ -0,0 +1,374 @@ +from copy import deepcopy +from pathlib import Path +import jittor as jt +import jittor.nn as nn +import numpy as np +import os + +split_size = 1000000 + +conv_opt = int(os.environ.get("conv_opt", "0")) + +if conv_opt: + Conv1d_sp = nn.Conv1d_sp +else: + Conv1d_sp = nn.Conv1d + + +def MLP(channels: list, do_bn=True): + """ Multi-layer perceptron """ + n = len(channels) + layers = [] + for i in range(1, n): + layers.append(Conv1d_sp(channels[i - 1], channels[i], kernel_size=1, bias=True)) + if i < (n - 1): + if do_bn: + layers.append(nn.BatchNorm(channels[i])) + # layers.append(nn.InstanceNorm1d(channels[i])) + # layers.append(nn.LayerNorm(channels[i])) + layers.append(nn.ReLU()) + return nn.Sequential(*layers) + + +def normalize_keypoints(kpts, image_shape): + size = image_shape.flip(1) # shape=(b,2) ;h w -> w, h + center = size / 2 + scaling = size.float32().max(1, keepdims=True) * 0.7 + return (kpts - center[:, None, :]) / scaling[:, None, :] + + +class KeypointEncoder(nn.Module): + """ Joint encoding of visual appearance and location using MLPs""" + def __init__(self, feature_dim, layers, keypoint_position_dim=2): + super().__init__() + # self.keypoint_position_dim = keypoint_position_dim + self.encoder = MLP([keypoint_position_dim + 1] + layers + [feature_dim]) + nn.init.constant_(self.encoder[-1].bias, 0.0) + + def execute(self, kpts, scores): + inputs = jt.concat([kpts.t(), scores.unsqueeze(1)], dim=1) + return self.encoder(inputs) + +cnt = 0 + +def attention(query, key, value): + global cnt + cnt += 1 + b, d, h, n = query.shape + # print("attention", b,d,h,n, cnt) + dim_factor = (1.0 / d)**0.5 + query = query.transpose(0, 2, 3, 1).reshape(b * h, -1, d) * dim_factor + key = key.transpose(0, 2, 1, 3).reshape(b * h, d, -1) + value = value.transpose(0, 2, 3, 1).reshape(b * h, -1, d) + # print("attention", query.shape, key.shape, value.shape) + + data = [] + for i in range(0, query.shape[0], split_size): + end = min(i + split_size, query.shape[0]) + tmp1 = nn.bmm(query[i:end], key[i:end]) + tmp2 = nn.softmax(tmp1, dim=-1) + tmp3 = nn.bmm(tmp2, value[i:end]) + tmp3.sync() + data.append(tmp3) + tmp3 = jt.concat(data) + + # for i in range(0, query.shape[0], split_size): + # end = min(i + split_size, query.shape[0]) + # tmp1 = nn.bmm(query[:,i:end], key[:,i:end]) + # tmp2 = nn.softmax(tmp1, dim=-1) + # tmp3 = nn.bmm(tmp2, value[:,i:end]) + # tmp3.sync() + # data.append(tmp3) + # tmp3 = jt.concat(data, dim=1) + + # tmp1 = nn.bmm(query, key) + # print(tmp1.shape) + # tmp2 = nn.softmax(tmp1, dim=-1) + # print(tmp2.shape) + # tmp3 = nn.bmm(tmp2, value) + # print(tmp3.shape) + return tmp3.reshape(b, h, -1, d).transpose(0, 3, 1, 2) + return nn.bmm(nn.softmax(nn.bmm(query, key), dim=-1), value).reshape(b, h, -1, d).transpose(0, 3, 1, 2) + + +class MultiHeadedAttention(nn.Module): + """ Multi-head attention to increase model expressivitiy """ + def __init__(self, num_heads: int, d_model: int): + super().__init__() + assert d_model % num_heads == 0 + self.dim = d_model // num_heads + self.num_heads = num_heads + self.merge = Conv1d_sp(d_model, d_model, kernel_size=1) + self.proj = nn.ModuleList([deepcopy(self.merge) for _ in range(3)]) + + def execute(self, query, key, value): + batch_dim = query.size(0) + query, key, value = [l(x).reshape(batch_dim, self.dim, self.num_heads, -1) for l, x in zip(self.proj, (query, key, value))] + x = attention(query, key, value) + # x = attention_chunk(query, key, value) + return self.merge(x.reshape(batch_dim, self.dim * self.num_heads, -1)) + + +class AttentionalPropagation(nn.Module): + def __init__(self, feature_dim: int, num_heads: int): + super().__init__() + self.attn = MultiHeadedAttention(num_heads, feature_dim) + self.mlp = MLP([feature_dim * 2, feature_dim * 2, feature_dim]) + nn.init.constant_(self.mlp[-1].bias, 0.0) + + def execute(self, x, source): + message = self.attn(x, source, source) + return self.mlp(jt.concat([x, message], dim=1)) + + +class AttentionalGNN(nn.Module): + def __init__(self, feature_dim: int, layer_names: list): + super().__init__() + self.layers = nn.ModuleList([AttentionalPropagation(feature_dim, 4) for _ in range(len(layer_names))]) + self.is_cross = [x == 'cross' for x in layer_names] + + def execute(self, desc0, desc1): + for layer, is_cross in zip(self.layers, self.is_cross): + layer.attn.prob = [] + if is_cross: + src0, src1 = desc1, desc0 + else: # if name == 'self': + src0, src1 = desc0, desc1 + # delta0, delta1 = layer(desc0, src0), layer(desc1, src1) + + delta0 = layer(desc0, src0) + # print(delta0.numel()*4) + # breakpoint() + jt.sync_all() + delta1 = layer(desc1, src1) + jt.sync_all() + desc0, desc1 = (desc0 + delta0), (desc1 + delta1) + jt.sync_all() + return desc0, desc1 + + +def log_sinkhorn_iterations(Z, log_mu, log_nu, iters: int): + """ Perform Sinkhorn Normalization in Log-space for stability""" + u, v = jt.zeros_like(log_mu), jt.zeros_like(log_nu) + for _ in range(iters): + u = log_mu - (Z + v.unsqueeze(1)).exp().sum(dim=2).log() + v = log_nu - (Z + u.unsqueeze(2)).exp().sum(dim=1).log() + return Z + u.unsqueeze(2) + v.unsqueeze(1) + + +def log_optimal_transport(scores, alpha, iters: int): + """ Perform Differentiable Optimal Transport in Log-space for stability""" + b, m, n = scores.shape + ms, ns = jt.float(m, requires_grad=False), jt.float(n, requires_grad=False) + + bins0 = alpha.broadcast([b, m, 1]) + bins1 = alpha.broadcast([b, 1, n]) + alpha = alpha.broadcast([b, 1, 1]) + + couplings = jt.concat([jt.concat([scores, bins0], -1), jt.concat([bins1, alpha], -1)], 1) + + norm = -(ms + ns).log() + log_mu = jt.concat([norm.broadcast([m]), ns.log() + norm]) + log_nu = jt.concat([norm.broadcast([n]), ms.log() + norm]) + log_mu, log_nu = log_mu[None].broadcast([b, m + 1]), log_nu[None].broadcast([b, n + 1]) + + Z = log_sinkhorn_iterations(couplings, log_mu, log_nu, iters) + Z = Z - norm # multiply probabilities by M+N + return Z + + +def arange_like(x, dim: int): + return jt.ones(x.shape[dim], dtype=x.dtype)[None].cumsum()[0] - 1 # traceable in 1.1 + + +default_config = { + 'descriptor_dim': 256, # SuperPoint + 'weights': 'indoor', + 'keypoint_encoder': [32, 64, 128, 256], # SuperPoint + 'GNN_layers': ['self', 'cross'] * 9, + 'sinkhorn_iterations': 100, + 'match_threshold': 0.2, +} + + +def get_weighted_loss_batch(scores, all_matches): + matches0, matches1 = all_matches.chunk(chunks=2, dim=2) + batchIdx = jt.arange(all_matches.shape[0]).unsqueeze(1).repeat(1, all_matches.shape[1]) + batchIdx, matches0, matches1 = batchIdx.view(-1), matches0.view(-1), matches1.view(-1) + valid_index0, valid_index1 = matches0 >= 0, matches1 >= 0 + valid_match = jt.logical_and(valid_index0, valid_index1) + valid_unmatch = jt.logical_xor(valid_index0, valid_index1) + num_match = valid_match.sum().maximum(1e-9) + num_unmatch = valid_unmatch.sum().maximum(1e-9) + + + + score_ = scores[batchIdx, matches0, matches1] + score_match_ = (score_*valid_match).float32().sum() / num_match + score_umatch_ = (score_*valid_unmatch).float32().sum() / num_unmatch + return -(num_unmatch * score_match_ + num_match * score_umatch_) / (num_match + num_unmatch) + # print(score_umatch_, score_match_) + # return -(score_match + score_umatch) / (num_match + num_unmatch) + + score_match = scores[(batchIdx[valid_match], matches0[valid_match], matches1[valid_match])].float32().mean() if num_match > 0 else 0 + score_umatch = scores[(batchIdx[valid_unmatch], matches0[valid_unmatch], matches1[valid_unmatch])].float32().mean() if num_unmatch > 0 else 0 + # print(score_match, score_umatch) + return -(num_unmatch * score_match + num_match * score_umatch) / (num_match + num_unmatch) + + +def add_dustbin(scores, alpha): + b, m, n = scores.shape + bins0 = jt.broadcast(alpha, (b, m, 1)) + bins1 = jt.broadcast(alpha, (b, 1, n)) + alpha = jt.broadcast(alpha, (b, 1, 1)) + couplings = jt.concat([jt.concat([scores, bins0], -1), jt.concat([bins1, alpha], -1)], 1) + return couplings + + +class SuperGlue(nn.Module): + def __init__(self, config): + super().__init__() + config = {**default_config, **config} + self.descriptor_dim = config['descriptor_dim'] + self.keypoint_encoder = config['keypoint_encoder'] + self.GNN_layers = config['GNN_layers'] + self.sinkhorn_iterations = config['sinkhorn_iterations'] + self.match_threshold = config['match_threshold'] + self.keypoint_position_dim = config['keypoint_position_dim'] + self.use_dual_softmax = config['use_dual_softmax'] + self.scale = jt.float(self.descriptor_dim**-0.5).stop_grad() + # self.scale.requires_grad = False + + # self.des_extend = MLP([128, 256]) + + self.kenc = KeypointEncoder(self.descriptor_dim, self.keypoint_encoder, keypoint_position_dim=self.keypoint_position_dim) + + self.gnn = AttentionalGNN(self.descriptor_dim, self.GNN_layers) + + self.final_proj = Conv1d_sp(self.descriptor_dim, self.descriptor_dim, kernel_size=1, bias=True) + + self.bin_score = jt.float(1.0) + + def execute(self, data): + """Run SuperGlue on a pair of keypoints and descriptors""" + + kpts0, kpts1 = data['keypoints0'], data['keypoints1'] + desc0, desc1 = data['descriptors0'], data['descriptors1'] + all_matches = data['all_matches'] + # match_num = data['match_num'] + + if kpts0.shape[1] == 0 or kpts1.shape[1] == 0 or all_matches.shape[1] == 0: # no keypoints or no matches/unmatches + shape0, shape1 = kpts0.shape[:-1], kpts1.shape[:-1] + return { + 'matches0': jt.ones(shape0, dtype=jt.int), + 'matches1': jt.ones(shape1, dtype=jt.int), + 'matching_scores0': jt.zeros(shape0, dtype=jt.float), + 'matching_scores1': jt.zeros(shape1, dtype=jt.float), + 'skip_train': True + } + + # Keypoint normalization. + kpts0 = normalize_keypoints(kpts0, data['shape0']) + kpts1 = normalize_keypoints(kpts1, data['shape1']) + + # Keypoint MLP encoder. + # desc0 = self.des_extend(desc0) + self.kenc(kpts0, data['scores0']) + # desc1 = self.des_extend(desc1) + self.kenc(kpts1, data['scores1']) + desc0 = desc0 + self.kenc(kpts0, data['scores0']) + desc1 = desc1 + self.kenc(kpts1, data['scores1']) + + # Multi-layer Transformer network. + desc0, desc1 = self.gnn(desc0, desc1) + + # Final MLP projection. + desc0, desc1 = self.final_proj(desc0), self.final_proj(desc1) + desc0_t = desc0.t() + losses = [] + + for i in range(0, desc1.shape[0], split_size): + end = min(desc1.shape[0], i + split_size) + + # Compute matching descriptor distance. + scores = nn.bmm(desc0_t[i:end], desc1[i:end]) * self.scale # 457.76 MB + scores.sync() + + # Run the optimal transport. + if self.use_dual_softmax: + scores = add_dustbin(scores, self.bin_score) # 458.68 MB + scores.sync() + dual_softmax0, dual_softmax1 = nn.log_softmax(scores, 1), nn.log_softmax(scores, 2) + scores = dual_softmax0 + dual_softmax1 # 458.22 MB + scores.sync() + else: + scores = log_optimal_transport(scores, self.bin_score, iters=self.config['sinkhorn_iterations']) + + # loss = torch.stack([get_match_score(scores[b], all_matches[b]) for b in range(all_matches.shape[0])]) + + loss = get_weighted_loss_batch(scores, all_matches[i:end]) + loss.sync() + losses.append(loss) + loss = jt.concat(losses) + ''' + # Compute matching descriptor distance. + scores = nn.bmm(desc0.t(), desc1) * self.scale # 457.76 MB + scores.sync() + + # Run the optimal transport. + if self.use_dual_softmax: + scores = add_dustbin(scores, self.bin_score) # 458.68 MB + scores.sync() + dual_softmax0, dual_softmax1 = nn.log_softmax(scores, 1), nn.log_softmax(scores, 2) + scores = dual_softmax0 + dual_softmax1 # 458.22 MB + scores.sync() + else: + scores = log_optimal_transport(scores, self.bin_score, iters=self.config['sinkhorn_iterations']) + + # loss = torch.stack([get_match_score(scores[b], all_matches[b]) for b in range(all_matches.shape[0])]) + + loss = get_weighted_loss_batch(scores, all_matches) + # print(scores.shape, all_matches.shape, loss.shape) + ''' + + # matches0, matches1 = all_matches.chunk(chunks=2, dim=2) + # batchIdx = jt.arange(0, b).unsqueeze(1).repeat(1, num) + # batchIdx, matches0, matches1 = batchIdx.view(-1), matches0.view(-1), matches1.view(-1) + # validmatch = (matches0 >= 0) | (matches1 >= 0) + # batchIdx, matches0, matches1 = batchIdx[validmatch], matches0[validmatch], matches1[validmatch] + # matches0[matches0 == -1] = n + # matches1[matches1 == -1] = m + # loss_mean = -scores[(batchIdx, matches0, matches1)].mean() + # loss_mean = nn.l1_loss(loss_mean, jt.float(0.0)) + + if not data['return_match']: + return {'loss': loss} + + with jt.no_grad(): + b, n, m = scores.shape + # Get the matches with score above "match_threshold". + indices0, max0 = scores[:, :-1, :-1].argmax(2) + indices1, max1 = scores[:, :-1, :-1].argmax(1) + mutual0 = jt.arange(0, n)[None] == indices1.gather(1, indices0) + mutual1 = jt.arange(0, m)[None] == indices0.gather(1, indices1) + # zero = scores.new_tensor(0) + # mscores0 = torch.where(mutual0, max0.values.exp(), zero) + mscores0 = max0.exp() + mscores0[mutual0.logical_not()] = 0 + # mscores1 = torch.where(mutual1, mscores0.gather(1, indices1), zero) + mscores1 = mscores0.gather(1, indices1) + mscores1[mutual1.logical_not()] = 0 + valid0 = mutual0 & (mscores0 > self.match_threshold) + valid1 = mutual1 & valid0.gather(1, indices1) + # indices0 = torch.where(valid0, indices0, indices0.new_tensor(-1)) + # indices1 = torch.where(valid1, indices1, indices1.new_tensor(-1)) + indices0[valid0.logical_not()] = -1 + indices1[valid1.logical_not()] = -1 + + return { + 'matches0': indices0, # use -1 for invalid match + 'matches1': indices1, # use -1 for invalid match + 'matching_scores0': mscores0, + 'matching_scores1': mscores1, + 'loss': loss, + } + + # scores big value or small value means confidence? log can't take neg value \ No newline at end of file diff --git a/python/jittor/test/test_benchmark.py b/python/jittor/test/test_benchmark.py new file mode 100644 index 00000000..2e7db8b7 --- /dev/null +++ b/python/jittor/test/test_benchmark.py @@ -0,0 +1,344 @@ +# *************************************************************** +# Copyright (c) 2021 Jittor. All Rights Reserved. +# Maintainers: Dun Liang . +# This file is subject to the terms and conditions defined in +# file 'LICENSE.txt', which is part of this source code package. +# *************************************************************** +import unittest +import jittor as jt +import numpy as np +import os + +n = 400000000 +# n = 4000000 +n = 7680000 + +def get_mem_band(): + a = jt.rand((n)).float32() + for i in range(100): + a.copy().sync() + jt.sync_all(True) + import time + t = time.time() + for i in range(1000): + a.copy().sync() + jt.sync_all(True) + dt = time.time() - t + band = a.numel() * 4 * 2000 / dt / 1024**3 + print("Mem band: ", band) + return band + +def check_simple_add_band(): + # copy: 816 + # S=1 128,1024, ILP=1 634 + # S=0 128,1024, ILP=1 734 + # S=0 128,512, ILP=1 716 + # S=0 64,1024, ILP=1 706 + # S=0 256,1024, ILP=1 706 + def test(S=0, B=128, T=1024, ILP=1): + a = jt.rand((n)).float32() + jt.sync_all(True) + jt.flags.log_silent = 1 + with jt.profile_scope(100, 1000) as rep: + b = jt.code(a.shape, a.dtype, [a], + cuda_header="#include \"type/fp16_compute.h\"", + cuda_src=f""" + __global__ void kernel(in0_type * __restrict__ a, in0_type* __restrict__ b, int num) {{ + int tid = threadIdx.x + blockIdx.x * blockDim.x; + int tnum = blockDim.x * gridDim.x; + #define ILP {ILP} + for (int i=tid*ILP; i(b+i, a+i); + {"__syncthreads();" if S else ""} + }} + }} + kernel<<<{B},{T}>>>(in0_p, out0_p, in0->num); + """) + b.sync() + bw = float(rep[-1][9]) / 1024**3 + s = f"S={S}, B={B}, T={T}, ILP={ILP} BW={bw}" + print(s) + return s, bw + + def test2(S=0, B=128, T=1024, ILP=1): + a = jt.rand((n)).float32() + jt.sync_all(True) + # jt.flags.log_silent = 0 + with jt.profile_scope(10, 1000) as rep: + b = jt.code(a.shape, a.dtype, [a], + cuda_header="#include \"type/fp16_compute.h\"", + cuda_src=f""" + __global__ void kernel(float2 * __restrict__ a, float2* __restrict__ b, int num) {{ + int tid = threadIdx.x + blockIdx.x * blockDim.x; + int tnum = blockDim.x * gridDim.x; + #define ILP 1 + for (int i=tid*ILP; i(b+i, a+i); + {"__syncthreads();" if S else ""} + }} + }} + kernel<<<{B},{T}>>>((float2*)in0_p, (float2*)out0_p, in0->num/2); + """) + b.sync() + bw = float(rep[-1][9]) / 1024**3 + s = f"T2: S={S}, B={B}, T={T}, ILP={ILP} BW={bw}" + print(s) + return s, bw + + + def test3(S=0, B=128, T=1024, ILP=1, C=0): + a = jt.rand((n)).float32() + b = jt.rand(B) + jt.sync_all(True) + jt.flags.log_silent = 1 + with jt.profile_scope(100, 1000) as rep: + b = jt.code(a.shape, a.dtype, [a, b], + cuda_header="#include \"type/fp16_compute.h\"", + cuda_src=f""" + __global__ void kernel(in0_type * __restrict__ a, in0_type* __restrict__ b, int num) {{ + int tid = threadIdx.x + blockIdx.x * blockDim.x; + int tnum = blockDim.x * gridDim.x; + #define ILP {ILP} + for (int i=tid*ILP; i(b+i, a+i); + {"__syncthreads();" if S else ""} + }} + {"__syncthreads();" if C else ""} + }} + kernel<<shape[0],{T}>>>(in0_p, out0_p, in0->num); + """) + b.compile_options = {"FLAGS: -Xptxas -dlcm=ca ": C} + # b.compile_options = {"FLAGS: –Xptxas –dlcm=ca ": 1} + b.sync() + + bw = float(rep[-1][9]) / 1024**3 + s = f"T3: S={S}, B={B}, T={T}, ILP={ILP} C={C} BW={bw}" + print(s) + return s, bw + + + def test4(S=0, B=128, T=1024, ILP=1, C=0, name="b.png"): + a = jt.rand((n)).float32() + b = jt.rand(B*4).uint32() + jt.sync_all(True) + # jt.flags.log_silent = 1 + with jt.profile_scope(100, 10000) as rep: + _ = jt.code(a.shape, a.dtype, [a, b], + cuda_header="#include \"type/fp16_compute.h\"", + cuda_src=f""" + __device__ uint get_smid(void) {{ + uint ret; + asm("mov.u32 %0, %smid;" : "=r"(ret) ); + return ret; + }} + __device__ uint get_time(void) {{ + uint ret; + asm volatile("mov.u32 %0, %%globaltimer_lo;" : "=r"(ret)); + return ret; + }} + + __global__ void kernel(in0_type * __restrict__ a, in0_type* __restrict__ b, int num, in1_type* __restrict__ c) {{ + uint t = get_time(); + int tid = threadIdx.x + blockIdx.x * blockDim.x; + int tnum = blockDim.x * gridDim.x; + #define ILP {ILP} + for (int i=tid*ILP; i(b+i, a+i); + {"__syncthreads();" if S else ""} + }} + {"__syncthreads();" if C else ""} + if (threadIdx.x == 0) + ((uint4* __restrict__)c)[blockIdx.x] = + uint4{{get_smid(), t, get_time(), 0}}; + }} + kernel<<shape[0]/4,{T}>>>(in0_p, out0_p, in0->num, in1_p); + """) + _.compile_options = {"FLAGS: -Xptxas -dlcm=ca ": C} + # b.compile_options = {"FLAGS: –Xptxas –dlcm=ca ": 1} + _.sync() + + bw = float(rep[-1][9]) / 1024**3 + b = b.data.reshape(-1, 4)[:,:3] + mint = b[:,1].min() + b[:,1:] -= mint + smmax = int(b[:,0].max()) + smmin = int(b[:,0].min()) + maxt = b.max() + + # print(b) + + s = f"T4: S={S}, B={B}, T={T}, ILP={ILP} C={C} BW={bw:.3f} sm={smmin},{smmax} maxt={maxt}" + print(s) + import pylab as pl + pl.figure(figsize=(16,16)) + texts = [] + pret = np.zeros(200, dtype="uint32") + for i in range(B): + smid, s, t = b[i] + pl.plot([s,t], [smid, smid], 'ro-') + texts.append((s, smid, i)) + texts.append((t, smid, i)) + + texts = sorted(texts) + for (s, smid, bid) in texts: + cpos = max(pret[smid], s) + pl.text(cpos, smid, str(bid)) + pret[smid] = cpos + maxt // 30 + + + # print("???") + # adjust_text(texts, arrowprops=dict(arrowstyle='->', color='blue')) + # print("???") + pl.savefig(name) + pl.close() + return s, bw + # test(S=0, B=128, T=1024, ILP=1) + # test(S=1, B=128, T=1024, ILP=1) + # test(S=0, B=64, T=1024, ILP=1) + # test(S=0, B=256, T=1024, ILP=1) + # test(S=1, B=128, T=512, ILP=1) + # test(S=1, B=128, T=256, ILP=1) + + # test(S=0, B=128, T=1024, ILP=2) + # test(S=0, B=128, T=1024, ILP=4) + # test(S=0, B=128, T=512, ILP=2) + # test(S=0, B=128, T=512, ILP=4) + + # test(S=1, B=128, T=1024, ILP=2) + # test(S=1, B=128, T=1024, ILP=4) + # test(S=1, B=128, T=1024, ILP=8) + # test(S=1, B=128, T=1024, ILP=16) + # test(S=1, B=128, T=512, ILP=2) + # test(S=1, B=128, T=512, ILP=4) + + # test(S=1, B=256, T=1024, ILP=2) + # test(S=1, B=512, T=1024, ILP=2) + # test(S=1, B=256, T=1024, ILP=4) + # test(S=1, B=256, T=1024, ILP=8) + # test(S=1, B=256, T=1024, ILP=16) + # test(S=1, B=256, T=512, ILP=2) + # test(S=1, B=256, T=512, ILP=4) + + # test(S=1, B=128, T=256, ILP=2) + # test(S=1, B=128, T=256, ILP=4) + # test(S=0, B=128, T=256, ILP=2) + # test(S=0, B=128, T=256, ILP=4) + + # for b in [1, 2, 4, 8, 16, 32, 64, 128,256]: + # test(S=1, B=b, T=512, ILP=2) + + import matplotlib as mpl + mpl.use('Agg') + import pylab as pl + import numpy as np + + # test4(S=1, B=82, T=1024, ILP=2, C=0, name="b.png") + # test4(S=1, B=83, T=1024, ILP=2, C=0, name="c.png") + # test4(S=1, B=82*3, T=512, ILP=2, C=0, name="d1.png") + # test4(S=1, B=82*3+1, T=512, ILP=2, C=0, name="d2.png") + # test4(S=1, B=82*6+1, T=512, ILP=2, C=0, name="d3.png") + # test4(S=0, B=82*6+1, T=512, ILP=2, C=0, name="d4.png") + + for b in range(70, 83): + test4(S=1, B=b, T=1024, ILP=2, C=0, name=f"b-{b}.png") + + # data = [] + # for b in range(32, 2000, 8): + # _, bw = test3(S=0, B=b, T=32, ILP=2) + # data.append([b, bw]) + # data = np.array(data) + # pl.plot(data[:,0], data[:,1]) + + # for t in [32, 64, 128, 256, 512, 1024]: + # data = [] + # for b in range(32, 2000, 8): + # _, bw = test3(S=1, B=b*(1024//t), T=t, ILP=2) + # data.append([b, bw]) + # data = np.array(data) + # pl.plot(data[:,0], data[:,1]) + + # for t in [1024]: + # for c in [0,1]: + # data = [] + # # for b in range(32, 1000, 8): + # for b in range(32, 33, 8): + # _, bw = test3(S=c, B=b*(1024//t), T=t, ILP=2, C=0) + # data.append([b, bw]) + # data = np.array(data) + # pl.plot(data[:,0], data[:,1]) + + # for ilp in [2]: + # for s in [1]: + # for t in [1024,512,256,128]: + # data = [] + # for b in range(32, 1100, 8): + # _, bw = test3(S=s, B=b*(1024//t), T=t, ILP=ilp) + # data.append([b, bw]) + # data = np.array(data) + # pl.plot(data[:,0], data[:,1]) + + # pl.savefig("a.png") + # pl.close() + # for b in range(80, 90, 1): + # _, bw = test3(S=1, B=b, T=1024, ILP=2) + # # 82 + # for b in range(240, 260, 1): + # _, bw = test3(S=1, B=b, T=512, ILP=2) + # # 82*3 = 246 + # for b in range(240, 500, 1): + # _, bw = test3(S=1, B=b, T=256, ILP=2) + # # 492 = 82*6 + # for b in range(240, 1000, 1): + # _, bw = test3(S=1, B=b, T=128, ILP=2) + # # 984 = 82*12 + + + # for b in [128,256]: + # test(S=1, B=b, T=1024, ILP=2) + # for b in [128,256]: + # test(S=0, B=b, T=512, ILP=2) + # for b in [128,256]: + # test(S=0, B=b, T=1024, ILP=2) + # for b in [128,256]: + # test(S=1, B=b, T=512, ILP=1) + # for b in [128,256]: + # test(S=1, B=b, T=1024, ILP=1) + # for b in [128,256]: + # test(S=0, B=b, T=512, ILP=1) + # for b in [128,256]: + # test(S=0, B=b, T=1024, ILP=1) + # test(S=1, B=128, T=512, ILP=4) + # test(S=1, B=64, T=512, ILP=2) + # test(S=1, B=80, T=512, ILP=2) + # test(S=1, B=100, T=512, ILP=2) + # test(S=1, B=110, T=512, ILP=2) + # test(S=1, B=115, T=512, ILP=2) + # test(S=1, B=120, T=512, ILP=2) + # test(S=1, B=130, T=512, ILP=2) + # test(S=1, B=140, T=512, ILP=2) + # test2(S=1, B=128, T=512, ILP=2) + # test(S=1, B=128, T=256, ILP=4) + # test(S=1, B=128, T=128, ILP=8) + # test(S=1, B=128, T=64, ILP=16) + + + +@unittest.skipIf(not jt.compiler.has_cuda, "No CUDA found") +class TestBenchmarkCUDA(unittest.TestCase): + def setUp(self): + jt.flags.use_cuda = 1 + def tearDown(self): + jt.flags.use_cuda = 0 + + def test_main(self): + return + get_mem_band() + check_simple_add_band() + +if __name__ == "__main__": + unittest.main() \ No newline at end of file diff --git a/python/jittor/test/test_binary_op.py b/python/jittor/test/test_binary_op.py index 6eec8c0f..1947fef8 100644 --- a/python/jittor/test/test_binary_op.py +++ b/python/jittor/test/test_binary_op.py @@ -19,12 +19,12 @@ def all_eq(x, y): y = convert(y) if str(x.dtype).startswith("float"): return str(y.dtype).startswith("float") and x.shape == y.shape and (x==y).all() - return x.dtype == y.dtype and x.shape == y.shape and (x==y).all() + return x.dtype == y.dtype and x.shape == y.shape and np.testing.assert_allclose(x, y) def check(op, *args): x = eval(f"np.{op}(*args)") y = eval(f"jt.{op}(*args).data") - assert all_eq(x, y), f"{x}\n{y}" + all_eq(x, y) class TestBinaryOp(unittest.TestCase): def test_binary_op(self): @@ -47,6 +47,9 @@ class TestBinaryOp(unittest.TestCase): def test_i(self): def check(op, a, b): + if isinstance(a, list): + a = np.array(a) + b = np.array(b) if jt.flags.use_cuda and op == "@": return if op=="@": @@ -65,13 +68,13 @@ class TestBinaryOp(unittest.TestCase): a = np.float32(a) ja = np.float32(ja) - assert all_eq(ja, a), (ja,a) + all_eq(ja, a) check("+", 5, 2) check("-", 5, 2) check("*", 5, 2) check("/", 5, 2) check("//", 5, 2) - check("@", [[5]], [[2]]) + # check("@", [[5]], [[2]]) check("%", 5, 2) check("**", 5, 2) check("<<", 5, 2) @@ -80,6 +83,15 @@ class TestBinaryOp(unittest.TestCase): check("^", 5, 2) check("|", 5, 2) + check("+", [5.0,6.0], [2.0,3.0]) + check("-", [5.0,6.0], [2.0,3.0]) + check("*", [5.0,6.0], [2.0,3.0]) + check("/", [5.0,6.0], [2.0,3.0]) + check("//", [5.0,6.0], [2.0,3.0]) + check("@", [[5,6],[7,8]], [[2,3],[4,5]]) + check("%", [5.0,6.0], [2.0,3.0]) + check("**", [5.0,6.0], [2.0,3.0]) + def test_r(self): def check(op, a, b): a = np.array(a) @@ -97,7 +109,7 @@ class TestBinaryOp(unittest.TestCase): a = eval(f"a {op} b") a = np.array(a) - assert all_eq(jc, a), f"\n{jc}\n{a}" + all_eq(jc, a) check("+", 5, 2) check("-", 5, 2) check("*", 5, 2) @@ -118,6 +130,7 @@ class TestBinaryOp(unittest.TestCase): a = np.random.rand(10) b = np.random.rand(10) c = np.random.rand(10) + tol = 1e-2 if jt.flags.amp_reg & 2 else 1e-4 for op in ops: func = lambda x: eval(f"((x[0]{op}x[1])*x[2]).sum()") x, grads = ngrad(func, [a,b,c], 1e-8) @@ -127,7 +140,7 @@ class TestBinaryOp(unittest.TestCase): jx = eval(f"(ja{op}jb)*jc") jgrads = jt.grad(jx, [ja,jb,jc]) for jd, nd in zip(jgrads, grads): - assert (np.abs(jd.data-nd)<1e-4).all(), f"\n{jd.data}\n{nd}" + np.testing.assert_allclose(jd.data, nd, atol=tol, rtol=tol) def test_mod_float(self): a = jt.random((10,)) @@ -137,7 +150,8 @@ class TestBinaryOp(unittest.TestCase): a = jt.random((10,), 'float64') b = jt.random((10,), 'float64') c = a % b - assert np.allclose(c.data, a.data % b.data) + assert np.allclose(c.data, a.data % b.data, a.data, b.data) + if jt.flags.amp_reg & 2: return a = jt.random((10,)) * 1000 b = (jt.random((10,)) * 10).int() + 1 c = a % b @@ -169,5 +183,19 @@ class TestBinaryOp(unittest.TestCase): class TestBinaryOpCuda(TestBinaryOp, test_cuda(2)): pass +class TestBinaryOpCpuFp16(TestBinaryOp): + def setUp(self): + jt.flags.amp_reg = 2 | 4 | 8 | 16 + def tearDown(self): + jt.flags.amp_reg = 0 + +class TestBinaryOpCudaFp16(TestBinaryOp): + def setUp(self): + jt.flags.amp_reg = 2 | 4 | 8 | 16 + jt.flags.use_cuda = 1 + def tearDown(self): + jt.flags.amp_reg = 0 + jt.flags.use_cuda = 0 + if __name__ == "__main__": unittest.main() \ No newline at end of file diff --git a/python/jittor/test/test_fp16.py b/python/jittor/test/test_fp16.py new file mode 100644 index 00000000..d948e402 --- /dev/null +++ b/python/jittor/test/test_fp16.py @@ -0,0 +1,342 @@ +# *************************************************************** +# Copyright (c) 2021 Jittor. All Rights Reserved. +# Maintainers: Dun Liang . +# This file is subject to the terms and conditions defined in +# file 'LICENSE.txt', which is part of this source code package. +# *************************************************************** +import unittest +import jittor as jt +import numpy as np +import os + +def transpose0231(x): + s0, s1, s2, s3 = x.shape + asize = 16 + bsize = 16 + ILP = 2 + return jt.code([s0, s2, s3, s1], x.dtype, [x], + cuda_header="#include \n#include ", + cuda_src=f""" + __global__ void kernel(in0_type* __restrict__ x, in0_type* __restrict__ y, int s0, int s1, int s2, int s3) {{ + __shared__ in0_type t[{asize*ILP}*{bsize*ILP+1}]; + int t3 = threadIdx.x % {bsize}; + int t1 = threadIdx.x / {bsize}; + int b3 = blockIdx.x; + int b2 = blockIdx.y; + int b0 = blockIdx.z; + int x3 = 1; + int x2 = s3; + int x1 = s2*x2; + int x0 = s1*x1; + int y3 = 1; + int y2 = s1; + int y1 = s3*y2; + int y0 = s2*y1; + in0_type tmp[{ILP}]; + for (int i=0; i<(s1-1)/{asize*ILP}+1; i++) + {{ + int _b3 = b3 * {bsize*ILP} + t3*{ILP}; + if (_b3 < s3) {{ + #pragma unroll + for (int j=0; j<{ILP}; j++) {{ + vload( + tmp, + &x[b0*x0+(t1*{ILP}+j+i*{asize*ILP})*x1+b2*x2+_b3*x3] + ); + #pragma unroll + for (int k=0; k<{ILP}; k++) + t[(t1*{ILP}+j)*{bsize*ILP+1}+t3*{ILP}+k] = tmp[k]; + + }} + }} + __syncthreads(); + int t3_ = threadIdx.x % {asize}; + int t1_ = threadIdx.x / {asize}; + _b3 = b3 * {bsize*ILP} + t1_*{ILP}; + if (_b3 < s3) {{ + #pragma unroll + for (int j=0; j<{ILP}; j++) {{ + #pragma unroll + for (int k=0; k<{ILP}; k++) {{ + tmp[k] = + t[(t3*{ILP}+k)*{bsize*ILP+1}+t1_*{ILP}+j]; + }} + vload( + &y[b0*y0+b2*y1+(_b3+j)*y2+((t3*{ILP})+i*{asize*ILP})*y3], + tmp + ); + }} + }} + __syncthreads(); + }} + }} + int s0, s1, s2, s3; + in0->shape.unpack(s0, s1, s2, s3); + kernel<<<{{(s3-1)/{bsize*ILP}+1, s2, s0 }}, {bsize*asize}>>> + (in0_p, out0_p, s0, s1, s2, s3); + """) + +def transpose0231_2(x): + s0, s1, s2, s3 = x.shape + asize = 16 + bsize = 8 + ILP = 2 + return jt.code([s0, s2, s3, s1], x.dtype, [x], + cuda_header="#include \n#include ", + cuda_src=f""" + __global__ __launch_bounds__({asize*bsize}) void kernel(in0_type* __restrict__ x, in0_type* __restrict__ y, int s0, int s1, int s2, int s3) {{ + __shared__ in0_type t[{asize*ILP}*{bsize*ILP+1}]; + int t3 = threadIdx.x % {bsize}; + int t1 = threadIdx.x / {bsize}; + int b3 = blockIdx.x; + int b1 = blockIdx.y; + int b2 = 0; + int b0 = blockIdx.z; + int x3 = 1; + int x2 = s3; + int x1 = s2*x2; + int x0 = s1*x1; + int y3 = 1; + int y2 = s1; + int y1 = s3*y2; + int y0 = s2*y1; + in0_type tmp[{ILP}]; + {{ + int _b3 = b3 * {bsize*ILP} + t3*{ILP}; + if (_b3 < s3) {{ + #pragma unroll + for (int j=0; j<{ILP}; j++) {{ + if (t1*{ILP}+j+b1*{asize*ILP} >= s1) + continue; + vload( + tmp, + &x[b0*x0+(t1*{ILP}+j+b1*{asize*ILP})*x1+b2*x2+_b3*x3] + ); + #pragma unroll + for (int k=0; k<{ILP}; k++) + t[(t1*{ILP}+j)*{bsize*ILP+1}+t3*{ILP}+k] = tmp[k]; + + }} + }} + __syncthreads(); + int t3_ = threadIdx.x % {asize}; + int t1_ = threadIdx.x / {asize}; + _b3 = b3 * {bsize*ILP} + t1_*{ILP}; + int yy3 = (t3_*{ILP})+b1*{asize*ILP}; + if (_b3 < s3 && yy3 < s1) {{ + #pragma unroll + for (int j=0; j<{ILP}; j++) {{ + #pragma unroll + for (int k=0; k<{ILP}; k++) {{ + tmp[k] = + t[(t3_*{ILP}+k)*{bsize*ILP+1}+t1_*{ILP}+j]; + }} + vload( + &y[b0*y0+b2*y1+(_b3+j)*y2+yy3*y3], + tmp + ); + // printf("%d %d %d %d %d\\n", b0*y0+b2*y1+(_b3+j)*y2+yy3*y3, + // b0, b2, (_b3+j), yy3); + }} + }} + __syncthreads(); + }} + }} + int s0, s1, s2, s3; + in0->shape.unpack(s0, s1, s2, s3); + kernel<<<{{(s3-1)/{bsize*ILP}+1, (s1-1)/{asize*ILP}+1, s0 }}, {bsize*asize}>>> + (in0_p, out0_p, s0, s1, s2, s3); + """) + +def check_share(): + return + a = jt.rand((30, 32, 4, 2000)).float32() + jt.code(a.shape, a.dtype, [a], + cuda_header="#include \n#include ", + cuda_src=""" + __global__ void kernel(in0_type* __restrict__ a, in0_type* __restrict__ b) { + __shared__ float x[32*33]; + for (int i=0; i<3; i++) { + ((float2*)&x[i])[0] = ((float2*)&a[i])[0]; + ((float2*)&b[i])[0] = ((float2*)&x[i+1])[0]; + } + } + kernel<<<1024,16*16>>>(in0_p, out0_p); + LOGir << "aaa"; + """).sync() + jt.sync_all(True) + # print(a[0]+1) + print("pass test") + +class TestFP16(unittest.TestCase): + def test_array(self): + a = np.array([1,2,3], dtype="float16") + b = jt.array(a) + np.testing.assert_allclose(a, b.data) + + def test_add(self): + a = np.array([1,2,3], dtype="float16") + b = jt.array(a) + c = b+b + np.testing.assert_allclose(c.data, a+a) + d = c.sum() + np.testing.assert_allclose(d.data, [12]) + c = c+1 + print(c) + + def test_matmul(self): + a = jt.random((100,100)).float16() + b = jt.random((100,100)).float16() + c = jt.matmul(a, b) + c.sync() + + def test_matmul_grad(self): + a = jt.random((100,100)).float16() + b = jt.random((100,100)).float16() + c = jt.matmul(a, b) + c.sync() + da, db = jt.grad(c, [a,b]) + jt.sync_all() + assert da.dtype == "float16" + assert db.dtype == "float16" + + def test_array_random_auto_cast(self): + a = jt.array([1.0,2.0]) + assert a.dtype == "float32" + with jt.flag_scope(amp_reg=2+16): + a = jt.array([1.0,2.0]) + assert a.dtype == "float16", a.dtype + + a = jt.random([10]) + assert a.dtype == "float32" + with jt.flag_scope(amp_reg=2+16): + a = jt.random([10]) + assert a.dtype == "float16", a.dtype + + def test_conv(self): + a = jt.random((3,4,5,5)).float16() + b = jt.random((4,4,3,3)).float16() + c = jt.nn.conv(a, b) + c.sync() + + def test_max(self): + a = jt.random((100,)).float16() + b = jt.random((100,)).float16() + c = a.maximum(b) + c.sync() + + def test_reduce_dtype_infer(self): + with jt.flag_scope(amp_reg=1): + a = jt.random((3,4,5,5)).float16() + b = a.sum() + b.sync() + assert b.dtype == "float32" + with jt.flag_scope(amp_reg=2): + a = jt.random((3,4,5,5)).float16() + b = a.sum() + b.sync() + assert b.dtype == "float32" + with jt.flag_scope(amp_reg=0): + a = jt.random((3,4,5,5)).float16() + b = a.sum() + b.sync() + assert b.dtype == "float32" + with jt.flag_scope(amp_reg=2+4): + a = jt.random((3,4,5,5)).float16() + b = a.sum() + b.sync() + assert b.dtype == "float16", b.dtype + + def test_white_dtype_infer(self): + with jt.flag_scope(amp_reg=1): + a = jt.random((3,4,5,5)).float16() + b = a**a + b.sync() + assert b.dtype == "float32" + with jt.flag_scope(amp_reg=2): + a = jt.random((3,4,5,5)).float16() + b = a**a + b.sync() + assert b.dtype == "float32" + with jt.flag_scope(amp_reg=0): + a = jt.random((3,4,5,5)).float16() + b = a**a + b.sync() + assert b.dtype == "float32" + with jt.flag_scope(amp_reg=2+8): + a = jt.random((3,4,5,5)).float16() + b = a**a + b.sync() + assert b.dtype == "float16", b.dtype + + + +@unittest.skipIf(not jt.compiler.has_cuda, "No CUDA found") +class TestFP16CUDA(TestFP16): + def setUp(self): + jt.flags.use_cuda = 1 + def tearDown(self): + jt.flags.use_cuda = 0 + + def test_softmax(self): + a = jt.rand((120, 2000, 2000)).float16() + # a = jt.rand((1, 2000, 2000)).float32() + jt.sync_all() + with jt.profile_scope(10, 100): + a.log_softmax(-1).sync() + + def test_transpose(self): + check_share() + # return + a = jt.rand((30, 32, 4, 2000)).float32() + # a = jt.rand((1, 1024, 1, 2000)).float32() + diff = transpose0231(a).data != a.transpose((0,2,3,1)).data + print(np.where(diff)) + # return + jt.sync_all() + # with jt.profile_scope(100, 11000): + with jt.profile_scope(100, 11000): + # a.log_softmax(-1).sync() + transpose0231(a).sync() + + a.transpose((0,2,3,1)).sync() + # a.transpose((0,2,1,3)).sync() + a.fuse_transpose((0,2,1,3)).sync() + (a+1).sync() + jt.sync_all(True) + diff = transpose0231(a).data != a.transpose((0,2,3,1)).data + print(np.where(diff)) + np.testing.assert_allclose(transpose0231(a).data, a.transpose((0,2,3,1)).data) + + def test_transpose2(self): + # check_share() + # return + # a = jt.rand((30, 32, 4, 2000)).float32() + # a = jt.rand((1, 10000, 1, 2000)).float32() + a = jt.rand((1, 10000, 1, 2048)).float32() + print("transpose") + transpose0231_2(a).sync() + print("add") + (a+1).sync() + return + # a = jt.arange(32*16).reshape((1, 32, 1, 16)) + diff = transpose0231_2(a).data != a.transpose((0,2,3,1)).data + print(np.where(diff)) + # return + jt.sync_all() + # with jt.profile_scope(100, 11000): + with jt.profile_scope(100, 1100): + # a.log_softmax(-1).sync() + transpose0231_2(a).sync() + + a.transpose((0,2,3,1)).sync() + # a.transpose((0,2,1,3)).sync() + a.fuse_transpose((0,2,1,3)).sync() + (a+1).sync() + jt.sync_all(True) + diff = transpose0231_2(a).data != a.transpose((0,2,3,1)).data + print(np.where(diff)) + np.testing.assert_allclose(transpose0231_2(a).data, a.transpose((0,2,3,1)).data) + +if __name__ == "__main__": + unittest.main() \ No newline at end of file diff --git a/python/jittor/test/test_misc_op.py b/python/jittor/test/test_misc_op.py index 144002f8..47f04762 100644 --- a/python/jittor/test/test_misc_op.py +++ b/python/jittor/test/test_misc_op.py @@ -75,6 +75,8 @@ class TestPad(unittest.TestCase): print('pass flip test ...') def test_cross(self): + def check_equal(a, b, tol): + np.testing.assert_allclose(a.detach().numpy(), b.numpy(), atol=1e-5) arr1 = np.random.randn(16,3,224,224,3) arr2 = np.random.randn(16,3,224,224,3) check_equal(torch.Tensor(arr1).cross(torch.Tensor(arr2), dim=1), jt.array(arr1).cross(jt.array(arr2), dim=1), 1e-1) @@ -257,34 +259,51 @@ class TestOther(unittest.TestCase): a = jt.arctan2(jt.array([1,1.0,0]), jt.array([1,0.0,-1])) np.testing.assert_allclose(a.data, [0.7853982,1.5707964,3.1415927]) + y = jt.random((100,)) + x = jt.random((100,)) + z = jt.arctan2(y, x) + z2 = np.arctan2(y.data, x.data) + np.testing.assert_allclose(z.data, z2) + def test_code_softmax(self): if not jt.has_cuda: return - def softmax(x, dim = None): + def softmax(x, dim = None, log=False): if dim is None: x = (x - x.max()).exp() ret = x / x.sum() else: x = (x-x.max(dim, keepdims=True)).exp() ret = x / x.sum(dim, keepdims=True) + if log: return ret.log() return ret from jittor.other.code_softmax import softmax_v1 with jt.flag_scope(use_cuda = 1): shape = (120, 2000, 2000) - # shape = (3,3) - a = jt.rand(shape) - c = jt.rand(shape) - b = softmax(a, -1) - bb = softmax_v1(a) + shape = (3,3) + for log in [0,1]: + for shape in [(3,3), + (12, 200, 2000), + (12, 200, 2048), + (12, 200, 2049)]: + print(shape) + a = jt.rand(shape) + c = jt.rand(shape) + b = softmax(a, -1, log=log) + bb = softmax_v1(a, log=log) - err = (bb - b).abs().max() - assert err.item() < 1e-5 + err = (bb - b).abs().max() + assert err.item() < 1e-5, (err, bb, b) - d1 = jt.grad(b*c, a) - d2 = jt.grad(bb*c, a) - err = (d1 - d2).abs().max() - assert err.item() < 1e-5 + d1 = jt.grad(b*c, a) + d2 = jt.grad(bb*c, a) + err = (d1 - d2).abs().max() + + if log: + assert err.item() < 1e-2, (err.item()) + else: + assert err.item() < 1e-5, (err.item()) if __name__ == "__main__": diff --git a/python/jittor/test/test_resnet.py b/python/jittor/test/test_resnet.py index 8defb633..8de9fc3f 100644 --- a/python/jittor/test/test_resnet.py +++ b/python/jittor/test/test_resnet.py @@ -36,19 +36,7 @@ class MnistNet(Module): return x @unittest.skipIf(skip_this_test, "skip_this_test") -class TestResnet(unittest.TestCase): - @classmethod - def setUpClass(self): - # hyper-parameters - self.batch_size = int(os.environ.get("TEST_BATCH_SIZE", "100")) - self.weight_decay = 0.0001 - self.momentum = 0.9 - self.learning_rate = 0.1 - # mnist dataset - self.train_loader = MNIST(train=True, transform=trans.Resize(224)) \ - .set_attrs(batch_size=self.batch_size, shuffle=True) - self.train_loader.num_workers = 4 - +class TestResnetFp32(unittest.TestCase): # setup random seed def setup_seed(self, seed): np.random.seed(seed) @@ -59,6 +47,19 @@ class TestResnet(unittest.TestCase): @jt.flag_scope(use_cuda=1, use_stat_allocator=1) def test_resnet(self): self.setup_seed(1) + + # hyper-parameters + self.batch_size = int(os.environ.get("TEST_BATCH_SIZE", "100")) + self.weight_decay = 0.0001 + self.momentum = 0.9 + self.learning_rate = 0.1 + if jt.flags.amp_reg: + self.learning_rate = 0.01 + # mnist dataset + self.train_loader = MNIST(train=True, transform=trans.Resize(224)) \ + .set_attrs(batch_size=self.batch_size, shuffle=True) + self.train_loader.num_workers = 4 + loss_list=[] acc_list=[] mnist_net = MnistNet() @@ -70,6 +71,7 @@ class TestResnet(unittest.TestCase): for data, target in self.train_loader: batch_id = self.train_loader.batch_id epoch_id = self.train_loader.epoch_id + data = data.float_auto() # train step # with jt.log_capture_scope( @@ -120,6 +122,8 @@ class TestResnet(unittest.TestCase): # Train Epoch: 0 [40/100 (40%)] Loss: 2.286762 Acc: 0.130000 # Train Epoch: 0 [50/100 (50%)] Loss: 2.055014 Acc: 0.290000 + if jt.flags.amp_reg: + continue if jt.in_mpi: assert jt.core.number_of_lived_vars() < 8100, jt.core.number_of_lived_vars() else: @@ -131,5 +135,14 @@ class TestResnet(unittest.TestCase): assert np.mean(loss_list[-50:])<0.5 assert np.mean(acc_list[-50:])>0.8 + +@unittest.skipIf(skip_this_test, "skip_this_test") +class TestResnetFp16(TestResnetFp32): + def setup(self): + jt.flags.auto_mixed_precision_level = 5 + + def tearDown(self): + jt.flags.auto_mixed_precision_level = 0 + if __name__ == "__main__": unittest.main() diff --git a/python/jittor/test/test_superglue.py b/python/jittor/test/test_superglue.py new file mode 100644 index 00000000..0a3c7a18 --- /dev/null +++ b/python/jittor/test/test_superglue.py @@ -0,0 +1,121 @@ +# *************************************************************** +# Copyright (c) 2021 Jittor. All Rights Reserved. +# Maintainers: Dun Liang . +# This file is subject to the terms and conditions defined in +# file 'LICENSE.txt', which is part of this source code package. +# *************************************************************** +import unittest +import jittor as jt +import numpy as np +import os + +from jittor.test.misc import superglue +from jittor.test.misc.superglue import SuperGlue +import time + +@jt.flag_scope(use_cuda=1) +def main(): + global superglue + superglue.split_size = int(os.environ.get("split_size", "12")) + # superglue.split_size = 1000000 + + batch = 30 + num = 2000 + dim = 128 + + # jt.display_memory_info() + # os.system("nvidia-smi") + # breakpoint() + + with jt.no_grad(): + + config = { + 'superglue': { + 'sinkhorn_iterations': 25, + 'match_threshold': 0.01, + 'keypoint_position_dim': 2, + 'descriptor_dim': dim, + 'use_dual_softmax': True, + 'GNN_layers': ['self', 'cross'] * 9, + } + } + + superglue = SuperGlue(config.get('superglue', {})) + + superglue.eval() + + data = { + 'keypoints0': jt.rand((batch, num, 2), dtype=jt.float), + 'keypoints1': jt.rand((batch, num, 2), dtype=jt.float), + 'shape0': jt.rand((batch, 2), dtype=jt.float), + 'shape1': jt.rand((batch, 2), dtype=jt.float), + 'descriptors0': jt.rand((batch, dim, num), dtype=jt.float), + 'descriptors1': jt.rand((batch, dim, num), dtype=jt.float), + 'scores0': jt.rand((batch, num), dtype=jt.float), + 'scores1': jt.rand((batch, num), dtype=jt.float), + 'all_matches': jt.randint(0, num, (batch, num, 2), dtype=jt.int), + 'return_match': False, + # 'match_num': match_num + } + + use_fp16 = int(os.environ.get("use_fp16", "0")) + if use_fp16: + jt.flags.amp_reg = 2 + for k,v in data.items(): + if isinstance(v, jt.Var) and v.dtype == "float32": + v.assign(v.float16()) + for v in superglue.parameters(): + if v.dtype == "float32": + v.assign(v.float16()) + jt.sync_all(True) + + import pickle + jt.sync_all(True) + for x in range(5): + print(x) + jt.gc() + x = superglue(data)['loss'] + x.sync() + jt.display_memory_info() + # os.system("nvidia-smi") + # breakpoint() + # print(data) + # print(x) + + # with open("/tmp/record.pkl", "wb") as f: + # pickle.dump([data, x], f, pickle.HIGHEST_PROTOCOL) + + # with jt.flag_scope(trace_py_var=3, profile_memory_enable=1): + # x = superglue(data)['loss'] + # x.sync() + # jt.get_max_memory_treemap() + # exit(0) + + jt.sync_all(True) + time0 = time.time() + jt.flags.profiler_enable = int(os.environ.get("profiler", "0")) + + for x in range(20): + print(x) + # jt.display_memory_info() + x = superglue(data)['loss'] + x.sync() + # print(x) + + jt.sync_all(True) + time1 = time.time() + print("avg time:", (time1 - time0) / 20) + return (time1 - time0) / 20 + + +class TestSuperglue(unittest.TestCase): + def test(self): + if not jt.has_cuda: return + t1 = main() + os.environ["use_fp16"] = "1" + t2 = main() + os.environ["use_fp16"] = "0" + assert t1*0.55 > t2 + +if __name__ == "__main__": + unittest.main() \ No newline at end of file diff --git a/python/jittor/test/test_unary_op.py b/python/jittor/test/test_unary_op.py index 24483dae..d7b8bc88 100644 --- a/python/jittor/test/test_unary_op.py +++ b/python/jittor/test/test_unary_op.py @@ -17,7 +17,8 @@ def check(op, *args): x = convert(x) y = convert(y) # str match nan and inf - assert x.dtype == y.dtype and x.shape == y.shape + assert x.dtype == y.dtype and x.shape == y.shape, \ + (x.dtype, y.dtype, x.shape, y.shape) for a,b in zip(x.flatten(), y.flatten()): assert str(a)[:5] == str(b)[:5], (a,b) @@ -32,9 +33,10 @@ class TestUnaryOp(unittest.TestCase): check("logical_not", a) check("bitwise_not", a) b = np.array([1.1, 2.2, 3.3, 4.4, -1, 0]) - check("log", a.astype("float32")) - check("exp", a.astype("float32")) - check("sqrt", a.astype("float32")) + type = "float16" if (jt.flags.amp_reg & 2) else "float32" + check("log", a.astype(type)) + check("exp", a.astype(type)) + check("sqrt", a.astype(type)) def test_grad(self): ops = ["abs", "negative", "log", "exp", "sqrt", @@ -60,7 +62,8 @@ class TestUnaryOp(unittest.TestCase): ja = jt.array(b) jb = eval(f"jt.{op}(ja)") jda = jt.grad(jb, ja) - assert (np.allclose(jda.data, da)), (jda.data,da,op) + tol = 1e-2 if jt.flags.amp_reg & 2 else 1e-6 + assert (np.allclose(jda.data, da, atol=tol, rtol=tol)), (jda.data,da,op) def test_sigmoid(self): a = np.arange(-150,150, 10).astype("float32") @@ -92,11 +95,26 @@ class TestUnaryOp(unittest.TestCase): np.testing.assert_allclose(y.data, y2.data) d = jt.grad(x2, y2) _, (dn,) = ngrad(lambda y: special.erfinv(y).sum(), [y], 1e-8) - np.testing.assert_allclose(d.data, dn, atol=1e-6, rtol=1e-6) + tol = 1e-3 if jt.flags.amp_reg & 2 else 1e-6 + np.testing.assert_allclose(d.data, dn, atol=tol, rtol=tol) class TestUnaryOpCuda(TestUnaryOp, test_cuda(2)): pass +class TestUnaryOpCudaFp16(TestUnaryOp, test_cuda(2)): + def setUp(self): + jt.flags.amp_reg = 2 | 4 | 8 | 16 + def tearDown(self): + jt.flags.amp_reg = 0 + +class TestUnaryOpCudaFp16(TestUnaryOp, test_cuda(2)): + def setUp(self): + jt.flags.amp_reg = 2 | 4 | 8 | 16 + jt.flags.use_cuda = 1 + def tearDown(self): + jt.flags.amp_reg = 0 + jt.flags.use_cuda = 0 + if __name__ == "__main__": unittest.main() \ No newline at end of file diff --git a/python/jittor/utils/data.gz b/python/jittor/utils/data.gz index 728482b2e2c5728ff0fcaf90b206b26c246b9a62..f59ad084f7955c8d5aa7a5bfe3604be3559a7cf2 100644 GIT binary patch literal 422607 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

*5C}bq(&7M%R4RU)3o`JlHtqJ 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%0DGsQ9CDT<^Z)>0&$^J7Eid4tP(2(#;BYu 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 zΝ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 ^oR#dj(R1wK1BbdYd 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

q&h#bK!tig>@DOv@w7MnU3HQ+(& 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 literal 421964 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 z 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تgnPQWa%4ufc$M3dHDB2HbLs9p-E^{VSsj{}i)~nmm<{zdss~O)K zlz927XZku|t+7^9lcsD%ehYMmIBSa0H1wdp)^gPXG?jvbKBNMi>7~cC>~9j z39_;+=2PateBk!;X>TI`?PJ;tWlUa8Gob=e(EsI2H!z5QhNUsZ$mZcwzdrNrS6?!a zCtf*h0gFu8Yckt)6B07yKA5PJ8v~6x3T*;Zs&UH9EOWgfZ#f0&bXXqhlRgJ#D9zie z-tjes!!S?RJ>dgiw|{*ZGxi`I`&nRb4!trMR+(@atiem$``LHsHhzP5BSuD^GkcEM zC|z|7+@Lf~*~;NIR)>(HZTP*2bUamVpvRJlchnDVN|EXmEbDb&;^qZ9D#D}mtZWwV zbQM(GD=o=k2|P;nrHp^FAR!*b)|Oynk@le#pBBz|H;q86C{fp+StH14y|Bg<%oRCHwHf^@@qR<{pofuhtGLO5T{2P2k3^$ zT{LKY(^dpAN-cOiwmkReTyTN~LjK22*vh|5q(~%}&SDAM5?eFRU@SmkFE@F-6xF`C z#no}dV$P2f(s3W&xQWL{wGG9JW<08gIJ?5KOzQ5NBaQ|nu6QyS1dk|rahegV5_e3Z zacNb+q={bN(p)jk`QQsk`Y`eCjODZd=YW)SS&t&+LC}Z~?$WcB%pRPl)ve|jOv5KW zY#$-A_Wf`%cWzEgIm494OwyF)NX=nS%2d(RN7j?SYK>N1aKgQ#Z>JS;LhqSB(a_Y* znS=m8z0+SNp>4v=uLtQO!70=6W}9XKcnWFlD#O+)C*LegPk`qpFYtEcUgu|3ET1hl zhT=X(`K#uD8&ZGGE#&8RO#3)7_#-u#qpSb^{U?~6ZpJG;dtmmtKv6MI6y&vBG}`h& zREh<0GcvApLRKJS5rZf`vgEJ&DGC%b%+#a$I@P|gV@z~Y2xd;(A_fez7OzN!jTG5p zjm8mupM?0B>eMIEv0$Eduv%wwsz`JFGs%3m5TDyYmU1_IO=l+Esr8;V15>%JdCa%N zA3+y2Q5e1?^GZ+Ol5*|`dzU9EVJFuDMxXf`2>+VWt8OuIT?r7yrLQ#~W`H78ZwWX$ zj1}V!eP4H$MX<5X$+Y4jWzK`OfCxHNoP0efBDo*|=p|I5nsF>~m`-g{w&mxDiGQxU z9dKMH9OhB{r%ico?O@dbQ&NUM0D%q?ZI5Qw2!YwyLb{Kry^?Z0tRA}O7eUU|Bw56- zq@hMgqMLs9Z=sQr1Bzn$I;ci*aKOZ>{#btYV~({NmwMkQpTXU;hU0H-iGq zoaM~)K#cUFNwG=`C1l(Wqpc&yLkyaiZ~vXJ(edYkXD)Mm1)(`Ag&*W`shgf9Ot={J zuB=V8$^G^5~Et-dx0V|s+L9^owLP=JEGx5C0$ zur?vnr>#1=Ago3A7-RSUICjrr+WK|>_Zp_LDvLYiA;`rOJ`Fac;#KZpeRZmWT~uz) z;vUS1)QFFbo|ieTS{Jchv|YE}2`mFQ^}7(vFN_51IW0lnbUdnVK|!kT>p>*xxdEqG z`<>XrFp-IP1$hiu@*V(gHP&3tnk3XR4Jg+lYW#Tud!!!$!jfkBFTAEOmZE=49dh46 zuK9&Y;zUnXj)sIDF;Y=GL#zDOx&xs!OZl(ska5fpbwleIr-OgZH&&hNZq+P6doyaV zd{d-h(rs&^?I&!;t#h7MC9VKK{x%x{$p9Nscy+_#wV0`@;U4ApI2$k2+P~(8?_70G zzleyb@zy%qBJXknoq9pTrs-y%Rp%P3Dqt|$5m8uV4RR@R$jp@+p1Rd^>C+4P@P}vg z?M*GCUA+`*vP5$}=j})i-AC84Oq`4QbOhcwKHIO3nh?V{2=|3{y+?m29Y~l-;$f4_ zb>E8as}f)B#A|yC89zp)=060v^dr$-@JKMHGQ9kqs5(g&JaHR2cKCR@_g}h!>-{Qe@@I1g#_|*+GXcNVqr3*6&?Z!@ciF&S zY?^Lcpfw4Bt8$9(YakX|&0n*im*=o<^pZ~=X1;Zm)NN-!HMcO>2p-`3(OH(ra>}-I zOi)mTz~ZnUl*n0VNkPEZ`@0AIWjX~JBD!lV3iog#fJm+S-Ejj78A0}^`FQ;WerFP# z`TEZhUw6N64)OaeT9%V^?3Mk|-z70>F30f=e2TIN|3fv|3pK*`eqr{ z=Hr-n@IgYv>13J;H@ii}1V7iKexbIbnRB*N9F(mBP**~GsL=tW{5|Vp2?%jF9Sy7= z^0G~Mj9FKi(DkVo7oQ1BDo<6BhUjk`AQs0qL$xM1tQOgV5`hd$;p$Esqx~o)yuoFX z(C&NnD;HpBFPWN$4GQo)PQ{-UbMTzs)D2!iP-wYzCASpY@p1-}ERv3?200p?0c}=q zJw?i{;Zw3%^eE)58~5r_G#Yyh#oz%^1ymEzp$)kPY5oFepMxxOH2D~#$!Jo>B_;ro zOADk5g=n>@Nv;-@R)J=-*CvTn}i=haCJnl8BN5=bl*`q zQy0D__Up7+9omHCKZ@qkUUlrPfISE;p9hm(u6X`Ek2w6m@;vk~ zK)ckqR0|697;5}ta}8mubPtTY45Ah(wFc5ZjQ8lP9|J6g9dfNX=d#3I2hOW6-l>V{ zfg}cRL*9W8uW8gB74}<1a&a$jQ;xKMt1EkUR%Me3NzGZwk2C1|?R3s#x(z~Sf`vM@ z)w{1N__a?^?J#uvvh?K_loMmZF|`95K94ENP9gUZ53PH!+)%djL~Q;3&hyS|U968v zMZ7r=4_hf690iUs*UvL$)vtd(&a0>KIyCs-Zygn)0xcN0N@BmSQbQqOd=!2C7$CDA z#ww7(G4D=)VL-M_3D-sqVY(WgWqTi4JWGky;>EySi1B5ZA678i@8hv~S;ZD9dZ9zA zi+)%gojkv3F)5iO`HS+xut*oeT^Y$hX}928um3uJqru(yCbJr)3W`ISBxls}kM|8c zFa2T#l)lV9f%r?+Vr6c1+tQIO0>LVxwzGR$*AZm^U@r$ZK4eq}jRy=dmpbcU*^!gP zZmSxAXG?0wpRU)CF=G|Vy|~>+peLFnJfQ}=y~W`)UG0(GF-}q*As*`Uj`@-zI%!5Xp+B_U89q=G)8pb9k#BQR*I}7wJ)jhZRw{YJp5A6{7rp@3HV^Ti0Pq0~ejw zDMgO=5yO_Ye)UedU~^&Skj)nx`wH)WZ;LTiE<$kC_$-%`h@hK|44{ z=5Jxd882!4$kUSr{U!3enkyN=4DG3T*lV7$mT)Q4f3sS=?^$0yPF>4xy)h>O0ZQGDZom>4+UL3iy zXe)8OZ9Yk&0c(?WCeCaRiIRl9hAe>pj1U~u=MWC#vA}u*5{CnLAM%ZuJ`Z5%QVwb` zd7_UN3li1MZ;um>Hsv`+9Cc*+RsLaFAG5Rt=KMcvl$Mtfr3}S&l6UE1rmb<@O|0D& z^e_>#e8!K*!Kuf+56@uEOgGi|p@Dz;TfJqO%l+UZvQ|nLuOwA$**Vi+vu!E&qVCFO zTSpHiVwqW<q%L8yne3b=OGpS-NB?mS67sUN$aUL#_sIr z_j}q;Juz5J?)+|rk8{%EY0D|Xx)E+*MP&`L8e^F)oE@(L4`Xt3k|hu<3+&@(BZMaF z=p^Tu>~SPPhaAg=fnCw?(jTSO2LETsKP^WAUMX8BlF_ZxZZ{X#5P}0QnUx_&iJ`tX zH(b6wh~i~Xxx59|a?Vy*7z)0Cgr(zqO!=7h5G$nNq}&{C z+g_X=9x_q5^||SuJFsVc<;%%P`P?3zqRMV_D@~z2p;WyN&CY&HBytDTuav8y4F7h} zhuD0Dt7zK&IOy=DW4{eU#iEB+>`01e?$~d zH$lY$GNGIY8?UAlCols=V4M`{wLJdyX5cE!pUinDN|xkW#m_PK5dQi-z#?z+OmT8O zI&~kuQTo{8$i+vMERishOV=;`8Hs3yFYBX3Z7HB&f6NsiQ7Vj$7K5A2ukFcNxDJqB zhrU-PHM&djJ;BO<^Zc=K9gk+{U^s2_f&Aot${cd$9{k!|V)^TnRPq>Zy4T5NNC+8O zI%?EH#ByFAS;{jPQ8+mB2Hj!rg=QFoW9!A)Ht}8ST=+nQQ&gLSn#%`4J5pI6bp z8T4vA7OoNBSkY$+9IF-FZ!M$eKC>a6n-G`W>J_vW$pO2VJNkM!0&rh4|R) zJm?fo``wb#@$ZMmmJ6v#@+lSHqGHs&fMKv^o?Gq8B+dITnIBII2^U36E<@sbV)@2S zDnpjasdfmna_)6#}ylz;L*o~{3M=xJR48uqc8c$gRdcfMY6W-k( za<{p~LI1N<|D=v|{@e#$EAh2GE;X~W5?81BiSi7aU0Iu~$DEeM*qvO%_Q*v+QHlqv zTiU8k&A~c$o=H$_w_=^3@0HGNjnCF@9_OJ!=l0~SCh(j|wg;Y^ zK3eyG&jI@b2e@pIu(W3R#2c4hb31|Z+i6i&`K3FTAC)pvmY}_Zp|O0Yf+la*BRYse zH3F5dLwsHGt%OPA!QN*BauoHrkj-ZD$J%AjZBX>)2raMJ{2a-~GD0+xn?1pixg%(xMw zc~VD-I->5#@Nx6|6yy4O=#IT^M@|ES4>8ai5*EJA5s}~Snu@)~&m^syc_h?w(^7tZ z-T%JslE&(OlZF^4$hD)yP!AW3@Q&A}lyH(ng7y}dW(~a4ln764TvfR&>v6|!?sJ#& zaWT2lOInYMn{6#vph=&eRjIP;;)iA@4gG)X`=k?c%GI%%?hPU$kOA%u=!XJKaLcU=y zdd>J}E$*9ge4mItZzwLZi6Xs#q;d1H}x@Sr)sC;T<{Te7mW@Mvr(1CtfHO&~6;W)5AeAIL7 z@V)i#ku^ASZN$bmXS^c^L!uEeT0luF9`9y?>gTI>anU~H74t4DMpen8gmF=d&B;Rx z-1q}3Tn6Gv#z7Su#z*nFy7t%VLFB+g*|&eQv3QJC9I|1ECAH8N!~^{dBq$g2 z=b&fWH}gSyi`u}T?bK$6>mqMlv${9}bx=_=c)#8DAJAqEEwx87t<69z6t&9Tb)H!p zMy`Ohj0HU<>ud0lb|bCigfnsjxvLCy1Tv=NWmRR3s1|xX>z!{i zKQE$Ws(KV(OQibz+{s_u{z7e@|CzrQ67<-3lvPJK6H6xts<;ZwFyy+>PRc(OR>>4s zk*r)l_QE!${tQ7;&Rw?rLnYdor_K?!iuud-8Uka;)rjm5?DQF}3a8}JC;+V|#?^`G z=l2Zz5-e)(Z@?h6g)uc0sd-CC%yB1Ua-UX*c1PV1BjteF`)MoTn&N|h9k#r(*g*y) zCmSG|gc9myQIfJ}`ZU=>WHA3jCeS*`}>67;f*^wB~2<5B&?GmghE6Tt2o zcC2kib*HqaECkk#TqNeA7S&%yWV#QkQJH19t`N=Y;kSij0|>)kZA{o19%-SV+-&l= zk_S7ARf;Z;fTLE#MKvL%^K07!C`r*E_$(PhtTyi}<$EPL{ekv+YzX4}nd z33v`(A499X?SkCH#4E8V2CCc$yp8N1c+O&{%<*Wooq-dzj(?<%SxvBc%cd^s?*&d( zNXpwR%VCK7Qe%j$wUAplVK158WPsnjIGadQIlMMxxN4>6*txHd_?*FfrZb>0fgyFI z7(*JnWmFfvPS!^91l5}*@klnm^k3Wud41BlyIiIxB*6{ee7ZJ2pEJkVHK#cP&6jt5 zLUa~x7l;2w-GJ*8Be1@Hi4Z^c8G7l(;IE{)0;fL|d2-R!Gf+5q9di9TOlGrOdXG{$ zt0sRw4{xM)(hu5we!V~jjGpXlYX5lQl>KbZ=k9y-|B(785fb_VhkTq$pbl@Av{-;J z7JQBKY~5Eec-c-CE=n!OrmoEg62U2NLNLT)k&hF#%?TMTF84|XWEREfqhiFV@MN1< z61%*z+R_@n%xg>nJ*#!Ua0iwpAeEf2G-~nF!*b%?Rt4s7GE(yUfIUYzgcH16b9Jw8 z4!yq5$mvGK<7iol%tS|8B%BS`{m*HUE=|Fq0S7$nN8SAI7e7u)CK3A$mxD*s9iS ze$uVnx1PvTIN+g>2{KWeJ@{WU%tiJ?wj0NGu|7-~jVskePWkD2)?QbIj){xv??g)$ zzV0-DJ(a~fi^{iXIb-ot&b*G+LcQK>$|214!^Twgo-|vX-n699JV*wj)ui-O--@$d z1=bBG zth{zH<`3tMNKof6vaZ=U`Vup|<^RgvS6Se#ttTA$Jf_Ucpp`LU9t_Y;X(hB{PGOrF zuj=-)m7i2qiRDyza(Sd&hT{Q>8)sbE0kk&2;#&|^n94dbY>^yWv?>9P;XmskmEAcjiTk|wxN{pZtas*tIR8f zQg-)W#;wIcy+8gIHD%}EbY4Hwbz;2+b$e6mV6~HP!N>2;ENSsetk+&})hd_vz-#L> z^ey4Au*cC0ipC(0t!^%0w@tkXf9I7usWmnkencez-I9}ED<+#o$A515xk=V{&>~TO zL7r$Ntnu1&+#Vn4?_uxwe=!Yyza}ASME7vs0O5Ys0xFO*i!zb8_u-9}_2>~m+#UY7 z{&UiW@ljgjB4a5bbd9eqBt#kLAGjEf>&nVOJ7wn+t75&(#>faKI;D`>rJv8 zNtP|i4e0>A8HQQgz`+u-ttL;^>g$^jk%*}O$%_;5+|2-0X_znH#w$yE=l2F=Oa;&D z1&>|>U0kJDa9}^o-7~c2q@ETg(8^`O`g(8~q-if_mbSPWR8h#t$J}=242-;E$w;f>}nfU5*{8RvSAyu3-UH%q6QG z-2jJrfRYZ-`nyxL&GfuM7L$)r8ttnD=hY|b$NYROv9Qf2bL7v2D}1J&Q;|Y+gahB` z>^F!~rjFS;W;07A=7Li&EpU{~hl#b>xg4t1h-liI0hr;w#~awRTV$!W&LZ``F5cvR zrXnkw-&g~Zs)aEZ9Avb=G$fvTxkCVd_dZU!o92<3!xY_IP;;1s3jH_218cqimKwuT~=3-3g}d0 z&$%;*kC7KtN+(z6^hm|${OHSnpEh=Jdw~h4MmniAVbFJ0UGIs|U8pH<@*Mu@w$VHD zq?M}?G24_GzMnt9OCv{<9(^IN)nn$2&vNySw9uUrcfm>s{gP|=H9^+njUO{L_n4Ki z?SvN;bB*u3ObVt~M5ktZtfFJytI}pNFO>srLaAh2IgoTQZ%bxGDf&wh2y$Ccg%!>h{vM8V?5OSoHDVS$V37U_F#&K%tO2(rSRsYBMM{bBX zvf{bXL{QQkbCPBypIeupnt%UnXD=m{n>PP@HHAFd@O;h4Jyla_g6BSWr~1j>M|yDG z95JVok89fzrqe@Cvn(fGS-K+)Ik&F?-Q#5WE+|#SV<5Y;U)^*x#MDodt>#K`vt&VK zx|5zJrTjwh$nt3bGvjby;hRi!Dfx42b6{A%HoAhTu2|=X1*od}(i${?axkZPr3nC9 z-~czdePf1e7``jZlO7c(iI$RH%33&GtdlM&v>vAXR%s+gZ1CSQtM$Xm0H&?6Jn|6s z9+@2J-2uz~Hlcz0Z6Fh0qR+XJKxgX5?<>xy5Rc{~x9766q!#i4dU8ZuCR+;6wtg!G zCxw3rCK}|}g}_%IXtZgc z6(M>i4D#G}Ud@pSC?EqboCE9IaMcZOIf7J#Mf%}|q)w1($E_lc=>u}63e&Jkmdzs(2 z4^{GV*LLA`;Yv^B*h&DySsqCBdT;U3c`#Y`WM~5B>}}~jayUdsC$mL}Z`M3S#5;hc zTq#o55SiUSZVp3U_pOq-N)jJcUE2{rCVO}K<+ffH&bSThe#noW$=PZ`?OdDoeOci>zxJtYFS+T#5 z9PeCz>9b_ukzkjUnWA5WLOq+KFKU1=4V^UPOnOpErI4`wFJLZ5%QF_EBFelx80bVI z#V@1QyU{GHVn>M?0MC@5ny^C8HAK|rJtejMG@qCw|Ay0nt5;*tt<;MI#2%;S{D$Yu0eaXRciY^{F*OV^9 z`Y>dR@x%LfGVQ)ohT=&xeP*~r`P5F?teG0>(BR7Ryy6MR;4%b9+hf(jx_?U3)auV% zQYS=aok))o71EqYZy(IjAD0!Ky0RG|SH3rgNvLC9r<`ZP?U1ei6Dvv9i|pQl3pcZ; zU^Jt<$F4f&T_r<=(_oWHWL`{`?KT> zlAIF)jYm{QxMnI+bVeh5EMl{=bKBL@knoDb$jQaeA=K4jETQM3(uYy;eAg`YzM0a0 z7kk=sg9Yrf_vWTPp-NBvPIY$11REr%H0*5r@ZXP-6wQ9Lqny`BWtUEDgYb0zrWVMXa2YoSHB(>h@#x zlYHkG#QdSOvQXFcQe}`M3Q;3TH0<-W2i*e2Af>P#&a_PcUY`S{y)-7S7tfp|f%@Kp zs^|atmI=q;Fsk))Q$aU77hcn~oTk)rOem5g^<=TyaS)YO123H`P%GqUSK{FBA|2Je z&r#lM;|U5|+5XJFlA@iKB~>{vRYic3Y>rAmJsauj8`G1FZUoSn;s{pNqwIj^^6X5J ztvQsV8axLbTr=;M1yLO(1(wYit4s@YWi)cs_bhS7oZne_#j)lxX3UeVFD3?eQEEN@WAE;!LT;2H)ZSkWx$bML z>kjlJ%W5FwHTaXS1#`qesD|D24Al3j@w6Nht2eDfm9rfO0M7*a42w)5@oCTgKm%h^3>W%xTeA~E{x8?5W1FaO&TT$Y`=%>?~3oLsCmoxa9j3m!b%fcB8 zPeSh7HODf*^d15SY5-!S6cwkPYsxm7O|iGuEIKP~z&sT+4~62H zvFwm(B!SmR9Sw zBZI@X9?U@kH4IxeMBZx-pJV;u>1+ZCk!P2PVbb|?kB7_hQ??QiM|Cx1M+iSQJ@HKq zJ+Qlw9wFOH15}tAg4N}VV1TQs2Fucq9%N=}A-Ib4O!K1*ZW+>OKf!=!kL5i8`8lY@ zi`@WozDO}iW9~WwMP0)ts}8))3Xg{o$xSC0$AAlW9{0h(d?D1;7F!p3&NY}cmkcab?g&hurYATQXN+LoX3nVqAH@@(6c z154SI?>VdT;)-Z+;)vNKHjUbaI$3d zBTUl4$6q`5YF!r*R~3CYU72|ge{PVyhq)16fhftYeb|snnCpn zLo@Fj<*N7m3|=i%kbBh^0;0@O+jM%2OOBq`abmaLXVvDmcEuS{q|c;anX;bIgvU++}*XRSx zMHJ;8`$wc=~++?qN56l|1pH$T1JlCzfF4t!q+TRIc zcoF=a7q87OnlT@s9>?)9@l79 zDW7bVA0mfd96sV0-W1`xZ+wSyqNiUr1`bfBbPT?-dH1Z)?3p+h z#J@s!b>=Vx4s&aCE*;zH+o+b@`A8NSt#-1sFcoVm@K5yV&q^q>&nX(okfQ(JJdq-QPJ1n6k0UB`iRZ=8{YPOf!_x?JD)Z@~``Q#4 z4Ro_+#k^B%dRiu*XF*n~5ZSlU(|Nkx)8_Z+@dID9OktQ8`!sr5iQ4JQ7Dzh%yUD8U z?_BTcz3f+ae|pa1?>r<^)1P=!*-!g&z1V%!?6Vo-H5%SLE@W(jb!Jk=hY?2e>KM!I zn17%7*oUykzx8#@@^JFybYlj~7QbhsS~3JYkA~$tPpq=nd?Cff;Si~h2;fhg5E%D) ztHLn+!z0%O%jfJBZ0VXP58|>XoYuJX)2U(&3+d_`E6nPvaWdy*8Y@A5ZjU_RY}yQD zALpI5y|rSTXtqU>v_kzUKC$t(0(9M6wgb=G#00+7v<$*MU67;mCl=+XDY_38+%6 z>K#Sj=Za4uYonu z3Xz(C>*Q$JJ^?VFWl|<-hY3$CX93*0KFE*URyqE|i{wjZH_CP6sJ90q6u|f67XM7< zTS@VTsEZz}*yWy%hn$`arx$&x4Ttd&@Vb(tLgkvtSmAuWTx@~Lw8Y?(0+wjZbp zly8;m9C3NTGf{Vh(tnhADB%GhxA+vg2@jv9Y;SO-zsLMpB7I83TXf0sq$i(Pdvh+S z!qP8ftJt7nPYyk=S3{%&>)jU0<|}49r)WAgM{q2QbXiQQC3n)oeKzzEXMPR9t(g2B zR{X!)6e!_i;Y#n_X)^=-=W4Hd0z6iKV*M(c!v?pfTMq91wR(C27T0PH{nd5L zCv8Q$e>K9$iR6XRKl0YgN9m%mOHm4nr4d-=C>&THBJTG+R zyW_U|&Jm*L)cIki3ZObG(B%4BRCmjK?(}1g>yk~5qNmUch2dH6U}9!a8;y>Tz5rfO zmti)KHCE2akt;L*45un0POdEu#8@qYbk_7{6F4<8=tn>tYAY9xph_t`k;$Ob3sF*n zczZ=R(KV2-V{?+Bz?frw<{1>lfD+Gt*z1&urJoXd!_MZh&_1EDJl)Tt9z1oVf3CSH zLabx@l<2BQryI;4N#VXa!)OeN!#i>lq8Qhi3C7zl(gJU5S?g6VA4z@hOg_!oC#=zfAB%V@ysvZ9YYX~C zi$%%;zij2yJziUOIL;Qs?Zpeh*WRdIG3vNzQiN02MN3o%Q-UCBee?ltDUD?HM`i}C zlvzQG*N6qOsGk-A_X-NdP27hI0xc_;Z=t=OQz}EKWsAGfN}}fjcsGV?2j!S%V&IGS z8G;jN>D=7f9VaiRf6rMdG(A>nuErO#K=n4DSn_6% zEvLty_@l4M>#TA`jWPZ~ER^S-0_Z=cIsx$(Gh4^>GbW9| zTOqwnI~j2}){{}ddEdq5i6})>yq5yP+3T7GJQqf9&78}rxfN1~g*#1k@b&=7r9%6z zh!#Mv*mvp>z&{<3OPO@*GWE!w+f$#Oz|OxBE{`cOxFIv6+;9n;{V1cKJLH3P;=1)7 zsB8A>bF|2N%WV#Fpp^r?uti9+o=2&i_dWN)>f76!JA)&;+#oHHY?-Kqr~QY9CFAYS z8*qm_ZMrSg9FN!XfKj@UT>~6PrKoA;Punrc%T_J+81@muY1ge9OH(uosm~fy@v*G~ zGG`kf?Ym4Wq&@4DUAms*eHxOVddtT&W8+tR7C+3Fpn?ENH2~*#`RB=cmu;Ye8I)0z zG~FRYY=L)x4^J(vyI*{vqf(bq4-GqLJq<}sa-tN}lm;(_Ub#qi8|T)omh zoG8kbhR8Ox$uMgGj}5~m6kp3svw=7BkWuV3G#-`FJPjV(fPW@=-qTb=9T($D+?c81fe4i8&vQ zWQBDUg@ZHr(S*bDkN~R-P@$YqLzoiBch{af0{QM;P==Uh%z(H}UAZTo&Qw^%Ozds? zN>0|LkfoP&T|p8zL7*TVwHcG@@yEU4+H`+qscD_0C{#V8Xg3XEc@Q*<7Dm~J4nXpl zr)twXCNfbBM-9Ue>sYoN{E|p}8lI+j8I4}p?EPms$4p;XEv=9s@jc7BQw|~IXwztj zhI4DW)on*{_{%*=u zyj9sKMPONUBx-YtdBGkq#8q!3}2Fa)=(920SAA?ui!6m_0r z{mH?U_$-MwucWYXCLWP?sSBLr<>LYzWLqz3KC@^Fq~?t~upR4=Yep1lMly|coSh!U zmQ90?y;&&}_`qa8yN)PO)|Jg!+i^nW#qPQ_;X!i=55s9h^jchA+rA>uUi%!VnY&RR z{OAUJ44*vT%Xacxa)jGsG-85$m9bDB*dnWJZ{1w9%Yr85m~nYQUl(#r0VlJ_!;Irg zD4^n7feXGE`f;Bxd}X6H=47wIgf@hKQa=hy8B3kF&cnmJY&^2|z~6 z(3N=wsv_adI9^JHg$BVIBQPGVeseOVqg?R*$Wj5sP)%%P5?TlWmQ>gr8T~ny{zhcc z!a##Wx)AT1a|%~bD%;eLq#wgs0%WH3He&;p`5$A(rUOI2YWLB|uYeLgg1>S`?unBp zd96*DlfD~_UbAL-&!oI2JYMUbKAv5tuG6C=%T!00lberq#CUtt7WcX?pjoRS!!0%e zHhpgDmub_RD#~_z_L;8AbAwnNK?j!egzBHHEQ#@gdg4>b7Zlf9?5s}8%kM-bn_}!P zVA+c?dupZu#OsiOQ3`kcXWBSxwhIc9yDYL57LrA8ZA_MXP7OE#8E&P^LU=98f*oAO zAKu0kY!ky62x%3qj+rtqt6WXWxXe}KHnA~zVhy^#JAu+>kaJ1~ zMy}U7G+*}ti3yy1f${mi%kv>8vF;m2+>@X~(t$25)&=~IX0YQ6e0uPOZNfP5!kI|p zeH*dG0)7*pspA109?PNZ3%x5P=-7}AVEDTX%ETnqG8n!0BAEIK@4yRe7Nz=JY{URg z!lQyH`aA<94I!^f6Y!aLf#+`s0b4kCuGAos$I`W^=^yX$vncd(CEq2)+@^`E*@L

ehueWz)X`-$@0uT$`n>=q+y`vV=`_hwN1@7f{t>HJ1AF!ZSW+Y}E>D z0X&eLWBItdph0#eq;kOs+c|~x-gU?3KqK9b*C)Uy;YULVQ+(*(h09`^*be8np+o#W zX`bZ>E|E;Jt?}wo(SayVz3;f6CN4-^~{+g*YK=W1fdPbG5ITrb61%OYM z&^byxxhQWG36a}qE zN5XtPjm90jyp%vqsp*^9WMNB7?noO_OwEggCT0pE@(oJhTy%Zug;a(xq@eLLzq5S$ zCxMd>Y!}71{%*ckqu8sgy*~D1h!-0_YP1Mxb7rqn8YT6hWr59O78jZwjq^3jdKqA_ z*!UiKLCQj=(TX9VMGh-Gzg81ssh;!q5aT;m(y?l%d_XjiV2kr6t%D=H!AXl|epxDt0MqduKa22TqOun2 znsHZ>jN;CJ3y9OHRoxYiUwTYv5$MIPw++=tBaiWgjumZViB2hW&fbf$Jb)2DXPSg^ zULd*Y^gtXQD=v<*S>0I+46)wNYsqZwCUT`L_5$oy$X-2#tVU6-CZf2_n)ZE)HkN9n z6-PuWGP zkTo!+_7^U2N}iLAVFjT7NBAtfal`5;9B z!imkCAzgHwb{L{cH8kg5W4!I8Gw-Y0w4|Q~Ovlu03O%!wn!s?@dZbshIx&FX);Q?-Up?D_K!*mPj_`%WAMi?dLvFOpB zkG4?nJ=>`Y;(ZBCos`l=&{0+kzXc(8JG6+{pju_iSxf!p-2lUCGn2R>` z&7uvZrWq9lfpg?tsEZ;Bo$-*5jL>J z)LywoA#u8XIdLXA@g6EJ3BE~6j8jPvqfRwcdi>GPe8L5Gk5dsz-YGM@uiODG8o?3o zX7<~;4l*Dg&!zyRsla83VI2{uKvi6r?2nKcew*H;uifumA)(U>CWdWX92PQ?!SPeh zt5ydQ9N{|AIVG+G4Dz;``2)}tR9tcdWjf}_E@w$ny^3*pZY6pD5wlNItDifYvrs;X z3@R*$3*(-Hvv8~mK$ch$Z-1xgu_l#Vhck>F1V-{4-#+OXKyU0&Bj}(DdZq|nZ(91x5h4#i;11_ z%S;D_hYMUbs~AO?NlX&sY)TBnWT_Y%koOc$J)S#8%Qv(@U8{z&cu}%!v!IJY2JXV?f=+wMrb=nai(t2Nk{ceoQ>Ie*WQJnU-APj~H-r8aAs84+1qP!|_+OO!J z)bri9NkNP=Cok#&Pr<|26(TBk+2jv7cDA8TJm9zsK%E}0cCkn1#H;=@H{$hVg%Yc0Vt0nPRX z(DB8rc{Zqw8zSo2bGkD-Ni$7UL_;%v&1p}#_-^DB>A;! z544%N2?>Uct3Qzvf30rkZ0hpR?=zko|8Jtk6#19S#34W%o9$`$OQo5~p2`HNb_|Sc znq;+PdV5Y1TpJ7dKhQ2T=7X}j3w4a znoiSwHKPd%jKD!}+bo&)FucvFg3Y#LHXWi&wS)Hcx~SN~g8j=FyFax5bfMDw$J z5!8R>&pox$yKY9!Y?_(8Hk5cggg!Wx>hxQ|*_wsb+{{-oHC(q9D?ZIlufMBt&0JGk z0zaNn?}W!lfa3qk$Ws0?!I1+?`pmc6ik0qZXj+EH+&qaAG62KuUcoQ#W-}|VTY$VLbHqLD z8O9&*E!X7Vp6fQ?GCHQP%X&RO{!u4o4J8p9!kj>lctAd+a;3cp$CEo&S_5Zg+H9Kf zHWItP*2>YFN2SDAqxF2M0#y8z>tp4TO>wp5{CzWHRCd@z(Rl)(oZ<_sc}_V_BOqWY z@(K@(o*!4xw*pNmsL$5#)DTWnG?~B(_3~MJZ7z$I1YBr5_G1xaM>+S|Qg@)mad+@t zTvi_Li{AS5UQP~`L~r159$TzHfd5Q_eSOL^zQYg4@m51CQY zY?AmRl-o=p`8~%b_JvIWs89wpC17|SBkCw)GG2vIB)*?4C+vA0SXfhAZRA1(G+&4A zoy~x*gq%W_UYqTz)FR0u@81QFT9{dtIJ9bzV&=d&MZR-8mbhk+jM~d_S1)RF3;^vC z#JE82=e_)(zqnslkaS*rS+Een_QQ!%0l5mERQ?@m|Bzh?NetjPr2<#&xY@LjBh z@i;%7V4roJv+om7Ge7I@j=?R3@wz!NXF}tt{jlT3FQ<9Z-zQv5jg(!D*_Wq0}Uz7MbeT^ z(#L)y#AO<*`MX5ZT-uqbjz{=ypB&4!$Dxgs-!bdW+=lBiR*jNu38cUr;@DAeIYP6h zlt-=a7^}ne=dPOQC1gB+q!Msw(6a~UO7zp(AiqUaU_bqj6MviQpTtPRyFr1u|Jh+$K0u-lQ?Gb-)KFK#eqwD)9WkoP5flNo)tkS)>9z)!?A#84gLaq2HFz4L%zR(@e zWT<|RY0G25P}(qH5y-6cB5MwjC`ge>1*eX z;ftlhSiRo~I87lqusBVt6~`p8zP5bb+(N8CxvwS+hkXP<=S*?LV*wn|#@P+vQ5liS z)IJqZv^|#jNw?;q*H~0Cthw06N#$2T$jW_!_fnn#`@Lx-cUki!#Xfo^Y4OP@$@ddaodX;S!?EIBn4~kf zcW>pw09B9Uyb%aZoJCi+qSp+VZA=1WU71rnXHhrfXycCJSqr*p3*aP6=8;id^g6$% zIY-GR3`Rot>0je2!#l>l!~8iDV=?ZPv4Nb==-yXY7c9P=R0N5Zdwgrg!3gs}PI z?!P|yhF+uYR8=r4lmkeAUR^LaZg03FhuG*=xvp;0FLP3rYyHo@N| z5@j1?ZSvkhBf8dFEiSoy&0aVT{Js|!8nsUPhN1{?nnp6A>u}D-13ubStqu(&^(ZhP z!Hi^0G8pMtz=IlO!fT!85KRjjY9qz}GX}n5`j{u>AT)fIa%oVYk9j_(3}lw~-g)fJJ2?BgmLyt=3&eydK)e|IWjsG^Jcu0qqG*gC8Lt)B!N*TZ3%;n&7p?xOmhRM ztK^C1^CBsf`^2+3=$(6ETJCXnvE5yE*(;c3IO=gfbkiF>+kk!T4kKrCQu}ht+A;7} zb3M+(6H~clPDa<6eu*A&3_0LAh1tdL-XH+rE|afB&MhsdhMd&rdVv9xR-;8lAcV-oXnW5;avN1U)X|MPvmSG(2UI` zq?@+3H}zWSp`rk?7g%aZB5Y2_Nq9^p18r%&zVY;mY5C$-&6Ugk$=vepYqo5om_ZrM zI`1GCbn&m<0OUL2t5VtFNA%kCV}EQZ>m7ixO9ev_^rI6}I{4T#{3b`{xp~#METm2` zehPg6Sjx^q6HM5>xe@5M`E%dhd`EL%TD&cQHxNHLOMdY;8&4Y77a#)Y-P5i*nWKdfttk8paiB-Or!&==G&WwxfNIyeqCE&B800 zKjK*}J~mSm?51WN(CUKQRqW_h*4uqe_gz8k^3RHmWxu8l6+w8cV)Au5N0Zf1(TaV&G&PJ5RKVJ2fKIOD)7QWc=rY9en%6+&Q|g8J6?DIf>M12mnoLX_Sh_It!dbOQx|Kx(sQ%x&>JkU=w~xiI|m!I-xP7P5E}fI zO~L|tauuS};chC_<{_8$7gMKc4K&vDx&Zeggg$X{65iMhrxxGmkACjT0-jIYLD58s z8S#5E929m?@Xl3!tR%?qd>M%;AxU|j`01L2Oh4!AZZtS9 z%={i4h@2#ljdRL}riGVA#6L=`w#z-$_Tg!q)t;}aB{DdP1aiAQH`)%!2%ocdl~?Q! zO9swaln=>_YW!JN^vU3-b^hjV>`k$?DZldrmhtBF*ke*eQb>_|N)S`-gAU@9^%llT z@O2L~NN)gF$E=+)iC2uS&l@ED=woz*On~(lvIk0w%E@2*#f{y#6sWGmKsZUR!~9Lp zsuY7FAMcInO~=I-_qLk3I)e}4-BmrQBP~Wm(Nut$&KckFt)VZ7n$~~)ZIj*lajdWZ zQ|reEi6XfkjN>Odk+7z;Kqu3>uW1)$y=QGmwJPY;MdXTjnUL`QS%;=aOcoMHq3BdSDSw7pa7#iJj3tk^U zf!9}|G{rt+)ij{{@07i3`^1S-5Rg7FB6_?;+La6zILeceQ=a-%J+3ElRWo!zNtPeL zsTh7LNbXLr5sL224F?Z#6?x)r^g$j(If+o}GUlcWPlf9U?P;F+U9|{$83tI*c;vNFrmt!dmJpFjjd15IhatT;ss*LxGmqgFSXsstR4wM&DQHICAKiTI*DI+qC@08QID z`ZHcXi!K?W=)4K(E!T;ou^J;G7Lx$Q<8;-Nb@h5JeIkvyo72Z4@ z2p?O9`sm@mi(=-Cz|n_>4p4%M?HN@=6iM3zN7?ptfOHYNl?CztwKHgnN?!#Zu&F6^ z3-C8o^ob#UfiyS~c=D=JI57wkryC|LGdD^g4>`s_!~0KxHF_LXbnR|4?71hzcvI1sHLDXC13WA{&iYl&pt7d&JT*61|Ojb%89VA<)VwHoaSyVT_916~VGGM0Ym+PK^2 zxKbpy*bfZmTsbM~-__qezZm8&Zmb%O6Oy$W#pL;K-H0^oD2l~$c z>;joAVCpZ!OJwFygVr}Ao?uu&@pnutPfvqlm^7B4(4pvHG;yqms7(mUNV)$W#?JN(nyvaqo=>a*R+On#~*@UfUEeXG%GZpa|oZ zLAj^6o1Mnh?vh|9f0oZC@>C5@+y4Xd`4G5riuE}H37fQ~B=2g=t@@L6) zd~D{y^0ZH;wMmx8RoeQmi+gW~ngdfueU=P`1von35_J<;-8BcIKrM7$7L4pym;n*} zMuSpNa~?XoZLwl&fjj}-$I61!tRp+z-^ZqRQQ!wIpYg7f__64YS%f#V^T5tUcD&+} zg`G)o&=-$zVhjkmSKIlwivVth5(t(cs_lYrcRB#;YNOsg# z=BZx^dYTZMzE2im-ky%Se(q~t)R?ib{m^s@5(O(x7k6!ZM<3R%?Ukv&xD4 zs<_hnK&93XhEhNW7+Gq}C)4U_y)UXKauy|Y?7dirQpa@sps*7oQa)_jpV0;Kv8;?A z3yw)BuW4fLIq>^IEXAM`^$)^h`6EnT0&Jae-%Txz$ZX&GV+(kDFDIWxqI=<(_BWb6 zmMyY`!rBB%IkH@^s9P&lC8&(_)EY^oJ zBgi8F*frs>j%f}nef$Q6+?Jh)IF=58n)+tXcKcb~Mv#?FR5Kr~=}`pP))*77<%8-r zxcL-fhhyXKW`BeWvF);u1UQh@T`<*Rx zVD;mcRVzXLcLrne2YvqMT-Ih2G9);9g&rhY&rbifrzU}L=11rdy5vbriuBt8Xe&M? z^d8ZWPhIR=?9b!^P83s6lo!K2aX>2(#i&Cka6hm2QhF87am8YY%UUSeU(>sgcuaR; z3$4t;vsP?KEZ$5k-KwzqnuDZ?r(``mzTjt#*p)r#LJx&g;a8coyw2O^GYCd@ETn_e zV`ds)kv=+iAD)S58XZy!O`F$PZC&ZLsyDK?hK&d;L@DvG zEI{U%M}(-bt}@cbCMjn}#oJR4PSP(lyH)5T&Bl>w!PnT^%i(d00#)?k#GxHRqk^xQ z1o#nqS7@!gD!`HaB+gS8Dr19nuqh+vV4OZ;icji|9Zssk!v~~zWCr+!-%{22EFwOo zTO^%AFvbbF3|ge6W7Zl`Nsmke{upM==xm(+!G>=6DKcx+^46g~eW*rX^q89k0tuEgnwKXW3{=$FBy_vC|O~#I_Lb2l8hm;6futzFc%?<=(2y6 z=&n;6&GY{?rfD7lQ!}Uk9`e#6l6+j#259W23XZXMR*a+9_6Y;QWdF0MPu`5&0=Kf3 zfUPa4ScI{zop*3*Nn$Xl=>FVLrhqQPhZ!q$|9OIESkJpR+0Y5Jj!IJ%JY2u%X*lbe z66-%>*iJ9x{$3fgKCKqG?b_gjaJqPDPNP`>MnJj0oC;*wWN6}1#Tf2qc|$bGFbCDL z?Y?=#7gx+l0!e_UnV>?hfcOQ)cKPgFmg&3sV*d3xJ7Z`0rmRV-{k(t2r#u4K8pfEu zXj4py>zsn8akyo^OD}CNa#@P>i8_q(xf{y)Go|iA!6BdF%W9U}qz0jOykAztRCc$N zB91*y;M$}QdUEB&Pd!|grje(-%%Bx(YxW6U`kMAdrjul(hLIA0qxE>xZT@6l*is1CH*$sy zAQ_L>?2Q5Be-|ocjJGNSX{5Zfm_*VYl?4Ao|M;Vkf9AOzp5t&uF_88F)cNfPtAsHe z{LYqRdV$jU>KyJFST1n-F5ezzT}nn3aZ`Y0ZKCTu3|Mxy=zI)Ilq2F-0-XTdDCevV zQtK+VKr-c16QXdVm)j**$Iw&9gP?`YXhmYfsodg;f>$Y`Ri%z|dFa+E;)F{P`?x7rx=KT3i zZ+i8V`qjo>e&g$ZqiuaQjTyg-UiCduUd@ZR!7ZZuLu0ESduqmYxxM)x8`?U6< zd+v1QvfR?`WRoFD=>SjhSn_rfGMup_sH;K2&h$bje^X#E&ny} zV$4*+IpPUnoQX-qkednH3}(Q+_9}T4qA{?Wro3;63Fgw zVR&0+OJNHe(xJ`jS}2DP+I87^8uhH`?;Z2@GiQVG z%=uYmZxu4UQ+Dm*DOWR-rF);x2*sdaiy(e-1B|IzJS&Cwva3TtOd5yq0dqj6*(}%D zAWx-+GNTI8WI;JDkmk%NOtvMMzGs2OkmswtL*iUK;HB_qWg^m|2aU1z6nzew)}?aW zS|In_51H~_CUIdfR1~kFtMlu{KAl{-K^D=6Ns*VK8vu(=0n%ZZ%RVr~QoQ&?<#E6Z z;3bBK4y1T_u;eoDg5+*GdTifCW>85a8$@A0*TZb7@K3p~ombd~=KKzf-&-KK4uj*x zO@84hPSPKY-tU;_>~s?xg=amA^-|jc#|OHHN(|X{qa^hH&ZXY0sPVYGY~9lOWzgtl zFss*=mpTxGK;Dc;5v?P%hxP9eAdQ@Xuu=fzLsB7T=kT))keXv+x8oG_@mQ=?#I&Dz zp3V-x?wO*XVLWK_3GvAf$?!}XdfS4?`1U8#YL!y+rV@37!Obw-C+=+dZBw&3e>L%K zG(y4shREo8OJklB4dPU(kIRsTgn6O>NV*zyI@e`atK`V+;eIzhO8fw7y)Gn2V}p$T zX{T}If0tWeo--(az@7YPESS$E!AMPTE>(Z#PH+X745djo7)cCs^$naN#jjgWgZUO~ zp;Za>V`5wfTIUJ+J4*HDFK$Vg%Z&dY4@bQ6Jo)S!f$W@N^NLR;SX@XxH8B9+au70& zj`yYuAvU?{k+JPpGz|^pJe-jGYd>^~Jrt14&)B{RGHVViQjNSoG1gG>Eg4-uJ2}WE z(=a;p!CMRh?P)|wwe($n2l|y~Vmta{3#? z-ZErunG6Dk~0%<)&!AVZ=gE^J{?kV!~aSo5>-UW&29{RS|}w^=xYnr!_a04H4Y zqij0X8*s9y;W1PLZLK74>h-02Gq0s6+kp#N*X3fOB{Hc~TJC5l-RO_?T0~wB59w1KcZL9SsCj@FYGOvY%X+*G z*;G!LM46Xi&=^Wm{;1^U(Yg$QT9s^zL$L0d86Q(S1Q1m#VDHSe&vMWEjjMX{=iggO ztx|rvOs>6z_wtP8-zhBn)pCk)x2ipP8aIod%VW)j`UsMK4b1R>FuhmPS?6KY3 zNx$2rIZmc+q{i#`zsE?;Gpy)kRXo32az#dlG-3j2LL(`}^y_k?>z~S5ljDyC6o&w} z?Xe(Q?gaZS&kYG#)A(kbqshR7ZOuTNR;O>m zsC*}RRAjlPXyV(e#deC}T0Bod445eMjBj~T|IO3)3NeP!o~=7=31`yEG}rWspC&Ss zcS^Pym(48&FhuZ8dk8ctvG=_AcncBr2H5nO2jubt`CXK+=wOR{P$POzY>)V7<8^x=#%Wk;O#~F}~<$7Ng$4 z)xU=BXi2PDK94X@78)Th&6v0FOdLCNX?(skGO-zc!Hi zC-vUwvts<~*pmMiDFOt(P_*ABhwigkLD~WnFS;9R6OM_-lVsNU*@zO9 zh2ORB*^eFn6xCBb{Ik2JaSKTNJUjmjdxj^QxCs_BVH46DeMPU`i&KXi<+4JkHbMXi zG0)h!Wv|IX3=+k__PRUv=;`S6ZjP70zW(aKrHD-8W=$<&o!f(fpCyiWUDUNvlOBs# z!*In7Dec~-p|RQk=^ES=k;nx)W{Upr;Jbd81{p-hx01alv(uvD7=`)B4I}d4)UMYU zH@yjo&MAjlJebP`as)4<>q}BMXV08=j0tA07h{ZcEYNZkq)t{n6ip;Zn1dcg1rrvP zFdU?w<(CXz!Kst?91e~2Y$*asHYAOrY>)f6m)R_QlbZb2NI0dF% zT1@*A{05&?suXYPyI?o=v^_hAHSfqJ5$NfWI#xlWK&^K*D`bQTcvOkO_7OC*hdHNH zdCc`dFO4VO*WKCYab38i>gD2n20zV#R-7P576VoN%r4P$HmZNd4fpj}g#oDqzSIAh zN97T2-8FfJztC8wo8{A?(PQPuN$>E=buwFTMNd2ve0ZTsJqBr~UWL1g3F)y0QuzZ> zh7B&!RHxw{!XX*`#;l)l5gpT}Ln1q?HYdiNtlP}aV-Aj|k~9j6aUC?y9RS6#@*gfc zw@%RcU1f#W$waFSJ5HTE*zzCAOyvOD8?%0hKx%< zwJEc6dNJXse(Khozr?cO`f%7xnXn8))8SLvu+Mzu#ki`50tyn7DfE|LxJIhiWjR#< zvaFGtQ1ovC@#pX2+c!ZqtVSf|wb{~D3S}V|T^(pzzKr$j$q>c|MXz>DT6V|@lP7H^ zZo6eg2#7BaJDcfY&0DjQ(Z0#iJqEZ+BE}>6EP@>aKzFRTT2jDb+jz6@&7f}WiX7+Q zp;1W22UJ-@H=8Y6CZynivP%qTkvPQoow7{o%O420>^%f+q+1F~WV|&N`nTrIHiIK6dnSIbhkBEG{aNG> zu?YOpd0<*=zU!Laugxo9Gyo2ht+ivH;4q-;D9ur9aN}~{Djc63sZozDsQAyck+!K%^)Eix?4V8PFgl&XHu?D9q!N_qpVR z@^c+CQoL zA_TW45;YCNMu)}Z8LI*rLl&SiI>9u(W~BhMP3uYqf3bykXxIFC`A^JFEU#jeut}8| z;n{8{%FZe9$DC8IHaP}@J5H~r%=dRG{JKPnfd_SkAE~_8MBURd;qf^uWRZ)%|NSmf zqMuhz(J0rW8%df1KD?d!E2)SSR$uF<@9gEKX*3^1%AW!%P4PLvCk+#i0gC6S$#i=` zK)P}o=1eE)&$J*fQAM9d2X;DW`-wGizHGi+az-ln3H1p4!dj4Vns>CAJX&&HGK{%_ zZ)`)xgIk`X*@!c#pRgIpvKD4?4=}s%uSS#MXe)%1UVr*-?D28Sbm6(e9;(*O;EdHq za-M`%N78r4MM(^h!_3=UUTmYqapp;3#u5=MKUJeinDl$r*80MEH4Ka-8LhQ8b<&9FC1GvQd7Yo|-k4mbgx&gW#IEjXPEQw%2>H_zMKG*2>-))(8^660&rA-{HfscB)^` z439cjXsUQcP0m==67j>PS>OHsm?WVbp8;)HEXVRYV7GhvgP4=o2}$}fyvh>e~uM)HY1qn zOMzm)%a%wN0QvfydDC)m6h}F@iacn*1hc#J*P^Yj_@3QXR(jb{Ea@kvdVuz)NcO^$ zoLNkO@eUygrjLlW6@-*kB@Db!FANce9+<>WgW45@D!{NB)7_PdP5_iIA`zh+UUe@l zlt?Y?Kn(5ZB$nOo`?AG?)4*_II>Xb$$qi+Mw+EHA*Xus*w~xsXG=Nn$IAa~@2;yZN zn;t`j&F~N?@ix%r>JW3j#;F2a^dbr=&q`F(PCYDNV{s*UeBo#Ja2z)1uP0fuM zO(4(0J0R}wHf2E^JVc92FXoOy`&VHbps4$BFdqO~Ggg8A6m?&@pRflPQv^2j zx~!TUt=Li?hZfe3Up$|*8K7gyW;nSrJOVEDNiU{z`2ATP02>h|Vkz(2J-dQ<}8K3S6@|hKbKhX$)nzuExy(t;WYpEJrO6objud z{y6-lr3lXGWH!L2&wS)_jQRJ&j*0DC2UHGl*cZGx9?W;m#0~d(JBPqe2!eyzLgh|T zJlc*_K) zl)NZ%YW5Gd@mfU@p3yMh2xADfw*Gn@X@mWKZ_%RoqD4Yup5xFxlFohcfLyK)=Z%q2 zOIQNpXdnGhL1pdt3(A{;S-7-nuzfh_zr-;ri zSZF+%n&zL~r%Sgt4l`5SI=#pBSPU#*ye9auF&(>8U)P17WIUvWxWqkm9{RpA^=WR& zx^b5l_zq^=Xazo10)HeIl-H>ZYz2T{r%9@c7sA4%8EWRH1cZZ&h0hP}w;+j-?vYl$ zs7na2@u`0nMi%K-Gb(P_2sxBMW~j2b6xtgB3+fpP3#LR}@>!}JYB~D3&lGAJZ&T8($h3 z!LFG*F>2a+V&w}IHTiuTXl7agc-V95HMyIeyKU;Kst?zXOaAmy-y>VPcpIP;!@-8iyf~D~r*Oa*SNpo3# zlN=d*`_+JsyXIJm0Mltvj)QRjB>I8ZS{r=;A6ic@aev;$4!K2rhEDv z54^84C$SNo@C)OL9E{^=Uf{)9dc%^_XNVm&*3x&L8D16VVSMqx!Eoc=bX@5*SKC_=o;>0&A$@^iN+Sp;bGsk|w4%Q#dXeggkzNqR4 zNcH_XHm~A+h=l7oL-wuL$;o!Q_(aZBDjSa=yF;(!CJL5U>U`boPB`LG@0o%bzc^vn z3=)>b%)Eh8dy1;cj7|4erXSIOxymDXiLQAM3;%Mi_-pmxsf3cWw^CX%hG8fQ4oCr+ zHw{hGIoP@xyCP{X43?0d8vOpn-u1dqW~$ev{kQa`pVz8-V)js$r=(Ksmd(vTDw|F4 z6y~d7z~!vaFbMFph6e+?_{`Br^FYlt!M$RN=wzT}KZj3Nr>uT|qm$@(C$8~^)(wp> z&oxYWPa3n!{1j?FzgPNM7!wo?t=P?jt!=lI+_%yrfy`}DX=6S&9L#Au7LBG1H72Glo*V)t%xO#E8m&nHS zKB=&D0+Q7D-lfdzzhy0Fg5aBDL?tt zb)8e937klc205NJ1s+)O_h06ca|p_*@6zw+2y2d)j?p+_IbmHnwvYdmz2R`MP;Sz{ znFHZ*!yy!bT81j5*+}x`bgp4ZwGYsuFql`NH?}uo3RO0=Wq(-Y>$c)O=0thy=V)?@ zC;0`Yib~F*uBhUciWE4cqgnoTU^<4fdZ{Y;__g>E;9bE+ug&g))HM%`ji8ncbOzB6 z1WBecZ^iqH`pI`%$<4bFoKaMQgeiuB5xSgFv4AwAQD$I(EMU~N@AkWb=R+x}0~(cT z6y>S^ST8~>#KXFQy&@7tIo#HXL8t)~@aE|PNMR$%3prN57{db&ht6qM&%`RqSAhZmZyWGup7mm@iorU51o-n>Bs4lBJVIwU>peQ%57~N9Uioj+(-%X2rDgin zL>_{>{5F#9XYt|ld!pa>%5gR{UK(@##qIgT#lkOzoadDLsIz{gBJm0nB;M+Qy&OXo;7%$j8+Rw3Zo%#a@oRHN=jTYl;C#@^*QFPBfys=zz&5!Yqb@J zNL*KKkja~-{W|9G6mceLf~oNrML}++_BoZPm4!=WRaM;}Q`|u@_j#kSQ6)s6o2@ZT zg&gbMIO;Qd&detU*Y6W49?C!@=nW-({;Rl99l-_*s!j73Mm5&roQx6RzlSf1cz7LsJtfkdgIT zu8y=~pXmiiiIB$xuBZ(Eo0KD@nTbT>HWTNxJ%z~O1L{f?^HbVs1EqZwv^Nh2$751O z^`tRRlZAdxy~)?!yC(h$z)iVu+OHeA$Tw+%0Yfm91Ah`(gWbntVlHkg9#y1>Y$ye= zRD&tr3Q{5!Q)kKB?lri8hu807g*$k^Y~)Vt zi&qa%IjMBK)_}Lz^9*H|H=ol}Tz12jNpE^DXVMa-WSm=?>Ag5sm3?Kln;N>9g9Bei zK?F6mceeXRj78MTHnvWRp99TYylwqMHM$+m1Q)FP+R`sA zH#^4@&JEW~bNFO&L%|gM#dI+`yds8-7e{@oG;cil2p*|y`KsXM&Ya^#b4FJ;O3a#B zRD;(gZ&5hQ=sSomcCoP`d*>&8nf;GJQ;LL&sa`uui2=S?xd~jdv}7K zdAk%>)U#JilJi?l`hVF%)0)eHmU?W90fc|Uyhx`;74DvlO4_!?Pcliu?{Y6sW$aL( z(&|OTEk+b9P-Abk8I_zQYng{5h!Hx;374C`B6|utU%js@2oG(%`PHQTa2OXf0My9o zcue1*Dq+g3B%T8>(gsi#nMLV$OG2WLfqR+*N)9>jMiWsWbWlj8-?=gIn$*ez_L88G zC>axTWuXP{b!a`y40j=we$i>@167YVTS$R{$&|akzSin(tGUGx+@k4h;DNikd>bCw z*1lp;&R7iW!bgTPJ!^z%0RH>4Mcq+^awe5y;AC5iiz}5H$j}#D7Mw(4JaA_iTv|Xz z&P;Z-S_JEJ&RgM+GrmSll!^)?!N>CBbPNt8JQI;fZs2ES$!Np``)q!!*G7lr{|XT| zt=1mmq>MWsZ@H6TyTc)i#Z<{8kmt}+y3Ts9M->e78C&B@cOGQkt_&pn} z;vIIWplh`WiM<@vhX{5ZQQh9RMRe!QeP*rTSheV}0!H>5q?8z8kMWT{D}J77 zK!SY(6G5JfR903L*>`mE>7@+SnL&t%u%JWI)g~EdM&9sH%J?9`+Vyz+HqX~}l1tdr z+xeP5MAr#{G|Sd$O*A+aQO30@b~t51<;>H*u5-AW=e;HWviY*35%tuvN@IU-RvNqj zf|Dbpm3rhG`Ve5r&um?qNC{@$HZopH0NDycKcg)8th~&zo47B&^IvfyGXLv+l5tZ* zO9+l=ep$g6-|2nKT5vmsWb$uKse#hWW~o_uY>r@_wIKxqBmT?=mpb6P0=iv=&poX! z6(UGSUrHdiXd9Bb#})8hQ8)b7JOg#~)BwT5R_5+Qel)~mOv%_M1snpw`wKk}^ISc7 z6AJx?0MH^tZeg@5`M^Ws?+DyRYa%p6tD%wCQ9-L*)h)<&uI7TvU_AwMgIcorP{2 zLVRi*FRM_r*^x|V&;l#KH&a)wAlATH?v4sOxt2_9=mRI$7}k(M0U#V1uQ~O@Zdc3; z=4CT_lYc22Y_~kb-G1T0{(n-g^{Uf43GhYWvlwrN8ma@|=F9nQUWuWS^t#a@bne%#C@6TuH&5%Dk zHOXllTy7S#IvwrDWc53h%P!euS**5m+CfIiT*0%{eieX|Q)ax6*B*9@s+t zYJ~&unLnwfguSx#ta51UmL>4w*EnFG?<%GzMu}F1@`Nz-@!7tU^j7+>z=m$K0^+{B zA~7)S7Oio5hYHK9vy@n+>|=+P+yj41t%Vu7G^1|l=~$sxr^;g{IgXst^@$;?8kJ@3 zh*W+Qw{8uxLs7q%F7KS2!6X!fq9sY~PvCLhwKkIgTNzGa&*Oo}cJ>V0t;VNhS!bi` zW(3|E)c{4a!R1)SKC^PFex)#xXIBQTL5|J@>5FDsX=RHYv^oo_q^!R5X4J-T95G(T ztqDi^1M9RMk!wO35Tv+rsd%!VwJ*w4b?kvkM2A{g;MZLU8%W0itn4L!DljX1ZLg<- zb#0nt>9&#Y+u(t^k(rXKLw!>InHH{gpY-QIjR~br!*4p9g_rfJ>sX- zyKo2?jBD!cue?*#YI<2vn>cS4%!sX`fs|fLOn0*;=8m)Ivo z!{l^H?bM(^1HSxCfgKb?a@+D}LXs*A%Zr2p@>m=*35di{3L8R^(^sEQmXE;90bLa;`?$EeL%_`qQI~DD39)TpP8I#Qu})EIvJx6-21s(SmZGa zSYfI7tgo53mI&ZMGWwfiVxaL(OjBW?ku9M_Lpd;f{76tdO3UMnnoPA~duCW+S*e=T z8v{Hrf55wj)qWZal2Q+xIeEcx$mH?F728yG?BHXbb;%j?FPoMjzjF@@<4WAE`*`az z1PcO?Vu*&vkwDd)v&!|p&50FR)8UG{-m^A&FQt9~M7%H`X7jW#95jsbW()OYxNE#6 zL9s>+@tor!z^_wx3#Q>$?z2h&QAgp~jZSHbqle{>98bA@MHI6{g$|6>Q}g6J{x{Jt z!gKsk`IGU?I0W;D&Y;aI2%wP)DMg;QB1d(B)f}vLf@zdwni~fYHFC7inROZIBj?Ik zjIp^t>qy4XgIm*UsPGblL78sgik}58nmTRz)ZB12I2>0wEu%zP0f%G}cnkt89%Soj zsb($7N}1gm*=DNJEWKu`Wn3=uh`?WM86rEMqh`5!#8)?Jr zDvvnUrYCwGh_rVDL7A6i{UhT|1wQ*KeuM;7K@leGSsL2mTTbMGh!YTtOXim3YL|xz za#Hc8t=#3d`Hr&ZcsSYq+G}Jm1qXJZ`k&>n;E-9rGBv{{tpdqUJ;1AybYW^XRc#>> zzI>jT8o6{WD_k$7)@hwQE~?KwoBV(4NQ^;}wdKpTR+Xfu#g5}#sWU%1ne*2VJrV3bNR*_`Dgcf9I#*bl5)rrVR>3vLsZRS?AX!LjLoQ7e z?AEW+cua%?*fZ&nc49^i$oQA_sQbCrv=ZnYNJ{yn(H4v1xbQ|Re~0A~+NUc+q&@>R zMqPf6eH7YASp2-N>)Y1Cn$mYNN#lFEMbh-K&%R52%OMcig*(Cu++)h_C5J(L{8dI3 z9{E?Aeph%i_o_=V-&M_6OX|A;VKh7*6}_XUkUkC5%mn1vON;=$GXgU|v)`^tB%!{|tSDd&(A2i*PDfhDK77x_9(@1t|*>KpSMa zeMbJKm(Y`Kg z^t>+2BbF6shY6gI)hr284rNF*0VVa_Q-Y%d+up}&W03OyjCo;)x+QQ9 z<<0S*jT0`bG|%%9F-c9dtc@QW2*z)aX$$qw_>`4q>nCfDEP*_Uhfc;b0_1H{tw&J zCX_e-oj)sUN?xfba)}Q*Ut&J&Fjj*rTEH|eTG1&&x*Nv;kl<8RsTH51_yDZiZPyKv z^$1{)67F@Pi!ztVVp0@QyFgRgS+>=0vP`v)W2ET#N5R5N(?%%Pu3Z7R+|OFe#-`Zo zc)0LaazQgd_wwAX2{}q~Nf@4V32FXszKT{6x@-9uIg~Q}r;E!KiIM5)b!EM*yQCjh zq1PL)KfCi8M*ywhXS%F@mgpIUPYgAu*mQ3pOzsJ?)xa~DsC-6o;M6%`xjn*bUxQ4D zC{m93fzqezor&}=h60YldjH9RG}0&Ch5$Gh5oO5ukjI9~j%_cJ2-}le#Z8$9C@8k* zoyMnb_{$bcmlM$LH`kA{TJTMj(148sj>sh!yP|ZNlS=6Dh+Up1h!^Q)o52=BZP%sB zKG)4rkxnMIkZsdM5fnHPg&T-s>b(t(6Huq{KYFV=5fcpfz0v$QK_Zz*gX3Z5i$zbi zgkZns6TtFN9Wl=RLKo3s%;_RFa`IV6bNrcCuaig)fOe9N%{cLn+5NPDb+H@u{V@ds zCRh!4xhlyjPH|5BVD)D%v}c{CM9JvKlj^nBT4ySd;(&PhGuyljraeVe959o zs4Xm(o1H^DNg!)9fk`c}sjU+u9g=MX-fAhlm+1vY_yVY+%hYl_s7OLMG*#5%hR>4*!iADblM~` z=A$|JER*-kWx4U%W6uC>gf#M@ZBCK&%AzU}5kTj?#cLR-EWiO&l%s_scB=FC!dX_X zD48a!^(-42jYQU5GS(oQD-xP`4419}7cy$4{hN?zh|j=(#ReUb=yj-4fAWl`xA|pp zf$9zJyZce%zVX1nOPgu@gI6v0VU%WR9J)TbOcyy^LLg|L9XH$Rvp@|X%u!0KnXN?U z`LSufn>F%foBNvWYuOJ(8!?Vw;AIx0VANm7iur&ET zI52&hd?|55cn1D#hgq3&G2@~7;LiOv$eXq<18U6VjpEHQkaFu$wR{$5N zy+H>%mNZsI5mlbjvpfxBo83^v&f{P#i|7qJhCBNsLmvu~+;LdcW4CL&F_4L4wx@`F z5^CVx0oFb{qEWBZfwGdlZX5j@xJR4m<=bdhJ*Sm1SPU?S&$#nS>aSL&Gj!*@SpzE8 zl;2D7D9bLzbj~y8E+}5uk<;*8M^~0(4v#R2ISVaC$>I~6vS7cUYe9*u9Ej$2OCe2Y;Rsz7rC#S_HGC&IMEE|@m7HhA z)1!r5jCYFQL|f&-vZ*;Rd=Zu?y%yN%9%~usIo;IEoKNAf$trn<9FyW@*nqTCEql{d zk)i$#mC_iRcjw(p2tc6%VntoP(k3DH;8-!=YYo!7C1v^XcXVWLLHJR=c}XR{%k3F;}gc*WOYv+8+E2;$tSyLM^%mqxC~u$XLcpM5^hx!O(mt8}`zdFA6mn*vqY*UY_~NRh$|PKX``8pDL7RaeUgQdH ze)hmwcM%dZTE|itFRv}jT<chNIEkhSm`)}K{;CV;8U*5T?mMthn)5Tigo1R zc-v)Zx|}JSo`EWhMik-Y&BnKh$tfIUOfpwS3bWYk2#yW#D6j=KyZQ+wG>l$rxcMTv zCRr}i;dX`IwE2B3(p-)Rc9I;0HsK;{^&%Y0@e~s`(DuS9%1a8oO?)#Q884;>K`%4y z0@2@vpD>vaRpnyLU5~|PI~6|S+}~P9qm686-mjIBG)({=8#}zafg`SJ*MKgKmGHqW zk>_@s)%UT6kd%KOMW7Dgv7h-x3p*_#Z=An{TuAw&Pc5y3Zg^c$&n+7S(Dk{YG?5ix z0VanBZXIms4}l(|>@8Zsm^itDTH*osO#UmE_Ve|a^^OmA`uY(ElL6KEe$xwUAjTqx zXUFEuvq=+V?M`2)!FkY*fS&)<2>V;mmmcfbPj~k-6My$iwJ~q_|1f|Q5Y7Yt6r#sA z+3YznbJ11U%pX0X74%nQJh$l0kVVC_8X?o@sEl=Y^4R|>z{#|!4zPa40JjKsaaVS66Fp}0(V-f!s5O7l64BBjr>d$*1pQz1A4mZ zckgq)O^$`E?`HbuS?Pz)Qnui?#IXXOG9uLd0ChbR2!(a3YCT0~b>#)sD6~%N+2D2h z+B~cEM+T>W2on`zXLX<3-{#QSOq{3#aNR) z`NX4+Kjtu9;k`k6j+6`@WNqPbBu1|V0DQceG`MqiY&}DC*p8O3sZ26I$LjDR+oXQDK9^Up16ErSqisq2PsPO5?3S)1{c3lYU%&z*5(ewKr= z9^mYhz*yqr_=|-B0Gb!?NEPa8kF4eh{_l?dF7#C{sS~2zpw4@DQUPD9b=4la%z&M9 zIqh}iu%mMG^hS#TaU^rlQtB6SZYP=KOoo_>9dH$o5bL<4pxisT?Zc(uqjF*#lbw~} ztWkGG*t_&e9q`5^qfyNp-7I#-0`dC%FntO@IlHXHhWtWGL_1t(xsHO1g8*nr%b9QDZELef z^ZP}!lwTE8hndCpqFzK%B)4hot7CRgaS85wMxEWJ;Ipx-9D$-VA$K(5{EBgdL?Y6U z+gw|qXA2s~r`#a+itO|6G9D||=62b{K)Ny`^UzTg8)iU`9INO^*mP61IT$638M0IG zROiA{CoQUUQD5r@$TMMY=fC1(zP|fh$75#&KC> zw8aU3j_jKi+utF6tb{>{`xc=JMM}yWV**ce|1C@r96eVGVXD_DC7Jr#Q*e&M@%b?O zFm2cL+5FiETm(g6MiR5lL)yVDqXbV|{@XM~z~Ni{%)CE>dNpxnM|iXO4yI!j)<|rV zX%2o{lxfe7^4Mt^ravp}7D8wE%dR9nE0-LYmO7E0RiwT}a&+nNy7h{$yw3stchtUR zi1MNcI+l=kzbtz#R4{pI>#pE1Q-WLG4MGs!H`zEdX})e*!80{!%-Y*P%5g1WemN~* z)oWwKH;MTLHdVKx$!oJG{QPfPg|%)4C4aZeQFu0O*cDSyl0)e7B@L!f=g=;tSqD8@ z+=Y`p*348K9)5to)Dw9IKEhl|Yo_IE>Ak4Ui(nqd@1Ut39SUwvS3CFUcfAb_N$HNN znrV?vacz=hZX+-#9z;i^woF)j~T2{ z%Vs0fiUU*4kW%_W#y>E#{5JLxoX+h91AWv|L?S{HBsAY7&@YjZxz!(+yn`wMTPt}F zajz*)`3AsJY>1Vk*NV6yGuDBLV)0y4#ujQo3QTHi>Xf0WjTCTM`nvY1NZ@VS4ruOW z2!yeWM4%W(D|uq4#fiC0PUGkj&-3`MCMFo-WwGS>a>{h9J(89OZ;bocgG@gJW^xtT zEI)MuC;Bc&EOT?Pmv|I~CP%A2oM?(;^<3OT$u8-FfDd}d}| z<_YMZ%Z-MC!KCYqJ9`Emzt(_-f%qEzJ2=QVb)UL>Y8ot{6oEBurIPlCN&z@0^YsC* zeO5y_`l;`dR8BbFg`&|g)nZ=D)C<8Ch1)-%QT)fvvQvZDb04?5WK`_bu92qTl6D`AkJ#`Rq7V7 zc+;J<6nnTEdzvJG!V>sqjt5^;rY~QNY1A>B-VT2Mp$(lD0~hV+VS)`j?6WdEIr)NV zIQbgu5NuEDkrRkELxXv?-v83&4gqXp!=U7WVoTX zne?ZqDOl0dwgjDz-!$Dz>ab2XKx`r!|9$U@)m8nPaJnK*Cg5|=;g0Odl}~wH*@uZR zB!>V<*%FDSa>*4m#GM(_TH81c{VaVc{u*iO80LFtg-jzfvf}aHGXzAM**VFVO(Nh| z43D%qX<-0kbys>+;rKz2>~8&Y%5@fmD0C08siKb+zgud=yP zyh4ps1+|c>A~h*d*54WOo%q6;&d~6K-%*K1FD5)ODOhCi#yWg%fj?=xMv+`-pmPZs zDj@HIal%Hd@~&R*ZO4J;lequoP1;Y3ikhdO!HgAwnoY(gsN{^B_qNfz?44$JV?26! z#c*@K*C9t-qd@g7@O* zI1@nMb{6PoHna1t$A1o;f`~b%n~smF+NCc!ZlIY;yA7|9jRs&WCKp5stmWP0f>mu_W(l(0&ENNlApyecVov6rLyGl z$LV`a&*SfkdWDr%9Ik&)qR9Brw&(dUjAwgHQhxzcS~h@}ryjEQ4eg?8v?8)SIb|Fs z8q=X`0AImbPgxna;!K7=>VFfs6`fzy4V((wbkM8 zv9zaTvNVEg%p_lhJms-Ixd4ti2L936Vk2eh%5F9$ks`yYGt3* zngzaAAFA<;fwL0iR-qz0HbL=iYvv+9`Ppj~CeY`QeNWkpN^XypY*?lY zn5RSBYy-6V6wxuc1LV(7CZ?PFtYDDwyk9T>0luEfUf#Z3Q0dswqZ;WxA($N{xG#M6zJMo26dQh8}M;zh_G#%OI|K7e;HLN$oy>V;9DJX3S@GP}gorx`+BehC0!U4oQc%}1MQ(<| zbV$h&ppH8mk1ePxCkGgqcsATJvyEe-D;o_-R+hSJjH$|JH4Zj>mL+JbEjP4~;75Av zn(g9^Y*gpTPA`~($$IKfr>=PW<$NWt=oF@~PAF>zoX zN8zUm@Vf=ZXywJ=*)rEUKaQ7%R--xlY;sFHN4#Jo4qjiYNpZ`Dd5%l}tC7Gm?mD|= z7I(J=(lj^WybW03jfVfS9x`QD7i(&f&>7i9enU2i#WxT8vk(}krhbdJCTm!>N|t}i z2_02!)3$eXsd18;;a-cB~5)_k-l`2Z+R;eZN3 z7WM!=K*GN;V+1&<16o?Y5vN*dGC_&8;`U>kS6*@il&T`};uJzM?dI^&k!LCAbv*rJ z(T(juGeX8NbC76{6?bg>a}iW;yga!$a=N1lZEno0uUJ+i6FG%*R%R7>_~#Kr_2gGh zm!3QZ^niv{&Su4kc$Q$`1s(3>(QXWukpxPf zF0!4U*MA#sN1_PI(mDefhKjvz3mBiN%%kkj0NCINrn8N|REdT6;z7Ln#=v-=i z8AE%2HszcENqsV>WZ3>Fy^en&gYGhr8ATn@V8{1KDB~q2&yyzrJn% z&?%bH)h;3+e8Z&8U~*dBK9)po-jS1Ts|VjEm)Eh{a1(iT6$d)ctu7H2e7?tJCG7f@ zGr!{CjpVpz*s&@7Nrj`vblg>OWj{J7rgv}XGKXQ?Y>kHZ|6sPp`zS+N9lm+?+{`hS zEyi>bGtU4iUI(-hR5ZIMG37DOTH6NMdV=Xp(6OG6rLsN!p!N{ebqWv3La5b1AZvz zc+m(4ws6dLBBlsiHEX&VpLJXNmxCpZ09B9`M$DC~k9S9WgBnfyGr{N|()yq^xHRHP zHIn4~`OMljdj$DA@?-43XliO{eTZ+9jBQAm)KI3go_fA42${{3nMB0)xa@MxprT6Z z_RJ+jKi=DS-X%w*_0;aw=vp(UXlgP zcv5j?XNHTd=H@SKm0_ki&s^zw-iDwCar8l`^Th^vkT{(C90OI#bxs?-#X~BXtbRl{1 z%j^bM^}hADTD~*OD_qYYGAdqx6VF80d{bXQBL_5VB`pOd^b2xPbVmIgY^OaA;bpZF z75+Uiz4C{0NFFi7KWo&gOTFWPvG>kNfemWiQQBXDi^(gpq0cE&VSth%j z53Fw>)u1V(EA=01PWmDVim&U{V7vW*B^ZZW8dsx&pL0Wx`@sS|U8b z7-}+ZTNGgvBw34Uyr|a$B`LV;l{_&`EzliQ{Mai{hY0!4TKj7nrEIr?0^K1+rLdN9 zjZk?rcCwA+V>-;rQ&s~BGa2(Gx!#sKzgTzgN7cf>M*M~El0vyKl`0!Q28TX>1U8xj zWow38#x@kL*Ij1q`Rd>M)uj8m(H=4~$s$-}YG)ic4yvbQdp9{Wa!0U~ck9;Yn6+VV zro{X?=??dLym+IOs{l9oM~n?x0-E7tIej`3*DQx4&0>M)c+5l7?`uC9#Z2E$E|Qv9 zt4(8Ieo1Gr7}Ur9^|P^xkl%UTb6b}0@w_elATRj4C@P$E@~RQ9>m2YlCP2qSQ1vt2 zlf&QYGojD8|ARfbyiU}%V}Uv8Fh)z5vRBR+bL;qi_D)ygB+N?dwS_`i^Fqh=0b_+F zHR9iKb1ZzE!&6qaIn#Kgf~(l75XFD`9%4h(b5;?2crttzxnU17mGGRvOeb=*_ zmm$-M(5@^UKT#wVeP zb56zM61PSV5sEQHnih;vv8Kl*k0OGa&dNHwa{_ksjgst~qwN|o?s#uDpS>Wk9*L2) zMztZ#Q8b4>p)9fjkm6X}e%Fr_NlxDhl;pW-ITd3}$vyzAzkTXop6?}Ci!OAx)!+D( z9^%KGJh`c8(7y}r94wS%ciM&UXlK1C#>l~Dfv!)PHkJ4N_H)1nR%(Wj1(Dv4ES1@1 zqk0z8_I7oAk6@W0XdtDT=`ubcW6W#-AR2`23EXTxI93(eF|zy4&{lnp!O&|P__)on zX@6qkNhyqAz{+OIWk&;&;n9{P3c`)=Bx4Zn+d`^Yo@I*CVZQfF4Ofjz!X~Nu2aA2xh>p`G3sy{g=No`xJ%v_#B8g)-2ulrZnJ_-v?1r0da? z`HKT+J=nEC5dSuK>0$H+BP<#H419GORbH-y7uB5&>I7Q;?rSm}QOX$>m2rMu+KY}N zSjU>1Sr1Ou0c?x_{{}1xj$OM)2 zIjYto(P4|+KHGm7MMfiGd`~f?b<(K0NHoP*tdhB?8^YoltVUB}x6*ef&{R;O>Arzi z5EKM_XZ}ItGvnZanx?+UXEP&A2OzBUOy!KWB|n>*W{Ql=4yCdWVurL>knLlOqN-Hj zYMPw9+bV1l_Sr`d?$;SK_FaxpI8TLH%W&nFEYZ+pQPfn{f#W%6{*+4Rza10yOLTQp zFGX;jr1ohe{#mI@>YBOzj(K^wKK(q!^YM3`Ai}p!d@gr`VM?KldOSH@aJDLr>GM`O z@V6U1X+I&mj(^rj3jkInv}`$+N>o_6(43glQ|nF`+s`@yE689+h{-VJwm=_i?N~mT zI?S6Yr>_CmUV2duPHtBS5P2ifj{3ezd9(0JwSm>t`?=B%7%!ajHfhHK*zgLxQ_>m| zG3dy`%2|>zkCI7*<%K>L&&PtUlPXzL;y0NC4a^~DwUY&knm})6^Ec!{dSW|?XCH8W zd>8Gx@QT-M6%;efd))MP7c8*vV#V|LT{6})S#*GCv*}&#^$-s|CU)+HsAo4j6N_p~ z6QQWA1uB(^X0>1jHY9dErT6%q1e7IwAj19+oQ;{2*>#478~!}4Y~SmDqJ_Z~qc%BL zyj*^nes&J zd)sz}3tRCR=bI~SI=%h;ZZ@mWG8aqSz)46-VIbgWGV)V~rd;rzjs;*+D#bYZ3V9dp zmpmu|{^~aAw9glVY|>VnM>gd<=pVo%9-beA;_F=7!&E9^#w}QdE}V55t6pt{uZqy@ zMs)?qm2!A1O3RCjF@C%wlOo#&`ko{FzXJN4-d)OIsd~K(EVVOV)oEW!8Ao4k|BeIQ zN(BK4Oa5%}%cCTXqv&RVN#UP?yX28etC#A$R%09wSEubO4%`SCy-Wif*ap$a*Q8Dp zQ7yjJ_!#fYzp-ix-}>2Xbf=-jAOg*WtsCI$wL};Z$e-I`Z5^Fs!u_)~%WfHuQg?ES z6q^6um+siSg;cG2ZR$fU=un(2?+aks%X`v3m=w!mG)Y?bjL3Wgv}r=`&|FU`BZ|<9 zBj97@%t)etr}MW*b}k-=<{;XMOgZ~)KJxg`ay4@eXoh8#Y2<{nqtW>0T&zv*uKxX+ z=nla|hMDESXU9*hLF}RB9*jz)y`Up9(*}D@$}oRk?gYv=v@g=^Ac;Fn6&0fI`*wm{ z!!g+g=Y)Y31n8V+{=&7wS($|xRW6hO%To?RQ)kD^w>e+9PWQ=W_+w%8HT7BAozpvtZlNtA3X* zDgr;Q=MqqDqr`Tlz#8^0J8mqgb3s*2*T>^3ic!%d|8fTSLQE7(VucDU6dNlUg)w*Y;GB=x zTGh^Kf$kBIpqeqlpR?964#=iZ5+T#(IR6?gsjMk*lD?|^`+w2$=4kl^tDttJ|)Kl5l}8pt6uk|STg5KEu{)U%vE_=CcgM1;=>`h z^=O_-g0QDU_^&h|^bpeJjLZcda&I~;j{d9V6}L}emsYh3HS&>p%yHVR?*|bJ59e8^ zK32^hA})g7vNRpjfDq|2LKPBEF-2EGSMr8ip&Kz(5T)?J?DUufJ7u*ZLT2(P6gFN zZOvCPC&woYSDrkt+579-EcpoQO|4}mu~9TxgiKyKJt`wJF$29h-FDfkKZ;8cWoSr#Y zY?$1O9L5;V{ki`3+sgTrz*H8EX%l+mO3xgp^>_9AoP2YR|3jwa?{iJh1(Eapo+EN- z*9BsYF0wS=ehGNyIm0A$2^#n6x!gs$OI;%(wXw(?wHp{-+}FV7AyJSV(}l7?p#tXWGClF9ywH1qciwUu8R|6>$w7J#A75d zdYgK=b>{y*=c;pe+7HJ4F_K0u0_qYtDdYKTK$84q+ydV%w8~y2(x@ChV@++LIkfz5 zUhj@Eo3&CsTQf9(HwRQwYp;b{kSoIVnO%rzIgcP}0V{CIR~;e!kIk|V)JA*yKaGi6 z4h}N+Ozyd8v80y?c9*3n=+*cdUA94)&)a4Q*qS6tTN=8~m6pnl@3~AhnbL@8%tDf2 z3f)SfiZ;9FzDy%^P;!=ae)R?jYiSB4Z+ce@0 z6UMI_eUYSGITv^&1Y zvaHf|sBW5XXn}Y>zv+a%lVE1T4hPs%4aDoY5{@|N9TO%AWnadxxLz2FuXR|p9^u{R zj69B^RV8M~hswcsy8KwEFL}{k9w5w-{xw1s`Owfn^@{}1e=qY`QX@{|xX)Ax{+TiJ zqciv}Hmid+8qyB+-`$!-^0Qq4z>1X}knDG2ODu+H4{?9VM^UtH@G<=1JO;FOib!$a z^q;9gH8Xzc0{`#%e&_JTZI&)-06g-*J;bGo=eA?IOGZ)e*Cx>)Yxr0c6X!cpouJBd zPmUmnd|x~GUfbFf*iVw^B+;le<}Be1icD${03Ue-m6b}kCzA2rW`(+#7^RJ)FfD>7 zp0lzm0Z{CR`kcYNCB$@=d+lK&5B&B7Fm*{`2%J|Ft2-@#hSFnMf0sc?309sECYz_* z(YDR&OxcK;2#SKZE4vuRF(;eQ2@sdOBnZz7;S0?g1pS*|GTS%L*71WdIg?*q@i4I~ zZb9w>XLk%>&Bj@{g=Pb2*lTvwjRkT3*KXXMe$B0mx8kfvM3w)ivIl=iT7)R<3>34e z(z~4dBqvh;KlxyCQ=*2$T7=pI2kLLI&EcaLpkoPw`28!VfQj+1fsinWHlb9vSS!R6?0Y8)lZDiR}wPWiGf zHt8-I)U!mbFrr2_#lzEl#@=pHSr3Bjp+1{LafUsC(NO0}%$O|Rf6wk%rghBUbTaCC zOXm6z7W=Hush}-kecrh3Z91eFGl*{!Rq$89MKtTC+^J`G=4!;FHb^wLTI5^qQg63a z_-E7JhK*xAzUAlBDy znR(|SM13%Ds$(fb_?fQJ_ijaR8C=qlevB7$$8>NewDC|H0f4ExhQeaC;ey#Ys^9a! z3GntBY=-7Q$0T&xmt;(=BQbrYek(#1ESsnpp&#R=c35d`q*?KMpN>SjQ0axlI=c$H z6$`ilM`$Y=^^BXNP*qe6br03mqbNrF=We_Kq(f+k&_FQggQs1(#`>v3)jBE zgW+m8W|^NxP)3+D9%|F@T;)tL(5TBCkrenvY|gl1&iNJ#vYI*Af4^HWDuW;=TBFfP zUM$N;YRwqqed~A{^)Qhws>lJOk5NP0M`g-uR=VMsp4`QXMTigAl1pK}Z}RR1yN5^(~v zSc{di zkA?2YYRia?JQ~lJQJhl<9;=ct(+yzFb&59B>19qG`64`Si%7EwXU~;CJuSe{I&;rN z(WH-=5gNn;kc_OGohns^D`Fc`X_Ch1*j(HnIFJlmMyMX)P1~&Z4Te)Vqee!9L_>RV zJGC29sSHuQ$KY^cpa7P1b|Wjh@3m}%Gne3uEzgERCQgJ5Du*X_!cs7^NxR>tdgD7e z!!9_d;yJ*0i|5x(wJZeZzLIt|QwVO$h2@-TGF&NkqW+Y4Vz5ge6e%$46GjgHj{vi6 z@kP1fKerEV2nY8|qlWn?Ze6IyGHr^q1S;=@3#o|pp4tmGVko}Ua>?LYMUB1Cx8vqc zBwM7i*~S0ront;Sj&BRnnE)`>m+!IcWvk12$HKnis=ubjn=dWU`giDx- z#GB0e+74A)XDB=Q6FA{hw9D1)H|G{|p37_hcRd~d?SQ=`o0@~3xr*v#*kxA(!^rA1 ztUkODNIftR;ds4SAm@9!)cnAZ}+k=_u^p+Zb(N3r|j*L!z85N`B zr`)u}73r{GoF+b_g|ex(E6<@^zaC%R#gpAdQSr*wyhQo7Wjwrd)&GG_gx->a)!>0lF=d;C3 zZ+Z4p%epdvkL%D!rVuUSIjeHZC9ig&l7eDA9FO@d*+nXtd_7v`k+(d)<*}K4!#OtB ziw0$Rn}4RZHM|%etpG?2bB+D&Of>DJwo0bryiUEXMqH`@{+=7s#|gMx#teCBpKGjW zJ)G}13^yK%)7p8F-nM|6A{WQ;ddwPRoEOI&e>QqIAVWcQQIW2^Yvjq8kmh8~rR{g6 z#P}}gQ01{^xiYLNc*(*Bh_%|Y(numPmY|Tc?O`Jff4qqJzpcE_+D0GtKaW|P)s6s? zK)}o+8o1HSv>DxP02dWx%p3ECOxNJ(DC${yUR_(6A5Vz`SAN#?#xB?07|sOtqvo(tT%e%kytm z734M2QJMZzlKKO-^>9{o#dk@^TY7~CD&(xkt z3nIZuhk)sIp}XY=*NAQu0mbj?OKYUI%Qj~B;C2)u;UC(^jK1)!KF@SZ^0uL*UYHc0 z#fc|S|J{P7ea?+EEPR>ST{ZtRulBilkxQ*D@`H0QN)c6yXtO_>`OC3Bn}%?sH9uG4 ztNW0Nj9)HmmfL1^CChFmj*YKTsTj@mXE`)@*x0lGa9@W!kPaIpZ%z}kM$>$(8p4ub z>;sQ^bqGLZ3U|FtI|QkZ=6vIgNjB%~%~;Y?ZH&SL4(r$wx223ymoo@^oKIpbfCYLHB4b>Fcfc$X? zq#@$45`&mVc%!m&lO?0kddP|1rwse?z}RFiKnuC@WTf7UBe(kjSK^Po zx9Tzpq7DrSG%W6Hz{z>vX%orfHW1RZ>X1R)yR~@nbTnX(7IcLmy!RyPzdd}27e2in z@0+FyE)bijm_9KFP7#4cEne8--<86oqJv?5nbQtJC^=^|EglM9I!?-X$4giignHkT ze>{C>U;q?dYir#-d^8vyOw)c^4vjDMKG#2-8J&TOi~?<)8v6kyOi}@@IxXR3x40fX zhMNXz@kt9_#+30+4&r4&Gb9aFlIlZ+BHP*+F(oQgIW*Gk>Z?Rm9P<6kb5G{G`T7S_nIAU>L3D;Z;lGy={{ z7}sU7T!UiGaeMC!@JI@r$bw)^lnq_v88`L7$z1W2dJ2~GoR~jQAY$=phMKh3znxH6 z+|e&|vG;9Rlr%QafMV1c)~L?A9QJUq9RRklG1BHDdZgqJ_ywA9I7M&bXz$|1a?UT1 z_>oUy34INF@NbUM=J&r6@iErSGfW3wG71aZ*mBJmdSC(XqKWM-x%`C z4>8D$faMfFaSa3P1UHpKZE=>V#<;=0OLJ-oF@}TIo#%iabd9eR4(O3*)?D zNnrM;1TDr@y(SKsoU`D}cvNOcW9*IGmn^3_cE1y-r@Cw&?qHgp&?hN5i7U+JQ7)$k zyD^uq-B6|zPpIj1VCr8E9D-jT(tm)+ti3=bm zA>f!PEh~{qPaBtUh}f{1e$7-AD}{2D&?U+dkUQaWbmTGS`rmosrv%gsL+@JZAt&M7 zj7|d@wG>z4N(^FUTAJA17U_fQ%im|+>Y8SGA&3-HT)?x zD%96n5r*WRi<-|T7li&ojg!l}p0>BmIS_Z50*ee#8c_v6ap?)^>Qs+DH){M?MBjN> z<$`B1t*46Uo+Xx&8o;Rg1y#rb>0 zDh!ti6o_M1%=XUpr6LN})~5J6u@T9H#>htV1++xCn)pvb0F9-c-nr?sj2RgD5lFuf z&p;FX#Ns5O3;wLEhe#C;{Y5LJUq}uUhB2z`lBn)lX+p?Tj*Z7s_JHn6m76DtFd5vIzspWjg(`Eb$W3l9+V92nuEy3( zf;uVkMG2=&nJvSWbHHVl<&MMs-(K`2dVMYLxZI4na0i02r>~7U-~V%r)+W#UPSp+n zl0grl#|%=x{l3jBK9{qeB0=G1@_xhiMkxuiapF^1=QmKJSiz!A_@s57#-%hw;k*qtBHl-s(WoE0U>~@Z%C<&lYt*G7R#O z`mMSRVan<6tF0?L%pWzg!@&CaUYC5pW4r8O4uBD&Jg|y$%e5HT#q`7HfIe58 zAeSQJq?z>s3(zq)HH%9ZsLvojU<9d_JWr~9aF1hE#DZiZ;v$@moUM46Q)P*wgEXIh zUd4z`9Y4i-AwuW#U$4T-Tg%y53H znntIXCR;fmb;&$;Z{Tzr6X0B#)QoB64i)T6_|^NljT&`u#m*`w%%3^(46mY%l44^> z2T&NBO}ME!mo4RvhToSVp%!25~^tZlk7C7nKhEegipOs^$BCf9L?OOFlma1D!I zI$qKx$rryJK9C^{n9*f!s@;+ATvBW&Q zcaDf-v$^u6SL53Hr!R#cpD8ATy|I}&(~kKdBSC_jPiMk^7uI)4*RjZBl4H|4dYENK zsYkTUBx?w^)OR}j<^DVtML07T^Yj4wdHy#ANZ!X3sbRUnNU^aYzb{{SQwt?B(oCk| z$0otKk^e6I$&SkfN;Q!i4Ec?Y{p*OvoTm}*$Dr+>`wA(5Bn`=#`|rDHAR%lBv+?$= zqZ&sGT>x`tt_8l*CCPml0%sCDAIWM=gxQcErIVM@R>ndc5>1ns*!8*^aZ&zyWW1za z53D?%qj%Kr%4+dRIedr-D{jH)r7@9GUW*tI1o7mCqcl9#-HsHuv=Z+OG2BO?y z(znTivzE0{kSydJhgWVyQAPUWy~swHBS>(@O8P?HEw4@I1HP$1%{bS;%Y&L1lhy67 zn&c^{K^4ymFX+-L3*3H|#)GI^(S^>l_zxaywwq6b8M$vQrds1nGb;QrZ7KGNL<63@ zSDh?%H~~&c=2_FYMe?gDI3U&_03Oc`6!?HED2ScuJfwM*{Twh1ct@%f{a{R#$o^0* zfK3OFLQ@)}vvdaGETj4>=w70b@|_QbH*kk7*BI1WD@-;WDHhVKG!aM3v2 zEz$i_M3z0w>h!{v;Tae-{=s)6IY6{SMB3D4?2vOwX4NJUv^*}AW1)Vh1!2sm81wfVEZa5TkEM9NrvU2#mzn{FyKg^RILcV|h8^{Z`ajx_~ z)@eW)mv`m_%sA-Iix7NkH2ecK|FvRjIZvpQ2k{lUE%l?v4B`T8b4Ug86Y4Y{4d9?wmqL3)-7v&1_=+7=)BMKHZANN?*ku8xxg_X(s zxe^1jnYHn9;v;87r5^3Rp=5mb>`b^~GB*rkhXsJ(SZ_o1Eylf4Da3Fy>-%DyX=yD< zrdVK8O!7;Fk2FhM1qxglw&J{xV;+(k&Wdu5lIvSzY&THfbV({oK;}qXpa$@K2Cwk3 zAZ~QNESkULUBIWTR;bBJV>fk|cEsn{<;=A#L6sMTMT^a(&4hmjU&_NRLI?H7!TKE)_ZsY~*zE`clv- z7K(<2FxcdH z5ZAg)xvaXqMFtA=-CDgHhKl!%f+@OJW1aMOl$PCdjvv((dAyYTJ-*XC6UI5{Wn+W@ zz0Eb(hr%uD&1g<6PO}Eo8H;HQmC&(V2yCLox9E_fw{pvHm3-&Rd$ifr81I_Yo{r(MMYmoFDt2MQleX6agb}cRL@sYD*s)H* zXbfGeKmZsPx2PE`D!j#Oz<$9N#J}O_#-88&YX>+IG-lY;djqec>x+7%gHsi!Mw{c@ z8($8zHIleRaGdNwbB9cyw*H0S#n~1e)?KO~bsW9l6V*fAmzN|z2ZzIHvfTu}9{cH}s+*IF{$2e|pcd#u_RR~yr14dh6 zhCH#gO}O^N_`NEUZhu>_%@`5n<@lY)flR+>Ot&LVIh^xjwH_Us{urX z0xV85NYK%Y`OxHtBKSF%i7T)2JI|IG2Xy;#PW-qU6qw4_7j|VgL|vDbNWLk9WUcJA zWb%vZuw_sISD0HnZ!*x%j#NVo3`SMtNw48=Xskf_nMKUF7SCk^WyHlm&5sr03l-!Y z*_bs+&s@R8{&h*JF>zABa`l#WHYnYk@%Z%1*hb+QpsFXmxV2BO`W^8FN-mC!LpCx5 zz?z`|l&V`KqM;n0pWA(b6JUv!X9==2KR~h$DmDuo94@uTFI$(1HN~}c%Q|<=?tAHJVJ4@TBa8|R5AoX3KQj<1s`D(2(j=}E)`!B|J zp{B3pi|Kl+-!NlY{xQJ9XVcVB>iJVU?8|bXqgLxX+R5*7d{!uMsW>AI@K@^E5h7ZV zm3gYlPd?Jj1fdED#bR8Q-j;pEL#m~B%YFV9T|C-8aJ2KtwBj;|c4J~IFpt!(RQSW5 zOmi19ET5{f*Xj{#%aoXp#rIu(zmsI}K+7g8z+6BZGT)X8IWUCtX!gywO?+q7J?^h_ zp5%>pRl%F=F>bILD92qC!IGP7+vZ>$f(ln%wHruN=(=P?>aby1}IyoBbcMbD;obQ4%ivmkx8xP zKW9?uVoZ+gU@eBLQ@8~4==2Y@V~`S}11!T;pA~i03NG;PP8V_~YLgXl*Cy2nOrZFy z%DvEWyN#j~J$p*J1{e<2;a^S<$Z;f!`im!sH<~(P#yTKAk};>aRiz@IaQyn$(lY$i zs>o*#`FuCv%j?ccAsG-O8K>n22FY2|LEd;O+4Oo{m0W|}(R~|KW+V-&>G4%qnEq5U z`Rs`$H0#u$->^sslgfPm`EQCzvJX-g3^3WdcB5Gkn#`h##M1{Tu0ggYSr8IR$)c9< zj1YA19H(K3LF%(Ih9O{Xhp|JvGI)e_J6toomRvl+rEPNS|F$g|b7HxSQQG zHp(&idtRvZ+Hwwc#ZiJwwQjQsYoG$oSV=B|m>at5lf}aUJ;OCrK8}|Q%ztctzbKv6 zX3OoSlj(fn;IJ=9o%LBWM=RK}s<&y>&Z^o6V^lyvUNntuI$*|D)ZZ=z#TIe1#rf17kgx|_(@ z%J1-1&Gv^FNKKV|9lYY^hK}KMmzBdUHNEWi_he6fm$jZ+B??2ocNqG0tGn}|zG_6oO?6W5kmif6nF3s^M3yLz!cl{p_{at>H z^2w2ZQsAZ{Wd3o9nkX?*W}-p4rb={)e^%QQUg6znzwD*R*gT_8Qv)r{M_W-bvT1c`95$AL_x{#<9BWrzT^llRx= ztR-7hWpjp+KRY2DXwP0hb9K7j$q)E!*2Z~iDLRebO3kHXvrUFx08VnKY&tiH-j4RyO7@zhq51EN zff%sIG0{h_0Y8+lTcwt(I4ngo5L2G0It0MfIZPB+GUoHK278VW9V|C+=X~in^x7Ez zZEV}Cz&C{IwRi{F(Q6V-8JtTg;7>k^<71q2$&~=i>HH%BaW9IKq%$Sg)}NEDe%i=q zUUTO6fUXk_d#+JO7oxyGwx?UZ#LCLOt%ubV&2UrcuiB&;9LIRsS|r!{ab6vpON~={ zybaKUPDB+pB$#B2c$$1j-fz)ODw*$kYFS@|CJm_k zTu~s-dw4NMvi(QX#bOCzp(eE7Pbp|DkBR7jxIqG=VL6ryN`4C%FS5|O3CFUpOj7>} zwGM+=6++H~o#=U%>Kz<&@3Dfb@2@4*HWyw?(ASm#J=1e=Yp3v*`{BiIRq5f1k~fLA zY1-1+^$`3_Z?Lpi1(!EVr{{nWVN+sntW2LU0MNN;GFEAKT?eoW79SYb=Wt8omoi)QT$(x!UjR{K6j%)L}M7)KlsuDV3e!;?6 z)ZxEN43U>(93l%nW1;hB9?jB>MuytbczpbSB1Rcsf^KVAGZZALEr?nt|egUAbSL%x;`GyUu#@wA4o({)4BNX}B!pAX<)ZHaw z7I8n=`CK{Kj1WCX#06;|dcv~1jpN{;^27*)8vF8CNfz8yg^!A0kKIV+c&uOlwvdUJ zrInSDu3D8a;fkeod(4<3;jD8>(>Uq{AJP}(Ndm8Mb91y#Nrr*ckt6!=K?Z#2y%IhAjIj_wH9j7DHQ+13eH%Eq>~Ll?pwe?YHQ|T zT+!b($~BMJQ=G#uZ7R>rC6v*bg|lN@1W}`DKjx32W)a58mfM6wR9b#jDZk666+*>h z$2e(aOUV^gVAd~xP(I9x4sWJI*se}tSrz@g7v({>QA-SpB-jTKanpjC%T}m&JStJY z0ZV8i(aP8GuLx|c@SOA^J}X~AAHPegR&-~bHTA6Ft`rQJd{VwL{chZO2-TIUnIH`- zQF^gj2tW}Q#j$#N(-2_*z#$in>)vrtqdA{u*{|79W}CxKx6_cJUB@4d6;nO4E}4jU zVfl>%iTUVxMr(v^8*6XK0n>EN;8~^0x}rPg;se@6cBAWE4LjhHMLjR}i{p~tUlgVo zXj1~UDS*`Cxi*6vM?dFiyCimJ%BY7eL)=3omZ(*R4Ndu$f9iWvjy6tk9w0M~V<2`f zC8A)P^_2e!NNc)8{{1XzpCkNK++$udo#A(dSWr8q;w4 zxfu}%^(fR*8BPOwrJq@!G;RX~crCJ8MA!G0{jUEdGsVJu6uSU4SVPN9jS23-sE4yO z6c@H(!;ZS{yWsiX_B*%u9GW7tWAr7WyOUm{4(|5ZV%2^>%j?*SJt_)hEA1=EGodT7 z9cPKmEXz5tzW+=h!W*zSJy5b7U=0osjYT}`l^q@7A|+0A3_FhcjU&;zKJRb{9G4Um z-?1kvHNY`1oQ7GWr8;JPcj&PZ9ny$Ux!FprC$oJs1KP)FqjmUy=>f?A#5$ZEm2(g8A`Yti zOB;9&{*2(H@sDaPIzHf^2V#OQ)>;{So`jrl^_$`*`jAq>6}@B*xTbrIjm#;Za%RHR zK<1&a`9tI~z`_!Z=O@~vs+t)lBTkuxRI^5)-Ovt4SwGS%_TsnvW)Mh)rK52DE+_#- zkY#VPlu?VHbFW)`WkN&m=QUlTr2AE4 z<+24%@94?&tovKSS!?R z{_tG5%X>2?pYH!ORSt}JwyC*)mND@3tw9>4%`<|$j%2EUHlLz9ip(M+fAF2g;pqaG zdERQ{&h$|N=_AY>wylH;R#o~ct^=nTyySD`OKZQhS23Hmg-pWbV})=8~kP0D*6*Zh(w_BJH46|@UaNYDs!GM5QucCqI_o3aE+efm74xYg5TIP(FYf(CRnAv$OIKMQ#TB}}TP zHvOYR6Iy%@{>k$imsH7)BJFhaJ!LK8Iq}LqRG>eO%hEpq8>G2t=19pnDb8%Av5?Od z_pn7@J1-UXvc$81?R_9zh>JWvaMeKr z_8V)}=^F(${kR?e^(?Q+G!zjY06{>$zgL8~q)QkFHI!6|>kY<;(w<2JORc-it|;ylK%jMwu%A3$wUddLtIin zGox|9Tae8t_2-HvG`;Ac=g(^ka5NZ=qlS-E>3!P?N>bwAujOIX7|9u$-HV1P*y9?W zH%=%8Vjibq%%+_)(#apzx%Z{1E63V=h;R&a2B=sPY9M}+uOMo5mBP3HMM!xTo=P^u zML2rLiHS;a1JzGt(lo)~^&fnr>1?=1WqVZjNPnabi5h9b8w?V`xQ20z9;>lc7JoGC zFOlaGuV8Q{7h3nHY1R}aUgF+P(rt2BFnrr9mKi}6pum%m?ojr*q^;qS&DgICtMK;o zZE^UkGXfLH?n}-SCCXLf&S%cNmkKH9)RFOLbSKnEbcJZ@NoIXj_<6b+$YUF3EC2u-+ zu9pV0KxoW^EgRWX1e3F& zIkB?5+(FwGg~&xkl+TC6s|+ zazhqhXR;D2(&>yhgWZ}qo32*L^KnyIOvJ3WtA3%Qjf!YW#nX!CDT-YGwbz&K~peWE}A0 zI69Hw&tkRWLChT4JGmHADdt=bUTK9r7_ct80!t~wNksEUi~L<;6niiD46?##7n%J_ z17meI3-^Q@&)7*w^_0AH@QUI!DWZYSa(psIk6XZ2qGm{XxiUuC41;w4ooNjE6WQ+# zG~!&G2R)GyIw-#9+^E1-pAT~E7O5!?Vk?ZYU|({7e((70Pm^r|U+7EKT_o_%~0z;u94c7l$H79YzFfdw+T&dpDj73C2Ly3 z+fVnw!~^0a|C5=MqSNf9@B|emQTNRF>vr2?`5v2HhE>!w1EBfTyOQg4hO$2JR2`ko zj6fOqm_-K*Dk~wrs&%(yBX0e3vOO!Yxaox+&~tHN9P6G_2te1{lGGHR@n$ShH77c! z%fsiV#5slb4=_+%Iu5_`L4Ayv_QK$(uV8OX9}E&CqNl;!lqGLiA=RiYR92({UZN$+ z!6|L0AL?^4H?xnGd#Ao!;-}3tM~?MUv8y)GmF)_)CJ%f!GC3yJ&rNLgBfR6@3%687 zgcE@{v|6A zuPiupT{FJpv)gbLJ;GEh^~E&F|Jkw&Q^3sJI!=B=%=BzWs!(cb!cLG0ts>j91Am*I z;N#-+TjX3I+v3BlWFoPYpi`YZ6n0+xU87VF>0}?DWvS$e94i&Pm`>wd5`VUK^8>E* zfc+9(Uasipl7{9~J(@s-q+`tBDR;5o7QDlV*pU^3PfE^c&iUoQw{Xm=6|!VDJ(jpa zYEorFkGHfW#O~_swTu#_&Fi8xVIBcmP@NR06|GPLgvMw2Ark`qZXDpI@IQhrw4s<-!_D?M$pQlRZBp5qQjD_>V2rE5AzI zj7`V6Bs_PcT-uc@#UV>hMrtBse8}&D(do4t;AghN%b}3^PrYCP!txB=Fn3kZheo6H zF+DN#VgoFMars?I2cFL~)_E_})ro~gyb!YFq6jpVvSM?>M)F>23>FHZX)Gb1@)Olx zGEEjockbhXC`C}YXD8Taaqq%@bm1CjmAqj?PJfHve!jOM#6F~qA5GVnTJ=v^#vn66 zs-I3Km?(~N>$^p(-KKeM{)||IiX)6W?U)DjeX}z4P8UAUIf4EEa1x9yuw65ah8=Qa zWz&z1!juQ1R^REAiDR7R-i$Nkk;dlYpfT6asEv6Vqt-YkK|VStb#s%ep=@zB0Nqpf zMzcT7`__9*T!f;y1ks-jFT*qRTv=r5GCe-cDBvQfIYi$s$-%WV=rG5sS9Nh3Bdc@P zN(AMjYA3`{?$6rbhwib;%taidy!M$g|F?l#lMz|^?=+YJ&g`BdIF z;Spog9(4_8CD=JXPPwA=wbo11YMDo6Z1T7Pj>SL8AoW98?bh%}uCW+nfd;9#K_~he z-qpGDxQyWi#?Lm8%RE%Bv(y-pgjz|zn-RqnS&u0MwhtPdQ&D*s2ZF|X;?|^coY79t zCz%9RjWk;E&}CuKZA5>}cze*^;`@n*yQg|cqcq8hlyhv#MF7!gXv-6UU}NssxPdAP zOjuE{D0x9dd(7_KT492tiTN%HGM~>Sl@hg}zQGo%2XUP1GtNvM-mvHmO{rfRngtFwNS98qyOl>cmoZQ5 z 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

SgwK2cJ=aMGMCNFmR1;eZ=pX{<1wfC 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

Q_hA7~Of? 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 P`62%w3bp4Dyq*>SnRAZ$ From 5efb222dd34ed61bf215fc7ffd5510de2257e1f7 Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Tue, 15 Mar 2022 22:02:38 +0800 Subject: [PATCH 09/33] add half alias --- python/jittor/__init__.py | 20 ++++++++++++++++++++ python/jittor/src/misc/nano_string.cc | 1 + python/jittor/test/test_fp16.py | 6 ++++++ 3 files changed, 27 insertions(+) diff --git a/python/jittor/__init__.py b/python/jittor/__init__.py index 5d9da61d..b5d1bd12 100644 --- a/python/jittor/__init__.py +++ b/python/jittor/__init__.py @@ -1224,6 +1224,24 @@ Arguments of hook are defined as:: def __getattr__(self, key): return object.__getattribute__(self, key) + def float16(self): + '''convert all parameters to float16''' + for p in self.parameters(): + if p.dtype.is_float(): + p.assign(p.float16()) + + def half(self): + '''convert all parameters to float16''' + self.float16() + + def float_auto(self): + '''convert all parameters to float16 or float32 automatically + by jt.flags.auto_mixed_precision_level and jt.flags.amp_reg''' + for p in self.parameters(): + if p.dtype.is_float(): + p.assign(p.float_auto()) + + class Function(Module): ''' Function Module for customized backward operations @@ -1484,6 +1502,8 @@ float = float32 Var.float = Var.float32 double = float64 Var.double = Var.float64 +half = float16 +Var.half = Var.float16 def is_var(v): return isinstance(v, Var) diff --git a/python/jittor/src/misc/nano_string.cc b/python/jittor/src/misc/nano_string.cc index e97523f5..70e01b94 100644 --- a/python/jittor/src/misc/nano_string.cc +++ b/python/jittor/src/misc/nano_string.cc @@ -198,6 +198,7 @@ static void init_ns() { __string_to_ns["sum"] = ns_add; __string_to_ns["min"] = ns_minimum; __string_to_ns["max"] = ns_maximum; + __string_to_ns["half"] = ns_float16; __string_to_ns["float"] = ns_float32; __string_to_ns["double"] = ns_float64; __string_to_ns["int"] = ns_int32; diff --git a/python/jittor/test/test_fp16.py b/python/jittor/test/test_fp16.py index d948e402..fe599386 100644 --- a/python/jittor/test/test_fp16.py +++ b/python/jittor/test/test_fp16.py @@ -269,6 +269,12 @@ class TestFP16(unittest.TestCase): b.sync() assert b.dtype == "float16", b.dtype + def test_module_half(self): + a = jt.nn.Linear(10,10) + assert a.weight.dtype == "float32" + a.half() + assert a.weight.dtype == "float16" + @unittest.skipIf(not jt.compiler.has_cuda, "No CUDA found") From ad57ec890f591ce346b2966756bc7ed0a0b6cd62 Mon Sep 17 00:00:00 2001 From: lixl19 <1905692338@qq.com> Date: Fri, 18 Mar 2022 12:56:24 +0800 Subject: [PATCH 10/33] polish fp16 --- .../extern/cuda/cublas/ops/cublas_batched_matmul_op.cc | 2 +- python/jittor/extern/cuda/cublas/ops/cublas_matmul_op.cc | 2 +- python/jittor/other/code_softmax.py | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/python/jittor/extern/cuda/cublas/ops/cublas_batched_matmul_op.cc b/python/jittor/extern/cuda/cublas/ops/cublas_batched_matmul_op.cc index 47874ef3..e8229c8a 100644 --- a/python/jittor/extern/cuda/cublas/ops/cublas_batched_matmul_op.cc +++ b/python/jittor/extern/cuda/cublas/ops/cublas_batched_matmul_op.cc @@ -89,7 +89,7 @@ void CublasBatchedMatmulOp::jit_prepare(JK& jk) { jk << _CS("[T:") << a->dtype(); jk << _CS("][Trans_a:") << (trans_a ? 'T' : 'N'); jk << _CS("][Trans_b:") << (trans_b ? 'T' : 'N'); - jk << _CS("][op:") << (a->dtype().dsize() == 4 ? 'S' : 'D'); + jk << _CS("][op:") << (a->dtype().dsize() == 2? 'H' : (a->dtype().dsize() == 4 ? 'S' : 'D')); jk << ']'; } diff --git a/python/jittor/extern/cuda/cublas/ops/cublas_matmul_op.cc b/python/jittor/extern/cuda/cublas/ops/cublas_matmul_op.cc index 95de20f7..babcfa1e 100644 --- a/python/jittor/extern/cuda/cublas/ops/cublas_matmul_op.cc +++ b/python/jittor/extern/cuda/cublas/ops/cublas_matmul_op.cc @@ -50,7 +50,7 @@ void CublasMatmulOp::jit_prepare(JK& jk) { jk << _CS("[T:") << a->dtype(); jk << _CS("][Trans_a:") << (trans_a ? 'T' : 'N'); jk << _CS("][Trans_b:") << (trans_b ? 'T' : 'N'); - jk << _CS("][op:") << (a->dtype().dsize() == 4 ? 'S' : 'D'); + jk << _CS("][op:") << (a->dtype().dsize() == 2? 'H' : (a->dtype().dsize() == 4 ? 'S' : 'D')); jk << ']'; } diff --git a/python/jittor/other/code_softmax.py b/python/jittor/other/code_softmax.py index 8534f0cb..837bd648 100644 --- a/python/jittor/other/code_softmax.py +++ b/python/jittor/other/code_softmax.py @@ -100,7 +100,7 @@ __global__ void kernel(pout0_type* x, dout_type* y, out0_type* z, int len) {{ {for_loop} #pragma unroll for (int j=0; j<{ILP}; j++) - v1 += {"vy[i][j];" if log else "vx[i][j]*vy[i][j];"} + v1 += {"float(vy[i][j]);" if log else "float(vx[i][j]*vy[i][j]);"} typedef cub::BlockReduce BlockReduce; __shared__ typename BlockReduce::TempStorage temp_storage; @@ -114,8 +114,8 @@ __global__ void kernel(pout0_type* x, dout_type* y, out0_type* z, int len) {{ #pragma unroll for (int j=0; j<{ILP}; j++) vx[i][j] = { - "vy[i][j] - expf(vx[i][j]) * reduce_var;" if log - else "vx[i][j] * (vy[i][j] - reduce_var);" + "vy[i][j] - in0_type(expf(vx[i][j]) * reduce_var);" if log + else "vx[i][j] * (vy[i][j] - in0_type(reduce_var));" } {for_loop} From 1fa89771c4dcc1fbd9d30d90289b392128afd715 Mon Sep 17 00:00:00 2001 From: lixl19 <1905692338@qq.com> Date: Fri, 18 Mar 2022 16:21:34 +0800 Subject: [PATCH 11/33] polish matmul --- .../cublas/ops/cublas_batched_matmul_op.cc | 28 +++++++++++++------ .../cuda/cublas/ops/cublas_matmul_op.cc | 26 +++++++++++------ 2 files changed, 37 insertions(+), 17 deletions(-) diff --git a/python/jittor/extern/cuda/cublas/ops/cublas_batched_matmul_op.cc b/python/jittor/extern/cuda/cublas/ops/cublas_batched_matmul_op.cc index e8229c8a..6f93e343 100644 --- a/python/jittor/extern/cuda/cublas/ops/cublas_batched_matmul_op.cc +++ b/python/jittor/extern/cuda/cublas/ops/cublas_batched_matmul_op.cc @@ -128,6 +128,18 @@ void CublasBatchedMatmulOp::jit_run() { || b->dtype() == ns_float16 || c->dtype() == ns_float16) { computeType = CUBLAS_COMPUTE_16F; } + #else + cublasGemmAlgo_t algo = CUBLAS_GEMM_DEFAULT; + cudaDataType_t computeType = CUDA_R_32F; + if (use_tensorcore) { + algo = CUBLAS_GEMM_DEFAULT_TENSOR_OP; + } + if (a->dtype() == ns_float16 + || b->dtype() == ns_float16 || c->dtype() == ns_float16) { + computeType = CUDA_R_16F; + algo = CUBLAS_GEMM_DEFAULT_TENSOR_OP; + } + #endif checkCudaErrors(cublasGemmStridedBatchedEx(handle_, CUBLAS_OP_@Trans_b, CUBLAS_OP_@Trans_a, k, n, m, &alpha, @@ -135,15 +147,13 @@ void CublasBatchedMatmulOp::jit_run() { a->ptr(),get_dtype(a->dtype()), '@Trans_a' == 'N' ? m : n, n * m, &beta, c->ptr(),get_dtype(c->dtype()), k, k * n, batch_size,computeType,algo)); - #else - checkCudaErrors(cublas@op@@gemmStridedBatched(handle_, - CUBLAS_OP_@Trans_b, CUBLAS_OP_@Trans_a, - k, n, m, &alpha, - b->ptr(), '@Trans_b' == 'N' ? k : m, k * m, - a->ptr(), '@Trans_a' == 'N' ? m : n, n * m, &beta, - c->ptr(), k, k * n, - batch_size)); - #endif + // checkCudaErrors(cublas@op@@gemmStridedBatched(handle_, + // CUBLAS_OP_@Trans_b, CUBLAS_OP_@Trans_a, + // k, n, m, &alpha, + // b->ptr(), '@Trans_b' == 'N' ? k : m, k * m, + // a->ptr(), '@Trans_a' == 'N' ? m : n, n * m, &beta, + // c->ptr(), k, k * n, + // batch_size)); } #endif #endif // JIT diff --git a/python/jittor/extern/cuda/cublas/ops/cublas_matmul_op.cc b/python/jittor/extern/cuda/cublas/ops/cublas_matmul_op.cc index babcfa1e..a6708225 100644 --- a/python/jittor/extern/cuda/cublas/ops/cublas_matmul_op.cc +++ b/python/jittor/extern/cuda/cublas/ops/cublas_matmul_op.cc @@ -85,6 +85,18 @@ void CublasMatmulOp::jit_run() { || b->dtype() == ns_float16 || c->dtype() == ns_float16) { computeType = CUBLAS_COMPUTE_16F; } + #else + cublasGemmAlgo_t algo = CUBLAS_GEMM_DEFAULT; + cudaDataType_t computeType = CUDA_R_32F; + if (use_tensorcore) { + algo = CUBLAS_GEMM_DEFAULT_TENSOR_OP; + } + if (a->dtype() == ns_float16 + || b->dtype() == ns_float16 || c->dtype() == ns_float16) { + computeType = CUDA_R_16F; + algo = CUBLAS_GEMM_DEFAULT_TENSOR_OP; + } + #endif checkCudaErrors(cublasGemmEx(handle_, CUBLAS_OP_@Trans_b, CUBLAS_OP_@Trans_a, k, n, m, &alpha, @@ -92,15 +104,13 @@ void CublasMatmulOp::jit_run() { a->ptr(),get_dtype(a->dtype()), '@Trans_a' == 'N' ? m : n, &beta, c->ptr(),get_dtype(c->dtype()), k, computeType, algo)); - #else - checkCudaErrors(cublas@op@@gemm(handle_, - CUBLAS_OP_@Trans_b, CUBLAS_OP_@Trans_a, - k, n, m, &alpha, - b->ptr(), '@Trans_b' == 'N' ? k : m, - a->ptr(), '@Trans_a' == 'N' ? m : n, &beta, - c->ptr(), k)); + // checkCudaErrors(cublas@op@@gemm(handle_, + // CUBLAS_OP_@Trans_b, CUBLAS_OP_@Trans_a, + // k, n, m, &alpha, + // b->ptr(), '@Trans_b' == 'N' ? k : m, + // a->ptr(), '@Trans_a' == 'N' ? m : n, &beta, + // c->ptr(), k)); - #endif } #endif // JIT From e7bb2545d3956380a8ecbfe0334ca72b91d41fde Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Mon, 21 Mar 2022 17:48:50 +0800 Subject: [PATCH 12/33] add acl backend --- python/jittor/__init__.py | 2 +- python/jittor/compiler.py | 22 +- python/jittor/extern/acl/acl_compiler.py | 54 +++++ python/jittor/extern/acl/acl_error_code.cc | 228 ++++++++++++++++++ python/jittor/extern/acl/acl_jittor.cc | 186 ++++++++++++++ python/jittor/extern/acl/acl_jittor.h | 19 ++ .../extern/cuda/cutt/ops/cutt_transpose_op.cc | 2 +- python/jittor/extern/cuda/inc/helper_cuda.h | 5 + python/jittor/src/init.cc | 2 +- python/jittor/src/jit_compiler.cc | 3 + python/jittor/src/mem/allocator.cc | 2 +- python/jittor/src/mem/mem_info.cc | 12 +- python/jittor/src/misc/cuda_flags.h | 2 +- python/jittor/src/misc/nan_checker.cc | 4 +- python/jittor/src/misc/string_view_map.h | 6 +- python/jittor/src/ops/candidate_op.cc | 2 +- python/jittor/src/ops/copy_op.cc | 7 +- python/jittor/src/ops/fetch_op.cc | 7 +- python/jittor/src/ops/setitem_op.cc | 2 +- python/jittor/src/ops/where_op.cc | 2 +- python/jittor/src/profiler/profiler.cc | 4 +- python/jittor/src/pyjt/py_converter.h | 6 +- python/jittor/src/types.h | 2 + python/jittor/src/utils/str_utils.cc | 118 +++++++++ python/jittor/src/utils/str_utils.h | 6 + python/jittor/test/test_acl.py | 31 +++ python/jittor_utils/__init__.py | 79 ++++++ 27 files changed, 785 insertions(+), 30 deletions(-) create mode 100644 python/jittor/extern/acl/acl_compiler.py create mode 100644 python/jittor/extern/acl/acl_error_code.cc create mode 100644 python/jittor/extern/acl/acl_jittor.cc create mode 100644 python/jittor/extern/acl/acl_jittor.h create mode 100644 python/jittor/test/test_acl.py diff --git a/python/jittor/__init__.py b/python/jittor/__init__.py index b5d1bd12..6b56c972 100644 --- a/python/jittor/__init__.py +++ b/python/jittor/__init__.py @@ -9,7 +9,7 @@ # file 'LICENSE.txt', which is part of this source code package. # *************************************************************** -__version__ = '1.3.1.48' +__version__ = '1.3.1.49' from jittor_utils import lock with lock.lock_scope(): ori_int = int diff --git a/python/jittor/compiler.py b/python/jittor/compiler.py index 54409ac5..a7024a40 100644 --- a/python/jittor/compiler.py +++ b/python/jittor/compiler.py @@ -228,13 +228,18 @@ def gen_jit_flags(): continue visit[name] = 1 jit_declares.append(f"DECLARE_FLAG({type}, {name});") + alias = [] + if name == "use_cuda": + alias = ["use_device", "use_acl"] + get_names = ",".join(["__get__"+a for a in [name]+alias]) + set_names = ",".join(["__set__"+a for a in [name]+alias]) flags_defs.append(f""" /* {name}(type:{type}, default:{default}): {doc} */ - // @pyjt(__get__{name}) + // @pyjt({get_names}) {type} _get_{name}() {{ return {name}; }} - // @pyjt(__set__{name}) + // @pyjt({set_names}) void _set_{name}({type} v) {{ set_{name}(v); }} - {f'''// @pyjt(__set__{name}) + {f'''// @pyjt({set_names}) void _set_{name}(bool v) {{ set_{name}(v); }} ''' if type=="int" else ""} """) @@ -843,7 +848,7 @@ def check_cuda(): # this nvcc is install by package manager cuda_lib = "/usr/lib/x86_64-linux-gnu" cuda_include2 = os.path.join(jittor_path, "extern","cuda","inc") - cc_flags += f" -DHAS_CUDA -I\"{cuda_include}\" -I\"{cuda_include2}\" " + cc_flags += f" -DHAS_CUDA -DIS_CUDA -I\"{cuda_include}\" -I\"{cuda_include2}\" " if os.name == 'nt': cuda_lib = os.path.abspath(os.path.join(cuda_dir, "..", "lib", "x64")) # cc_flags += f" \"{cuda_lib}\\cudart.lib\" " @@ -1212,6 +1217,14 @@ if has_cuda: return nvcc_flags nvcc_flags = convert_nvcc_flags(nvcc_flags) +# from .acl_compiler import check_acl +from .extern.acl import acl_compiler +jit_utils.add_backend(acl_compiler) + +for mod in jit_utils.backends: + if mod.check(): + break + # build core gen_jit_flags() gen_jit_tests() @@ -1237,6 +1250,7 @@ files4 = [ f[len(jittor_path)+1:] for f in files4 ] at_beginning = [ "src/ops/op_utils.cc", "src/ops/op_register.cc", + "src/init.cc", "src/event_queue.cc", "src/mem/allocator/sfrl_allocator.cc", "src/mem/allocator.cc", diff --git a/python/jittor/extern/acl/acl_compiler.py b/python/jittor/extern/acl/acl_compiler.py new file mode 100644 index 00000000..289ea67c --- /dev/null +++ b/python/jittor/extern/acl/acl_compiler.py @@ -0,0 +1,54 @@ +# *************************************************************** +# Copyright (c) 2021 Jittor. All Rights Reserved. +# Maintainers: Dun Liang . +# This file is subject to the terms and conditions defined in +# file 'LICENSE.txt', which is part of this source code package. +# *************************************************************** +import os +from jittor_utils import env_or_try_find +import jittor_utils +import ctypes +import glob + +has_acl = 0 +cc_flags = "" +tikcc_path = env_or_try_find('tikcc_path', 'tikcc') +dlopen_flags = os.RTLD_NOW | os.RTLD_GLOBAL + +def install(): + import jittor.compiler as compiler + global has_acl, cc_flags + acl_compiler_home = os.path.dirname(__file__) + cc_files = sorted(glob.glob(acl_compiler_home+"/**/*.cc", recursive=True)) + cc_flags += f" -DHAS_CUDA -DIS_ACL -I/usr/local/Ascend/runtime/include -I/usr/local/Ascend/driver/include -L/usr/local/Ascend/compiler/lib64 -L/usr/local/Ascend/runtime/lib64 -I{acl_compiler_home} -ltikc_runtime -lascendcl " + ctypes.CDLL("libascendcl.so", dlopen_flags) + jittor_utils.LOG.i("ACL detected") + + mod = jittor_utils.compile_module(''' +#include "common.h" +namespace jittor { +// @pyjt(process) +string process_acl(const string& src, const string& name, const map& kargs); +}''', compiler.cc_flags + " " + " ".join(cc_files) + cc_flags) + jittor_utils.process_jittor_source("acl", mod.process) + + has_acl = 1 + + +def check(): + import jittor.compiler as compiler + global has_acl, cc_flags + if tikcc_path: + try: + install() + except Exception as e: + jittor_utils.LOG.w(f"load ACL failed, exception: {e}") + has_acl = 0 + compiler.has_acl = has_acl + compiler.tikcc_path = tikcc_path + if not has_acl: return False + compiler.cc_flags += cc_flags + compiler.nvcc_path = tikcc_path + compiler.nvcc_flags = compiler.cc_flags.replace("-std=c++14","") + return True + diff --git a/python/jittor/extern/acl/acl_error_code.cc b/python/jittor/extern/acl/acl_error_code.cc new file mode 100644 index 00000000..d6163185 --- /dev/null +++ b/python/jittor/extern/acl/acl_error_code.cc @@ -0,0 +1,228 @@ +// *************************************************************** +// Copyright (c) 2021 Jittor. All Rights Reserved. +// Maintainers: Dun Liang . +// This file is subject to the terms and conditions defined in +// file 'LICENSE.txt', which is part of this source code package. +// *************************************************************** + +#include "common.h" +using std::string; +using std::unordered_map; + +typedef int aclError; + +static inline unordered_map gen_map(string s) { + unordered_map smap; + for (int i=0; i acl_error_map = gen_map(R"( +// from acl_base.h +static const int ACL_ERROR_INVALID_PARAM = 100000; +static const int ACL_ERROR_UNINITIALIZE = 100001; +static const int ACL_ERROR_REPEAT_INITIALIZE = 100002; +static const int ACL_ERROR_INVALID_FILE = 100003; +static const int ACL_ERROR_WRITE_FILE = 100004; +static const int ACL_ERROR_INVALID_FILE_SIZE = 100005; +static const int ACL_ERROR_PARSE_FILE = 100006; +static const int ACL_ERROR_FILE_MISSING_ATTR = 100007; +static const int ACL_ERROR_FILE_ATTR_INVALID = 100008; +static const int ACL_ERROR_INVALID_DUMP_CONFIG = 100009; +static const int ACL_ERROR_INVALID_PROFILING_CONFIG = 100010; +static const int ACL_ERROR_INVALID_MODEL_ID = 100011; +static const int ACL_ERROR_DESERIALIZE_MODEL = 100012; +static const int ACL_ERROR_PARSE_MODEL = 100013; +static const int ACL_ERROR_READ_MODEL_FAILURE = 100014; +static const int ACL_ERROR_MODEL_SIZE_INVALID = 100015; +static const int ACL_ERROR_MODEL_MISSING_ATTR = 100016; +static const int ACL_ERROR_MODEL_INPUT_NOT_MATCH = 100017; +static const int ACL_ERROR_MODEL_OUTPUT_NOT_MATCH = 100018; +static const int ACL_ERROR_MODEL_NOT_DYNAMIC = 100019; +static const int ACL_ERROR_OP_TYPE_NOT_MATCH = 100020; +static const int ACL_ERROR_OP_INPUT_NOT_MATCH = 100021; +static const int ACL_ERROR_OP_OUTPUT_NOT_MATCH = 100022; +static const int ACL_ERROR_OP_ATTR_NOT_MATCH = 100023; +static const int ACL_ERROR_OP_NOT_FOUND = 100024; +static const int ACL_ERROR_OP_LOAD_FAILED = 100025; +static const int ACL_ERROR_UNSUPPORTED_DATA_TYPE = 100026; +static const int ACL_ERROR_FORMAT_NOT_MATCH = 100027; +static const int ACL_ERROR_BIN_SELECTOR_NOT_REGISTERED = 100028; +static const int ACL_ERROR_KERNEL_NOT_FOUND = 100029; +static const int ACL_ERROR_BIN_SELECTOR_ALREADY_REGISTERED = 100030; +static const int ACL_ERROR_KERNEL_ALREADY_REGISTERED = 100031; +static const int ACL_ERROR_INVALID_QUEUE_ID = 100032; +static const int ACL_ERROR_REPEAT_SUBSCRIBE = 100033; +static const int ACL_ERROR_STREAM_NOT_SUBSCRIBE = 100034; +static const int ACL_ERROR_THREAD_NOT_SUBSCRIBE = 100035; +static const int ACL_ERROR_WAIT_CALLBACK_TIMEOUT = 100036; +static const int ACL_ERROR_REPEAT_FINALIZE = 100037; +static const int ACL_ERROR_NOT_STATIC_AIPP = 100038; +static const int ACL_ERROR_COMPILING_STUB_MODE = 100039; +static const int ACL_ERROR_GROUP_NOT_SET = 100040; +static const int ACL_ERROR_GROUP_NOT_CREATE = 100041; +static const int ACL_ERROR_PROF_ALREADY_RUN = 100042; +static const int ACL_ERROR_PROF_NOT_RUN = 100043; +static const int ACL_ERROR_DUMP_ALREADY_RUN = 100044; +static const int ACL_ERROR_DUMP_NOT_RUN = 100045; +static const int ACL_ERROR_PROF_REPEAT_SUBSCRIBE = 148046; +static const int ACL_ERROR_PROF_API_CONFLICT = 148047; +static const int ACL_ERROR_INVALID_MAX_OPQUEUE_NUM_CONFIG = 148048; +static const int ACL_ERROR_INVALID_OPP_PATH = 148049; +static const int ACL_ERROR_OP_UNSUPPORTED_DYNAMIC = 148050; +static const int ACL_ERROR_RELATIVE_RESOURCE_NOT_CLEARED = 148051; + +static const int ACL_ERROR_BAD_ALLOC = 200000; +static const int ACL_ERROR_API_NOT_SUPPORT = 200001; +static const int ACL_ERROR_INVALID_DEVICE = 200002; +static const int ACL_ERROR_MEMORY_ADDRESS_UNALIGNED = 200003; +static const int ACL_ERROR_RESOURCE_NOT_MATCH = 200004; +static const int ACL_ERROR_INVALID_RESOURCE_HANDLE = 200005; +static const int ACL_ERROR_FEATURE_UNSUPPORTED = 200006; +static const int ACL_ERROR_PROF_MODULES_UNSUPPORTED = 200007; + +static const int ACL_ERROR_STORAGE_OVER_LIMIT = 300000; + +static const int ACL_ERROR_INTERNAL_ERROR = 500000; +static const int ACL_ERROR_FAILURE = 500001; +static const int ACL_ERROR_GE_FAILURE = 500002; +static const int ACL_ERROR_RT_FAILURE = 500003; +static const int ACL_ERROR_DRV_FAILURE = 500004; +static const int ACL_ERROR_PROFILING_FAILURE = 500005; + +// from ge_error_codes.h +static const uint32_t ACL_ERROR_GE_PARAM_INVALID = 145000U; +static const uint32_t ACL_ERROR_GE_EXEC_NOT_INIT = 145001U; +static const uint32_t ACL_ERROR_GE_EXEC_MODEL_PATH_INVALID = 145002U; +static const uint32_t ACL_ERROR_GE_EXEC_MODEL_ID_INVALID = 145003U; +static const uint32_t ACL_ERROR_GE_EXEC_MODEL_DATA_SIZE_INVALID = 145006U; +static const uint32_t ACL_ERROR_GE_EXEC_MODEL_ADDR_INVALID = 145007U; +static const uint32_t ACL_ERROR_GE_EXEC_MODEL_QUEUE_ID_INVALID = 145008U; +static const uint32_t ACL_ERROR_GE_EXEC_LOAD_MODEL_REPEATED = 145009U; +static const uint32_t ACL_ERROR_GE_DYNAMIC_INPUT_ADDR_INVALID = 145011U; +static const uint32_t ACL_ERROR_GE_DYNAMIC_INPUT_LENGTH_INVALID = 145012U; +static const uint32_t ACL_ERROR_GE_DYNAMIC_BATCH_SIZE_INVALID = 145013U; +static const uint32_t ACL_ERROR_GE_AIPP_BATCH_EMPTY = 145014U; +static const uint32_t ACL_ERROR_GE_AIPP_NOT_EXIST = 145015U; +static const uint32_t ACL_ERROR_GE_AIPP_MODE_INVALID = 145016U; +static const uint32_t ACL_ERROR_GE_OP_TASK_TYPE_INVALID = 145017U; +static const uint32_t ACL_ERROR_GE_OP_KERNEL_TYPE_INVALID = 145018U; +static const uint32_t ACL_ERROR_GE_PLGMGR_PATH_INVALID = 145019U; +static const uint32_t ACL_ERROR_GE_FORMAT_INVALID = 145020U; +static const uint32_t ACL_ERROR_GE_SHAPE_INVALID = 145021U; +static const uint32_t ACL_ERROR_GE_DATATYPE_INVALID = 145022U; +static const uint32_t ACL_ERROR_GE_MEMORY_ALLOCATION = 245000U; +static const uint32_t ACL_ERROR_GE_MEMORY_OPERATE_FAILED = 245001U; +static const uint32_t ACL_ERROR_GE_INTERNAL_ERROR = 545000U; +static const uint32_t ACL_ERROR_GE_LOAD_MODEL = 545001U; +static const uint32_t ACL_ERROR_GE_EXEC_LOAD_MODEL_PARTITION_FAILED = 545002U; +static const uint32_t ACL_ERROR_GE_EXEC_LOAD_WEIGHT_PARTITION_FAILED = 545003U; +static const uint32_t ACL_ERROR_GE_EXEC_LOAD_TASK_PARTITION_FAILED = 545004U; +static const uint32_t ACL_ERROR_GE_EXEC_LOAD_KERNEL_PARTITION_FAILED = 545005U; +static const uint32_t ACL_ERROR_GE_EXEC_RELEASE_MODEL_DATA = 545006U; +static const uint32_t ACL_ERROR_GE_COMMAND_HANDLE = 545007U; +static const uint32_t ACL_ERROR_GE_GET_TENSOR_INFO = 545008U; +static const uint32_t ACL_ERROR_GE_UNLOAD_MODEL = 545009U; + + +static const int32_t ACL_ERROR_RT_PARAM_INVALID = 107000; // param invalid +static const int32_t ACL_ERROR_RT_INVALID_DEVICEID = 107001; // invalid device id +static const int32_t ACL_ERROR_RT_CONTEXT_NULL = 107002; // current context null +static const int32_t ACL_ERROR_RT_STREAM_CONTEXT = 107003; // stream not in current context +static const int32_t ACL_ERROR_RT_MODEL_CONTEXT = 107004; // model not in current context +static const int32_t ACL_ERROR_RT_STREAM_MODEL = 107005; // stream not in model +static const int32_t ACL_ERROR_RT_EVENT_TIMESTAMP_INVALID = 107006; // event timestamp invalid +static const int32_t ACL_ERROR_RT_EVENT_TIMESTAMP_REVERSAL = 107007; // event timestamp reversal +static const int32_t ACL_ERROR_RT_ADDR_UNALIGNED = 107008; // memory address unaligned +static const int32_t ACL_ERROR_RT_FILE_OPEN = 107009; // open file failed +static const int32_t ACL_ERROR_RT_FILE_WRITE = 107010; // write file failed +static const int32_t ACL_ERROR_RT_STREAM_SUBSCRIBE = 107011; // error subscribe stream +static const int32_t ACL_ERROR_RT_THREAD_SUBSCRIBE = 107012; // error subscribe thread +static const int32_t ACL_ERROR_RT_GROUP_NOT_SET = 107013; // group not set +static const int32_t ACL_ERROR_RT_GROUP_NOT_CREATE = 107014; // group not create +static const int32_t ACL_ERROR_RT_STREAM_NO_CB_REG = 107015; // callback not register to stream +static const int32_t ACL_ERROR_RT_INVALID_MEMORY_TYPE = 107016; // invalid memory type +static const int32_t ACL_ERROR_RT_INVALID_HANDLE = 107017; // invalid handle +static const int32_t ACL_ERROR_RT_INVALID_MALLOC_TYPE = 107018; // invalid malloc type +static const int32_t ACL_ERROR_RT_WAIT_TIMEOUT = 107019; // wait timeout + +static const int32_t ACL_ERROR_RT_FEATURE_NOT_SUPPORT = 207000; // feature not support +static const int32_t ACL_ERROR_RT_MEMORY_ALLOCATION = 207001; // memory allocation error +static const int32_t ACL_ERROR_RT_MEMORY_FREE = 207002; // memory free error +static const int32_t ACL_ERROR_RT_AICORE_OVER_FLOW = 207003; // aicore over flow +static const int32_t ACL_ERROR_RT_NO_DEVICE = 207004; // no device +static const int32_t ACL_ERROR_RT_RESOURCE_ALLOC_FAIL = 207005; // resource alloc fail +static const int32_t ACL_ERROR_RT_NO_PERMISSION = 207006; // no permission +static const int32_t ACL_ERROR_RT_NO_EVENT_RESOURCE = 207007; // no event resource +static const int32_t ACL_ERROR_RT_NO_STREAM_RESOURCE = 207008; // no stream resource +static const int32_t ACL_ERROR_RT_NO_NOTIFY_RESOURCE = 207009; // no notify resource +static const int32_t ACL_ERROR_RT_NO_MODEL_RESOURCE = 207010; // no model resource +static const int32_t ACL_ERROR_RT_NO_CDQ_RESOURCE = 207011; // no cdq resource +static const int32_t ACL_ERROR_RT_OVER_LIMIT = 207012; // over limit +static const int32_t ACL_ERROR_RT_QUEUE_EMPTY = 207013; // queue is empty +static const int32_t ACL_ERROR_RT_QUEUE_FULL = 207014; // queue is full +static const int32_t ACL_ERROR_RT_REPEATED_INIT = 207015; // repeated init +static const int32_t ACL_ERROR_RT_AIVEC_OVER_FLOW = 207016; // aivec over flow + +static const int32_t ACL_ERROR_RT_INTERNAL_ERROR = 507000; // runtime internal error +static const int32_t ACL_ERROR_RT_TS_ERROR = 507001; // ts internel error +static const int32_t ACL_ERROR_RT_STREAM_TASK_FULL = 507002; // task full in stream +static const int32_t ACL_ERROR_RT_STREAM_TASK_EMPTY = 507003; // task empty in stream +static const int32_t ACL_ERROR_RT_STREAM_NOT_COMPLETE = 507004; // stream not complete +static const int32_t ACL_ERROR_RT_END_OF_SEQUENCE = 507005; // end of sequence +static const int32_t ACL_ERROR_RT_EVENT_NOT_COMPLETE = 507006; // event not complete +static const int32_t ACL_ERROR_RT_CONTEXT_RELEASE_ERROR = 507007; // context release error +static const int32_t ACL_ERROR_RT_SOC_VERSION = 507008; // soc version error +static const int32_t ACL_ERROR_RT_TASK_TYPE_NOT_SUPPORT = 507009; // task type not support +static const int32_t ACL_ERROR_RT_LOST_HEARTBEAT = 507010; // ts lost heartbeat +static const int32_t ACL_ERROR_RT_MODEL_EXECUTE = 507011; // model execute failed +static const int32_t ACL_ERROR_RT_REPORT_TIMEOUT = 507012; // report timeout +static const int32_t ACL_ERROR_RT_SYS_DMA = 507013; // sys dma error +static const int32_t ACL_ERROR_RT_AICORE_TIMEOUT = 507014; // aicore timeout +static const int32_t ACL_ERROR_RT_AICORE_EXCEPTION = 507015; // aicore exception +static const int32_t ACL_ERROR_RT_AICORE_TRAP_EXCEPTION = 507016; // aicore trap exception +static const int32_t ACL_ERROR_RT_AICPU_TIMEOUT = 507017; // aicpu timeout +static const int32_t ACL_ERROR_RT_AICPU_EXCEPTION = 507018; // aicpu exception +static const int32_t ACL_ERROR_RT_AICPU_DATADUMP_RSP_ERR = 507019; // aicpu datadump response error +static const int32_t ACL_ERROR_RT_AICPU_MODEL_RSP_ERR = 507020; // aicpu model operate response error +static const int32_t ACL_ERROR_RT_PROFILING_ERROR = 507021; // profiling error +static const int32_t ACL_ERROR_RT_IPC_ERROR = 507022; // ipc error +static const int32_t ACL_ERROR_RT_MODEL_ABORT_NORMAL = 507023; // model abort normal +static const int32_t ACL_ERROR_RT_KERNEL_UNREGISTERING = 507024; // kernel unregistering +static const int32_t ACL_ERROR_RT_RINGBUFFER_NOT_INIT = 507025; // ringbuffer not init +static const int32_t ACL_ERROR_RT_RINGBUFFER_NO_DATA = 507026; // ringbuffer no data +static const int32_t ACL_ERROR_RT_KERNEL_LOOKUP = 507027; // kernel lookup error +static const int32_t ACL_ERROR_RT_KERNEL_DUPLICATE = 507028; // kernel register duplicate +static const int32_t ACL_ERROR_RT_DEBUG_REGISTER_FAIL = 507029; // debug register failed +static const int32_t ACL_ERROR_RT_DEBUG_UNREGISTER_FAIL = 507030; // debug unregister failed +static const int32_t ACL_ERROR_RT_LABEL_CONTEXT = 507031; // label not in current context +static const int32_t ACL_ERROR_RT_PROGRAM_USE_OUT = 507032; // program register num use out +static const int32_t ACL_ERROR_RT_DEV_SETUP_ERROR = 507033; // device setup error +static const int32_t ACL_ERROR_RT_VECTOR_CORE_TIMEOUT = 507034; // vector core timeout +static const int32_t ACL_ERROR_RT_VECTOR_CORE_EXCEPTION = 507035; // vector core exception +static const int32_t ACL_ERROR_RT_VECTOR_CORE_TRAP_EXCEPTION = 507036; // vector core trap exception +static const int32_t ACL_ERROR_RT_CDQ_BATCH_ABNORMAL = 507037; // cdq alloc batch abnormal +static const int32_t ACL_ERROR_RT_DIE_MODE_CHANGE_ERROR = 507038; // can not change die mode +static const int32_t ACL_ERROR_RT_DIE_SET_ERROR = 507039; // single die mode can not set die +static const int32_t ACL_ERROR_RT_INVALID_DIEID = 507040; // invalid die id +static const int32_t ACL_ERROR_RT_DIE_MODE_NOT_SET = 507041; // die mode not set + +static const int32_t ACL_ERROR_RT_DRV_INTERNAL_ERROR = 507899; // drv internal error +static const int32_t ACL_ERROR_RT_AICPU_INTERNAL_ERROR = 507900; // aicpu internal error +static const int32_t ACL_ERROR_RT_SOCKET_CLOSE = 507901; // hdc disconnect + +)"); + if (acl_error_map.count(error)) + return acl_error_map[error]; + return "unknown " + std::to_string((int)error); +} \ No newline at end of file diff --git a/python/jittor/extern/acl/acl_jittor.cc b/python/jittor/extern/acl/acl_jittor.cc new file mode 100644 index 00000000..a48d39e6 --- /dev/null +++ b/python/jittor/extern/acl/acl_jittor.cc @@ -0,0 +1,186 @@ +// *************************************************************** +// Copyright (c) 2021 Jittor. All Rights Reserved. +// Maintainers: Dun Liang . +// This file is subject to the terms and conditions defined in +// file 'LICENSE.txt', which is part of this source code package. +// *************************************************************** +#include "acl_jittor.h" +#include "utils/str_utils.h" +#include +#include + +namespace jittor { + +uint64_t acl_jittor_tid; +int acl_jittor_thread_running=0; +aclrtContext acl_jittor_context; + +#define CHECK_ACL(x) ASSERTop(x,==,0) + +static void* acl_jittor_process_callback(void*) { + acl_jittor_thread_running = 1; + int deviceId = 0; + CHECK_ACL(aclrtSetCurrentContext(acl_jittor_context)); + + while (acl_jittor_thread_running) { + // LOGir << "acl_jittor_process_callback"; + auto ret = aclrtProcessReport(1000); + if (ret) { + if (acl_jittor_thread_running && ret != ACL_ERROR_RT_REPORT_TIMEOUT) + LOGir << "aclrtProcessReport:" << ret << acl_error_to_string(ret); + break; + } + } + acl_jittor_thread_running = 0; + return (void*)0; +} + +// void aaa(void*) { +// LOGir << "haha"; +// } + +struct acl_jittor_initer { + +acl_jittor_initer() { + CHECK_ACL(aclInit(nullptr)); + uint device_count = 0; + // 获取可用的Device数量 + CHECK_ACL(aclrtGetDeviceCount(&device_count)); + LOGi << "Found ACL device number:" << device_count; + CHECK_ACL(aclrtSetDevice(0)); + CHECK_ACL(aclrtCreateContext(&acl_jittor_context, 0)); + CHECK_ACL(aclrtSetCurrentContext(acl_jittor_context)); + + pthread_create(&acl_jittor_tid, nullptr, acl_jittor_process_callback, 0); + + // subscribe for default stream + CHECK_ACL(aclrtSubscribeReport(acl_jittor_tid,0)); + + // simple callback test + // aclrtStream stream; + // CHECK_ACL(aclrtCreateStream(&stream)); + // CHECK_ACL(aclrtSubscribeReport(acl_jittor_tid,stream)); + // CHECK_ACL(aclrtLaunchCallback((aclrtCallback)&aaa, 0, ACL_CALLBACK_NO_BLOCK, stream)); + // CHECK_ACL(aclrtLaunchCallback((aclrtCallback)&aaa, 0, ACL_CALLBACK_NO_BLOCK, 0)); +} + +~acl_jittor_initer() { + acl_jittor_thread_running = 0; + CHECK_ACL(aclrtUnSubscribeReport(acl_jittor_tid,0)); + CHECK_ACL(aclrtDestroyContext(acl_jittor_context)); + CHECK_ACL(aclFinalize()); +} + +} _acl_jittor_initer; + +string process_acl(const string& src, const string& name, const map& kargs) { + auto tokens = token_split(src); + int edit = 0; + for (int i=0; i=5 && token[4] >= 'A' && token[4] <= 'Z') { + if (token == "cudaGetDeviceCount") { + token_replace(tokens, i, "($1);", "((uint*)$1);"); + } else if (token == "cudaLaunchHostFunc") { + // ACL_CALLBACK_BLOCK for 310 + token_replace(tokens, i, "LaunchHostFunc($1,$2,$3)", + "LaunchCallback($2,$3,ACL_CALLBACK_NO_BLOCK,$1)"); + } else if (token == "cudaMemcpy") + token_replace(tokens, i, "cudaMemcpy($1,$2,$3,", + "aclrtMemcpy($1,$3,$2,$3,"); + else if (token == "cudaMemcpyAsync") + token_replace(tokens, i, "cudaMemcpyAsync($1,$2,$3,", + "aclrtMemcpyAsync($1,$3,$2,$3,"); + else if (token == "cudaMemcpyDeviceToHost") token = "ACL_MEMCPY_DEVICE_TO_HOST"; + else if (token == "cudaMemcpyHostToDevice") token = "ACL_MEMCPY_HOST_TO_DEVICE"; + else if (token == "cudaMemcpyDeviceToDevice") token = "ACL_MEMCPY_DEVICE_TO_DEVICE"; + else if (token == "cudaMallocManaged" || token == "cudaMalloc") { + // unified address not supported + token = "aclrtMalloc"; + token_replace(tokens, i, "($1,$2)", + "($1,$2,ACL_MEM_MALLOC_HUGE_FIRST)"); + } else if (token == "cudaMemGetInfo") + token_replace(tokens, i, "cudaMemGetInfo($1,$2)", + "aclrtGetMemInfo(ACL_DDR_MEM,$1,$2)"); + else if (token == "cudaGetLastError") + token_replace(tokens, i, "cudaGetLastError()", "0"); + else if (token == "cudaStreamCreateWithFlags") + token_replace(tokens, i-1, + "(cudaStreamCreateWithFlags($1,$2));", + "(aclrtCreateStream($1)); checkAclErrors(aclrtSubscribeReport(acl_jittor_tid,*$1));"); + else if (token == "cudaEventCreate") + token_replace(tokens, i, + "cudaEventCreate($1,$2)", + "aclrtCreateEvent($1)"); + else if (token == "cudaDeviceSynchronize") + token = "aclrtSynchronizeDevice"; + else if (token == "cudaStreamDestroy") + token_replace(tokens, i, "cudaStreamDestroy($1)", + "(aclrtUnSubscribeReport(acl_jittor_tid,$1), aclrtDestroyStream($1))"); + else if (token == "cudaEventDestroy") + token = "aclrtDestroyEvent"; + else if (token == "cudaEventRecord") + token = "aclrtRecordEvent"; + else if (token == "cudaStreamWaitEvent") + token_replace(tokens, i, + "cudaStreamWaitEvent($1,$2,$3)", + "aclrtStreamWaitEvent($1,$2)"); + + if (token.size() && token[0] == 'c') + token = "aclrt" + token.substr(4); + if (endswith(token, "_t")) + token = token.substr(0, token.size()-2); + edit ++; + } + } else + if (token == "_cudaGetErrorEnum") { + token_replace(tokens, i, "_cudaGetErrorEnum($1)", "(acl_error_to_string($1))"); + edit ++; + } else + if (token == "checkCudaErrors") + token = "checkAclErrors"; + else if (token == "JPU") { + edit ++; + string new_code; + if (tokens[i+2] == "op_compiler") + token_replace(tokens, i, + "JPU(op_compiler($1,$2,$3))", + "acl_jittor_op_compiler($1,$2,$3)"); + else if (tokens[i+2] == "header") + new_code = "#include \"acl_jittor.h\""; + if (new_code.size()) + token_replace(tokens, i, "JPU($1)", new_code); + } else if (token == "use_cuda_managed_allocator" && tokens[i+1][0]==',') { + tokens[i+2] = "0"; // disable unified address + } + } + if (!edit) return src; + return join(tokens, ""); +} + +void acl_jittor_op_compiler(string& filename, string& src, bool is_acl) { + if (!is_acl) return; + filename = replace(filename, ".cc", ".tikcc"); + // LOGir << filename; + string new_src = process_acl(src, "", {}); + new_src = replace(new_src, R"(#include "misc/cuda_atomic.h")", ""); + new_src = replace(new_src, R"(#include "misc/cuda_limits.h")", ""); + new_src = replace(new_src, "__global__", "__ai_device_entry__"); + new_src = token_replace(new_src, "__launch_bounds__($1)", ""); + new_src = token_replace(new_src, "int thread_num = $1;", "int thread_num = 1;"); + new_src = token_replace(new_src, "tn0=std::max(tn0, $1);", ""); + new_src = token_replace(new_src, "<<<$1,$2>>>", "<<<1,0>>>"); + new_src = token_replace(new_src, "int thread_id = $1;", "int thread_id = 1;"); + // for inc error + new_src = token_replace(new_src, "for ($1+=$2)", "for ($1++)"); + // bit op error + new_src = token_replace(new_src, "int tnum$1;", ""); + new_src = token_replace(new_src, "int tid$1=$2;", "int tid$1=0;"); + src = new_src; + // auto tokens = token_split(new_src); +} + +} diff --git a/python/jittor/extern/acl/acl_jittor.h b/python/jittor/extern/acl/acl_jittor.h new file mode 100644 index 00000000..cda85d93 --- /dev/null +++ b/python/jittor/extern/acl/acl_jittor.h @@ -0,0 +1,19 @@ +// *************************************************************** +// Copyright (c) 2021 Jittor. All Rights Reserved. +// Maintainers: Dun Liang . +// This file is subject to the terms and conditions defined in +// file 'LICENSE.txt', which is part of this source code package. +// *************************************************************** +#pragma once +#include "common.h" +#include + +std::string acl_error_to_string(aclError error); + +namespace jittor { + +EXTERN_LIB uint64_t acl_jittor_tid; + +void acl_jittor_op_compiler(string& filename, string& src, bool is_acl); + +} diff --git a/python/jittor/extern/cuda/cutt/ops/cutt_transpose_op.cc b/python/jittor/extern/cuda/cutt/ops/cutt_transpose_op.cc index 96f68401..fc3da8c9 100644 --- a/python/jittor/extern/cuda/cutt/ops/cutt_transpose_op.cc +++ b/python/jittor/extern/cuda/cutt/ops/cutt_transpose_op.cc @@ -90,7 +90,7 @@ void CuttTransposeOp::jit_run() { for (int i=0; inum==1) { - checkCudaErrors(cudaMemcpyAsync(yp, xp, x->size, cudaMemcpyDefault, 0)); + checkCudaErrors(cudaMemcpyAsync(yp, xp, x->size, cudaMemcpyDeviceToDevice, 0)); return; } JK& jk = get_jk(); diff --git a/python/jittor/extern/cuda/inc/helper_cuda.h b/python/jittor/extern/cuda/inc/helper_cuda.h index bba31f87..fc2e525f 100644 --- a/python/jittor/extern/cuda/inc/helper_cuda.h +++ b/python/jittor/extern/cuda/inc/helper_cuda.h @@ -25,7 +25,9 @@ #include #include +#ifdef IS_CUDA #include +#endif #ifndef EXIT_WAIVED #define EXIT_WAIVED 2 @@ -129,6 +131,9 @@ void check(T result, char const *const func, const char *const file, } } +#define checkCudaErrors(val) check((val), #val, __FILE__, __LINE__) +#define peekCudaErrors(val) peek((val), #val, __FILE__, __LINE__) + #ifdef __DRIVER_TYPES_H__ // This will output the proper CUDA error strings in the event // that a CUDA host call returns an error diff --git a/python/jittor/src/init.cc b/python/jittor/src/init.cc index 7d8817a0..c3010e52 100644 --- a/python/jittor/src/init.cc +++ b/python/jittor/src/init.cc @@ -43,7 +43,7 @@ void cleanup() { } static void init_cuda_devices() { -#ifdef HAS_CUDA +#ifdef IS_CUDA if (cuda_archs.size()) return; int count=0; cudaGetDeviceCount(&count); diff --git a/python/jittor/src/jit_compiler.cc b/python/jittor/src/jit_compiler.cc index 8b29719e..5fca7c18 100644 --- a/python/jittor/src/jit_compiler.cc +++ b/python/jittor/src/jit_compiler.cc @@ -20,6 +20,7 @@ #include "utils/flags.h" #include "fused_op.h" #include "utils/str_utils.h" +JPU(header) namespace jittor { @@ -204,6 +205,8 @@ jit_op_entry_t compile(const string& jit_key, const string& src, const bool is_c // compiler do not allowed filename too long CHECK(cc_path.size()); string jit_src_path = Op::get_filename_from_jit_key(jit_key, ".cc"); + string* src2 = (string*)&src; + JPU(op_compiler(jit_src_path, *src2, is_cuda_op)); #ifdef _WIN32 string jit_lib_path = Op::get_filename_from_jit_key(jit_key, ".dll"); string jit_src_path2 = _to_winstr(jit_src_path); diff --git a/python/jittor/src/mem/allocator.cc b/python/jittor/src/mem/allocator.cc index a6f1821b..1e425b4f 100644 --- a/python/jittor/src/mem/allocator.cc +++ b/python/jittor/src/mem/allocator.cc @@ -107,7 +107,7 @@ void migrate_to_cpu(Var* var, Allocator* allocator) { if (!use_cuda_managed_allocator) { // must be a device allocator Allocation a(allocator, var->size); - checkCudaErrors(cudaMemcpy(a.ptr, var->mem_ptr, var->size, cudaMemcpyDefault)); + checkCudaErrors(cudaMemcpy(a.ptr, var->mem_ptr, var->size, cudaMemcpyDeviceToHost)); var->allocator->free(var->mem_ptr, var->size, var->allocation); var->mem_ptr = a.ptr; var->allocation = a.allocation; diff --git a/python/jittor/src/mem/mem_info.cc b/python/jittor/src/mem/mem_info.cc index b042ce2e..eea8b567 100644 --- a/python/jittor/src/mem/mem_info.cc +++ b/python/jittor/src/mem/mem_info.cc @@ -62,7 +62,7 @@ void display_memory_info(const char* fileline, bool dump_var, bool red_color) { log << "\n=== display_memory_info ===\n"; log << "total_cpu_ram:" << FloatOutput{(double)mem_info.total_cpu_ram, " KMG", 1024, "B"}; - log << "total_cuda_ram:" << + log << "total_device_ram:" << FloatOutput{(double)mem_info.total_cuda_ram, " KMG", 1024, "B"} >> "\n"; log << "hold_vars:" << hold_vars.size() << "lived_vars:" << Var::number_of_lived_vars @@ -105,7 +105,7 @@ void display_memory_info(const char* fileline, bool dump_var, bool red_color) { auto total = a->used_memory + a->unused_memory; all_total += total; a->is_cuda() ? gpu_total += total : cpu_total += total; - log << "name:" << a->name() << "is_cuda:" << a->is_cuda() + log << "name:" << a->name() << "is_device:" << a->is_cuda() << "used:" << FloatOutput{(double)a->used_memory, " KMG", 1024, "B"} >> "(" >> std::setprecision(p) >> a->used_memory*100.0 / total >> "%)" << "unused:" << FloatOutput{(double)a->unused_memory, " KMG", 1024, "B"} @@ -117,7 +117,7 @@ void display_memory_info(const char* fileline, bool dump_var, bool red_color) { auto total = a->used_memory + a->unused_memory; all_total += total; a->is_cuda() ? gpu_total += total : cpu_total += total; - log << "name:" << a->name() << "is_cuda:" << a->is_cuda() + log << "name:" << a->name() << "is_device:" << a->is_cuda() << "used:" << FloatOutput{(double)a->used_memory, " KMG", 1024, "B"} >> "(" >> std::setprecision(p) >> a->used_memory*100.0 / total >> "%)" << "unused:" << FloatOutput{(double)a->unused_memory, " KMG", 1024, "B"} @@ -227,9 +227,9 @@ MemInfo::MemInfo() { total_cuda_ram = 0; #ifdef HAS_CUDA - cudaDeviceProp prop; - cudaGetDeviceProperties(&prop, 0); - total_cuda_ram = prop.totalGlobalMem; + size_t gpu_free = 0, _gpu_total = 0; + cudaMemGetInfo(&gpu_free, &_gpu_total); + total_cuda_ram = _gpu_total; #endif sigquit_callback.push_back(&meminfo_callback); } diff --git a/python/jittor/src/misc/cuda_flags.h b/python/jittor/src/misc/cuda_flags.h index f8aafdaa..61bd4701 100644 --- a/python/jittor/src/misc/cuda_flags.h +++ b/python/jittor/src/misc/cuda_flags.h @@ -24,7 +24,7 @@ inline int get_device_count() { } // jittor -#if CUDART_VERSION < 10000 +#if defined(CUDART_VERSION) && CUDART_VERSION < 10000 #define _cudaLaunchHostFunc(a,b,c) \ cudaStreamAddCallback(a,b,c,0) #define CUDA_HOST_FUNC_ARGS cudaStream_t stream, cudaError_t status, void* diff --git a/python/jittor/src/misc/nan_checker.cc b/python/jittor/src/misc/nan_checker.cc index d7f5a767..b5e6c737 100644 --- a/python/jittor/src/misc/nan_checker.cc +++ b/python/jittor/src/misc/nan_checker.cc @@ -17,7 +17,7 @@ namespace jittor { -#ifdef HAS_CUDA +#ifdef IS_CUDA EXTERN_LIB void check_nan_float32(float32* ptr, int64 num); EXTERN_LIB void check_nan_float64(float64* ptr, int64 num); #endif @@ -28,7 +28,7 @@ bool check_nan(Var* v) { v->input()->name() == string("empty") || v->input()->name() == string("setitem"))) return true; - #ifdef HAS_CUDA + #ifdef IS_CUDA if (v->allocator->is_cuda()) { if (v->dtype() == ns_float32) { check_nan_float32((float32*)v->mem_ptr, v->num); diff --git a/python/jittor/src/misc/string_view_map.h b/python/jittor/src/misc/string_view_map.h index 08ad693a..bcbbda7e 100644 --- a/python/jittor/src/misc/string_view_map.h +++ b/python/jittor/src/misc/string_view_map.h @@ -16,12 +16,12 @@ namespace jittor { -#if defined(__clang__) +#if __cplusplus < 201400L || defined(IS_ACL) +using string_view = string; +#elif defined(__clang__) using std::string_view; #elif defined(__GNUC__) using std::experimental::string_view; -#elif __cplusplus < 201400L -using string_view = string; #else using std::string_view; #endif diff --git a/python/jittor/src/ops/candidate_op.cc b/python/jittor/src/ops/candidate_op.cc index 5a056722..f50955cb 100644 --- a/python/jittor/src/ops/candidate_op.cc +++ b/python/jittor/src/ops/candidate_op.cc @@ -91,7 +91,7 @@ void CandidateOp::jit_run() { int n=0; // checkCudaErrors(cudaDeviceSynchronize()); - checkCudaErrors(cudaMemcpy(&n, np, 4, cudaMemcpyDefault)); + checkCudaErrors(cudaMemcpy(&n, np, 4, cudaMemcpyDeviceToHost)); y->set_shape({n}); exe.temp_allocator->free(np, 4, n_allocation); exe.temp_allocator->free(maskp, xshape0, mask_allocation); diff --git a/python/jittor/src/ops/copy_op.cc b/python/jittor/src/ops/copy_op.cc index 535f0d3f..3dc3ff9a 100644 --- a/python/jittor/src/ops/copy_op.cc +++ b/python/jittor/src/ops/copy_op.cc @@ -39,8 +39,13 @@ void CopyOp::run() { auto x_ptr = x->mem_ptr; auto y_ptr = outputs().front()->mem_ptr; #ifdef HAS_CUDA - if (flags.get(NodeFlags::_cuda)) { + if (flags.get(NodeFlags::_cuda)) { + // TODO: check why cpu allocator in x + #ifdef IS_CUDA checkCudaErrors(cudaMemcpyAsync(y_ptr, x_ptr, size, cudaMemcpyDefault, 0)); + #else + checkCudaErrors(cudaMemcpyAsync(y_ptr, x_ptr, size, cudaMemcpyDeviceToDevice, 0)); + #endif } else #endif { diff --git a/python/jittor/src/ops/fetch_op.cc b/python/jittor/src/ops/fetch_op.cc index 101860e7..48303686 100644 --- a/python/jittor/src/ops/fetch_op.cc +++ b/python/jittor/src/ops/fetch_op.cc @@ -121,13 +121,18 @@ void FetchOp::run() { checkCudaErrors(cudaStreamWaitEvent(stream, event, 0)); new (&allocation) Allocation(&cuda_dual_allocator, v->size); // mostly device to device + #if IS_CUDA checkCudaErrors(cudaMemcpyAsync( allocation.ptr, v->mem_ptr, v->size, cudaMemcpyDefault, stream)); + #else + checkCudaErrors(cudaMemcpyAsync( + allocation.ptr, v->mem_ptr, v->size, cudaMemcpyDeviceToDevice, stream)); + #endif auto host_ptr = cuda_dual_allocator.get_dual_allocation( allocation.allocation).host_ptr; // device to host checkCudaErrors(cudaMemcpyAsync( - host_ptr, allocation.ptr, v->size, cudaMemcpyDefault, stream)); + host_ptr, allocation.ptr, v->size, cudaMemcpyDeviceToHost, stream)); allocation.ptr = host_ptr; has_cuda_memcpy = true; } else diff --git a/python/jittor/src/ops/setitem_op.cc b/python/jittor/src/ops/setitem_op.cc index e0ce1c53..513aac6b 100644 --- a/python/jittor/src/ops/setitem_op.cc +++ b/python/jittor/src/ops/setitem_op.cc @@ -312,7 +312,7 @@ void SetitemOp::jit_run() { std::memcpy(op, ip, out->size); #else if (op != ip) - checkCudaErrors(cudaMemcpyAsync(op, ip, out->size, cudaMemcpyDefault, 0)); + checkCudaErrors(cudaMemcpyAsync(op, ip, out->size, cudaMemcpyDeviceToDevice, 0)); #endif if (flags.get((NodeFlags::Flags(SetitemOp::_data_inplaced))) && diff --git a/python/jittor/src/ops/where_op.cc b/python/jittor/src/ops/where_op.cc index 8e15dd81..e11025fb 100644 --- a/python/jittor/src/ops/where_op.cc +++ b/python/jittor/src/ops/where_op.cc @@ -230,7 +230,7 @@ void WhereOp::jit_run() { int n=0; // checkCudaErrors(cudaDeviceSynchronize()); - checkCudaErrors(cudaMemcpy(&n, np, 4, cudaMemcpyDefault)); + checkCudaErrors(cudaMemcpy(&n, np, 4, cudaMemcpyDeviceToHost)); @for(i, 0, NDIM, outs[@i]->set_shape({n});) exe.temp_allocator->free(np, 4, n_allocation); } diff --git a/python/jittor/src/profiler/profiler.cc b/python/jittor/src/profiler/profiler.cc index 12aa8e37..b133606f 100644 --- a/python/jittor/src/profiler/profiler.cc +++ b/python/jittor/src/profiler/profiler.cc @@ -155,7 +155,7 @@ static void stat_peek_bandwidth(uint64 in, uint64 out, uint64 loop, uint64& peek for (int i=0; i& input) { return os << ']'; } +#define JPU(x) ; + } // jittor diff --git a/python/jittor/src/utils/str_utils.cc b/python/jittor/src/utils/str_utils.cc index 73be4b5c..386da689 100644 --- a/python/jittor/src/utils/str_utils.cc +++ b/python/jittor/src/utils/str_utils.cc @@ -76,4 +76,122 @@ string replace(const string& a, const string& b, const string& c) { return join(vs, c); } +static inline bool isvar(char x) { return isalnum(x) || x == '_' || x == ':'; } + +vector token_split(const string& s) { + vector ss; + if (!s.size()) return ss; + ss.push_back(string()+s[0]); + for (int i=1; i& patterns, + vector& arg_id) { + patterns.clear(); + arg_id.clear(); + patterns.push_back(""); + for (int j=0; j& tokens, int i, const string& src, const string& dst) { + ASSERT(src.at(0) != '$' && src.at(src.size()-1) != '$' && + src.at(src.size()-2) != '$') << "illegal src:" << src; + vector patterns; + vector arg_id; + vector patterns2; + vector arg_id2; + unordered_map args; + parse_reg(src, patterns, arg_id); + parse_reg(dst, patterns2, arg_id2); + + int start_i, start_pos, end_i, end_pos; + int c_i = i, c_pos = 0; + int match_i, match_pos; + string c_arg; + + auto match = [&](int c_i, int c_pos, const string& pat) -> bool { + for (int i=0; i= tokens[c_i].size()) { + c_pos = 0; + c_i ++; + if (c_i >= tokens.size()) + return false; + } + } + match_i = c_i; + match_pos = c_pos; + return true; + }; + + for (int j=0; j ss{s}; + token_replace(ss, 0, src, dst); + return join(ss, ""); +} + } // jittor \ No newline at end of file diff --git a/python/jittor/src/utils/str_utils.h b/python/jittor/src/utils/str_utils.h index 84da8b5e..6a2251e0 100644 --- a/python/jittor/src/utils/str_utils.h +++ b/python/jittor/src/utils/str_utils.h @@ -33,4 +33,10 @@ string replace(const string& a, const string& b, const string& c); string join(const vector& vs, const string& x); +vector token_split(const string& s); + +void token_replace(vector& tokens, int i, const string& src, const string& dst); + +string token_replace(const string& s, const string& src, const string& dst); + } // jittor \ No newline at end of file diff --git a/python/jittor/test/test_acl.py b/python/jittor/test/test_acl.py new file mode 100644 index 00000000..62cb147e --- /dev/null +++ b/python/jittor/test/test_acl.py @@ -0,0 +1,31 @@ +# *************************************************************** +# Copyright (c) 2021 Jittor. All Rights Reserved. +# Maintainers: Dun Liang . +# This file is subject to the terms and conditions defined in +# file 'LICENSE.txt', which is part of this source code package. +# *************************************************************** +import unittest +import jittor as jt +from .test_core import expect_error +import numpy as np + +@unittest.skipIf(not jt.compiler.has_acl, "No ACL found") +class TestACL(unittest.TestCase): + + @jt.flag_scope(use_acl=1) + def test_array(self): + print("use_acl", jt.flags.use_acl) + a = jt.array([1,2,3]) + np.testing.assert_allclose(a.numpy(), [1,2,3]) + + @jt.flag_scope(use_acl=1) + def test_add(self): + a = jt.array([1,2,3]) + b = a+a + np.testing.assert_allclose(b.numpy(), [2,4,6]) + + def test_meminfo(self): + jt.display_memory_info() + +if __name__ == "__main__": + unittest.main() diff --git a/python/jittor_utils/__init__.py b/python/jittor_utils/__init__.py index ed943850..6d45e57f 100644 --- a/python/jittor_utils/__init__.py +++ b/python/jittor_utils/__init__.py @@ -19,6 +19,7 @@ import time from ctypes import cdll import shutil import urllib.request +import ctypes if platform.system() == 'Darwin': mp.set_start_method('fork') @@ -386,6 +387,22 @@ def env_or_find(name, bname, silent=False): return path return find_exe(bname, silent=silent) +def env_or_try_find(name, bname): + if name in os.environ: + path = os.environ[name] + if path != "": + version = get_version(path) + LOG.i(f"Found {bname}{version} at {path}") + return path + return try_find_exe(bname) + +def try_find_exe(*args): + try: + return find_exe(*args) + except: + LOG.v(f"{args[0]} not found.") + return "" + def get_cc_type(cc_path): bname = os.path.basename(cc_path) if "clang" in bname: return "clang" @@ -526,3 +543,65 @@ if os.name == 'nt': os.environ["PATH"] = path+';'+os.environ["PATH"] if hasattr(os, "add_dll_directory"): os.add_dll_directory(path) + +backends = [] +def add_backend(mod): + backends.append(mod) + +def compile_module(source, flags): + tmp_path = os.path.join(cache_path, "tmp") + os.makedirs(tmp_path, exist_ok=True) + hash = "hash_" + get_str_hash(source) + so = get_py3_extension_suffix() + header_name = os.path.join(tmp_path, hash+".h") + source_name = os.path.join(tmp_path, hash+".cc") + lib_name = hash+so + with open(header_name, "w", encoding="utf8") as f: + f.write(source) + from jittor.pyjt_compiler import compile_single + ok = compile_single(header_name, source_name) + assert ok, "no pyjt interface found" + + entry_src = f''' +static void init_module(PyModuleDef* mdef, PyObject* m) {{ + mdef->m_doc = "generated py jittor_utils.compile_module"; + jittor::pyjt_def_{hash}(m); +}} +PYJT_MODULE_INIT({hash}); + ''' + with open(source_name, "r", encoding="utf8") as f: + src = f.read() + with open(source_name, "w", encoding="utf8") as f: + f.write(src + entry_src) + jittor_path = os.path.join(os.path.dirname(__file__), "..", "jittor") + jittor_path = os.path.abspath(jittor_path) + do_compile([f"\"{cc_path}\" \"{source_name}\" \"{jittor_path}/src/pyjt/py_arg_printer.cc\" {flags} -o \"{cache_path+'/'+lib_name}\" ", + cache_path, jittor_path]) + with import_scope(os.RTLD_GLOBAL | os.RTLD_NOW): + exec(f"import {hash}") + mod = locals()[hash] + return mod + +def process_jittor_source(device_type, callback): + import jittor.compiler as compiler + import shutil + djittor = device_type + "_jittor" + djittor_path = os.path.join(compiler.cache_path, djittor) + os.makedirs(djittor_path, exist_ok=True) + + for root, dir, files in os.walk(compiler.jittor_path): + root2 = root.replace(compiler.jittor_path, djittor_path) + os.makedirs(root2, exist_ok=True) + for name in files: + fname = os.path.join(root, name) + fname2 = os.path.join(root2, name) + if fname.endswith(".h") or fname.endswith(".cc"): + with open(fname, 'r', encoding="utf8") as f: + src = f.read() + src = callback(src, name, {"fname":fname, "fname2":fname2}) + with open(fname2, 'w', encoding="utf8") as f: + f.write(src) + else: + shutil.copy(fname, fname2) + compiler.cc_flags = compiler.cc_flags.replace(compiler.jittor_path, djittor_path) + f" -I\"{djittor_path}/extern/cuda/inc\" " + compiler.jittor_path = djittor_path From 31fbf4af9ca5c0cf02956a6dd0ab5fdde2af0866 Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Tue, 22 Mar 2022 14:37:44 +0800 Subject: [PATCH 13/33] add _modules and _parameters property --- python/jittor/__init__.py | 10 +++++++++- python/jittor/test/test_core.py | 13 +++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/python/jittor/__init__.py b/python/jittor/__init__.py index 6b56c972..94181785 100644 --- a/python/jittor/__init__.py +++ b/python/jittor/__init__.py @@ -9,7 +9,7 @@ # file 'LICENSE.txt', which is part of this source code package. # *************************************************************** -__version__ = '1.3.1.49' +__version__ = '1.3.1.50' from jittor_utils import lock with lock.lock_scope(): ori_int = int @@ -957,6 +957,14 @@ class Module: self.dfs([], "", callback, callback_leave) return ms + @property + def _modules(self): + return { k:v for k,v in self.__dict__.items() if isinstance(v, Module) } + + @property + def _parameters(self): + return { k:v for k,v in self.__dict__.items() if isinstance(v, Var) } + def requires_grad_(self, requires_grad=True): self._requires_grad = requires_grad self._place_hooker() diff --git a/python/jittor/test/test_core.py b/python/jittor/test/test_core.py index f1fc1b63..86d88a16 100644 --- a/python/jittor/test/test_core.py +++ b/python/jittor/test/test_core.py @@ -106,5 +106,18 @@ class TestCore(unittest.TestCase): a.y = 2 assert a.y == 2 + def test_modules(self): + a = jt.Module() + a.x = jt.Module() + a.y = jt.Module() + a.a = jt.array([1,2,3]) + a.b = jt.array([1,2,3]) + assert a._modules.keys() == ["x", "y"] + assert a._modules['x'] is a.x + assert a._modules['y'] is a.y + assert a._parameters.keys() == ['a', 'b'] + assert a._parameters['a'] is a.a + assert a._parameters['b'] is a.b + if __name__ == "__main__": unittest.main() \ No newline at end of file From d4e8092c9356c5f39874b9ebc73464d622850833 Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Tue, 22 Mar 2022 14:38:50 +0800 Subject: [PATCH 14/33] add test_modules --- python/jittor/test/test_core.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/jittor/test/test_core.py b/python/jittor/test/test_core.py index 86d88a16..fd7d888e 100644 --- a/python/jittor/test/test_core.py +++ b/python/jittor/test/test_core.py @@ -112,10 +112,10 @@ class TestCore(unittest.TestCase): a.y = jt.Module() a.a = jt.array([1,2,3]) a.b = jt.array([1,2,3]) - assert a._modules.keys() == ["x", "y"] + assert list(a._modules.keys()) == ["x", "y"] assert a._modules['x'] is a.x assert a._modules['y'] is a.y - assert a._parameters.keys() == ['a', 'b'] + assert list(a._parameters.keys()) == ['a', 'b'] assert a._parameters['a'] is a.a assert a._parameters['b'] is a.b From 3c8ed89d5e7b37f57c6be65b6ebddc9ae0d1565b Mon Sep 17 00:00:00 2001 From: SilenceLi Date: Mon, 7 Mar 2022 15:08:26 +0800 Subject: [PATCH 15/33] Update __init__.pyi --- python/jittor/__init__.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/jittor/__init__.pyi b/python/jittor/__init__.pyi index 9f8e351e..79ee0911 100644 --- a/python/jittor/__init__.pyi +++ b/python/jittor/__init__.pyi @@ -908,7 +908,7 @@ def arg_reduce(x: Var, op: str, dim: int, keepdims: bool)-> List[Var]: >>> jt.arg_reduce(x, 'max', dim=1, keepdims=False) [jt.Var([2 1], dtype=int32), jt.Var([5 7], dtype=int32)] >>> jt.arg_reduce(x, 'min', dim=1, keepdims=False) - [jt.Var([1 2], dtype=int32), jt.Var([5 7], dtype=int32)]''' + [jt.Var([1 2], dtype=int32), jt.Var([2 1], dtype=int32)]''' ... def random(shape: Tuple[int], dtype: str="float32", type: str="uniform")-> Var: ... From 6f4e95e55f667b7b1c21c21dc070275ad739b88b Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Tue, 22 Mar 2022 16:13:48 +0800 Subject: [PATCH 16/33] add simple_cgan demo --- python/jittor/demo/simple_cgan.py | 107 ++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 python/jittor/demo/simple_cgan.py diff --git a/python/jittor/demo/simple_cgan.py b/python/jittor/demo/simple_cgan.py new file mode 100644 index 00000000..8e984e3c --- /dev/null +++ b/python/jittor/demo/simple_cgan.py @@ -0,0 +1,107 @@ +import jittor as jt +from jittor import nn +import numpy as np +# import pylab as pl + +# 隐空间向量长度 +latent_dim = 100 +# 类别数量 +n_classes = 10 +# 图片大小 +img_size = 32 +# 图片通道数量 +channels = 1 +# 图片张量的形状 +img_shape = (channels, img_size, img_size) + +class Generator(nn.Module): + def __init__(self): + super(Generator, self).__init__() + self.label_emb = nn.Embedding(n_classes, n_classes) + + def block(in_feat, out_feat, normalize=True): + layers = [nn.Linear(in_feat, out_feat)] + if normalize: + layers.append(nn.BatchNorm1d(out_feat, 0.8)) + layers.append(nn.LeakyReLU(0.2)) + return layers + self.model = nn.Sequential( + *block((latent_dim + n_classes), 128, normalize=False), + *block(128, 256), + *block(256, 512), + *block(512, 1024), + nn.Linear(1024, int(np.prod(img_shape))), + nn.Tanh()) + + def execute(self, noise, labels): + gen_input = jt.contrib.concat((self.label_emb(labels), noise), dim=1) + img = self.model(gen_input) + img = img.view((img.shape[0], *img_shape)) + return img + +class Discriminator(nn.Module): + def __init__(self): + super(Discriminator, self).__init__() + self.label_embedding = nn.Embedding(n_classes, n_classes) + self.model = nn.Sequential( + nn.Linear((n_classes + int(np.prod(img_shape))), 512), + nn.LeakyReLU(0.2), + nn.Linear(512, 512), + nn.Dropout(0.4), + nn.LeakyReLU(0.2), + nn.Linear(512, 512), + nn.Dropout(0.4), + nn.LeakyReLU(0.2), + nn.Linear(512, 1)) + + def execute(self, img, labels): + d_in = jt.contrib.concat((img.view((img.shape[0], (- 1))), self.label_embedding(labels)), dim=1) + validity = self.model(d_in) + return validity + + +# 定义模型 +generator = Generator() +discriminator = Discriminator() +generator.eval() +discriminator.eval() + +# 加载参数 +generator.load('https://cg.cs.tsinghua.edu.cn/jittor/assets/build/generator_last.pkl') +discriminator.load('https://cg.cs.tsinghua.edu.cn/jittor/assets/build/discriminator_last.pkl') + + + +def gen_img(number): + print(number, type(number)) + n_row = len(number) + z = jt.array(np.random.normal(0, 1, (n_row, latent_dim))).float32().stop_grad() + labels = jt.array(np.array([int(number[num]) for num in range(n_row)])).float32().stop_grad() + gen_imgs = generator(z,labels) + gen_imgs = gen_imgs.transpose((1,2,0,3)).reshape(gen_imgs.shape[2], -1) + gen_imgs = gen_imgs[:,:,None].broadcast(gen_imgs.shape+(3,)) # .uint8() + gen_imgs = (gen_imgs - gen_imgs.min()) / (gen_imgs.max() - gen_imgs.min()) * 255 + gen_imgs = gen_imgs.uint8() + # print(gen_imgs.shape, gen_imgs.max(), gen_imgs.min()) + return gen_imgs.numpy() + # gen_imgs = gen_imgs.data.transpose((1,2,0,3))[0].reshape((gen_imgs.shape[2], -1)) + # print(gen_imgs.shape) + return gen_imgs[:,:,None] + +from PIL import Image +import pywebio as pw +# 定义一串数字 +number = "201962517" +# gen_img(number) +Image.fromarray(gen_img(number)) +# pl.imshow() +# pl.show() +# print("done") + + +def web_server(): + pw.pin.put_input("number", label="输入用于生成的数字(由计图框架支持):") + pw.output.put_buttons(['Gen image'], + lambda _: pw.output.put_image(Image.fromarray(gen_img(pw.pin.pin.number)))) + +pw.start_server(web_server, port=8123) \ No newline at end of file From 7d9cff9e24787180f551ba4b828caa8603f91d43 Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Tue, 22 Mar 2022 16:14:00 +0800 Subject: [PATCH 17/33] add cgan demo --- python/jittor/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/jittor/__init__.py b/python/jittor/__init__.py index 94181785..70cd1f1f 100644 --- a/python/jittor/__init__.py +++ b/python/jittor/__init__.py @@ -9,7 +9,7 @@ # file 'LICENSE.txt', which is part of this source code package. # *************************************************************** -__version__ = '1.3.1.50' +__version__ = '1.3.1.51' from jittor_utils import lock with lock.lock_scope(): ori_int = int From de2fceab22c9038e28ccd2610e2f8244a6190288 Mon Sep 17 00:00:00 2001 From: lzhengning Date: Tue, 22 Mar 2022 15:59:42 +0800 Subject: [PATCH 18/33] Transitioning from Intel MKL-DNN to oneDNN --- python/jittor/compile_extern.py | 6 +- .../extern/mkl/ops/cpu_cnn_inference_f32.cpp | 136 +++++++++--------- .../extern/mkl/ops/mkl_conv_backward_w_op.cc | 28 ++-- .../extern/mkl/ops/mkl_conv_backward_x_op.cc | 28 ++-- python/jittor/extern/mkl/ops/mkl_conv_op.cc | 20 +-- python/jittor/extern/mkl/ops/mkl_matmul_op.cc | 6 +- 6 files changed, 112 insertions(+), 112 deletions(-) diff --git a/python/jittor/compile_extern.py b/python/jittor/compile_extern.py index c43cdfd7..fc517934 100644 --- a/python/jittor/compile_extern.py +++ b/python/jittor/compile_extern.py @@ -141,12 +141,12 @@ def setup_mkl(): elif platform.system() == 'Darwin': mkl_lib_paths = [ - "/usr/local/lib/libmkldnn.dylib", # x86_64 - "/opt/homebrew/lib/libmkldnn.dylib", # arm64 + "/usr/local/lib/libdnnl.dylib", # x86_64 + "/opt/homebrew/lib/libdnnl.dylib", # arm64 ] if not any([os.path.exists(lib) for lib in mkl_lib_paths]): raise RuntimeError("Not found onednn, please install it by the command 'brew install onednn'") - extra_flags = f" -lmkldnn " + extra_flags = f" -ldnnl " mkl_op_dir = os.path.join(jittor_path, "extern", "mkl", "ops") mkl_op_files = [os.path.join(mkl_op_dir, name) for name in os.listdir(mkl_op_dir)] diff --git a/python/jittor/extern/mkl/ops/cpu_cnn_inference_f32.cpp b/python/jittor/extern/mkl/ops/cpu_cnn_inference_f32.cpp index 33ea4bdc..4bf1cba4 100644 --- a/python/jittor/extern/mkl/ops/cpu_cnn_inference_f32.cpp +++ b/python/jittor/extern/mkl/ops/cpu_cnn_inference_f32.cpp @@ -47,9 +47,9 @@ #include #include -#include +#include -using namespace mkldnn; +using namespace dnnl; using namespace std; @@ -159,8 +159,8 @@ void simple_net(int times = 100) { if (conv1_prim_desc.src_desc() != user_src_memory.get_desc()) { conv1_src_memory = memory(conv1_prim_desc.src_desc(), eng); net.push_back(reorder(user_src_memory, conv1_src_memory)); - net_args.push_back({ { MKLDNN_ARG_FROM, user_src_memory }, - { MKLDNN_ARG_TO, conv1_src_memory } }); + net_args.push_back({ { DNNL_ARG_FROM, user_src_memory }, + { DNNL_ARG_TO, conv1_src_memory } }); } auto conv1_weights_memory = user_weights_memory; @@ -181,10 +181,10 @@ void simple_net(int times = 100) { /// @snippet cpu_cnn_inference_f32.cpp Create memory for output //[Create convolution primitive] net.push_back(convolution_forward(conv1_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, conv1_src_memory }, - { MKLDNN_ARG_WEIGHTS, conv1_weights_memory }, - { MKLDNN_ARG_BIAS, conv1_user_bias_memory }, - { MKLDNN_ARG_DST, conv1_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, conv1_src_memory }, + { DNNL_ARG_WEIGHTS, conv1_weights_memory }, + { DNNL_ARG_BIAS, conv1_user_bias_memory }, + { DNNL_ARG_DST, conv1_dst_memory } }); //[Create convolution primitive] // AlexNet: relu1 @@ -204,8 +204,8 @@ void simple_net(int times = 100) { auto relu1_prim_desc = eltwise_forward::primitive_desc(relu1_desc, eng); net.push_back(eltwise_forward(relu1_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, conv1_dst_memory }, - { MKLDNN_ARG_DST, conv1_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, conv1_dst_memory }, + { DNNL_ARG_DST, conv1_dst_memory } }); //[Create relu primitive] // AlexNet: lrn1 @@ -226,8 +226,8 @@ void simple_net(int times = 100) { auto lrn1_dst_memory = memory(lrn1_prim_desc.dst_desc(), eng); net.push_back(lrn_forward(lrn1_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, conv1_dst_memory }, - { MKLDNN_ARG_DST, lrn1_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, conv1_dst_memory }, + { DNNL_ARG_DST, lrn1_dst_memory } }); // AlexNet: pool1 // {batch, 96, 55, 55} -> {batch, 96, 27, 27} @@ -255,8 +255,8 @@ void simple_net(int times = 100) { auto pool1_dst_memory = memory(pool1_pd.dst_desc(), eng); net.push_back(pooling_forward(pool1_pd)); - net_args.push_back({ { MKLDNN_ARG_SRC, lrn1_dst_memory }, - { MKLDNN_ARG_DST, pool1_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, lrn1_dst_memory }, + { DNNL_ARG_DST, pool1_dst_memory } }); //[Create pooling primitive] // AlexNet: conv2 @@ -296,8 +296,8 @@ void simple_net(int times = 100) { if (conv2_prim_desc.src_desc() != conv2_src_memory.get_desc()) { conv2_src_memory = memory(conv2_prim_desc.src_desc(), eng); net.push_back(reorder(pool1_dst_memory, conv2_src_memory)); - net_args.push_back({ { MKLDNN_ARG_FROM, pool1_dst_memory }, - { MKLDNN_ARG_TO, conv2_src_memory } }); + net_args.push_back({ { DNNL_ARG_FROM, pool1_dst_memory }, + { DNNL_ARG_TO, conv2_src_memory } }); } auto conv2_weights_memory = conv2_user_weights_memory; @@ -312,10 +312,10 @@ void simple_net(int times = 100) { // create convolution primitive and add it to net net.push_back(convolution_forward(conv2_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, conv2_src_memory }, - { MKLDNN_ARG_WEIGHTS, conv2_weights_memory }, - { MKLDNN_ARG_BIAS, conv2_user_bias_memory }, - { MKLDNN_ARG_DST, conv2_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, conv2_src_memory }, + { DNNL_ARG_WEIGHTS, conv2_weights_memory }, + { DNNL_ARG_BIAS, conv2_user_bias_memory }, + { DNNL_ARG_DST, conv2_dst_memory } }); // AlexNet: relu2 // {batch, 256, 27, 27} -> {batch, 256, 27, 27} @@ -328,8 +328,8 @@ void simple_net(int times = 100) { auto relu2_prim_desc = eltwise_forward::primitive_desc(relu2_desc, eng); net.push_back(eltwise_forward(relu2_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, conv2_dst_memory }, - { MKLDNN_ARG_DST, conv2_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, conv2_dst_memory }, + { DNNL_ARG_DST, conv2_dst_memory } }); // AlexNet: lrn2 // {batch, 256, 27, 27} -> {batch, 256, 27, 27} @@ -349,8 +349,8 @@ void simple_net(int times = 100) { auto lrn2_dst_memory = memory(lrn2_prim_desc.dst_desc(), eng); net.push_back(lrn_forward(lrn2_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, conv2_dst_memory }, - { MKLDNN_ARG_DST, lrn2_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, conv2_dst_memory }, + { DNNL_ARG_DST, lrn2_dst_memory } }); // AlexNet: pool2 // {batch, 256, 27, 27} -> {batch, 256, 13, 13} @@ -372,8 +372,8 @@ void simple_net(int times = 100) { // create pooling primitive an add it to net net.push_back(pooling_forward(pool2_pd)); - net_args.push_back({ { MKLDNN_ARG_SRC, lrn2_dst_memory }, - { MKLDNN_ARG_DST, pool2_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, lrn2_dst_memory }, + { DNNL_ARG_DST, pool2_dst_memory } }); // AlexNet: conv3 // {batch, 256, 13, 13} (x) {384, 256, 3, 3}; -> {batch, 384, 13, 13}; @@ -412,8 +412,8 @@ void simple_net(int times = 100) { if (conv3_prim_desc.src_desc() != conv3_src_memory.get_desc()) { conv3_src_memory = memory(conv3_prim_desc.src_desc(), eng); net.push_back(reorder(pool2_dst_memory, conv3_src_memory)); - net_args.push_back({ { MKLDNN_ARG_FROM, pool2_dst_memory }, - { MKLDNN_ARG_TO, conv3_src_memory } }); + net_args.push_back({ { DNNL_ARG_FROM, pool2_dst_memory }, + { DNNL_ARG_TO, conv3_src_memory } }); } auto conv3_weights_memory = conv3_user_weights_memory; @@ -428,10 +428,10 @@ void simple_net(int times = 100) { // create convolution primitive and add it to net net.push_back(convolution_forward(conv3_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, conv3_src_memory }, - { MKLDNN_ARG_WEIGHTS, conv3_weights_memory }, - { MKLDNN_ARG_BIAS, conv3_user_bias_memory }, - { MKLDNN_ARG_DST, conv3_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, conv3_src_memory }, + { DNNL_ARG_WEIGHTS, conv3_weights_memory }, + { DNNL_ARG_BIAS, conv3_user_bias_memory }, + { DNNL_ARG_DST, conv3_dst_memory } }); // AlexNet: relu3 // {batch, 384, 13, 13} -> {batch, 384, 13, 13} @@ -444,8 +444,8 @@ void simple_net(int times = 100) { auto relu3_prim_desc = eltwise_forward::primitive_desc(relu3_desc, eng); net.push_back(eltwise_forward(relu3_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, conv3_dst_memory }, - { MKLDNN_ARG_DST, conv3_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, conv3_dst_memory }, + { DNNL_ARG_DST, conv3_dst_memory } }); // AlexNet: conv4 // {batch, 384, 13, 13} (x) {2, 192, 192, 3, 3}; -> @@ -485,8 +485,8 @@ void simple_net(int times = 100) { if (conv4_prim_desc.src_desc() != conv4_src_memory.get_desc()) { conv4_src_memory = memory(conv4_prim_desc.src_desc(), eng); net.push_back(reorder(conv3_dst_memory, conv4_src_memory)); - net_args.push_back({ { MKLDNN_ARG_FROM, conv3_dst_memory }, - { MKLDNN_ARG_TO, conv4_src_memory } }); + net_args.push_back({ { DNNL_ARG_FROM, conv3_dst_memory }, + { DNNL_ARG_TO, conv4_src_memory } }); } auto conv4_weights_memory = conv4_user_weights_memory; @@ -501,10 +501,10 @@ void simple_net(int times = 100) { // create convolution primitive and add it to net net.push_back(convolution_forward(conv4_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, conv4_src_memory }, - { MKLDNN_ARG_WEIGHTS, conv4_weights_memory }, - { MKLDNN_ARG_BIAS, conv4_user_bias_memory }, - { MKLDNN_ARG_DST, conv4_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, conv4_src_memory }, + { DNNL_ARG_WEIGHTS, conv4_weights_memory }, + { DNNL_ARG_BIAS, conv4_user_bias_memory }, + { DNNL_ARG_DST, conv4_dst_memory } }); // AlexNet: relu4 // {batch, 384, 13, 13} -> {batch, 384, 13, 13} @@ -517,8 +517,8 @@ void simple_net(int times = 100) { auto relu4_prim_desc = eltwise_forward::primitive_desc(relu4_desc, eng); net.push_back(eltwise_forward(relu4_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, conv4_dst_memory }, - { MKLDNN_ARG_DST, conv4_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, conv4_dst_memory }, + { DNNL_ARG_DST, conv4_dst_memory } }); // AlexNet: conv5 // {batch, 384, 13, 13} (x) {2, 128, 192, 3, 3}; -> {batch, 256, 13, 13}; @@ -557,8 +557,8 @@ void simple_net(int times = 100) { if (conv5_prim_desc.src_desc() != conv5_src_memory.get_desc()) { conv5_src_memory = memory(conv5_prim_desc.src_desc(), eng); net.push_back(reorder(conv4_dst_memory, conv5_src_memory)); - net_args.push_back({ { MKLDNN_ARG_FROM, conv4_dst_memory }, - { MKLDNN_ARG_TO, conv5_src_memory } }); + net_args.push_back({ { DNNL_ARG_FROM, conv4_dst_memory }, + { DNNL_ARG_TO, conv5_src_memory } }); } auto conv5_weights_memory = conv5_user_weights_memory; @@ -573,10 +573,10 @@ void simple_net(int times = 100) { // create convolution primitive and add it to net net.push_back(convolution_forward(conv5_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, conv5_src_memory }, - { MKLDNN_ARG_WEIGHTS, conv5_weights_memory }, - { MKLDNN_ARG_BIAS, conv5_user_bias_memory }, - { MKLDNN_ARG_DST, conv5_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, conv5_src_memory }, + { DNNL_ARG_WEIGHTS, conv5_weights_memory }, + { DNNL_ARG_BIAS, conv5_user_bias_memory }, + { DNNL_ARG_DST, conv5_dst_memory } }); // AlexNet: relu5 // {batch, 256, 13, 13} -> {batch, 256, 13, 13} @@ -589,8 +589,8 @@ void simple_net(int times = 100) { auto relu5_prim_desc = eltwise_forward::primitive_desc(relu5_desc, eng); net.push_back(eltwise_forward(relu5_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, conv5_dst_memory }, - { MKLDNN_ARG_DST, conv5_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, conv5_dst_memory }, + { DNNL_ARG_DST, conv5_dst_memory } }); // AlexNet: pool5 // {batch, 256, 13, 13} -> {batch, 256, 6, 6} @@ -615,8 +615,8 @@ void simple_net(int times = 100) { // create pooling primitive an add it to net net.push_back(pooling_forward(pool5_pd)); - net_args.push_back({ { MKLDNN_ARG_SRC, conv5_dst_memory }, - { MKLDNN_ARG_DST, pool5_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, conv5_dst_memory }, + { DNNL_ARG_DST, pool5_dst_memory } }); // fc6 inner product {batch, 256, 6, 6} (x) {4096, 256, 6, 6}-> {batch, @@ -651,8 +651,8 @@ void simple_net(int times = 100) { if (fc6_prim_desc.src_desc() != fc6_src_memory.get_desc()) { fc6_src_memory = memory(fc6_prim_desc.src_desc(), eng); net.push_back(reorder(pool5_dst_memory, fc6_src_memory)); - net_args.push_back({ { MKLDNN_ARG_FROM, pool5_dst_memory }, - { MKLDNN_ARG_TO, fc6_src_memory } }); + net_args.push_back({ { DNNL_ARG_FROM, pool5_dst_memory }, + { DNNL_ARG_TO, fc6_src_memory } }); } auto fc6_weights_memory = fc6_user_weights_memory; @@ -666,10 +666,10 @@ void simple_net(int times = 100) { // create convolution primitive and add it to net net.push_back(inner_product_forward(fc6_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, fc6_src_memory }, - { MKLDNN_ARG_WEIGHTS, fc6_weights_memory }, - { MKLDNN_ARG_BIAS, fc6_user_bias_memory }, - { MKLDNN_ARG_DST, fc6_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, fc6_src_memory }, + { DNNL_ARG_WEIGHTS, fc6_weights_memory }, + { DNNL_ARG_BIAS, fc6_user_bias_memory }, + { DNNL_ARG_DST, fc6_dst_memory } }); // fc7 inner product {batch, 4096} (x) {4096, 4096}-> {batch, 4096} @@ -708,10 +708,10 @@ void simple_net(int times = 100) { // create convolution primitive and add it to net net.push_back(inner_product_forward(fc7_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, fc6_dst_memory }, - { MKLDNN_ARG_WEIGHTS, fc7_weights_memory }, - { MKLDNN_ARG_BIAS, fc7_user_bias_memory }, - { MKLDNN_ARG_DST, fc7_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, fc6_dst_memory }, + { DNNL_ARG_WEIGHTS, fc7_weights_memory }, + { DNNL_ARG_BIAS, fc7_user_bias_memory }, + { DNNL_ARG_DST, fc7_dst_memory } }); // fc8 inner product {batch, 4096} (x) {1000, 4096}-> {batch, 1000} memory::dims fc8_weights_tz = { 1000, 4096 }; @@ -750,17 +750,17 @@ void simple_net(int times = 100) { // create convolution primitive and add it to net net.push_back(inner_product_forward(fc8_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, fc7_dst_memory }, - { MKLDNN_ARG_WEIGHTS, fc8_weights_memory }, - { MKLDNN_ARG_BIAS, fc8_user_bias_memory }, - { MKLDNN_ARG_DST, fc8_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, fc7_dst_memory }, + { DNNL_ARG_WEIGHTS, fc8_weights_memory }, + { DNNL_ARG_BIAS, fc8_user_bias_memory }, + { DNNL_ARG_DST, fc8_dst_memory } }); // create reorder between internal and user data if it is needed and // add it to net after pooling if (fc8_dst_memory != user_dst_memory) { net.push_back(reorder(fc8_dst_memory, user_dst_memory)); - net_args.push_back({ { MKLDNN_ARG_FROM, fc8_dst_memory }, - { MKLDNN_ARG_TO, user_dst_memory } }); + net_args.push_back({ { DNNL_ARG_FROM, fc8_dst_memory }, + { DNNL_ARG_TO, user_dst_memory } }); } /// @page cpu_cnn_inference_f32_cpp diff --git a/python/jittor/extern/mkl/ops/mkl_conv_backward_w_op.cc b/python/jittor/extern/mkl/ops/mkl_conv_backward_w_op.cc index 117285d7..58a91a22 100644 --- a/python/jittor/extern/mkl/ops/mkl_conv_backward_w_op.cc +++ b/python/jittor/extern/mkl/ops/mkl_conv_backward_w_op.cc @@ -13,9 +13,9 @@ #include "var.h" #include "mkl_conv_backward_w_op.h" -#include +#include -using namespace mkldnn; +using namespace dnnl; using namespace std; namespace jittor { @@ -143,8 +143,8 @@ void MklConvBackwardWOp::jit_run() { if (conv_pd.src_desc() != conv_user_src_memory.get_desc()) { conv_src_memory = memory(conv_pd.src_desc(), eng); net_bwd.push_back(reorder(conv_user_src_memory, conv_src_memory)); - net_bwd_args.push_back({{MKLDNN_ARG_FROM, conv_user_src_memory}, - {MKLDNN_ARG_TO, conv_src_memory}}); + net_bwd_args.push_back({{DNNL_ARG_FROM, conv_user_src_memory}, + {DNNL_ARG_TO, conv_src_memory}}); } auto conv_user_diff_dst_memory @@ -169,8 +169,8 @@ void MklConvBackwardWOp::jit_run() { if (conv_bwd_weights_pd.src_desc() != conv_src_memory.get_desc()) { conv_bwd_src_memory = memory(conv_bwd_weights_pd.src_desc(), eng); net_bwd.push_back(reorder(conv_src_memory, conv_bwd_src_memory)); - net_bwd_args.push_back({{MKLDNN_ARG_FROM, conv_src_memory}, - {MKLDNN_ARG_TO, conv_bwd_src_memory}}); + net_bwd_args.push_back({{DNNL_ARG_FROM, conv_src_memory}, + {DNNL_ARG_TO, conv_bwd_src_memory}}); } auto conv_diff_dst_memory = conv_user_diff_dst_memory; @@ -178,13 +178,13 @@ void MklConvBackwardWOp::jit_run() { != conv_user_diff_dst_memory.get_desc()) { conv_diff_dst_memory = memory(conv_bwd_weights_pd.diff_dst_desc(), eng); net_bwd.push_back(reorder(conv_user_diff_dst_memory, conv_diff_dst_memory)); - net_bwd_args.push_back({{MKLDNN_ARG_FROM, conv_user_diff_dst_memory}, - {MKLDNN_ARG_TO, conv_diff_dst_memory}}); + net_bwd_args.push_back({{DNNL_ARG_FROM, conv_user_diff_dst_memory}, + {DNNL_ARG_TO, conv_diff_dst_memory}}); } net_bwd.push_back(convolution_backward_weights(conv_bwd_weights_pd)); - net_bwd_args.push_back({{MKLDNN_ARG_SRC, conv_bwd_src_memory}, - {MKLDNN_ARG_DIFF_DST, conv_diff_dst_memory}}); + net_bwd_args.push_back({{DNNL_ARG_SRC, conv_bwd_src_memory}, + {DNNL_ARG_DIFF_DST, conv_diff_dst_memory}}); auto conv_diff_weights_memory = conv_user_diff_weights_memory; if (conv_bwd_weights_pd.diff_weights_desc() @@ -192,15 +192,15 @@ void MklConvBackwardWOp::jit_run() { conv_diff_weights_memory = memory(conv_bwd_weights_pd.diff_weights_desc(), eng); net_bwd_args.back().insert( - {MKLDNN_ARG_DIFF_WEIGHTS, conv_diff_weights_memory}); + {DNNL_ARG_DIFF_WEIGHTS, conv_diff_weights_memory}); net_bwd.push_back(reorder( conv_diff_weights_memory, conv_user_diff_weights_memory)); - net_bwd_args.push_back({{MKLDNN_ARG_FROM, conv_diff_weights_memory}, - {MKLDNN_ARG_TO, conv_user_diff_weights_memory}}); + net_bwd_args.push_back({{DNNL_ARG_FROM, conv_diff_weights_memory}, + {DNNL_ARG_TO, conv_user_diff_weights_memory}}); } else { net_bwd_args.back().insert( - {MKLDNN_ARG_DIFF_WEIGHTS, conv_diff_weights_memory}); + {DNNL_ARG_DIFF_WEIGHTS, conv_diff_weights_memory}); } ASSERTop(net_bwd.size(),==,net_bwd_args.size()); diff --git a/python/jittor/extern/mkl/ops/mkl_conv_backward_x_op.cc b/python/jittor/extern/mkl/ops/mkl_conv_backward_x_op.cc index 201524b6..62a5518f 100644 --- a/python/jittor/extern/mkl/ops/mkl_conv_backward_x_op.cc +++ b/python/jittor/extern/mkl/ops/mkl_conv_backward_x_op.cc @@ -13,9 +13,9 @@ #include "var.h" #include "mkl_conv_backward_x_op.h" -#include +#include -using namespace mkldnn; +using namespace dnnl; using namespace std; namespace jittor { @@ -142,8 +142,8 @@ void MklConvBackwardXOp::jit_run() { conv_weights_memory = memory(conv_pd.weights_desc(), eng); net_bwd.push_back( reorder(conv_user_weights_memory, conv_weights_memory)); - net_bwd_args.push_back({{MKLDNN_ARG_FROM, conv_user_weights_memory}, - {MKLDNN_ARG_TO, conv_weights_memory}}); + net_bwd_args.push_back({{DNNL_ARG_FROM, conv_user_weights_memory}, + {DNNL_ARG_TO, conv_weights_memory}}); } auto conv_user_diff_dst_memory @@ -168,21 +168,21 @@ void MklConvBackwardXOp::jit_run() { != conv_user_diff_dst_memory.get_desc()) { conv_diff_dst_memory = memory(conv_bwd_data_pd.diff_dst_desc(), eng); net_bwd.push_back(reorder(conv_user_diff_dst_memory, conv_diff_dst_memory)); - net_bwd_args.push_back({{MKLDNN_ARG_FROM, conv_user_diff_dst_memory}, - {MKLDNN_ARG_TO, conv_diff_dst_memory}}); + net_bwd_args.push_back({{DNNL_ARG_FROM, conv_user_diff_dst_memory}, + {DNNL_ARG_TO, conv_diff_dst_memory}}); } auto conv_bwd_weights_memory = conv_weights_memory; if (conv_bwd_data_pd.weights_desc() != conv_weights_memory.get_desc()) { conv_bwd_weights_memory = memory(conv_bwd_data_pd.weights_desc(), eng); net_bwd.push_back(reorder(conv_weights_memory, conv_bwd_weights_memory)); - net_bwd_args.push_back({{MKLDNN_ARG_FROM, conv_weights_memory}, - {MKLDNN_ARG_TO, conv_bwd_weights_memory}}); + net_bwd_args.push_back({{DNNL_ARG_FROM, conv_weights_memory}, + {DNNL_ARG_TO, conv_bwd_weights_memory}}); } net_bwd.push_back(convolution_backward_data(conv_bwd_data_pd)); - net_bwd_args.push_back({{MKLDNN_ARG_WEIGHTS, conv_bwd_weights_memory}, - {MKLDNN_ARG_DIFF_DST, conv_diff_dst_memory}}); + net_bwd_args.push_back({{DNNL_ARG_WEIGHTS, conv_bwd_weights_memory}, + {DNNL_ARG_DIFF_DST, conv_diff_dst_memory}}); auto conv_diff_src_memory = conv_user_diff_src_memory; if (conv_bwd_data_pd.diff_src_desc() @@ -190,15 +190,15 @@ void MklConvBackwardXOp::jit_run() { conv_diff_src_memory = memory(conv_bwd_data_pd.diff_src_desc(), eng); net_bwd_args.back().insert( - {MKLDNN_ARG_DIFF_SRC, conv_diff_src_memory}); + {DNNL_ARG_DIFF_SRC, conv_diff_src_memory}); net_bwd.push_back(reorder( conv_diff_src_memory, conv_user_diff_src_memory)); - net_bwd_args.push_back({{MKLDNN_ARG_FROM, conv_diff_src_memory}, - {MKLDNN_ARG_TO, conv_user_diff_src_memory}}); + net_bwd_args.push_back({{DNNL_ARG_FROM, conv_diff_src_memory}, + {DNNL_ARG_TO, conv_user_diff_src_memory}}); } else { net_bwd_args.back().insert( - {MKLDNN_ARG_DIFF_SRC, conv_diff_src_memory}); + {DNNL_ARG_DIFF_SRC, conv_diff_src_memory}); } ASSERTop(net_bwd.size(),==,net_bwd_args.size()); diff --git a/python/jittor/extern/mkl/ops/mkl_conv_op.cc b/python/jittor/extern/mkl/ops/mkl_conv_op.cc index fb9c87e3..b8ddc0da 100644 --- a/python/jittor/extern/mkl/ops/mkl_conv_op.cc +++ b/python/jittor/extern/mkl/ops/mkl_conv_op.cc @@ -7,12 +7,12 @@ // This file is subject to the terms and conditions defined in // file 'LICENSE.txt', which is part of this source code package. // *************************************************************** -#include +#include #include "var.h" #include "mkl_conv_op.h" -using namespace mkldnn; +using namespace dnnl; using namespace std; namespace jittor { @@ -110,7 +110,7 @@ void MklConvOp::jit_run() { auto n = ws[3]; auto k = xs[3]; // x: [m,k], w: [k,n], y: [m,n] - ASSERTop(0,==,mkldnn_sgemm('N', 'N', m, n, k, + ASSERTop(0,==,dnnl_sgemm('N', 'N', m, n, k, 1.f, x->ptr(), k, w->ptr(), n, 0.f, y->ptr(), n)); @@ -162,27 +162,27 @@ void MklConvOp::jit_run() { if (conv1_prim_desc.src_desc() != user_src_memory.get_desc()) { conv1_src_memory = memory(conv1_prim_desc.src_desc(), eng); net.push_back(reorder(user_src_memory, conv1_src_memory)); - net_args.push_back({ { MKLDNN_ARG_FROM, user_src_memory }, - { MKLDNN_ARG_TO, conv1_src_memory } }); + net_args.push_back({ { DNNL_ARG_FROM, user_src_memory }, + { DNNL_ARG_TO, conv1_src_memory } }); } auto conv1_weights_memory = user_weights_memory; if (conv1_prim_desc.weights_desc() != user_weights_memory.get_desc()) { conv1_weights_memory = memory(conv1_prim_desc.weights_desc(), eng); net.push_back(reorder(user_weights_memory, conv1_weights_memory)); - net_args.push_back({ { MKLDNN_ARG_FROM, user_weights_memory }, { MKLDNN_ARG_TO, conv1_weights_memory } }); + net_args.push_back({ { DNNL_ARG_FROM, user_weights_memory }, { DNNL_ARG_TO, conv1_weights_memory } }); } auto conv1_dst_memory = memory(conv1_prim_desc.dst_desc(), eng); net.push_back(convolution_forward(conv1_prim_desc)); - net_args.push_back({ { MKLDNN_ARG_SRC, conv1_src_memory }, - { MKLDNN_ARG_WEIGHTS, conv1_weights_memory }, - { MKLDNN_ARG_DST, conv1_dst_memory } }); + net_args.push_back({ { DNNL_ARG_SRC, conv1_src_memory }, + { DNNL_ARG_WEIGHTS, conv1_weights_memory }, + { DNNL_ARG_DST, conv1_dst_memory } }); if (conv1_dst_memory != user_dst_memory) { net.push_back(reorder(conv1_dst_memory, user_dst_memory)); - net_args.push_back({ { MKLDNN_ARG_FROM, conv1_dst_memory },{ MKLDNN_ARG_TO, user_dst_memory } }); + net_args.push_back({ { DNNL_ARG_FROM, conv1_dst_memory },{ DNNL_ARG_TO, user_dst_memory } }); } ASSERTop(net.size(),==,net_args.size()); diff --git a/python/jittor/extern/mkl/ops/mkl_matmul_op.cc b/python/jittor/extern/mkl/ops/mkl_matmul_op.cc index a35ac53b..2a29f1ad 100644 --- a/python/jittor/extern/mkl/ops/mkl_matmul_op.cc +++ b/python/jittor/extern/mkl/ops/mkl_matmul_op.cc @@ -7,12 +7,12 @@ // This file is subject to the terms and conditions defined in // file 'LICENSE.txt', which is part of this source code package. // *************************************************************** -#include +#include #include "var.h" #include "mkl_matmul_op.h" -using namespace mkldnn; +using namespace dnnl; using namespace std; namespace jittor { @@ -66,7 +66,7 @@ void MklMatmulOp::jit_run() { k = bs[0]; } // a: [n,m], b: [m,k], c: [n,k] - ASSERTop(0,==,mkldnn_sgemm('@Trans_a', '@Trans_b', n, k, m, + ASSERTop(0,==,dnnl_sgemm('@Trans_a', '@Trans_b', n, k, m, 1.f, a->ptr(), '@Trans_a'=='N'? m : n, b->ptr(), '@Trans_b' == 'N' ? k : m, 0.f, c->ptr(), k)); From 10c51c68230f5b1882c68593408424dfa407dff8 Mon Sep 17 00:00:00 2001 From: lzhengning Date: Tue, 22 Mar 2022 17:18:31 +0800 Subject: [PATCH 19/33] fix a compatible issue with onednn 2.5 --- python/jittor/__init__.py | 2 +- python/jittor/__init__.pyi | 152 ++++++++++++++++++++++++++++++++----- 2 files changed, 132 insertions(+), 22 deletions(-) diff --git a/python/jittor/__init__.py b/python/jittor/__init__.py index 70cd1f1f..3b304617 100644 --- a/python/jittor/__init__.py +++ b/python/jittor/__init__.py @@ -9,7 +9,7 @@ # file 'LICENSE.txt', which is part of this source code package. # *************************************************************** -__version__ = '1.3.1.51' +__version__ = '1.3.1.52' from jittor_utils import lock with lock.lock_scope(): ori_int = int diff --git a/python/jittor/__init__.pyi b/python/jittor/__init__.pyi index 79ee0911..dc9d6cb9 100644 --- a/python/jittor/__init__.pyi +++ b/python/jittor/__init__.pyi @@ -5,7 +5,7 @@ from . import attention as attention, contrib as contrib, dataset as dataset, in from .compile_extern import cublas as cublas, cudnn as cudnn, curand as curand, mkl_ops as mkl_ops, mpi_ops as mpi_ops, world_size as world_size from .compiler import compile_custom_op as compile_custom_op, compile_custom_ops as compile_custom_ops from .contrib import concat as concat -from .nn import matmul as matmul +from .nn import bmm as bmm, bmm_transpose as bmm_transpose, matmul as matmul from collections import OrderedDict as OrderedDict from collections.abc import Mapping as Mapping from typing import Any @@ -64,6 +64,8 @@ def clean() -> None: ... cast = unary def array(data, dtype: Any | None = ...): ... +def random(shape, dtype: str = ..., type: str = ...): ... +def float_auto(x): ... def array64(data, dtype: Any | None = ...): ... def grad(loss, targets): ... def liveness_info(): ... @@ -85,7 +87,6 @@ origin_transpose = transpose def transpose(x, *dim): ... permute = transpose def flatten(input, start_dim: int = ..., end_dim: int = ...): ... -def start_grad(x): ... def detach(x): ... def unsqueeze(x, dim): ... def squeeze(x, dim): ... @@ -149,6 +150,11 @@ class Module: is_train: bool def is_training(self) -> bool: ... def mpi_param_broadcast(self, root: int = ...) -> None: ... + def __setattr__(self, key, value) -> None: ... + def __getattr__(self, key): ... + def float16(self) -> None: ... + def half(self) -> None: ... + def float_auto(self) -> None: ... class Function(Module): input_mask: Any @@ -187,6 +193,7 @@ def to_float(v): ... def to_bool(v): ... def format(v, spec): ... def get_len(var): ... +half = float16 def is_var(v): ... from typing import List, Tuple, Callable, overload @@ -374,7 +381,7 @@ def index(shape: Tuple[int], dim: int, dtype: str="int32")-> Var: # output: [[0,1],[0,1]]''' ... @overload -def index(shape: Tuple[int], dtype: str="int32")-> List[Var]: +def index(shape: Tuple[int], dtype: str="int32"): '''Document: * Index Operator generate index of shape. @@ -428,7 +435,7 @@ def index(a: Var, dim: int, dtype: str="int32")-> Var: # output: [[0,1],[0,1]]''' ... @overload -def index(a: Var, dtype: str="int32")-> List[Var]: +def index(a: Var, dtype: str="int32"): '''Document: * Index Operator generate index of shape. @@ -461,7 +468,7 @@ def index_var(a: Var, dim: int, dtype: str="int32")-> Var: jt.index_var(a, 1) similar with jt.index(a.shape, 1)''' ... @overload -def index_var(a: Var, dtype: str="int32")-> List[Var]: +def index_var(a: Var, dtype: str="int32"): '''Document: * shape dependency version of index op jt.index_var(a, 1) similar with jt.index(a.shape, 1)''' @@ -824,7 +831,7 @@ def bitwise_xor(x: Var, y: Var)-> Var: ... def tape(x: Var)-> Var: ... -def where(cond: Var, dtype: str="int32")-> List[Var]: +def where(cond: Var, dtype: str="int32"): '''Document: * Where Operator generate index of true condition. @@ -838,9 +845,9 @@ def where(cond: Var, dtype: str="int32")-> List[Var]: Example:: jt.where([[0,0,1],[1,0,0]]) - # return ( [0,2], [1,0] )''' + # return [jt.Var([0 1], dtype=int32), jt.Var([2 0], dtype=int32)]''' ... -def argsort(x: Var, dim: int=-1, descending: bool=False, dtype: str="int32")-> List[Var]: +def argsort(x: Var, dim: int=-1, descending: bool=False, dtype: str="int32"): '''Document: * Argsort Operator Perform an indirect sort by given key or compare function. @@ -883,7 +890,7 @@ def argsort(x: Var, dim: int=-1, descending: bool=False, dtype: str="int32")-> L ... def fetch(inputs: List[Var], func: Callable)-> Var: ... -def arg_reduce(x: Var, op: str, dim: int, keepdims: bool)-> List[Var]: +def arg_reduce(x: Var, op: str, dim: int, keepdims: bool): '''Document: * Returns the indices of the maximum / minimum of the input across a dimension. @@ -2278,6 +2285,8 @@ def uint32(x: Var)-> Var: ... def uint64(x: Var)-> Var: ... +def float16(x: Var)-> Var: + ... def float32(x: Var)-> Var: ... def float64(x: Var)-> Var: @@ -2870,6 +2879,8 @@ def erf(x: Var)-> Var: >>> jt.erf(a) jt.Var([ 0.51559156 0.45739546 -0.85728306 -0.9258883 ], dtype=float32)''' ... +def erfinv(x: Var)-> Var: + ... def transpose(x: Var, axes: Tuple[int]=())-> Var: ... def fuse_transpose(x: Var, axes: Tuple[int]=())-> Var: @@ -3005,7 +3016,7 @@ def numpy_code(shape: Tuple[int], dtype: str, inputs: List[Var], forward: Callab )''' ... @overload -def numpy_code(shapes: List[Tuple[int]], dtypes: List[str], inputs: List[Var], forward: Callable, backward: List[Callable])-> List[Var]: +def numpy_code(shapes: List[Tuple[int]], dtypes: List[str], inputs: List[Var], forward: Callable, backward: List[Callable]): '''Document: * Numpy Code Operator for easily customized op. @@ -3151,7 +3162,7 @@ def numpy_code(shape: Tuple[int], dtype: str, inputs: List[Var], forward: Callab )''' ... @overload -def numpy_code(shapes: List[Tuple[int]], dtypes: List[str], inputs: List[Var], forward: Callable)-> List[Var]: +def numpy_code(shapes: List[Tuple[int]], dtypes: List[str], inputs: List[Var], forward: Callable): '''Document: * Numpy Code Operator for easily customized op. @@ -3345,6 +3356,23 @@ def code(shape: Tuple[int], dtype: str, inputs: List[Var]={}, cpu_src: str="", c assert (b.data == [5,3,1]).all() assert (c.data == [-4,-2]).all() + Example-5:: + + # This example shows how to customize code op + # compilation flags, such as add include search + # path, add definitions, or any command line options + + a = jt.random([10]) + b = jt.code(a.shape, a.dtype, [a], + cpu_src=""" + @out0(0) = HAHAHA; + """) + # HAHAHA is defined in flags below + # /any/include/path can be change to any path you want to include + b.compile_options = {"FLAGS: -DHAHAHA=233 -I/any/include/path ": 1} + print(b[0]) + # will output 233 + CUDA Example-1:: @@ -3435,7 +3463,7 @@ def code(shape: Tuple[int], dtype: str, inputs: List[Var]={}, cpu_src: str="", c print(jt.grad(c, [a, b]))''' ... @overload -def code(shapes: List[Tuple[int]], dtypes: List[str], inputs: List[Var]={}, cpu_src: str="", cpu_grad_src: List[str]={}, cpu_header: str="", cuda_src: str="", cuda_grad_src: List[str]={}, cuda_header: str="")-> List[Var]: +def code(shapes: List[Tuple[int]], dtypes: List[str], inputs: List[Var]={}, cpu_src: str="", cpu_grad_src: List[str]={}, cpu_header: str="", cuda_src: str="", cuda_grad_src: List[str]={}, cuda_header: str=""): '''Document: * Code Operator for easily customized op. @@ -3556,6 +3584,23 @@ def code(shapes: List[Tuple[int]], dtypes: List[str], inputs: List[Var]={}, cpu_ assert (b.data == [5,3,1]).all() assert (c.data == [-4,-2]).all() + Example-5:: + + # This example shows how to customize code op + # compilation flags, such as add include search + # path, add definitions, or any command line options + + a = jt.random([10]) + b = jt.code(a.shape, a.dtype, [a], + cpu_src=""" + @out0(0) = HAHAHA; + """) + # HAHAHA is defined in flags below + # /any/include/path can be change to any path you want to include + b.compile_options = {"FLAGS: -DHAHAHA=233 -I/any/include/path ": 1} + print(b[0]) + # will output 233 + CUDA Example-1:: @@ -3646,7 +3691,7 @@ def code(shapes: List[Tuple[int]], dtypes: List[str], inputs: List[Var]={}, cpu_ print(jt.grad(c, [a, b]))''' ... @overload -def code(inputs: List[Var], outputs: List[Var], cpu_src: str="", cpu_grad_src: List[str]={}, cpu_header: str="", cuda_src: str="", cuda_grad_src: List[str]={}, cuda_header: str="")-> List[Var]: +def code(inputs: List[Var], outputs: List[Var], cpu_src: str="", cpu_grad_src: List[str]={}, cpu_header: str="", cuda_src: str="", cuda_grad_src: List[str]={}, cuda_header: str=""): '''Document: * Code Operator for easily customized op. @@ -3767,6 +3812,23 @@ def code(inputs: List[Var], outputs: List[Var], cpu_src: str="", cpu_grad_src: L assert (b.data == [5,3,1]).all() assert (c.data == [-4,-2]).all() + Example-5:: + + # This example shows how to customize code op + # compilation flags, such as add include search + # path, add definitions, or any command line options + + a = jt.random([10]) + b = jt.code(a.shape, a.dtype, [a], + cpu_src=""" + @out0(0) = HAHAHA; + """) + # HAHAHA is defined in flags below + # /any/include/path can be change to any path you want to include + b.compile_options = {"FLAGS: -DHAHAHA=233 -I/any/include/path ": 1} + print(b[0]) + # will output 233 + CUDA Example-1:: @@ -4239,7 +4301,7 @@ class Var: # output: [[0,1],[0,1]]''' ... @overload - def index(self, dtype: str="int32")-> List[Var]: + def index(self, dtype: str="int32"): '''Document: * Index Operator generate index of shape. @@ -4272,7 +4334,7 @@ class Var: jt.index_var(a, 1) similar with jt.index(a.shape, 1)''' ... @overload - def index_var(self, dtype: str="int32")-> List[Var]: + def index_var(self, dtype: str="int32"): '''Document: * shape dependency version of index op jt.index_var(a, 1) similar with jt.index(a.shape, 1)''' @@ -4633,7 +4695,7 @@ class Var: * [in] y: the second input, jt.Var (integal or boolean).''' ... def tape(self)-> Var: ... - def where(self, dtype: str="int32")-> List[Var]: + def where(self, dtype: str="int32"): '''Document: * Where Operator generate index of true condition. @@ -4647,9 +4709,9 @@ class Var: Example:: jt.where([[0,0,1],[1,0,0]]) - # return ( [0,2], [1,0] )''' + # return [jt.Var([0 1], dtype=int32), jt.Var([2 0], dtype=int32)]''' ... - def argsort(self, dim: int=-1, descending: bool=False, dtype: str="int32")-> List[Var]: + def argsort(self, dim: int=-1, descending: bool=False, dtype: str="int32"): '''Document: * Argsort Operator Perform an indirect sort by given key or compare function. @@ -4691,7 +4753,7 @@ class Var: # return [[0 1 0],[1 0 1]], [[11 11 12],[12 13 13]]''' ... def fetch(self, func: Callable)-> Var: ... - def arg_reduce(self, op: str, dim: int, keepdims: bool)-> List[Var]: + def arg_reduce(self, op: str, dim: int, keepdims: bool): '''Document: * Returns the indices of the maximum / minimum of the input across a dimension. @@ -6059,6 +6121,7 @@ class Var: def uint16(self)-> Var: ... def uint32(self)-> Var: ... def uint64(self)-> Var: ... + def float16(self)-> Var: ... def float32(self)-> Var: ... def float64(self)-> Var: ... def abs(self)-> Var: @@ -6649,6 +6712,7 @@ class Var: >>> jt.erf(a) jt.Var([ 0.51559156 0.45739546 -0.85728306 -0.9258883 ], dtype=float32)''' ... + def erfinv(self)-> Var: ... def transpose(self, axes: Tuple[int]=())-> Var: ... def fuse_transpose(self, axes: Tuple[int]=())-> Var: ... def safe_clip(self, left: float, right: float)-> Var: @@ -6705,7 +6769,7 @@ class Var: # x[y[0], 1] <= x[y[1], 1] and x[y[1], 1] <= x[y[2], 1] and ... and x[y[m-2], 1] <= x[y[m-1], 1]''' ... @overload - def code(self, outputs: List[Var], cpu_src: str="", cpu_grad_src: List[str]={}, cpu_header: str="", cuda_src: str="", cuda_grad_src: List[str]={}, cuda_header: str="")-> List[Var]: + def code(self, outputs: List[Var], cpu_src: str="", cpu_grad_src: List[str]={}, cpu_header: str="", cuda_src: str="", cuda_grad_src: List[str]={}, cuda_header: str=""): '''Document: * Code Operator for easily customized op. @@ -6826,6 +6890,23 @@ class Var: assert (b.data == [5,3,1]).all() assert (c.data == [-4,-2]).all() + Example-5:: + + # This example shows how to customize code op + # compilation flags, such as add include search + # path, add definitions, or any command line options + + a = jt.random([10]) + b = jt.code(a.shape, a.dtype, [a], + cpu_src=""" + @out0(0) = HAHAHA; + """) + # HAHAHA is defined in flags below + # /any/include/path can be change to any path you want to include + b.compile_options = {"FLAGS: -DHAHAHA=233 -I/any/include/path ": 1} + print(b[0]) + # will output 233 + CUDA Example-1:: @@ -7177,6 +7258,11 @@ class Var: * * return True if operator fusion is stopped.''' ... + def start_grad(self)-> Var: + '''Document: + * + * enable the gradient calculation for the Var.''' + ... def item(self)-> float | int | bool: '''Document: * @@ -7266,7 +7352,13 @@ class Var: [1 8 1 1 2 2]], dtype=int32)''' ... def permute(self, x: Var, axes: Tuple[int]=())-> Var: ... + def detach_inplace(self)-> Var: + '''Document: + * + * enable the gradient calculation for the Var.''' + ... def astype(self, x: Var, op: str)-> Var: ... + def half(self, x: Var)-> Var: ... def expand_as(self, x: Var, y: Var, dims: Tuple[int]=())-> Var: '''Document: * @@ -7310,8 +7402,12 @@ class Flags: '''A set of flags to configure jittor running behaviors''' addr2line_path: str '''Path of addr2line. Default: ""''' + amp_reg: int + '''Auto mixed-precision control registers, bit 0: prefer 32; bit 1: prefer 16; bit 2: keep reduce type; bit 3 keep white list type; bit 4: array like op prefer too. Default: 0''' auto_convert_64_to_32: int '''auto convert 64bit numpy array into 32bit jittor array. Default: 1''' + auto_mixed_precision_level: int + '''Auto mixed-precision optimization level, 0: not use fp16, 1-3: preserve level, not use fp16 for now; 4: perfer fp16, but some ops use fp32 e.g. sum,exp; 5: simular with 4, and array op will automatically convert to fp16; 6: all ops prefer fp16. Default: 0''' cache_path: str '''Cache path of jittor. Default: ""''' cc_flags: str @@ -7324,10 +7420,12 @@ class Flags: '''Unify graph sanity check. Default: 0''' compile_options: Any '''Override the default loop transfrom options. Default: {}''' + disable_lock: bool + '''Disable file lock. Default: 0''' enable_tuner: int '''Enable tuner. Default: 1''' exclude_pass: str - '''Don't run certian pass. Default: ""''' + '''Don't run certain pass. Default: ""''' extra_gdb_cmd: str '''Extra command pass to GDB, seperate by(;) . Default: ""): Extra command pass to GDB, seperate by(;''' gdb_attach: int @@ -7352,6 +7450,8 @@ class Flags: '''Default enabled, if disable, use immediately eager execution rather than lazy execution, This flag makes error message and traceback infomation better. But this flag will raise memory consumption and lower the performance. Default: 1''' log_file: str '''log to file, mpi env will add $OMPI_COMM_WORLD_RANK suffix. Default: ""''' + log_op_hash: str + '''Output compiler pass result of certain hash of op. Default: ""''' log_silent: int '''The log will be completely silent. Default: 0''' log_sync: int @@ -7376,6 +7476,10 @@ class Flags: '''Enable profiler. Default: 0''' profiler_hide_relay: int '''Profiler hide relayed op. Default: 0''' + profiler_record_peek: int + '''Profiler record peek mem bandwidth. Default: 0''' + profiler_record_shape: int + '''Profiler record shape for op. Default: 0''' profiler_rerun: int '''Profiler rerun. Default: 0''' profiler_warmup: int @@ -7402,8 +7506,12 @@ class Flags: '''If not overflow, try to use 32 bit type as index type. Default: 0''' update_queue_auto_flush_delay: int '''when size of a update queue is great than this value, update queue trigger auto flush(default 2). Default: 2): when size of a update queue is great than this value, update queue trigger auto flush(default 2''' + use_acl: int + '''Use cuda or not. 1 for trying to use cuda, 2 for forcing to use cuda. Default: 0''' use_cuda: int '''Use cuda or not. 1 for trying to use cuda, 2 for forcing to use cuda. Default: 0''' + use_device: int + '''Use cuda or not. 1 for trying to use cuda, 2 for forcing to use cuda. Default: 0''' use_nfef_allocator: int '''Enable never free exact fit allocator. Default: 0''' use_parallel_op_compiler: int @@ -7414,5 +7522,7 @@ class Flags: '''Enable stat allocator. Default: 0''' use_temp_allocator: int '''Enable temp allocator. Default: 1''' + use_tensorcore: int + '''use tensor core. Default: 0''' flags: Flags '''Jittor running time flags instance''' From aa45703143c6b00aa59c88aa06b2ebc4cd913d1b Mon Sep 17 00:00:00 2001 From: li-xl <1905692338@qq.com> Date: Tue, 22 Mar 2022 20:28:43 +0800 Subject: [PATCH 20/33] add jittor_home --- python/jittor/compile_extern.py | 13 ++++------ python/jittor/compiler.py | 2 +- python/jittor/dataset/dataset.py | 3 ++- python/jittor/notebook/md_to_ipynb.py | 4 +-- python/jittor/test/perf/perf.py | 4 +-- python/jittor/test/test_lock.py | 4 +-- python/jittor/test/test_notebooks.py | 4 +-- python/jittor/test/test_utils.py | 4 +-- python/jittor/utils/polish.py | 4 +-- python/jittor/utils/polish_centos.py | 4 +-- python/jittor_utils/__init__.py | 37 ++++++++++++++++++++++----- python/jittor_utils/auto_diff.py | 4 +-- python/jittor_utils/clean_cache.py | 4 +-- python/jittor_utils/install_cuda.py | 4 +-- 14 files changed, 59 insertions(+), 36 deletions(-) diff --git a/python/jittor/compile_extern.py b/python/jittor/compile_extern.py index fc517934..2518dbe8 100644 --- a/python/jittor/compile_extern.py +++ b/python/jittor/compile_extern.py @@ -9,6 +9,7 @@ import platform from .compiler import * from jittor_utils import run_cmd, get_version, get_int_version from jittor_utils.misc import download_url_to_local +import jittor_utils as jit_utils def search_file(dirs, name, prefer_version=()): if os.name == 'nt': @@ -110,8 +111,7 @@ def setup_mkl(): LOG.v("setup mkl...") # mkl_path = os.path.join(cache_path, "mkl") # mkl_path decouple with cc_path - from pathlib import Path - mkl_path = os.path.join(str(Path.home()), ".cache", "jittor", "mkl") + mkl_path = os.path.join(jit_utils.home(), ".cache", "jittor", "mkl") make_cache_dir(mkl_path) install_mkl(mkl_path) @@ -178,8 +178,7 @@ def install_cub(root_folder): def setup_cub(): global cub_home cub_home = "" - from pathlib import Path - cub_path = os.path.join(str(Path.home()), ".cache", "jittor", "cub") + cub_path = os.path.join(jit_utils.home(), ".cache", "jittor", "cub") cuda_version = int(get_version(nvcc_path)[1:-1].split('.')[0]) extra_flags = "" if cuda_version < 11: @@ -376,8 +375,7 @@ def setup_cutt(): if cutt_lib_path is None or cutt_include_path is None: LOG.v("setup cutt...") # cutt_path decouple with cc_path - from pathlib import Path - cutt_path = os.path.join(str(Path.home()), ".cache", "jittor", "cutt") + cutt_path = os.path.join(jit_utils.home(), ".cache", "jittor", "cutt") make_cache_dir(cutt_path) install_cutt(cutt_path) @@ -453,8 +451,7 @@ def setup_nccl(): if nccl_lib_path is None or nccl_include_path is None: LOG.v("setup nccl...") # nccl_path decouple with cc_path - from pathlib import Path - nccl_path = os.path.join(str(Path.home()), ".cache", "jittor", "nccl") + nccl_path = os.path.join(jit_utils.home(), ".cache", "jittor", "nccl") make_cache_dir(nccl_path) nccl_home = install_nccl(nccl_path) diff --git a/python/jittor/compiler.py b/python/jittor/compiler.py index a7024a40..9a49709d 100644 --- a/python/jittor/compiler.py +++ b/python/jittor/compiler.py @@ -19,7 +19,7 @@ from ctypes import cdll from ctypes.util import find_library import jittor_utils as jit_utils -from jittor_utils import LOG, run_cmd, cache_path, find_exe, cc_path, cc_type, cache_path +from jittor_utils import LOG, run_cmd, find_exe, cc_path, cc_type, cache_path from . import pyjt_compiler from jittor_utils import lock from jittor_utils import install_cuda diff --git a/python/jittor/dataset/dataset.py b/python/jittor/dataset/dataset.py index a122040b..f4fc06ba 100644 --- a/python/jittor/dataset/dataset.py +++ b/python/jittor/dataset/dataset.py @@ -21,8 +21,9 @@ import signal from jittor_utils import LOG import jittor as jt import time +import jittor_utils as jit_utils -dataset_root = os.path.join(pathlib.Path.home(), ".cache", "jittor", "dataset") +dataset_root = os.path.join(jit_utils.home(), ".cache", "jittor", "dataset") mp_log_v = os.environ.get("mp_log_v", 0) mpi = jt.mpi img_open_hook = HookTimer(Image, "open") diff --git a/python/jittor/notebook/md_to_ipynb.py b/python/jittor/notebook/md_to_ipynb.py index 61302e49..175b50f8 100644 --- a/python/jittor/notebook/md_to_ipynb.py +++ b/python/jittor/notebook/md_to_ipynb.py @@ -1,7 +1,7 @@ #!python3 import os, json -from pathlib import Path -notebook_dir = os.path.join(str(Path.home()), ".cache","jittor","notebook") +import jittor_utils as jit_utils +notebook_dir = os.path.join(jit_utils.home(), ".cache","jittor","notebook") if not os.path.isdir(notebook_dir): os.mkdir(notebook_dir) dirname = os.path.dirname(__file__) diff --git a/python/jittor/test/perf/perf.py b/python/jittor/test/perf/perf.py index ef190017..93e77ef1 100644 --- a/python/jittor/test/perf/perf.py +++ b/python/jittor/test/perf/perf.py @@ -4,8 +4,8 @@ suffix = "" import jittor as jt import time -from pathlib import Path -home_path = str(Path.home()) +import jittor_utils as jit_utils +home_path = jit_utils.home() perf_path = os.path.join(home_path, ".cache", "jittor_perf") def main(): diff --git a/python/jittor/test/test_lock.py b/python/jittor/test/test_lock.py index e70486cd..f5f17b26 100644 --- a/python/jittor/test/test_lock.py +++ b/python/jittor/test/test_lock.py @@ -10,12 +10,12 @@ import unittest import os, sys import jittor as jt -from pathlib import Path +import jittor_utils as jit_utils class TestLock(unittest.TestCase): def test(self): if os.environ.get('lock_full_test', '0') == '1': - cache_path = os.path.join(str(Path.home()), ".cache", "jittor", "lock") + cache_path = os.path.join(jit_utils.home(), ".cache", "jittor", "lock") assert os.system(f"rm -rf {cache_path}") == 0 cmd = f"cache_name=lock {sys.executable} -m jittor.test.test_example" else: diff --git a/python/jittor/test/test_notebooks.py b/python/jittor/test/test_notebooks.py index 9f90b7d8..a88f0d19 100644 --- a/python/jittor/test/test_notebooks.py +++ b/python/jittor/test/test_notebooks.py @@ -8,10 +8,10 @@ import unittest, os import jittor as jt from jittor import LOG import sys -from pathlib import Path +import jittor_utils as jit_utils dirname = os.path.join(jt.flags.jittor_path, "notebook") -notebook_dir = os.path.join(str(Path.home()), ".cache","jittor","notebook") +notebook_dir = os.path.join(jit_utils.home(), ".cache","jittor","notebook") tests = [] for mdname in os.listdir(dirname): if not mdname.endswith(".src.md"): continue diff --git a/python/jittor/test/test_utils.py b/python/jittor/test/test_utils.py index 16c381fe..69cbda82 100644 --- a/python/jittor/test/test_utils.py +++ b/python/jittor/test/test_utils.py @@ -15,8 +15,8 @@ def find_jittor_path(): return path[:-len(suffix)] + ".." def find_cache_path(): - from pathlib import Path - path = str(Path.home()) + import jittor_utils as jit_utils + path = jit_utils.home() dirs = [".cache", "jittor"] for d in dirs: path = os.path.join(path, d) diff --git a/python/jittor/utils/polish.py b/python/jittor/utils/polish.py index a49e8a5a..77256399 100644 --- a/python/jittor/utils/polish.py +++ b/python/jittor/utils/polish.py @@ -49,8 +49,8 @@ data_files = [ name for name in files LOG.i("data_files", data_files) # compile data files -from pathlib import Path -home = str(Path.home()) +import jittor_utils as jit_utils +home = jit_utils.home() # for cc_type in ["g++", "clang"]: # for device in ["cpu", "cuda"]: diff --git a/python/jittor/utils/polish_centos.py b/python/jittor/utils/polish_centos.py index a2903775..caf6d027 100644 --- a/python/jittor/utils/polish_centos.py +++ b/python/jittor/utils/polish_centos.py @@ -7,8 +7,8 @@ # *************************************************************** import jittor as jt import os -from pathlib import Path -home_path = str(Path.home()) +import jittor_utils as jit_utils +home_path = jit_utils.home() def run_cmd(cmd): print("RUN CMD:", cmd) diff --git a/python/jittor_utils/__init__.py b/python/jittor_utils/__init__.py index 6d45e57f..b5e1e857 100644 --- a/python/jittor_utils/__init__.py +++ b/python/jittor_utils/__init__.py @@ -24,6 +24,34 @@ import ctypes if platform.system() == 'Darwin': mp.set_start_method('fork') +from pathlib import Path +import json + + +def home(): + src_path = os.path.join(str(Path.home()),".cache","jittor") + os.makedirs(src_path,exist_ok=True) + src_path_file = os.path.join(src_path,"config.json") + data = {} + if os.path.exists(src_path_file): + data = json.load(open(src_path_file)) + + default_path = data.get("jittor_home",str(Path.home())) + + _home_path = os.environ.get("jittor_home","") + + if not os.path.exists(_home_path): + _home_path = default_path + _home_path = os.path.abspath(_home_path) + + # LOG.i(f"Use {_home_path} as Jittor Home") + + with open(src_path_file,"w") as f: + data['jittor_home'] = _home_path + json.dump(data,f) + + return _home_path + class Logwrapper: def __init__(self): self.log_silent = int(os.environ.get("log_silent", "0")) @@ -295,8 +323,7 @@ def short(s): return ss def find_cache_path(): - from pathlib import Path - path = str(Path.home()) + path = home() # jittor version key jtv = "jt"+get_jittor_version().rsplit('.', 1)[0] # cc version key @@ -508,8 +535,7 @@ LOG = Logwrapper() check_msvc_install = False msvc_path = "" if os.name == 'nt' and os.environ.get("cc_path", "")=="": - from pathlib import Path - msvc_path = os.path.join(str(Path.home()), ".cache", "jittor", "msvc") + msvc_path = os.path.join(home(), ".cache", "jittor", "msvc") cc_path = os.path.join(msvc_path, "VC", r"_\_\_\_\_\bin", "cl.exe") check_msvc_install = True else: @@ -523,7 +549,6 @@ _py3_include_path = None _py3_extension_suffix = None if os.name == 'nt': - from pathlib import Path try: import ssl ssl._create_default_https_context = ssl._create_unverified_context @@ -533,7 +558,7 @@ if os.name == 'nt': if not os.path.isfile(cc_path): from jittor_utils import install_msvc install_msvc.install(msvc_path) - mpath = os.path.join(str(Path.home()), ".cache", "jittor", "msvc") + mpath = os.path.join(home(), ".cache", "jittor", "msvc") if cc_path.startswith(mpath): msvc_path = mpath os.RTLD_NOW = os.RTLD_GLOBAL = os.RTLD_DEEPBIND = 0 diff --git a/python/jittor_utils/auto_diff.py b/python/jittor_utils/auto_diff.py index 1235ca31..112366a6 100644 --- a/python/jittor_utils/auto_diff.py +++ b/python/jittor_utils/auto_diff.py @@ -1,9 +1,9 @@ import os -from pathlib import Path from collections import defaultdict import pickle import numpy as np import jittor_utils +import jittor_utils as jit_utils from jittor_utils import LOG import sys @@ -96,7 +96,7 @@ class Hook: hook_rand() self.rid = 0 self.base_name = base_name - self.base_path = os.path.join(str(Path.home()), ".cache", "jittor", "auto_diff", base_name) + self.base_path = os.path.join(jit_utils.home(), ".cache", "jittor", "auto_diff", base_name) if not os.path.exists(self.base_path): os.makedirs(self.base_path, exist_ok=True) self.mode = 'save' diff --git a/python/jittor_utils/clean_cache.py b/python/jittor_utils/clean_cache.py index 72702707..74e05d1d 100644 --- a/python/jittor_utils/clean_cache.py +++ b/python/jittor_utils/clean_cache.py @@ -5,10 +5,10 @@ # file 'LICENSE.txt', which is part of this source code package. # *************************************************************** import os, sys, shutil -from pathlib import Path import glob +import jittor_utils as jit_utils -cache_path = os.path.join(str(Path.home()), ".cache", "jittor") +cache_path = os.path.join(jit_utils.home(), ".cache", "jittor") def callback(func, path, exc_info): print(f"remove \"{path}\" failed.") diff --git a/python/jittor_utils/install_cuda.py b/python/jittor_utils/install_cuda.py index e07b2bbb..a2823fe9 100644 --- a/python/jittor_utils/install_cuda.py +++ b/python/jittor_utils/install_cuda.py @@ -41,7 +41,7 @@ def get_cuda_driver(): return None def has_installation(): - jtcuda_path = os.path.join(pathlib.Path.home(), ".cache", "jittor", "jtcuda") + jtcuda_path = os.path.join(jit_utils.home(), ".cache", "jittor", "jtcuda") return os.path.isdir(jtcuda_path) def install_cuda(): @@ -85,7 +85,7 @@ def install_cuda(): md5 = "f16d3ff63f081031d21faec3ec8b7dac" else: raise RuntimeError(f"Unsupport cuda driver version: {cuda_driver_version}, at least 10.0") - jtcuda_path = os.path.join(pathlib.Path.home(), ".cache", "jittor", "jtcuda") + jtcuda_path = os.path.join(jit_utils.home(), ".cache", "jittor", "jtcuda") nvcc_path = os.path.join(jtcuda_path, cuda_tgz[:-4], "bin", "nvcc") if os.name=='nt': nvcc_path += '.exe' nvcc_lib_path = os.path.join(jtcuda_path, cuda_tgz[:-4], "lib64") From 90ecdc6729dc1e78c2831fb1dc5e1401b71617e3 Mon Sep 17 00:00:00 2001 From: li-xl <1905692338@qq.com> Date: Tue, 22 Mar 2022 20:38:59 +0800 Subject: [PATCH 21/33] add jittor_home --- python/jittor_utils/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/jittor_utils/__init__.py b/python/jittor_utils/__init__.py index b5e1e857..02aa22af 100644 --- a/python/jittor_utils/__init__.py +++ b/python/jittor_utils/__init__.py @@ -34,11 +34,11 @@ def home(): src_path_file = os.path.join(src_path,"config.json") data = {} if os.path.exists(src_path_file): - data = json.load(open(src_path_file)) + data = json.load(open(src_path_file,"r")) default_path = data.get("jittor_home",str(Path.home())) - _home_path = os.environ.get("jittor_home","") + _home_path = os.environ.get("jittor_home",default_path) if not os.path.exists(_home_path): _home_path = default_path From 4d1e8f6fd8b037e0f41a2266c20163fc4b1d173b Mon Sep 17 00:00:00 2001 From: li-xl <1905692338@qq.com> Date: Tue, 22 Mar 2022 20:42:49 +0800 Subject: [PATCH 22/33] add jittor_home --- python/jittor_utils/__init__.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/python/jittor_utils/__init__.py b/python/jittor_utils/__init__.py index 02aa22af..01785ce4 100644 --- a/python/jittor_utils/__init__.py +++ b/python/jittor_utils/__init__.py @@ -28,7 +28,12 @@ from pathlib import Path import json +_jittor_home = None def home(): + global _jittor_home + if _jittor_home is not None: + return _jittor_home + src_path = os.path.join(str(Path.home()),".cache","jittor") os.makedirs(src_path,exist_ok=True) src_path_file = os.path.join(src_path,"config.json") @@ -49,7 +54,8 @@ def home(): with open(src_path_file,"w") as f: data['jittor_home'] = _home_path json.dump(data,f) - + + _jittor_home = _home_path return _home_path class Logwrapper: From 44803513961de5b8ab59839053b3d3ca9650514a Mon Sep 17 00:00:00 2001 From: liuruiyang98 <865296294@qq.com> Date: Thu, 6 Jan 2022 14:45:59 +0800 Subject: [PATCH 23/33] Update trunc_normal_ --- python/jittor/init.py | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/python/jittor/init.py b/python/jittor/init.py index 9d74f121..8faa28b2 100644 --- a/python/jittor/init.py +++ b/python/jittor/init.py @@ -706,26 +706,26 @@ def _no_grad_trunc_normal_(var, mean, std, a, b): "The distribution of values may be incorrect.", stacklevel=2) - with jt.no_grad(): - # Values are generated by using a truncated uniform distribution and - # then using the inverse CDF for the normal distribution. - # Get upper and lower cdf values - l = norm_cdf((a - mean) / std) - u = norm_cdf((b - mean) / std) - # Uniformly fill tensor with values from [l, u], then translate to - # [2l-1, 2u-1]. - # var.uniform(2 * l - 1, 2 * u - 1) - jt.init.uniform_(var, low=2 * l - 1, high=2 * u - 1) + # Values are generated by using a truncated uniform distribution and + # then using the inverse CDF for the normal distribution. + # Get upper and lower cdf values + l = norm_cdf((a - mean) / std) + u = norm_cdf((b - mean) / std) - # Use inverse cdf transform for normal distribution to get truncated - # standard normal - var.erfinv() + # Uniformly fill tensor with values from [l, u], then translate to + # [2l-1, 2u-1]. + # var.uniform(2 * l - 1, 2 * u - 1) + var.uniform_(low=2 * l - 1, high=2 * u - 1) - # Transform to proper mean, std - var.multiply(std * math.sqrt(2.)) - var.add(mean) + # Use inverse cdf transform for normal distribution to get truncated + # standard normal + var.erfinv() - # Clamp to ensure it's in the proper range - var.clamp(min_v=a, max_v=b) - return var \ No newline at end of file + # Transform to proper mean, std + var.multiply(std * math.sqrt(2.)) + var.add(mean) + + # Clamp to ensure it's in the proper range + var.clamp(min_v=a, max_v=b) + return var \ No newline at end of file From 3dd187f34cf729f559a68423b5c9af3400178bd0 Mon Sep 17 00:00:00 2001 From: liuruiyang98 <865296294@qq.com> Date: Tue, 11 Jan 2022 22:10:39 +0800 Subject: [PATCH 24/33] Update var = var.erfinv() and var = var.multiply(XX) --- python/jittor/init.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/jittor/init.py b/python/jittor/init.py index 8faa28b2..23931eb4 100644 --- a/python/jittor/init.py +++ b/python/jittor/init.py @@ -720,10 +720,10 @@ def _no_grad_trunc_normal_(var, mean, std, a, b): # Use inverse cdf transform for normal distribution to get truncated # standard normal - var.erfinv() + var = var.erfinv() # Transform to proper mean, std - var.multiply(std * math.sqrt(2.)) + var = var.multiply(std * math.sqrt(2.)) var.add(mean) # Clamp to ensure it's in the proper range From 5625147244d77a6dfb27dfbf0b63de32ec1241e7 Mon Sep 17 00:00:00 2001 From: liuruiyang98 <865296294@qq.com> Date: Wed, 12 Jan 2022 21:36:07 +0800 Subject: [PATCH 25/33] Update trunc_normal_ with var = var.add(XX) and var = var.clamp(XX) --- python/jittor/init.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/jittor/init.py b/python/jittor/init.py index 23931eb4..39a1215e 100644 --- a/python/jittor/init.py +++ b/python/jittor/init.py @@ -724,8 +724,8 @@ def _no_grad_trunc_normal_(var, mean, std, a, b): # Transform to proper mean, std var = var.multiply(std * math.sqrt(2.)) - var.add(mean) + var = var.add(mean) # Clamp to ensure it's in the proper range - var.clamp(min_v=a, max_v=b) + var = var.clamp(min_v=a, max_v=b) return var \ No newline at end of file From 107910ce073c6d509edca2816bc4d985dde95431 Mon Sep 17 00:00:00 2001 From: li-xl <1905692338@qq.com> Date: Tue, 22 Mar 2022 20:53:05 +0800 Subject: [PATCH 26/33] add jittor_home --- python/jittor_utils/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/jittor_utils/__init__.py b/python/jittor_utils/__init__.py index 01785ce4..5e72f77c 100644 --- a/python/jittor_utils/__init__.py +++ b/python/jittor_utils/__init__.py @@ -39,7 +39,8 @@ def home(): src_path_file = os.path.join(src_path,"config.json") data = {} if os.path.exists(src_path_file): - data = json.load(open(src_path_file,"r")) + with open(src_path_file,"r") as f: + data = json.load(f) default_path = data.get("jittor_home",str(Path.home())) From bd48b925dcc951f97e1592874c955a90e3dd0c08 Mon Sep 17 00:00:00 2001 From: li-xl <1905692338@qq.com> Date: Tue, 22 Mar 2022 20:58:39 +0800 Subject: [PATCH 27/33] add jittor_home --- python/jittor_utils/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python/jittor_utils/__init__.py b/python/jittor_utils/__init__.py index 5e72f77c..0a0a8dcf 100644 --- a/python/jittor_utils/__init__.py +++ b/python/jittor_utils/__init__.py @@ -42,9 +42,9 @@ def home(): with open(src_path_file,"r") as f: data = json.load(f) - default_path = data.get("jittor_home",str(Path.home())) + default_path = data.get("JITTOR_HOME",str(Path.home())) - _home_path = os.environ.get("jittor_home",default_path) + _home_path = os.environ.get("JITTOR_HOME",default_path) if not os.path.exists(_home_path): _home_path = default_path @@ -53,7 +53,7 @@ def home(): # LOG.i(f"Use {_home_path} as Jittor Home") with open(src_path_file,"w") as f: - data['jittor_home'] = _home_path + data['JITTOR_HOME'] = _home_path json.dump(data,f) _jittor_home = _home_path From 5062b2d6e6b9670d220f15485733127a194c8e08 Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Tue, 22 Mar 2022 22:47:59 +0800 Subject: [PATCH 28/33] polish fused cpu and gpu op --- python/jittor/src/executor.cc | 5 +++++ python/jittor/src/fused_op.cc | 25 ++++++++++++++++--------- python/jittor/src/op.cc | 21 +-------------------- python/jittor/src/ops/copy_op.cc | 5 ----- python/jittor/test/test_cuda.py | 6 ++++++ python/jittor/test/test_fp16.py | 1 - 6 files changed, 28 insertions(+), 35 deletions(-) diff --git a/python/jittor/src/executor.cc b/python/jittor/src/executor.cc index 64afde7f..186eeb0c 100644 --- a/python/jittor/src/executor.cc +++ b/python/jittor/src/executor.cc @@ -509,6 +509,11 @@ void Executor::run_sync(vector vars, bool device_sync) { var->alloc(cpu_allocator); } } + } else { + for (Var* v : op->inputs()) { + if (!v->allocator->is_cuda()) + migrate_to_gpu(v, allocator); + } } #endif #ifdef NODE_MEMCHECK diff --git a/python/jittor/src/fused_op.cc b/python/jittor/src/fused_op.cc index 74da506b..924a1113 100644 --- a/python/jittor/src/fused_op.cc +++ b/python/jittor/src/fused_op.cc @@ -9,6 +9,7 @@ #include "op_compiler.h" #include "profiler/profiler.h" #include "misc/fast_shared_ptr.h" +#include "misc/cuda_flags.h" namespace jittor { @@ -42,6 +43,7 @@ void FusedOp::update_ops() { loop_options_tuned.clear(); loop_options = loop_options_origin = nullptr; + _inputs.clear(); _outputs.clear(); for (Op* op : ops) { for (Var* o : op->outputs()) { @@ -101,6 +103,7 @@ void FusedOp::update_ops() { if (!(c&2)) { c += 2 + vars.size()*4; vars.push_back({i, 0}); + _inputs.emplace_back((Node*)i); } } for (Var* o : opi->outputs()) { @@ -135,6 +138,7 @@ FusedOp::FusedOp(const FusedOp& other) { } FusedOp::~FusedOp() { + _inputs.clear(); _outputs.clear(); Op::number_of_lived_ops++; } @@ -159,20 +163,15 @@ void FusedOp::statistics(uint64_t& in, uint64_t& out, uint64_t& compute) { void FusedOp::do_jit_prepare(JK& jk) { jk.clear(); - int8 flags = 3; for (uint i=0; ido_jit_prepare(jk); + jk << op->name(); + op->jit_prepare(jk); jk << JK::end; - if (op->flags.get(NodeFlags::_cpu)) - flags &= 1; // only cpu - else - flags &= 2; // only gpu } - ASSERT(flags) << "FusedOp cannot contain both cpu and cuda ops."; jk << _CS("[JIT:1]"); - if (flags==1) { + if (!use_cuda) { // only cpu jk << _CS("[JIT_cpu:1]"); this->flags.set(NodeFlags::_cuda, 0); @@ -189,9 +188,17 @@ void FusedOp::do_jit_prepare(JK& jk) { jk << JK::hex2(i) << JK::hex1(j) << JK::hex2(k) << JK::hex1(l) << ','; } jk << _CS("][var_info:") << JK::val; - for (auto& vi : vars) + bool use_int64_t = false; + for (auto& vi : vars) { jk << JK::hex1(vi.type) << JK::hex1(vi.var->shape.size()); + if (vi.type != 1 && vi.var->num >= std::numeric_limits::max()) + use_int64_t = true; + } jk << JK::end; + if (use_int64_t) + jk << _CS("[index_t:int64]"); + else + jk << _CS("[index_t:int32]"); if (loop_options->size()) { if (get_loop_option("compile_shapes")) { jk << _CS("[shapes:"); diff --git a/python/jittor/src/op.cc b/python/jittor/src/op.cc index c24b8b30..35a42f06 100644 --- a/python/jittor/src/op.cc +++ b/python/jittor/src/op.cc @@ -123,43 +123,24 @@ void Op::do_jit_prepare(JK& jk) { if (has_cuda && has_cpu && !use_cuda) flags.set(NodeFlags::_cuda, 0); } else { - // check use int64_t as index_t if array is too big - int in_id=0, out_id=0; bool use_int64_t = false; // TODO: fused op do not have inputs, // check use_cuda_op from outputs may not be enough bool use_cuda_op = use_cuda; for (Var* var : inputs()) { - if (var->mem_ptr) { - /* jit key don't include here, because - parallel compiler don't known - jk << JK::key << "alloc_i" << JK::hex1(in_id) - << JK::hex1(var->allocator->flags()) << JK::end; - */ - use_cuda_op &= var->allocator->is_cuda(); - } if (var->num >= std::numeric_limits::max()) use_int64_t = true; - in_id ++; } for (Var* var : outputs()) { - if (var->mem_ptr) { - /* - jk << JK::key << "alloc_o" << JK::hex1(in_id) - << JK::hex1(var->allocator->flags()) << JK::end; - */ - use_cuda_op &= var->allocator->is_cuda(); - } if (var->num >= std::numeric_limits::max()) use_int64_t = true; - out_id ++; } jk << _CS("[JIT:1]"); if (use_cuda_op && flags.get(NodeFlags::_cuda)) { jk << _CS("[JIT_cuda:1]"); flags.set(NodeFlags::_cpu, 0); // TODO: 64bit index in CUDA - use_int64_t = false; + // use_int64_t = false; } else { if (use_cuda==2) { if (flags.get(NodeFlags::_cuda)) diff --git a/python/jittor/src/ops/copy_op.cc b/python/jittor/src/ops/copy_op.cc index 3dc3ff9a..5d62e1c8 100644 --- a/python/jittor/src/ops/copy_op.cc +++ b/python/jittor/src/ops/copy_op.cc @@ -40,12 +40,7 @@ void CopyOp::run() { auto y_ptr = outputs().front()->mem_ptr; #ifdef HAS_CUDA if (flags.get(NodeFlags::_cuda)) { - // TODO: check why cpu allocator in x - #ifdef IS_CUDA - checkCudaErrors(cudaMemcpyAsync(y_ptr, x_ptr, size, cudaMemcpyDefault, 0)); - #else checkCudaErrors(cudaMemcpyAsync(y_ptr, x_ptr, size, cudaMemcpyDeviceToDevice, 0)); - #endif } else #endif { diff --git a/python/jittor/test/test_cuda.py b/python/jittor/test/test_cuda.py index 4c28436c..16a16546 100644 --- a/python/jittor/test/test_cuda.py +++ b/python/jittor/test/test_cuda.py @@ -101,6 +101,12 @@ class TestCuda(unittest.TestCase): assert a.shape == [3,4,5] and a.dtype == 'float' assert (-na.flatten() == range(3*4*5)).all(), na + def test_cuda_fused_op(self): + a = jt.array([1,2,3]) + a.sync() + with jt.flag_scope(use_cuda=1): + ((a+a)*2).data + @unittest.skipIf(jt.compiler.has_cuda, "Only test without CUDA") class TestNoCuda(unittest.TestCase): diff --git a/python/jittor/test/test_fp16.py b/python/jittor/test/test_fp16.py index fe599386..86569a59 100644 --- a/python/jittor/test/test_fp16.py +++ b/python/jittor/test/test_fp16.py @@ -162,7 +162,6 @@ def check_share(): } } kernel<<<1024,16*16>>>(in0_p, out0_p); - LOGir << "aaa"; """).sync() jt.sync_all(True) # print(a[0]+1) From 0c1151305e719d571b8704375054fa6c41b2fc3d Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Tue, 22 Mar 2022 22:49:47 +0800 Subject: [PATCH 29/33] update version --- python/jittor/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/jittor/__init__.py b/python/jittor/__init__.py index 3b304617..587afec7 100644 --- a/python/jittor/__init__.py +++ b/python/jittor/__init__.py @@ -9,7 +9,7 @@ # file 'LICENSE.txt', which is part of this source code package. # *************************************************************** -__version__ = '1.3.1.52' +__version__ = '1.3.1.53' from jittor_utils import lock with lock.lock_scope(): ori_int = int From fbc38c33abbaa5aace9d77c16283c22af45a058c Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Wed, 23 Mar 2022 17:29:27 +0800 Subject: [PATCH 30/33] prevent trace py var memleak --- python/jittor/__init__.py | 2 +- python/jittor/src/pybind/py_var_tracer.cc | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/python/jittor/__init__.py b/python/jittor/__init__.py index 587afec7..f2bb301f 100644 --- a/python/jittor/__init__.py +++ b/python/jittor/__init__.py @@ -9,7 +9,7 @@ # file 'LICENSE.txt', which is part of this source code package. # *************************************************************** -__version__ = '1.3.1.53' +__version__ = '1.3.1.54' from jittor_utils import lock with lock.lock_scope(): ori_int = int diff --git a/python/jittor/src/pybind/py_var_tracer.cc b/python/jittor/src/pybind/py_var_tracer.cc index ee4e2a9e..30072aec 100644 --- a/python/jittor/src/pybind/py_var_tracer.cc +++ b/python/jittor/src/pybind/py_var_tracer.cc @@ -267,7 +267,7 @@ void TraceData::release_node(Node* node) { return; auto node_id = iter->second; id_map.erase(node); - if (trace_py_var < 2) { + if (trace_py_var < 2 || execute_op_info.size() > 100000) { node_data.erase(node_id); } } @@ -312,6 +312,7 @@ void TraceData::record_op(Op* op) { } void TraceData::record_execution(Op* op, bool is_fused_op, JK& jk) { + if (execute_op_info.size() > 100000) return; ExecuteOpInfo& einfo = execute_op_info[execute_op_info_cnt++]; if (is_fused_op) { FusedOp* fop = (FusedOp*)op; From 4b0c6a032b378dbbf67c85bcd832b5fb05004347 Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Wed, 23 Mar 2022 20:28:48 +0800 Subject: [PATCH 31/33] change rtol --- python/jittor/test/test_cudnn_op.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/jittor/test/test_cudnn_op.py b/python/jittor/test/test_cudnn_op.py index 12c674a9..fcf46a9a 100644 --- a/python/jittor/test/test_cudnn_op.py +++ b/python/jittor/test/test_cudnn_op.py @@ -123,8 +123,8 @@ class TestCudnnConvOp(unittest.TestCase): logs = find_log_with_re(raw_log, "(Jit op key (not )?found: cudnn_conv.*)") assert len(logs)==3 and "oihw" in logs[0][0], logs assert np.allclose(y.data, cy.data) - np.testing.assert_allclose(dx.data, cdx.data, atol=1e-2) - np.testing.assert_allclose(dw.data, cdw.data, atol=1e-2) + np.testing.assert_allclose(dx.data, cdx.data, atol=1e-2, rtol=1e-3) + np.testing.assert_allclose(dw.data, cdw.data, atol=1e-2, rtol=1e-3) if os.name == 'nt': return check([10,3,100,100], [5,3,3,3], stride=2, padding=0, dilation=1) check([10,4,40,50], [5,4,5,5], stride=1, padding=1, dilation=1) From e13215bfd5d88312b9f90cb29656c172a3f2b042 Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Wed, 23 Mar 2022 20:41:51 +0800 Subject: [PATCH 32/33] add module float64 --- python/jittor/__init__.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/python/jittor/__init__.py b/python/jittor/__init__.py index f2bb301f..3b977fc5 100644 --- a/python/jittor/__init__.py +++ b/python/jittor/__init__.py @@ -1232,15 +1232,23 @@ Arguments of hook are defined as:: def __getattr__(self, key): return object.__getattribute__(self, key) + def float64(self): + '''convert all parameters to float16''' + for p in self.parameters(): + if p.dtype.is_float(): + p.assign(p.float64()) + return self + def float16(self): '''convert all parameters to float16''' for p in self.parameters(): if p.dtype.is_float(): p.assign(p.float16()) + return self def half(self): '''convert all parameters to float16''' - self.float16() + return self.float16() def float_auto(self): '''convert all parameters to float16 or float32 automatically @@ -1248,6 +1256,7 @@ Arguments of hook are defined as:: for p in self.parameters(): if p.dtype.is_float(): p.assign(p.float_auto()) + return self From 65e9ff126513e5ffdbcfb0b1eb7f7a4fb72bae64 Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Sat, 26 Mar 2022 15:51:47 +0800 Subject: [PATCH 33/33] add amp alias --- python/jittor/__init__.py | 2 +- python/jittor/compiler.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/python/jittor/__init__.py b/python/jittor/__init__.py index 3b977fc5..33363839 100644 --- a/python/jittor/__init__.py +++ b/python/jittor/__init__.py @@ -9,7 +9,7 @@ # file 'LICENSE.txt', which is part of this source code package. # *************************************************************** -__version__ = '1.3.1.54' +__version__ = '1.3.1.55' from jittor_utils import lock with lock.lock_scope(): ori_int = int diff --git a/python/jittor/compiler.py b/python/jittor/compiler.py index 9a49709d..a61419ad 100644 --- a/python/jittor/compiler.py +++ b/python/jittor/compiler.py @@ -231,6 +231,8 @@ def gen_jit_flags(): alias = [] if name == "use_cuda": alias = ["use_device", "use_acl"] + elif name == "auto_mixed_precision_level": + alias = ["amp_level"] get_names = ",".join(["__get__"+a for a in [name]+alias]) set_names = ",".join(["__set__"+a for a in [name]+alias]) flags_defs.append(f"""