buildz 0.9.4__tar.gz → 0.9.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {buildz-0.9.4/buildz.egg-info → buildz-0.9.6}/PKG-INFO +1 -1
- {buildz-0.9.4 → buildz-0.9.6}/buildz/_dz/conf.py +2 -2
- {buildz-0.9.4 → buildz-0.9.6}/buildz/confz.py +2 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/gpuz/test/demo.py +12 -3
- buildz-0.9.6/buildz/gpuz/test/dm.py +89 -0
- buildz-0.9.6/buildz/gpuz/test/dm1.py +124 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/gpuz/torch/__init__.py +3 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/gpuz/torch/dict_middle.py +6 -0
- buildz-0.9.6/buildz/gpuz/torch/middle_base.py +80 -0
- buildz-0.9.6/buildz/gpuz/torch/middle_cache.py +143 -0
- buildz-0.9.6/buildz/path.py +79 -0
- {buildz-0.9.4 → buildz-0.9.6/buildz.egg-info}/PKG-INFO +1 -1
- {buildz-0.9.4 → buildz-0.9.6}/buildz.egg-info/SOURCES.txt +5 -0
- {buildz-0.9.4 → buildz-0.9.6}/setup.py +1 -1
- {buildz-0.9.4 → buildz-0.9.6}/LICENSE +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/MANIFEST.in +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/README.md +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/__main__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/_dz/mapz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/_dz/omapz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argx.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz/argz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz/callz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz/conf_argz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz/conf_callz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz/evalx.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz/init.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz/test.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz/test_call.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz_bk/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz_bk/argz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz_bk/build.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz_bk/callz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz_bk/evalx.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz_bk/test.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz_bk/test_obj.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz_bk/tests/conf.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/argz_bk/testx.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/cache.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/config.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/dbs.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/deal.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/deal_list.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/deal_type.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/defs.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/factory.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/init.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/log.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/request.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/run.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/save.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/test/res/cache/cache.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/test/res/config/base.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/test/res/config/config.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/test/res/data/fp.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/test/res/data/item1.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/test/res/data/item2.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/test/res/data/test.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/test/test.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/test/xtest.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/auto/verify.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/cachez/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/cachez/cache.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/cmd.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/confz_test/argx.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/confz_test/conf.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/confz_test/test.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/confz_test/test.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/__main__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/dv/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/dv/basez.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/dv/clickhousez.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/dv/lib/readme +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/dv/mysqlz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/dv/oraclez.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/dv/orm.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/dv/postgresqlz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/dv/sqlite3z.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/dv/structz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/install.txt +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/run.conf +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/runz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/sc.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/subrun.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/subsc.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/db/tls.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/ioc/deal.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/ioc/help.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/myers/deal.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/myers/help.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/res/conf/ioc.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/res/conf/main.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/res/conf/myers.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/res/conf/search.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/res/conf/xf.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/res/help/default.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/res/help/ioc.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/res/help/myers.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/res/help/search.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/res/help/xf.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/res/test.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/search/deal.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/search/help.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/test.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/xf/deal.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/demo/xf/help.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/dz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/evalz/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/evalz/evalz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/evalz/res/default.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/evalz/test.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/fz/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/fz/dirz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/fz/fhs.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/fz/fio.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/fz/lsf.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/gpuz/test/analyze.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/gpuz/test/report.txt +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/gpuz/test/take_gpu_mem.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/gpuz/test/test_atten_demo.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/gpuz/test/test_linear_demo.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/gpuz/test/test_multi_demo.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/gpuz/test/test_resnet_demo.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/gpuz/torch/multi_dict_middle.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/gpuz/torch/seq_middle.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/html/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/html/test/demo.html +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/html/test/test.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/html/xml.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/init.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc/conf.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc/confs.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc/decorator.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc/loads.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc/single.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/branch.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/call.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/calls.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/refs_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/deal.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/demo.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/env.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/init.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/ioc.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/iocf.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/join.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/list.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/map.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/mcall.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/obj.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/ovar.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/ref.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/refs.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/val.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/var.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/ioc_deal/xfile.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/ioc/wrap.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf/conf.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf/mg.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf/unit.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf/up.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf_deal/attr.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf_deal/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf_deal/call.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf_deal/cvar.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf_deal/deal.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf_deal/env.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf_deal/ioc.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf_deal/method.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf_deal/obj.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf_deal/ref.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/conf_deal/val.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/init.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/builds.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/confs.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/datas.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/dataset.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/encapes.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/envs.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/ids.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/init.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/mg.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/single.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/sys_envs.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/tdata.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/tdict.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/unit.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc/vars.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc_deal/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc_deal/deal.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc_deal/ioc.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc_deal/obj.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc_deal/ref.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/ioc_deal/val.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/test/test.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/wrap/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/wrap/default_wraps.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/wrap/env.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/wrap/obj.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/iocz/wrap/wraps.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/Test.javap +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/build +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/build.bat +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/clean +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/clean.bat +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/com/buildz/Conf.javap +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/com/buildz/ConfUtil.javap +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/com/buildz/Confz.javap +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/com/buildz/Utils.javap +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/fps.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/jv +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/jv.bat +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/jvc +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/jvc.bat +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/run +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/run.bat +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/confz/test.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/jvp/defs.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/jvp/dm.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/jvp/fcs.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/jvp/jsc.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/jvp/main.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/jvp/rn.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/jvp/util.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/note +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/xf/Test.java +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/xf/all.sh +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/xf/com/buildz/xf/Args.java +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/xf/com/buildz/xf/Loader.java +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/xf/com/buildz/xf/LoaderJNI.java +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/xf/com/buildz/xf/cpp/com_buildz_xf_LoaderJNI.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/jv/xf/com/buildz/xf/cpp/jxf.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/logz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/mhttp/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/mhttp/caps.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/mhttp/gateway.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/mhttp/mhttp.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/mhttp/mhttps.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/mhttp/proxy.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/mhttp/record.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/sslz/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/sslz/gen.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/sslz/gen.pyi +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/tcp/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/tcp/__main__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/tcp/middle.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/test/__main__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/test/test.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/test/test_cli.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/netz/test/test_gw.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/pathz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/pyz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/sc/__main__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/sc/lst.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/sc/oldversion/run.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/sc/oldversion/thrun.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/sc/subchild.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/sc/subrun.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/sc/test/inc.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/sc/test/x.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/sc/test/x.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/threads/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/threads/impl.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/threads/pool.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/threads/test.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tls.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tools.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tz/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tz/code.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tz/filediff.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tz/myers_diff.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tz/test_xfind.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tz/time/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tz/time/timez.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tz/tio/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tz/tio/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tz/tio/getch.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tz/tio/lx.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tz/tio/test.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tz/tio/win.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/tz/xfind.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/unittest/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/__main__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/code.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/Makefile +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/README.txt +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/clean.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/base.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/base_deal.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/buffer.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/buffer.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/callback.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/callback_demo.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/callback_demo.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/code.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/code.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/cxf.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/dict.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/dict.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/kv.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/list.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/list.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/listdict.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/listdict.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/lr.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/lr.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/lrval.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/lrval.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/next.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/next.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/reval.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/spt.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/spt.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/str.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/deal/str.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/exp.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/init.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/init.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/item.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/mg.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/mg.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/loaderz/test.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/pc.cpp +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/pc.h +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/pcxf.pyx +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/setup.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/setup_mingw32.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/cpp/tstcxf.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/file.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/buffer.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/deal/listz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/deal/lr.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/deal/lrval.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/deal/mapz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/deal/nextz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/deal/reval.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/deal/setz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/deal/spc.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/deal/spt.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/deal/strz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/exp.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/item.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/mg.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loader/pos.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/buffer.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/deal/listmapz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/deal/listz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/deal/lr.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/deal/lrval.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/deal/mapz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/deal/nextz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/deal/reval.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/deal/setz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/deal/spt.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/deal/strz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/exp.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/item.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/mg.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/pos.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/test.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz/test1.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/buffer.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/deal/listmapz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/deal/listz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/deal/lr.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/deal/lrval.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/deal/mapz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/deal/nextz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/deal/reval.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/deal/setz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/deal/spt.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/deal/strz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/exp.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/item.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/mg.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/pos.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/test.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/loaderz_nexp/test1.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/mapz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/read.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/readz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/readz_nexp.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/stack.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/write.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writer/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writer/conf.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writer/deal/jsonval.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writer/deal/listmapz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writer/deal/listz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writer/deal/mapz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writer/deal/reval.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writer/deal/strz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writer/itemz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writer/mg.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writerz/base.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writerz/conf.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writerz/deal/jsonval.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writerz/deal/listmapz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writerz/deal/listz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writerz/deal/mapz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writerz/deal/reval.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writerz/deal/strz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writerz/itemz.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writerz/mg.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writerz/test.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writerz/testx.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/writez.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xf/xargs.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xz/__init__.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xz/conf.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xz/data.js +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xz/test.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz/xz/trs.py +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz.egg-info/dependency_links.txt +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/buildz.egg-info/top_level.txt +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/notes/notes.txt +0 -0
- {buildz-0.9.4 → buildz-0.9.6}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: buildz
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.6
|
|
4
4
|
Summary: 配置读写(基于json格式进行简化)、ioc、以及其他工具代码。a json-base file format's read and write code by python, and codes to read and product object from configure file in such format(ioc), and other tool codes
|
|
5
5
|
Home-page: https://github.com/buildCodeZ/buildz
|
|
6
6
|
Author: Zzz
|
|
@@ -257,7 +257,7 @@ class Conf(Base):
|
|
|
257
257
|
# TODO
|
|
258
258
|
keys = dzkeys(key, self.spt)
|
|
259
259
|
return mapz.dremove(self.conf, keys)
|
|
260
|
-
def _has(self, key, link
|
|
260
|
+
def _has(self, key, link=-1):
|
|
261
261
|
return self._hget(key, None, link)[1]
|
|
262
262
|
keys = dzkeys(key, self.spt)
|
|
263
263
|
return mapz.dhas(self.conf, keys)
|
|
@@ -272,7 +272,7 @@ class Conf(Base):
|
|
|
272
272
|
return rst
|
|
273
273
|
def s(self, **maps):
|
|
274
274
|
[self.set(k,v) for k,v in maps.items()]
|
|
275
|
-
def has_all(self, keys, link =
|
|
275
|
+
def has_all(self, keys, link = -1):
|
|
276
276
|
keys = self.spts_ks(keys)
|
|
277
277
|
rst = [1-self.has(key, link) for key in keys]
|
|
278
278
|
return sum(rst)==0
|
|
@@ -19,6 +19,8 @@ def load_conf(conf, dp=None, dp_key = 'dp', src_key = 'src.conf'):
|
|
|
19
19
|
rst.update(base, flush, replace, visit_list)
|
|
20
20
|
for fp in fps:
|
|
21
21
|
tmp = xf.loadf(path.dp(fp))
|
|
22
|
+
if type(tmp)!=dict:
|
|
23
|
+
continue
|
|
22
24
|
rst.update(tmp, flush, replace, visit_list)
|
|
23
25
|
if not conf_first:
|
|
24
26
|
rst.update(base, flush, replace, visit_list)
|
|
@@ -13,7 +13,13 @@ class TestDataset(Dataset):
|
|
|
13
13
|
return self.num
|
|
14
14
|
def __getitem__(self, i):
|
|
15
15
|
return self.datas[i], self.targets[i]
|
|
16
|
-
dims =
|
|
16
|
+
dims = 3
|
|
17
|
+
"""
|
|
18
|
+
cd D:\rootz\python\gits\buildz_upd\buildz\gpuz\test
|
|
19
|
+
D:
|
|
20
|
+
python -m buildz.gpuz.test.demo > demo.txt
|
|
21
|
+
|
|
22
|
+
"""
|
|
17
23
|
dataset = TestDataset(30, dims)
|
|
18
24
|
dataloader = DataLoader(dataset, 10)
|
|
19
25
|
class MiniModel(nn.Module):
|
|
@@ -25,7 +31,7 @@ class MiniModel(nn.Module):
|
|
|
25
31
|
self.nets = nn.Sequential(*nets)
|
|
26
32
|
def forward(self, inputs):
|
|
27
33
|
return self.nets(inputs)
|
|
28
|
-
models = [MiniModel(dims,
|
|
34
|
+
models = [MiniModel(dims, 6, 3) for i in range(6)]
|
|
29
35
|
opts = [optim.Adam(model.parameters(), lr=0.001) for model in models]
|
|
30
36
|
#可以指定哪些模型全部放cuda或者全部放cpu
|
|
31
37
|
cuda_models = [models[1],models[2]]
|
|
@@ -38,7 +44,7 @@ def opt_step(net, opt):
|
|
|
38
44
|
# 另外,opt不一定就是优化函数,可以是任何数据,其只取决于创建DictCache的时候传入的opts是什么
|
|
39
45
|
torch.nn.utils.clip_grad_norm_(net.parameters(), max_norm=1.0)
|
|
40
46
|
opt.step()
|
|
41
|
-
cache = DictCache([torch.device('cuda'), torch.device('cpu')],models,opts,3,opt_step
|
|
47
|
+
cache = DictCache([torch.device('cuda'), torch.device('cpu')],models,opts,3,opt_step)#, [cuda_models,cpu_models])
|
|
42
48
|
|
|
43
49
|
# 训练:
|
|
44
50
|
[md.train() for md in models]
|
|
@@ -50,6 +56,9 @@ for inputs,targets in dataloader:
|
|
|
50
56
|
cache.do_backward(lambda: loss.backward())
|
|
51
57
|
# opt.step()在do_backward里会自动调用
|
|
52
58
|
print(loss.item())
|
|
59
|
+
break
|
|
60
|
+
|
|
61
|
+
exit()
|
|
53
62
|
|
|
54
63
|
# 测试:
|
|
55
64
|
inputs = torch.rand(1, dims).cuda()
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
|
|
2
|
+
from buildz.gpuz.torch import DictCache
|
|
3
|
+
import torch
|
|
4
|
+
from torch import nn,optim
|
|
5
|
+
from torch.utils.data import DataLoader, Dataset
|
|
6
|
+
class TestDataset(Dataset):
|
|
7
|
+
def __init__(self, num, dims):
|
|
8
|
+
self.num = num
|
|
9
|
+
self.dims = dims
|
|
10
|
+
self.datas = torch.rand(num, dims)
|
|
11
|
+
self.targets = torch.rand(num, dims)
|
|
12
|
+
def __len__(self):
|
|
13
|
+
return self.num
|
|
14
|
+
def __getitem__(self, i):
|
|
15
|
+
return self.datas[i], self.targets[i]
|
|
16
|
+
dims = 64
|
|
17
|
+
"""
|
|
18
|
+
cd D:\rootz\python\gits\buildz_upd\buildz\gpuz\test
|
|
19
|
+
D:
|
|
20
|
+
python -m buildz.gpuz.test.demo > demo.txt
|
|
21
|
+
|
|
22
|
+
"""
|
|
23
|
+
dataset = TestDataset(90, dims)
|
|
24
|
+
dataloader = DataLoader(dataset, 30)
|
|
25
|
+
class MiniModel(nn.Module):
|
|
26
|
+
def __init__(self, dims, mdims, num):
|
|
27
|
+
super().__init__()
|
|
28
|
+
nets = [nn.Linear(dims, mdims)]
|
|
29
|
+
nets += [nn.Linear(mdims,mdims) for i in range(num)]
|
|
30
|
+
nets.append(nn.Linear(mdims,dims))
|
|
31
|
+
self.nets = nn.Sequential(*nets)
|
|
32
|
+
def forward(self, inputs):
|
|
33
|
+
return self.nets(inputs)
|
|
34
|
+
models = [MiniModel(dims, 32, 3) for i in range(6)]
|
|
35
|
+
opts = [optim.Adam(model.parameters(), lr=0.001) for model in models]
|
|
36
|
+
#可以指定哪些模型全部放cuda或者全部放cpu
|
|
37
|
+
cuda_models = [models[1],models[2]]
|
|
38
|
+
cpu_models = [models[-1]]
|
|
39
|
+
real_model = nn.Sequential(*models)
|
|
40
|
+
loss_fn = torch.nn.MSELoss()
|
|
41
|
+
def opt_step(net, opt):
|
|
42
|
+
# 如果模型只是用来测试,不做训练,可以不传该函数,同时opts传入空就可以
|
|
43
|
+
# 对模型的一些其他优化,可以写可以不写,主要是调用opt.step()进行当前小模型的模型训练
|
|
44
|
+
# 另外,opt不一定就是优化函数,可以是任何数据,其只取决于创建DictCache的时候传入的opts是什么
|
|
45
|
+
torch.nn.utils.clip_grad_norm_(net.parameters(), max_norm=1.0)
|
|
46
|
+
opt.step()
|
|
47
|
+
cache = DictCache([torch.device('cuda'), torch.device('cpu')],models,opts,3,opt_step)#, [cuda_models,cpu_models])
|
|
48
|
+
|
|
49
|
+
# 训练:
|
|
50
|
+
def train():
|
|
51
|
+
[md.train() for md in models]
|
|
52
|
+
for inputs,targets in dataloader:
|
|
53
|
+
inputs,targets = inputs.cuda(),targets.cuda()
|
|
54
|
+
[opt.zero_grad() for opt in opts]
|
|
55
|
+
outs = cache.do_forward(lambda:real_model(inputs))
|
|
56
|
+
loss = loss_fn(outs, targets)
|
|
57
|
+
cache.do_backward(lambda: loss.backward())
|
|
58
|
+
# opt.step()在do_backward里会自动调用
|
|
59
|
+
#print(loss.item())
|
|
60
|
+
#break
|
|
61
|
+
pass
|
|
62
|
+
import time
|
|
63
|
+
print("start")
|
|
64
|
+
start = time.time()
|
|
65
|
+
for i in range(50):
|
|
66
|
+
train()
|
|
67
|
+
sec = time.time()-start
|
|
68
|
+
print("time cost:", sec)
|
|
69
|
+
"""
|
|
70
|
+
from buildz.gpuz.test import dm
|
|
71
|
+
|
|
72
|
+
ws = []
|
|
73
|
+
for md in dm.models:
|
|
74
|
+
for net in md.nets:
|
|
75
|
+
ws.append(net.weight.cpu().detach().clone())
|
|
76
|
+
|
|
77
|
+
pass
|
|
78
|
+
|
|
79
|
+
dm.train()
|
|
80
|
+
|
|
81
|
+
nws = []
|
|
82
|
+
for md in dm.models:
|
|
83
|
+
for net in md.nets:
|
|
84
|
+
nws.append(net.weight.cpu().detach().clone())
|
|
85
|
+
|
|
86
|
+
pass
|
|
87
|
+
subs = [(a-b).sum() for a,b in zip(ws, nws)]
|
|
88
|
+
|
|
89
|
+
"""
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
|
|
2
|
+
from buildz.gpuz.torch.middle_cache import MiddleCache
|
|
3
|
+
import torch
|
|
4
|
+
from torch import nn,optim
|
|
5
|
+
from torch.utils.data import DataLoader, Dataset
|
|
6
|
+
class TestDataset(Dataset):
|
|
7
|
+
def __init__(self, num, dims):
|
|
8
|
+
self.num = num
|
|
9
|
+
self.dims = dims
|
|
10
|
+
self.datas = torch.rand(num, dims)
|
|
11
|
+
self.targets = torch.rand(num, dims)
|
|
12
|
+
def __len__(self):
|
|
13
|
+
return self.num
|
|
14
|
+
def __getitem__(self, i):
|
|
15
|
+
return self.datas[i], self.targets[i]
|
|
16
|
+
dims = 64
|
|
17
|
+
"""
|
|
18
|
+
cd D:\rootz\python\gits\buildz_upd\buildz\gpuz\test
|
|
19
|
+
D:
|
|
20
|
+
python -m buildz.gpuz.test.demo > demo.txt
|
|
21
|
+
|
|
22
|
+
"""
|
|
23
|
+
dataset = TestDataset(90, dims)
|
|
24
|
+
dataloader = DataLoader(dataset, 30)
|
|
25
|
+
class MiniModel(nn.Module):
|
|
26
|
+
def __init__(self, dims, mdims, num):
|
|
27
|
+
super().__init__()
|
|
28
|
+
nets = [nn.Linear(dims, mdims)]
|
|
29
|
+
nets += [nn.Linear(mdims,mdims) for i in range(num)]
|
|
30
|
+
nets.append(nn.Linear(mdims,dims))
|
|
31
|
+
self.nets = nn.Sequential(*nets)
|
|
32
|
+
def forward(self, inputs):
|
|
33
|
+
return self.nets(inputs)
|
|
34
|
+
models = [MiniModel(dims, 32, 3) for i in range(6)]
|
|
35
|
+
#opts = [optim.Adam(model.parameters(), lr=0.001) for model in models]
|
|
36
|
+
real_model = nn.Sequential(*models)
|
|
37
|
+
opt = optim.Adam(real_model.parameters(), lr=0.001)
|
|
38
|
+
#可以指定哪些模型全部放cuda或者全部放cpu
|
|
39
|
+
cuda_models = [models[1],models[2]]
|
|
40
|
+
cpu_models = [models[-1]]
|
|
41
|
+
loss_fn = torch.nn.MSELoss()
|
|
42
|
+
cache = MiddleCache(models, 3)#, cal_dv = "cpu", cal_nets = cuda_models, cache_nets = cpu_models)#, [torch.device('cuda'), torch.device('cpu')],models,opts,3,opt_step)#, [cuda_models,cpu_models])
|
|
43
|
+
|
|
44
|
+
# 训练:
|
|
45
|
+
def train():
|
|
46
|
+
cache.train()
|
|
47
|
+
for inputs,targets in dataloader:
|
|
48
|
+
targets = targets.cuda()
|
|
49
|
+
#inputs,targets = inputs.cuda(),targets.cuda()
|
|
50
|
+
opt.zero_grad()
|
|
51
|
+
with cache.wrap_forward():
|
|
52
|
+
outs = real_model(inputs)
|
|
53
|
+
loss = loss_fn(outs, targets)
|
|
54
|
+
with cache.wrap_backward():
|
|
55
|
+
loss.backward()
|
|
56
|
+
torch.nn.utils.clip_grad_norm_(real_model.parameters(), max_norm=1.0)
|
|
57
|
+
opt.step()
|
|
58
|
+
#cache.do_backward(lambda: loss.backward())
|
|
59
|
+
# opt.step()在do_backward里会自动调用
|
|
60
|
+
# print(loss.item())
|
|
61
|
+
# break
|
|
62
|
+
#break
|
|
63
|
+
pass
|
|
64
|
+
import time
|
|
65
|
+
print("start")
|
|
66
|
+
start = time.time()
|
|
67
|
+
for i in range(50):
|
|
68
|
+
train()
|
|
69
|
+
sec = time.time()-start
|
|
70
|
+
print("time cost:", sec)
|
|
71
|
+
|
|
72
|
+
"""
|
|
73
|
+
python -m buildz.gpuz.test.dm1
|
|
74
|
+
|
|
75
|
+
from buildz.gpuz.test import dm1 as dm
|
|
76
|
+
|
|
77
|
+
dm.cache.train()
|
|
78
|
+
inputs, targets = list(dm.dataloader)[0]
|
|
79
|
+
dm.opt.zero_grad()
|
|
80
|
+
with dm.cache.wrap_forward():
|
|
81
|
+
outs = dm.real_model(inputs)
|
|
82
|
+
|
|
83
|
+
pass
|
|
84
|
+
|
|
85
|
+
ks = list(dm.cache.datas.keys())
|
|
86
|
+
dts0 = dm.cache.datas[ks[0]]
|
|
87
|
+
net0 = dm.cache.nets[ks[0]]
|
|
88
|
+
[k.shape for k in dts0]
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
dts1 = dm.cache.datas[ks[1]]
|
|
92
|
+
net1 = dm.cache.nets[ks[1]]
|
|
93
|
+
[k.shape for k in dts1]
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
ws = []
|
|
97
|
+
for md in dm.models:
|
|
98
|
+
for net in md.nets:
|
|
99
|
+
ws.append(net.weight.cpu().detach().clone())
|
|
100
|
+
|
|
101
|
+
pass
|
|
102
|
+
|
|
103
|
+
dm.train()
|
|
104
|
+
|
|
105
|
+
nws = []
|
|
106
|
+
for md in dm.models:
|
|
107
|
+
for net in md.nets:
|
|
108
|
+
nws.append(net.weight.cpu().detach().clone())
|
|
109
|
+
|
|
110
|
+
pass
|
|
111
|
+
subs = [(a-b).sum() for a,b in zip(ws, nws)]
|
|
112
|
+
|
|
113
|
+
w0 = dm.models[0].nets[-1].weight.cpu().detach()
|
|
114
|
+
w1 = dm.models[1].nets[0].weight.cpu().detach()
|
|
115
|
+
|
|
116
|
+
dm.train()
|
|
117
|
+
|
|
118
|
+
nw0 = dm.models[0].nets[-1].weight.cpu().detach()
|
|
119
|
+
nw1 = dm.models[1].nets[0].weight.cpu().detach()
|
|
120
|
+
|
|
121
|
+
(w0-nw0).sum()
|
|
122
|
+
(w1-nw1).sum()
|
|
123
|
+
|
|
124
|
+
"""
|
|
@@ -5,6 +5,9 @@ __version__="0.0.1"
|
|
|
5
5
|
__author__ = "Zzz, emails: 1174534295@qq.com, 1309458652@qq.com"
|
|
6
6
|
# 小号多
|
|
7
7
|
|
|
8
|
+
from .middle_cache import MiddleCache
|
|
9
|
+
|
|
10
|
+
# 下面的dict_middle也弃了,上面的MiddleCache写的更合理
|
|
8
11
|
from .dict_middle import DictCache, Fcs
|
|
9
12
|
#from .dict_middle import *
|
|
10
13
|
Dict = DictCache
|
|
@@ -227,6 +227,7 @@ class DictCache(Base):
|
|
|
227
227
|
def hook_forward_pre(self, model, ins):
|
|
228
228
|
self.no_caches = False
|
|
229
229
|
nid = id(model)
|
|
230
|
+
#print(f"hook_forward_pre {nid}")
|
|
230
231
|
if nid not in self.pools:
|
|
231
232
|
self.copy_forward(nid, model)
|
|
232
233
|
if self.curr>=0:
|
|
@@ -234,10 +235,12 @@ class DictCache(Base):
|
|
|
234
235
|
self.curr = nid
|
|
235
236
|
return self.fc_inputs_to(ins, self.gdv)
|
|
236
237
|
def do_forward(self, fc):
|
|
238
|
+
#print("FWD")
|
|
237
239
|
self.no_caches = True
|
|
238
240
|
self.ctxs = {k:[] for k in self.nets}
|
|
239
241
|
with torch.autograd.graph.saved_tensors_hooks(self.hook_pack, self.hook_unpack):
|
|
240
242
|
rst = fc()
|
|
243
|
+
#print("DFWD")
|
|
241
244
|
return rst.to(self.gdv)
|
|
242
245
|
def wrap_backward_deal(self, net_id):
|
|
243
246
|
if self.backward_deal is None:
|
|
@@ -245,8 +248,10 @@ class DictCache(Base):
|
|
|
245
248
|
self.backward_deal(self.nets[net_id], self.opts[net_id])
|
|
246
249
|
def hook_backward(self, model, grad_ins, grad_outs):
|
|
247
250
|
nid = id(model)
|
|
251
|
+
#print(f"hook_backward {nid}")
|
|
248
252
|
self.wrap_backward_deal(nid)
|
|
249
253
|
def hook_pack(self, dt):
|
|
254
|
+
#print(f"pack")
|
|
250
255
|
if self.no_caches:
|
|
251
256
|
# 不做缓存,数据不处理
|
|
252
257
|
return -1, dt
|
|
@@ -256,6 +261,7 @@ class DictCache(Base):
|
|
|
256
261
|
return index, len(self.ctxs[index])-1
|
|
257
262
|
def hook_unpack(self, x):
|
|
258
263
|
nid = x[0]
|
|
264
|
+
#print(f"unpack {nid}")
|
|
259
265
|
if nid<0:
|
|
260
266
|
return x[1]
|
|
261
267
|
if nid not in self.pools:
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
#
|
|
2
|
+
'''
|
|
3
|
+
model.register_forward_pre_hook 会在模型forward之前调用
|
|
4
|
+
model.register_forward_hook 会在模型forward之后调用
|
|
5
|
+
model.register_full_backward_hook 会在模型反向梯度计算之后调用,注,模型列表第一个模型会在计算梯度前调用,该hook参数是(model, grad_ins, grad_outs),model是当前模型,grad_outs是后面的模型传来的,grad_ins是grad_outs经过该model计算后往前传的梯度,好像是第一个模型因为不用往前传梯度,提前调用了
|
|
6
|
+
torch.autograd.graph.saved_tensors_hooks(hook_pack, hook_unpack):
|
|
7
|
+
hook_pack会在Tensor计算完成后把之后反向梯度计算要用的tensor进行存储
|
|
8
|
+
hook_unpack是在Tensor反向梯度计算前取回之前存储的tensor,注:调用loss.backward不用在with ...saved_tensors_hooks(..)中
|
|
9
|
+
'''
|
|
10
|
+
|
|
11
|
+
import torch
|
|
12
|
+
from ... import Base
|
|
13
|
+
from ... import pyz
|
|
14
|
+
class MiddleBase(Base):
|
|
15
|
+
def init(self, nets):
|
|
16
|
+
self.hook(nets)
|
|
17
|
+
def before_forward(self):
|
|
18
|
+
pass
|
|
19
|
+
def after_forward(self):
|
|
20
|
+
pass
|
|
21
|
+
def before_backward(self):
|
|
22
|
+
pass
|
|
23
|
+
def after_backward(self):
|
|
24
|
+
pass
|
|
25
|
+
def hook_forward_before(self, model, ins):
|
|
26
|
+
return ins.cpu()
|
|
27
|
+
def hook_forward_after(self, model):
|
|
28
|
+
pass
|
|
29
|
+
def hook_backward_after(self, model):
|
|
30
|
+
pass
|
|
31
|
+
def tensor_save(self, tuple_data):
|
|
32
|
+
obj = tuple_data
|
|
33
|
+
return obj
|
|
34
|
+
def tensor_load(self, obj):
|
|
35
|
+
tuple_data = obj
|
|
36
|
+
return tuple_data
|
|
37
|
+
# 下面是不应修改的部分
|
|
38
|
+
def hook(self, nets):
|
|
39
|
+
net = nets[0]
|
|
40
|
+
self.start_id = id(net)
|
|
41
|
+
self.start_net = net
|
|
42
|
+
hooks = []
|
|
43
|
+
hooks += [net.register_forward_pre_hook(self.hook_forward_before) for net in nets]
|
|
44
|
+
hooks+=[net.register_forward_hook(self.native_hook_forward_after) for net in nets]
|
|
45
|
+
if hasattr(self.start_net, "register_full_backward_hook"):
|
|
46
|
+
hooks+=[net.register_full_backward_hook(self.native_hook_backward_after) for net in nets]
|
|
47
|
+
else:
|
|
48
|
+
hooks+=[net.register_backward_hook(self.native_hook_backward_after) for net in nets]
|
|
49
|
+
self.hooks = hooks
|
|
50
|
+
def unhook(self):
|
|
51
|
+
[hook.remove() for hook in self.hooks]
|
|
52
|
+
def do_forward(self, fc):
|
|
53
|
+
with self.wrap_forward():
|
|
54
|
+
return fc()
|
|
55
|
+
def do_backward(self, fc):
|
|
56
|
+
with self.wrap_backward():
|
|
57
|
+
return fc()
|
|
58
|
+
def wrap_backward(self):
|
|
59
|
+
def wrap_enter():
|
|
60
|
+
self.before_backward()
|
|
61
|
+
def wrap_out(exc_type, exc_val, exc_tb):
|
|
62
|
+
self.hook_backward_after(self.start_net)
|
|
63
|
+
self.after_backward()
|
|
64
|
+
return pyz.With(wrap_enter, wrap_out, True)
|
|
65
|
+
def wrap_forward(self):
|
|
66
|
+
obj = torch.autograd.graph.saved_tensors_hooks(self.tensor_save, self.tensor_load)
|
|
67
|
+
def wrap_enter():
|
|
68
|
+
self.before_forward()
|
|
69
|
+
obj.__enter__()
|
|
70
|
+
def wrap_out(exc_type, exc_val, exc_tb):
|
|
71
|
+
obj.__exit__(exc_type, exc_val, exc_tb)
|
|
72
|
+
self.after_forward()
|
|
73
|
+
return pyz.With(wrap_enter, wrap_out, True)
|
|
74
|
+
def native_hook_backward_after(self, model, grad_up, grad_src):
|
|
75
|
+
if id(model)==self.start_id:
|
|
76
|
+
return
|
|
77
|
+
self.hook_backward_after(model)
|
|
78
|
+
def native_hook_forward_after(self, model, ins, outs):
|
|
79
|
+
self.hook_forward_after(model)
|
|
80
|
+
pass
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
#
|
|
2
|
+
|
|
3
|
+
from .middle_base import MiddleBase
|
|
4
|
+
import torch
|
|
5
|
+
class MiddleCache(MiddleBase):
|
|
6
|
+
'''
|
|
7
|
+
nets: 模型列表
|
|
8
|
+
win_size: gpu设备可存放的模型数量
|
|
9
|
+
deal_after_backup: fc(model) 或 None, 在模型进行backward后调用
|
|
10
|
+
cal_dv: 计算设备,默认cuda
|
|
11
|
+
cache_dv: 缓存设备,默认cpu
|
|
12
|
+
fc_inputs_to: fc(inputs, dv) 或 None, 需要把输入参数转换成设备dv对应的数据时候使用,默认输入参数是Tensor的tuple或者就是Tensor
|
|
13
|
+
cal_nets: 模型列表,nets中的一部分,不进行两个设备转换,而是一直放在cal_dv上的模型
|
|
14
|
+
cache_nets: 模型列表,nets中的一部分,不进行两个设备转换,而是一直放在cache_dv上的模型
|
|
15
|
+
preload: 预加载,把模型加载到计算设备时,把后面的模型也加载到计算设备上(已经加载到计算设备上的放缓存设备中)
|
|
16
|
+
'''
|
|
17
|
+
def init(self, nets, win_size=1, deal_after_backup=None, cal_dv='cuda', cache_dv='cpu', fc_inputs_to = None, cal_nets = [], cache_nets = [], preload = False):
|
|
18
|
+
cache_dv = torch.device(cache_dv) if type(cache_dv)==str else cache_dv
|
|
19
|
+
cal_dv = torch.device(cal_dv) if type(cal_dv)==str else cal_dv
|
|
20
|
+
[net.to(cache_dv) for net in cache_nets]
|
|
21
|
+
[net.to(cal_dv) for net in cal_nets]
|
|
22
|
+
self.src = nets
|
|
23
|
+
static_dv = {}
|
|
24
|
+
static_dv.update({id(net):cache_dv for net in cache_nets})
|
|
25
|
+
static_dv.update({id(net):cal_dv for net in cal_nets})
|
|
26
|
+
self.static_dv = static_dv
|
|
27
|
+
self.nets = {id(net):net for net in nets if id(net) not in self.static_dv}
|
|
28
|
+
# TEST CODE
|
|
29
|
+
# self.indexes = {}
|
|
30
|
+
# for i in range(len(nets)):
|
|
31
|
+
# self.indexes[id(nets[i])] = i
|
|
32
|
+
# DONE
|
|
33
|
+
self.cache_dv = cache_dv
|
|
34
|
+
self.cal_dv = cal_dv
|
|
35
|
+
self.hook(nets)
|
|
36
|
+
#
|
|
37
|
+
self.datas = {id(net):[] for net in nets}
|
|
38
|
+
self.cal_ids = []
|
|
39
|
+
self.deal_after_backup = deal_after_backup
|
|
40
|
+
if fc_inputs_to is None:
|
|
41
|
+
fc_inputs_to = self.list_inputs_to
|
|
42
|
+
self.inputs_to = fc_inputs_to
|
|
43
|
+
self.nexts = {}
|
|
44
|
+
self.prevs = {}
|
|
45
|
+
self.curr = -1
|
|
46
|
+
self.mark_static = None
|
|
47
|
+
self.win_size = win_size
|
|
48
|
+
self.preload = preload
|
|
49
|
+
def train(self):
|
|
50
|
+
[net.train() for net in self.src]
|
|
51
|
+
def eval(self):
|
|
52
|
+
[net.eval() for net in self.src]
|
|
53
|
+
@staticmethod
|
|
54
|
+
def list_inputs_to(datas, dv):
|
|
55
|
+
if isinstance(datas, torch.Tensor):
|
|
56
|
+
return datas.to(dv)
|
|
57
|
+
# assert datas is not None, "inputs datas is null"
|
|
58
|
+
inputs = tuple([k.to(dv) for k in datas])
|
|
59
|
+
return inputs
|
|
60
|
+
def before_forward(self):
|
|
61
|
+
self.curr = -1
|
|
62
|
+
for mid in self.datas:
|
|
63
|
+
self.datas[mid] = []
|
|
64
|
+
def after_forward(self):
|
|
65
|
+
pass
|
|
66
|
+
def before_backward(self):
|
|
67
|
+
self.curr = -1
|
|
68
|
+
def after_backward(self):
|
|
69
|
+
pass
|
|
70
|
+
def to_dv(self, mid, dv):
|
|
71
|
+
self.nets[mid].to(dv)
|
|
72
|
+
self.datas[mid] = [self.inputs_to(k, dv) if k is not None else k for k in self.datas[mid]]
|
|
73
|
+
def to_cal(self, mid, pop = 0):
|
|
74
|
+
if mid in self.cal_ids:
|
|
75
|
+
return 0
|
|
76
|
+
if len(self.cal_ids)>=self.win_size:
|
|
77
|
+
xid = self.cal_ids.pop(pop)
|
|
78
|
+
#print(f"model_{self.indexes[xid]} to CPU device")
|
|
79
|
+
self.to_dv(xid, self.cache_dv)
|
|
80
|
+
#print(f"model_{self.indexes[mid]} to CUDA device")
|
|
81
|
+
self.to_dv(mid, self.cal_dv)
|
|
82
|
+
if pop==-1:
|
|
83
|
+
self.cal_ids = [mid]+self.cal_ids
|
|
84
|
+
else:
|
|
85
|
+
self.cal_ids.append(mid)
|
|
86
|
+
return 1
|
|
87
|
+
def hook_forward_before(self, model, ins):
|
|
88
|
+
mid = id(model)
|
|
89
|
+
self.mark_static = mid in self.static_dv
|
|
90
|
+
if self.mark_static:
|
|
91
|
+
# assert ins is not None, "hook_forward_before A"
|
|
92
|
+
return self.inputs_to(ins, self.static_dv[mid])
|
|
93
|
+
prev = self.curr
|
|
94
|
+
if prev >= 0:
|
|
95
|
+
self.nexts[prev] = mid
|
|
96
|
+
if mid not in self.prevs:
|
|
97
|
+
self.prevs[mid] = prev
|
|
98
|
+
self.curr = mid
|
|
99
|
+
self.loop_to_cal(mid, 0, self.nexts)
|
|
100
|
+
# assert ins is not None, "hook_forward_before B"
|
|
101
|
+
return self.inputs_to(ins, self.cal_dv)
|
|
102
|
+
def hook_forward_after(self, model):
|
|
103
|
+
pass
|
|
104
|
+
def hook_backward_after(self, model):
|
|
105
|
+
mid = id(model)
|
|
106
|
+
if self.deal_after_backup is not None:
|
|
107
|
+
self.deal_after_backup(model)
|
|
108
|
+
if id in self.static_dv:
|
|
109
|
+
return
|
|
110
|
+
after = self.curr
|
|
111
|
+
if after>=0:
|
|
112
|
+
self.prevs[after] = mid
|
|
113
|
+
self.curr = mid
|
|
114
|
+
def tensor_save(self, tuple_data):
|
|
115
|
+
if self.mark_static:
|
|
116
|
+
return -1, tuple_data
|
|
117
|
+
index = len(self.datas[self.curr])
|
|
118
|
+
self.datas[self.curr].append(tuple_data)
|
|
119
|
+
return self.curr, index
|
|
120
|
+
def tensor_load(self, obj):
|
|
121
|
+
if obj[0]<0:
|
|
122
|
+
return obj[1]
|
|
123
|
+
curr, index = obj
|
|
124
|
+
self.loop_to_cal(curr, -1, self.prevs)
|
|
125
|
+
tuple_data = self.datas[curr][index]
|
|
126
|
+
# assert tuple_data is not None
|
|
127
|
+
self.datas[curr][index] = None
|
|
128
|
+
return tuple_data
|
|
129
|
+
def loop_to_cal(self, mid, pop, nexts):
|
|
130
|
+
if mid in self.cal_ids:
|
|
131
|
+
return
|
|
132
|
+
self.to_cal(mid, pop)
|
|
133
|
+
if not self.preload:
|
|
134
|
+
return
|
|
135
|
+
count = 1
|
|
136
|
+
while count<self.win_size and mid in nexts:
|
|
137
|
+
mid = nexts[mid]
|
|
138
|
+
if mid in self.cal_ids:
|
|
139
|
+
break
|
|
140
|
+
self.to_cal(mid, pop)
|
|
141
|
+
count+=1
|
|
142
|
+
|
|
143
|
+
pass
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
from . import Base
|
|
2
|
+
import os,sys,json,time
|
|
3
|
+
class Key:
|
|
4
|
+
first='first'
|
|
5
|
+
ifirst = 0
|
|
6
|
+
last= 'last'
|
|
7
|
+
ilast = -1
|
|
8
|
+
@staticmethod
|
|
9
|
+
def check_first(val):
|
|
10
|
+
return val in (Key.first, Key.ifirst)
|
|
11
|
+
@staticmethod
|
|
12
|
+
def check_last(val):
|
|
13
|
+
return val in (Key.last, Key.ilast)
|
|
14
|
+
class Path(Base):
|
|
15
|
+
Key = Key
|
|
16
|
+
def init(self, **maps):
|
|
17
|
+
self.paths = {}
|
|
18
|
+
self.fcs = {}
|
|
19
|
+
self.lasts = {}
|
|
20
|
+
k = "check_abs"
|
|
21
|
+
self.check_abs = True
|
|
22
|
+
if k in maps:
|
|
23
|
+
self.check_abs = maps[k]
|
|
24
|
+
del maps[k]
|
|
25
|
+
for k, v in maps.items():
|
|
26
|
+
self.set(k, v)
|
|
27
|
+
@staticmethod
|
|
28
|
+
def dir(fp):
|
|
29
|
+
return os.path.dirname(fp)
|
|
30
|
+
@staticmethod
|
|
31
|
+
def join(*a):
|
|
32
|
+
return os.path.join(*a)
|
|
33
|
+
@staticmethod
|
|
34
|
+
def rjoin(path, *a):
|
|
35
|
+
a = [k.strip() for k in a if k is not None and k.strip()!=""]
|
|
36
|
+
if len(a)==0:
|
|
37
|
+
return None
|
|
38
|
+
if path is None:
|
|
39
|
+
return os.path.join(*a)
|
|
40
|
+
return os.path.join(path, *a)
|
|
41
|
+
@staticmethod
|
|
42
|
+
def rfp(paths, *a, last=-1, check_abs=False):
|
|
43
|
+
a = [k.strip() for k in a if k is not None and k.strip()!=""]
|
|
44
|
+
if len(a)==0:
|
|
45
|
+
return None
|
|
46
|
+
if check_abs and len(a)>0:
|
|
47
|
+
f = a[0]
|
|
48
|
+
if f[:1]=="/" or f.find(":")>0:
|
|
49
|
+
return Path.join(*a)
|
|
50
|
+
#print(f"[TESTZ] a: {a}, paths: {paths}")
|
|
51
|
+
#fp = os.path.join(*a)
|
|
52
|
+
for path in paths:
|
|
53
|
+
_fp = Path.rjoin(path, *a)
|
|
54
|
+
if os.path.exists(_fp):
|
|
55
|
+
return _fp
|
|
56
|
+
return Path.rjoin(paths[last], *a)
|
|
57
|
+
def add(self, path, name=None, index=0):
|
|
58
|
+
self.paths[name].insert(index, path)
|
|
59
|
+
def set(self, paths, name=None, last = -1, curr = None):
|
|
60
|
+
if type(paths) not in (list, tuple):
|
|
61
|
+
paths = [paths]
|
|
62
|
+
if curr is not None and None not in paths:
|
|
63
|
+
if Key.check_first(curr):
|
|
64
|
+
paths = [None]+paths
|
|
65
|
+
elif Key.check_last(curr):
|
|
66
|
+
paths.append(None)
|
|
67
|
+
else:
|
|
68
|
+
assert False
|
|
69
|
+
self.paths[name] = paths
|
|
70
|
+
self.lasts[name] = last
|
|
71
|
+
def fc(*a):
|
|
72
|
+
return self.rfp(paths, *a, last=last, check_abs=self.check_abs)
|
|
73
|
+
self.fcs[name] = fc
|
|
74
|
+
def __getattr__(self, name):
|
|
75
|
+
return self.fcs[name]
|
|
76
|
+
def call(self, *obj):
|
|
77
|
+
return self.fcs[None](*obj)
|
|
78
|
+
|
|
79
|
+
pass
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: buildz
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.6
|
|
4
4
|
Summary: 配置读写(基于json格式进行简化)、ioc、以及其他工具代码。a json-base file format's read and write code by python, and codes to read and product object from configure file in such format(ioc), and other tool codes
|
|
5
5
|
Home-page: https://github.com/buildCodeZ/buildz
|
|
6
6
|
Author: Zzz
|
|
@@ -10,6 +10,7 @@ buildz/cmd.py
|
|
|
10
10
|
buildz/confz.py
|
|
11
11
|
buildz/dz.py
|
|
12
12
|
buildz/logz.py
|
|
13
|
+
buildz/path.py
|
|
13
14
|
buildz/pathz.py
|
|
14
15
|
buildz/pyz.py
|
|
15
16
|
buildz/tls.py
|
|
@@ -119,6 +120,8 @@ buildz/fz/fio.py
|
|
|
119
120
|
buildz/fz/lsf.py
|
|
120
121
|
buildz/gpuz/test/analyze.py
|
|
121
122
|
buildz/gpuz/test/demo.py
|
|
123
|
+
buildz/gpuz/test/dm.py
|
|
124
|
+
buildz/gpuz/test/dm1.py
|
|
122
125
|
buildz/gpuz/test/report.txt
|
|
123
126
|
buildz/gpuz/test/take_gpu_mem.py
|
|
124
127
|
buildz/gpuz/test/test_atten_demo.py
|
|
@@ -127,6 +130,8 @@ buildz/gpuz/test/test_multi_demo.py
|
|
|
127
130
|
buildz/gpuz/test/test_resnet_demo.py
|
|
128
131
|
buildz/gpuz/torch/__init__.py
|
|
129
132
|
buildz/gpuz/torch/dict_middle.py
|
|
133
|
+
buildz/gpuz/torch/middle_base.py
|
|
134
|
+
buildz/gpuz/torch/middle_cache.py
|
|
130
135
|
buildz/gpuz/torch/multi_dict_middle.py
|
|
131
136
|
buildz/gpuz/torch/seq_middle.py
|
|
132
137
|
buildz/html/__init__.py
|