一小套工具
pywup的Python项目详细描述
PYWUP
一小套工具。
待办事项:展开此markdown
如何安装/更新
pip3 install --upgrade pywup --user --no-cache-dir
如果安装后无法运行wup命令,请检查文件夹.local/bin的路径是否在您的路径中。如果没有,请在~/.bashrc结尾处添加以下内容:
export PATH=/home/<YOUR_USERNAME>/.local/bin:$PATH
图书馆
配置
这是一个python库,用于创建基于模板的配置脚本。
#!/usr/bin/env python3frompywup.configureimport*mf=TemplateBuilder()mf.compiler=find_program_or_abort(["clang++","g++"],"Compiler","clang")mf.python=find_header_or_abort("m/Python.h","Python header","python3-dev")mf.highgui=find_header_or_abort("/highgui.hpp","Opencv's highgui","opencv-dev")mf.imgproc=find_header_or_abort("/imgproc.hpp","Opencv's imgproc","opencv-dev")mf.valgrind_py=find_file_or_abort("python3-devel/valgrind-python.supp","valgrind suppression file for python3","python3-dev")mf.libimgcodecs=find_lib("libopencv_imgcodecs.so","libopencv_imgcodecs")mf.libs="-lopencv_core -lopencv_highgui -lopencv_imgproc -I../../wup/cpp/include"mf.headers="-DPYTHON_H=$(PYTHON_H) -DHIGHGUI_H=$(HIGHGUI_H) -DIMGPROC_H=$(IMGPROC_H)"ifmf.libimgcodecs:mf.libs+=" -lopencv_imgcodecs"mf.build("Makefile","""\CC={compiler}HIGHGUI_H={highgui}PYTHON_H={python}IMGPROC_H={imgproc}VALGRIND_PYTHON={valgrind_py}LIBS = {libs}HEADERS= {headers}all: $(CC) -fPIC -shared wup_wrapper.cpp -o libwup.so -Wall -O3 -std=c++11 $(LIBS) $(HEADERS)run: $(CC) main.cpp -o main -Wall -O3 -std=c++11 $(LIBS) $(HEADERS) ./maindebug: $(CC) main.cpp -o main -Wall -g -std=c++11 $(LIBS) $(HEADERS) gdb mainvalgrind: $(CC) -fPIC -shared wup_wrapper.cpp -o libwup.so -Wall -O1 -g -std=c++11 $(LIBS) $(HEADERS) valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --suppressions=$(VALGRIND_PYTHON) python3 main3.py --model wisard --dataset mnist 2> valgrind.out""")
wup
这是一个用于运行实验、打印和执行重复任务的命令行实用程序。
收集
collect多次运行程序并收集输出。
wup collect \ --p TRAIN_TIME "Info: Time to train was ([-0-9\.e\+]+) μs"\ --p TEST_TIME "Info: Time to test was ([-0-9\.e\+]+) μs"\ --p ACC "Test Acc = ([0-9\.]+)"\ --runs 10\ --va THREADS 1172\ --vg JOBS 1800001.6 \ --o wespa.csv \ --c "./wisard -createModel RamWisard -ramBits 28 -decoder classic -ramType prime \ -train mnist ../data/emnist/byclass/emnist-byclass-train \ -test mnist ../data/emnist/byclass/emnist-byclass-test \ -times -numThreads {} -hashSize 18041 -jobsPerThread {} -bleaching Y -pPredict 2"
热图
heatmap接收csv文件并生成heatmap。
wup heatmap \ --data ./wespa.csv \ --y "THREADS"\ --x "JOBS"\ --z "TEST_TIME"\ --tz "data[0,z] / data[i,z]"\ --tx "\"%d\" % int(float(data[i,x]))"\ --ty "\"%d\" % int(float(data[i,y]))"\ --tzz "\"%.2f\" % data[i,j]"\ --title "Speedup (threads / blockSize)"\ --size 104\ --o heatmap_wespa.png
条
使用一个或多个csv文件生成条形图。
wup bars \ --load ./note.csv \ --line THREADS TEST_TIME "note test"\ --line THREADS TRAIN_TIME "note train"\\ --load ./out.csv \ --line THREADS TEST_TIME "wespa test"\ --line THREADS TRAIN_TIME "wespa train"\\ --title "Predict speedups (threads / speedup)"\ --ty "y[0,0] / y[i,j]"\ --ts "y[0,0]*s[i,j] / (y[i,j]**2)"\ --tyy "\"%.2f\" % ty[i,j] if ty[i,j] else ''"\ --tx "int(float(x[i]))"\ --xlabel "Threads"\ --ylabel "Speedup"\ --barwidth 0.9 \ --size 104\ --verbose \ --o bars_parallelPredictSpeedup.png