Skip to content
Snippets Groups Projects
Commit 206a54dd authored by kotsifa2's avatar kotsifa2
Browse files

Cava pipeline benchmark (Harvard)

parent 700e707c
No related branches found
No related tags found
No related merge requests found
Showing
with 23230 additions and 0 deletions
build/
cava-visc
Makefile.config
example-face/*.bin
example-face/*.png
This file is a partial list of people who have contributed to the HPVM-CAVA
pilot project.
As with LLVM's credits, the list is sorted by surname and formatted to allow
easy grepping and beautification by scripts. The fields are: name (N) and
email (E).
N: Adel Ejjeh
E: aejjeh@illinois.edu
N: Maria Kotsifakou
E: kotsifa2@illinois.edu
N: Saketh Rama
E: rama@seas.harvard.edu
N: Yuan Yao
E: yuanyao@seas.harvard.edu
MIT License
Copyright (c) 2018 The HPVM-CAVA Authors.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
# This Makefile compiles the HPVM-CAVA pilot project.
# It builds HPVM-related dependencies, then the native camera pipeline ISP code.
#
# Paths to some dependencies (e.g., HPVM, LLVM) must exist in Makefile.config,
# which can be copied from Makefile.config.example for a start.
CONFIG_FILE := Makefile.config
ifeq ($(wildcard $(CONFIG_FILE)),)
$(error $(CONFIG_FILE) not found. See $(CONFIG_FILE).example)
endif
include $(CONFIG_FILE)
# Compiler Flags
DLEVEL ?= 0
#CAM_CFLAGS?=-O0 \
#-Wno-psabi \
#-Wno-unused-label -Wno-unused-but-set-variable \
#-Wno-maybe-uninitialized -DARCHITECTURE=SMV -DTRANSPOSE_WEIGHTS=1 \
-DDEBUG_LEVEL=$(DLEVEL)
LFLAGS += -lm -lrt
# Build dirs
ifeq ($(VERSION),)
VERSION = Default
endif
SRC_DIR = src/
CAM_PIPE_SRC_DIR = $(SRC_DIR)
BUILD_DIR = build/$(TARGET)_$(VERSION)
CURRENT_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
# Source files for the frontend camera pipeline
COMMON_SRCS = main.c \
utility.c
CAM_PIPE_SRCS = load_cam_model.c \
cam_pipe_utility.c \
dma_interface.c # FIXME: This is a hack until external C++ files can be included in build.
# NOTE: We have temporarily removed gem5 and other dependencies for simplicity.
SRCS = $(COMMON_SRCS) $(CAM_PIPE_SRCS)
#GEM5_DMA_SRC = gem5/dma_interface.c
#GEM5_SYS_SRCS = gem5/aladdin_sys_connection.cpp gem5/aladdin_sys_constants.cpp
#GEM5_UTIL_SRCS = ../../util/m5/m5op_x86.S
# NATIVE_FULL_PATH_SRCS contains all the full path source files for the camera vision pipeline.
NATIVE_FULL_PATH_SRCS = $(patsubst %, $(SRC_DIR)/%, $(COMMON_SRCS))
NATIVE_FULL_PATH_SRCS += $(patsubst %, $(CAM_PIPE_SRC_DIR)/%, $(CAM_PIPE_SRCS))
# GEM5_FULL_PATH_SRCS contains all the full path source files for the gem5 files.
#GEM5_FULL_PATH_SRCS = $(patsubst %, $(ALADDIN_HOME)/%, $(GEM5_DMA_SRC) $(GEM5_SYS_SRCS) $(GEM5_UTIL_SRCS))
#INCLUDES += -I$(ALADDIN_HOME) \
# -I$(ALADDIN_HOME)/../../include \
# -I$(ALADDIN_HOME)/gem5
INCLUDES += -I$(SRC_DIR) \
-I$(CAM_PIPE_SRC_DIR) \
ifneq ($(CONFUSE_ROOT),)
INCLUDES += -I$(CONFUSE_ROOT)/include
LFLAGS += -L$(CONFUSE_ROOT)/lib
endif
EXE = cava-visc-$(VERSION)-$(TARGET)
CAM_CFLAGS += -mf16c -flax-vector-conversions
LFLAGS += -pthread
#$(DEBUG): $(NATIVE_FULL_PATH_SRCS) $(GEM5_FULL_PATH_SRCS)
# @echo Building benchmark for native machine with debug support.
# #@mkdir -p $(BUILD_DIR)
# @$(CC) $(CAM_CFLAGS) -ggdb3 $(INCLUDES) -DGEM5 -DDMA_MODE -DDMA_INTERFACE_V3 -o $(DEBUG) $^ $(LFLAGS)
#
#clean-native:
# rm -f $(NATIVE) $(DEBUG)
## BEGIN HPVM MAKEFILE
LANGUAGE=visc
SRCDIR_OBJS= load_cam_model.ll cam_pipe_utility.ll dma_interface.ll utility.ll
OBJS_SRC=src/cam_pipe.c src/pipe_stages.c src/load_cam_model.c src/cam_pipe_utility.c src/dma_interface.c src/utility.c
VISC_OBJS=main.visc.ll
APP = $(EXE)
APP_CUDALDFLAGS=-lm -lstdc++
APP_CFLAGS= $(INCLUDES) -DDMA_MODE -DDMA_INTERFACE_V3
APP_CXXFLAGS=-ffast-math -O0 -I/opt/opencv/include
APP_LDFLAGS=$(LFLAGS)
OPT_FLAGS = -tti -targetlibinfo -tbaa -scoped-noalias -assumption-cache-tracker -profile-summary-info -forceattrs -inferattrs -ipsccp -globalopt -domtree -mem2reg -deadargelim -domtree -basicaa -aa -simplifycfg -pgo-icall-prom -basiccg -globals-aa -prune-eh -always-inline -functionattrs -domtree -sroa -early-cse -lazy-value-info -jump-threading -correlated-propagation -simplifycfg -domtree -basicaa -aa -libcalls-shrinkwrap -tailcallelim -simplifycfg -reassociate -domtree -loops -loop-simplify -lcssa-verification -lcssa -basicaa -aa -scalar-evolution -loop-rotate -licm -loop-unswitch -simplifycfg -domtree -basicaa -aa -loops -loop-simplify -lcssa-verification -lcssa -scalar-evolution -indvars -loop-idiom -loop-deletion -memdep -memcpyopt -sccp -domtree -demanded-bits -bdce -basicaa -aa -lazy-value-info -jump-threading -correlated-propagation -domtree -basicaa -aa -memdep -dse -loops -loop-simplify -lcssa-verification -lcssa -aa -scalar-evolution -licm -postdomtree -adce -simplifycfg -domtree -basicaa -aa -barrier -basiccg -rpo-functionattrs -globals-aa -float2int -domtree -loops -loop-simplify -lcssa-verification -lcssa -basicaa -aa -scalar-evolution -loop-rotate -loop-accesses -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -loop-distribute -loop-simplify -lcssa-verification -lcssa -branch-prob -block-freq -scalar-evolution -basicaa -aa -loop-accesses -demanded-bits -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -loop-vectorize -loop-simplify -scalar-evolution -aa -loop-accesses -loop-load-elim -basicaa -aa -simplifycfg -domtree -basicaa -aa -loops -scalar-evolution -alignment-from-assumptions -strip-dead-prototypes -domtree -loops -branch-prob -block-freq -loop-simplify -lcssa-verification -lcssa -basicaa -aa -scalar-evolution -branch-prob -block-freq -loop-sink -instsimplify
CFLAGS = -O1 $(APP_CFLAGS) $(PLATFORM_CFLAGS)
OBJS_CFLAGS = -O1 $(APP_CFLAGS) $(PLATFORM_CFLAGS)
CXXFLAGS = $(APP_CXXFLAGS) $(PLATFORM_CXXFLAGS)
LDFLAGS= $(APP_LDFLAGS) $(PLATFORM_LDFLAGS)
LIBCLC_LIB_PATH = $(LLVM_SRC_ROOT)/../libclc/built_libs
VISC_RT_PATH = $(LLVM_SRC_ROOT)/projects/visc-rt
VISC_RT_LIB = $(VISC_RT_PATH)/visc-rt.ll
#LIBCLC_NVPTX_LIB = $(LIBCLC_LIB_PATH)/nvptx--nvidiacl.bc
LIBCLC_NVPTX_LIB = $(LIBCLC_LIB_PATH)/nvptx64--nvidiacl.bc
#LIBCLC_NVPTX_LIB = nvptx64--nvidiacl.bc
LLVM_34_AS = $(LLVM_34_ROOT)/build/bin/llvm-as
TESTGEN_OPTFLAGS = -load LLVMGenVISC.so -genvisc -globaldce
KERNEL_GEN_FLAGS = -O3 -target nvptx64-nvidia-nvcl
ifeq ($(TARGET),x86)
DEVICE = SPIR_TARGET
VISC_OPTFLAGS = -load LLVMBuildDFG.so -load LLVMLocalMem.so -load LLVMDFG2LLVM_SPIR.so -load LLVMDFG2LLVM_X86.so -load LLVMClearDFG.so -localmem -dfg2llvm-spir -dfg2llvm-x86 -clearDFG
CFLAGS += -DOPENCL_CPU
VISC_OPTFLAGS += -visc-timers-x86 -visc-timers-spir
else ifeq ($(TARGET),seq)
DEVICE = CPU_TARGET
VISC_OPTFLAGS = -load LLVMBuildDFG.so -load LLVMDFG2LLVM_X86.so -load LLVMClearDFG.so -dfg2llvm-x86 -clearDFG
VISC_OPTFLAGS += -visc-timers-x86
else ifeq ($(TARGET),fpga)
DEVICE = FPGA_TARGET
VISC_OPTFLAGS = -load LLVMBuildDFG.so -load LLVMLocalMem.so -load LLVMDFG2LLVM_FPGA.so -load LLVMDFG2LLVM_X86.so -load LLVMClearDFG.so -localmem -dfg2llvm-fpga -dfg2llvm-x86 -clearDFG
CFLAGS += -DOPENCL_CPU
VISC_OPTFLAGS += -visc-timers-x86 -visc-timers-fpga
else
DEVICE = GPU_TARGET
VISC_OPTFLAGS = -load LLVMBuildDFG.so -load LLVMLocalMem.so -load LLVMDFG2LLVM_NVPTX.so -load LLVMDFG2LLVM_X86.so -load LLVMClearDFG.so -localmem -dfg2llvm-nvptx -dfg2llvm-x86 -clearDFG
VISC_OPTFLAGS += -visc-timers-x86 -visc-timers-ptx
endif
TESTGEN_OPTFLAGS += -visc-timers-gen
CFLAGS += -DDEVICE=$(DEVICE)
CXXFLAGS += -DDEVICE=$(DEVICE)
#ifeq ($(TIMER),x86)
# VISC_OPTFLAGS += -visc-timers-x86
#else ifeq ($(TIMER),ptx)
# VISC_OPTFLAGS += -visc-timers-ptx
#else ifeq ($(TIMER),gen)
# TESTGEN_OPTFLAGS += -visc-timers-gen
#else ifeq ($(TIMER),spir)
# TESTGEN_OPTFLAGS += -visc-timers-spir
#else ifeq ($(TIMER),fpga)
# TESTGEN_OPTFLAGS += -visc-timers-fpga
#else ifeq ($(TIMER),no)
#else
# ifeq ($(TARGET),x86)
# VISC_OPTFLAGS += -visc-timers-x86 -visc-timers-spir
# else ifeq ($(TARGET),seq)
# VISC_OPTFLAGS += -visc-timers-x86
# else ifeq ($(TARGET),fpga)
# VISC_OPTFLAGS += -visc-timers-x86 -visc-timers-fpga
# else ifeq ($(TARGET),seqx86)
# VISC_OPTFLAGS += -visc-timers-x86 -visc-timers-spir
# else ifeq ($(TARGET),seqgpu)
# VISC_OPTFLAGS += -visc-timers-x86 -visc-timers-ptx
# else
# VISC_OPTFLAGS += -visc-timers-x86 -visc-timers-ptx
# endif
# TESTGEN_OPTFLAGS += -visc-timers-gen
#endif
# Add BUILDDIR as a prefix to each element of $1
INBUILDDIR=$(addprefix $(BUILD_DIR)/,$(1))
# Add SRCDIR as a prefix to each element of $1
#INSRCDIR=$(addprefix $(SRCDIR)/,$(1))
PYTHON_LLVM_40_34 = ../llvm-40-34.py
.PRECIOUS: $(BUILD_DIR)/%.ll
OBJS = $(call INBUILDDIR,$(SRCDIR_OBJS))
TEST_OBJS = $(call INBUILDDIR,$(VISC_OBJS))
KERNEL = $(TEST_OBJS).kernels.ll
ifeq ($(TARGET),x86)
SPIR_ASSEMBLY = $(TEST_OBJS).kernels.bc
else ifeq ($(TARGET),seq)
else ifeq ($(TARGET),fpga)
AOC_CL = $(TEST_OBJS).kernels.cl
AOCL_ASSEMBLY = $(TEST_OBJS).kernels.aocx
BOARD = a10gx
ifeq ($(EMULATION),1)
EXE = cava-visc-emu
AOC_EMU = -march=emulator
BUILD_DIR = build/$(TARGET)-emu
endif
else
KERNEL_LINKED = $(BUILD_DIR)/$(APP).kernels.linked.ll
#KERNEL = $(TEST_OBJS).kernels.ll
PTX_ASSEMBLY = $(TEST_OBJS).nvptx.s
endif
HOST_LINKED = $(BUILD_DIR)/$(APP).linked.ll
HOST = $(BUILD_DIR)/$(APP).host.ll
ifeq ($(OPENCL_PATH),)
FAILSAFE=no_opencl
else
FAILSAFE=
endif
# Targets
default: $(FAILSAFE) $(BUILD_DIR) $(EXE)
#default: $(FAILSAFE) $(BUILD_DIR) $(PTX_ASSEMBLY) $(SPIR_ASSEMBLY) $(AOC_CL) $(AOCL_ASSEMBLY) $(EXE)
$(PTX_ASSEMBLY) : $(KERNEL_LINKED)
$(CC) $(KERNEL_GEN_FLAGS) -S $< -o $@
$(KERNEL_LINKED) : $(KERNEL)
$(LLVM_LINK) $(LIBCLC_NVPTX_LIB) -S $< -o $@
$(SPIR_ASSEMBLY) : $(KERNEL)
python $(PYTHON_LLVM_40_34) $< $(BUILD_DIR)/kernel_34.ll
$(LLVM_34_AS) $(BUILD_DIR)/kernel_34.ll -o $@
$(AOCL_ASSEMBLY) : $(AOC_CL)
aoc --report $(AOC_EMU) $(AOC_CL) -o $(AOCL_ASSEMBLY) -board=$(BOARD)
$(AOC_CL) : $(KERNEL)
llvm-cbe --debug $(KERNEL)
$(EXE) : $(HOST_LINKED)
$(CXX) -O3 $(LDFLAGS) $< -o $@
$(HOST_LINKED) : $(HOST) $(OBJS) $(VISC_RT_LIB)
$(LLVM_LINK) $^ -S -o $@
$(VISC_RT_LIB) : $(VISC_RT_PATH)/visc-rt.cpp
make -C $(LLVM_LIB_PATH)
$(HOST) $(KERNEL): $(BUILD_DIR)/$(VISC_OBJS)
$(OPT) -debug $(VISC_OPTFLAGS) -S $< -o $(HOST)
# mv *.ll $(BUILD_DIR)
# $(OPT) -debug-only=DFG2LLVM_SPIR,DFG2LLVM_X86,DFG2LLVM_FPGA,GENVISC $(VISC_OPTFLAGS) -S $< -o $(HOST)
#$(OBJS): $(OBJS_SRC)
# $(CC) $(OBJS_CFLAGS) -emit-llvm -S -o $@ $<
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
$(BUILD_DIR)/%.ll : $(SRC_DIR)/%.c
$(CC) $(OBJS_CFLAGS) -emit-llvm -S -o $@ $<
$(BUILD_DIR)/main.ll : $(SRC_DIR)/main.c
$(CC) $(CFLAGS) -emit-llvm -S -o $@ $<
#$(BUILD_DIR)/main.opt.ll : $(BUILD_DIR)/main.ll
# $(OPT) $(OPT_FLAGS) $< -S -o $@
$(BUILD_DIR)/main.visc.ll : $(BUILD_DIR)/main.ll
$(OPT) -debug-only=genvisc $(TESTGEN_OPTFLAGS) $< -S -o $@
## END HPVM MAKEFILE
CUDA_PATH=/usr/local/cuda
CUDA_LIB_PATH=/usr/local/cuda/lib64
OPENCL_PATH=/opt/intelFPGA_pro/18.0/hld/host/linux64
OPENCL_LIB_PATH=$(OPENCL_PATH)/lib
# NOTE: You may need to configure this based on your root path.
VISC_SRC_ROOT=$(LLVM_SRC_ROOT)
VISC_BUILD_DIR =$(VISC_SRC_ROOT)/build
CC = $(VISC_BUILD_DIR)/bin/clang
PLATFORM_CFLAGS = -I$(LLVM_SRC_ROOT)/include -I$(VISC_BUILD_DIR)/include
CXX = $(VISC_BUILD_DIR)/bin/clang++
PLATFORM_CXXFLAGS = -I$(LLVM_SRC_ROOT)/include -I$(VISC_BUILD_DIR)/include
LINKER = $(VISC_BUILD_DIR)/bin/clang++
PLATFORM_LDFLAGS = -lm -lpthread -lrt -lOpenCL -L$(OPENCL_LIB_PATH)
LLVM_LIB_PATH = $(VISC_BUILD_DIR)/lib
LLVM_BIN_PATH = $(VISC_BUILD_DIR)/bin
OPT = $(LLVM_BIN_PATH)/opt
LLVM_LINK = $(LLVM_BIN_PATH)/llvm-link
LLVM_AS = $(LLVM_BIN_PATH)/llvm-as
LIT = $(LLVM_BIN_PATH)/llvm-lit
# hpvm-cava
Harvard Camera Pipeline with HPVM intrinsics
## Camera Pipeline
The camera pipeline is a simple five-stage image signal processor (ISP) which processes raw images (i.e., sensor inputs) into an image that can feed into a vision backend (e.g., a CNN).
See the original camera/vision pipeline repo (repo: `yaoyuannnn/cava`) for details on each stage.
## HPVM DFG
The single-node HPVM DFG for the camera pipeline is as follows:
![HPVM Camera Pipeline (Single-Node)](https://github.com/saketh/hpvm-cava/raw/master/docs/hpvm-cava_single-node.png "HPVM Camera Pipeline (Single-Node)")
A multi-node DFG with one node per pipeline stage is forthcoming. (This will most likely be similar to the `parboil/benchmarks/pipeline` example in HPVM.)
## Motivation: Pilot Project
This is an out-of-source C program with external C/C++ dependencies (e.g., the `gem5-aladdin` toolkit for SoC simulation). It is a pilot project to demonstrate the integration of HPVM into an existing external codebase with external dependencies for hardware characterization.
## How to Build and Test
1. Clone the HPVM repo (`mariaKt/hpvm`) and build HPVM according to its instructions.
2. Set the source paths in the Makefile appropriately.
The remaining steps are the same as in the convenience shell script `run-camera-pipeline.sh`. (This script calls `eog` by default to view the output.)
3. Build with `make TARGET=seq`
4. Run with `./cava-visc example-face/raw_face_32x32.bin example-face/face.bin`. (This processes the raw image `example-face/raw_face_32x32.bin`. Note that raw images are different from bitmaps, so you might need to obtain them using special software.)
5. Convert the binary output to a PNG with `python scripts/load_and_convert.py -b example-face/face.bin`
6. View the resulting PNG at `example-face/face.png`.
If all went well, `example-face/face.png` should look something like this:
![Example Output of Camera Pipeline](https://github.com/saketh/hpvm-cava/raw/master/example-face/expected-face.png "Example Output of Camera Pipeline")
## Contributing
The main file of interest is: `benchmarks/cava/src/visc/cam_pipe.c`. This file defines the HPVM data flow graph (DFG), which must be defined in one file.
## TODO
- Clearly describe any present limitations of the camera pipeline for processing certain raw input images.
- Copy details about camera pipeline stages from `yaoyuannnn/cava` README.
#####################################################################
#
# Camera Pipeline Model for Nikon D7000
#
#####################################################################
#####################################################################
# Description
#####################################################################
This directory contains model parameters for the Nikon D7000 camera
under indoor lighting conditions and using the Normal camera
picture style. This model was created by Haiting Lin, Michael Brown,
and others. Their methodology can be found in the PAMI paper entitled
"A New In-Camera Imaging Model for Color Computer Vision and its
Application".
#####################################################################
# White Balance Setting Codes
#####################################################################
Tu - 3 - Tungsten
Fs - 4 - Flash
Su - 9 - Sunny
Cl - 10 - Cloudy
Sh - 11 - Shade
Fl - 14 - Fluorescent
#####################################################################
# Useful Links
#####################################################################
More models (see Data sets):
http://www.comp.nus.edu.sg/~brown/radiometric_calibration/
Readme for model format:
http://www.comp.nus.edu.sg/~brown/radiometric_calibration/datasets/Model_param/readme.pdf
This model:
http://www.comp.nus.edu.sg/~brown/radiometric_calibration/datasets/Model_param/NikonD7000_Indoor20110507_4s/N.zip
16400.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000
0.001304 0.001089 0.001547
0.002206 0.001898 0.002376
0.002950 0.002692 0.003020
0.003533 0.003316 0.003549
0.004035 0.003859 0.004047
0.004568 0.004470 0.004677
0.005033 0.005011 0.005222
0.005495 0.005549 0.005758
0.005977 0.006114 0.006327
0.006474 0.006700 0.006910
0.006966 0.007288 0.007490
0.007509 0.007926 0.008068
0.008009 0.008515 0.008657
0.008495 0.009085 0.009245
0.008979 0.009645 0.009816
0.009486 0.010216 0.010406
0.010036 0.010772 0.010952
0.010596 0.011342 0.011516
0.011149 0.011911 0.012088
0.011703 0.012487 0.012660
0.012257 0.013073 0.013245
0.012822 0.013663 0.013822
0.013400 0.014274 0.014401
0.013999 0.014917 0.015002
0.014604 0.015559 0.015587
0.015218 0.016176 0.016138
0.015825 0.016780 0.016683
0.016431 0.017374 0.017216
0.017047 0.017970 0.017753
0.017664 0.018567 0.018297
0.018282 0.019157 0.018838
0.018900 0.019746 0.019379
0.019527 0.020343 0.019930
0.020157 0.020938 0.020483
0.020788 0.021533 0.021038
0.021419 0.022125 0.021590
0.022052 0.022718 0.022146
0.022691 0.023316 0.022710
0.023329 0.023910 0.023269
0.023968 0.024504 0.023834
0.024612 0.025101 0.024402
0.025255 0.025695 0.024970
0.025901 0.026292 0.025545
0.026543 0.026885 0.026117
0.027188 0.027481 0.026695
0.027832 0.028079 0.027279
0.028472 0.028674 0.027856
0.029114 0.029274 0.028442
0.029752 0.029871 0.029023
0.030384 0.030463 0.029599
0.031017 0.031061 0.030181
0.031646 0.031654 0.030753
0.032276 0.032252 0.031330
0.032910 0.032854 0.031908
0.033545 0.033457 0.032484
0.034189 0.034069 0.033069
0.034833 0.034679 0.033647
0.035488 0.035298 0.034233
0.036145 0.035919 0.034818
0.036804 0.036537 0.035394
0.037475 0.037167 0.035984
0.038141 0.037790 0.036560
0.038813 0.038420 0.037139
0.039465 0.039031 0.037777
0.040105 0.039631 0.038426
0.040763 0.040248 0.039081
0.041426 0.040871 0.039727
0.042100 0.041504 0.040372
0.042790 0.042156 0.041023
0.043485 0.042812 0.041662
0.044196 0.043486 0.042309
0.044912 0.044166 0.042948
0.045641 0.044860 0.043588
0.046376 0.045559 0.044263
0.047113 0.046259 0.044933
0.047868 0.046976 0.045613
0.048628 0.047694 0.046289
0.049393 0.048415 0.046964
0.050161 0.049138 0.047644
0.050916 0.049845 0.048328
0.051669 0.050550 0.049026
0.052424 0.051255 0.049725
0.053175 0.051955 0.050417
0.053937 0.052666 0.051123
0.054687 0.053366 0.051833
0.055445 0.054076 0.052553
0.056206 0.054792 0.053277
0.056967 0.055510 0.054000
0.057734 0.056239 0.054748
0.058503 0.056976 0.055498
0.059282 0.057733 0.056266
0.060061 0.058508 0.057063
0.060839 0.059293 0.057869
0.061629 0.060101 0.058701
0.062413 0.060918 0.059552
0.063200 0.061754 0.060423
0.063996 0.062610 0.061321
0.064792 0.063473 0.062229
0.065606 0.064352 0.063150
0.066431 0.065234 0.064074
0.067271 0.066121 0.064994
0.068129 0.067016 0.065922
0.068998 0.067915 0.066845
0.069883 0.068821 0.067777
0.070779 0.069733 0.068709
0.071686 0.070653 0.069650
0.072609 0.071588 0.070606
0.073540 0.072530 0.071566
0.074483 0.073485 0.072543
0.075435 0.074450 0.073530
0.076393 0.075424 0.074527
0.077368 0.076417 0.075548
0.078351 0.077422 0.076580
0.079353 0.078447 0.077635
0.080373 0.079493 0.078715
0.081407 0.080559 0.079816
0.082460 0.081652 0.080948
0.083527 0.082769 0.082108
0.084614 0.083912 0.083298
0.085719 0.085080 0.084517
0.086839 0.086269 0.085758
0.087978 0.087485 0.087036
0.089131 0.088720 0.088343
0.090298 0.089978 0.089684
0.091482 0.091261 0.091063
0.092680 0.092566 0.092474
0.093898 0.093900 0.093926
0.095134 0.095263 0.095415
0.096389 0.096656 0.096938
0.097667 0.098086 0.098498
0.098976 0.099565 0.100091
0.100324 0.101106 0.101728
0.101710 0.102701 0.103403
0.103139 0.104361 0.105119
0.104616 0.106098 0.106884
0.106135 0.107900 0.108684
0.107684 0.109737 0.110524
0.109247 0.111572 0.112397
0.110820 0.113391 0.114296
0.112410 0.115212 0.116236
0.114016 0.117033 0.118207
0.115639 0.118858 0.120218
0.117284 0.120698 0.122269
0.118952 0.122558 0.124355
0.120653 0.124453 0.126495
0.122378 0.126376 0.128673
0.124132 0.128331 0.130898
0.125918 0.130324 0.133176
0.127729 0.132347 0.135489
0.129574 0.134414 0.137860
0.131449 0.136520 0.140278
0.133355 0.138667 0.142749
0.135294 0.140863 0.145285
0.137251 0.143096 0.147865
0.139241 0.145393 0.150536
0.141253 0.147758 0.153305
0.143293 0.150189 0.156163
0.145369 0.152703 0.159135
0.147462 0.155288 0.162194
0.149587 0.157974 0.165385
0.151751 0.160747 0.168671
0.153962 0.163560 0.171981
0.156252 0.166418 0.175325
0.158594 0.169294 0.178646
0.161006 0.172220 0.182001
0.163481 0.175194 0.185389
0.166004 0.178193 0.188768
0.168602 0.181266 0.192220
0.171245 0.184381 0.195698
0.173942 0.187551 0.199232
0.176702 0.190787 0.202846
0.179488 0.194044 0.206470
0.182337 0.197362 0.210177
0.185214 0.200700 0.213902
0.188135 0.204083 0.217662
0.191124 0.207544 0.221512
0.194144 0.211036 0.225351
0.197245 0.214622 0.229291
0.200408 0.218275 0.233260
0.203643 0.222006 0.237258
0.206973 0.225845 0.241354
0.210355 0.229732 0.245422
0.213851 0.233747 0.249591
0.217441 0.237864 0.253803
0.221090 0.242039 0.258027
0.224802 0.246291 0.262382
0.228476 0.250498 0.266701
0.232183 0.254754 0.271141
0.235912 0.259046 0.275669
0.239647 0.263344 0.280201
0.243445 0.267718 0.284882
0.247246 0.272085 0.289536
0.251116 0.276526 0.294283
0.255052 0.281038 0.299122
0.258998 0.285543 0.303902
0.263041 0.290156 0.308830
0.267110 0.294780 0.313726
0.271246 0.299465 0.318685
0.275471 0.304243 0.323767
0.279694 0.308991 0.328745
0.284024 0.313857 0.333887
0.288394 0.318744 0.339008
0.292821 0.323676 0.344147
0.297363 0.328728 0.349436
0.301912 0.333744 0.354586
0.306588 0.338891 0.359903
0.311329 0.344087 0.365234
0.316124 0.349312 0.370544
0.321079 0.354704 0.376059
0.326048 0.360060 0.381416
0.331155 0.365554 0.386931
0.336375 0.371143 0.392511
0.341656 0.376755 0.398026
0.347141 0.382581 0.403798
0.352679 0.388407 0.409436
0.358391 0.394400 0.415232
0.364258 0.400532 0.421154
0.370197 0.406686 0.426980
0.376362 0.413067 0.433076
0.382588 0.419449 0.439047
0.388990 0.425995 0.445165
0.395611 0.432750 0.451487
0.402312 0.439505 0.457629
0.409320 0.446580 0.464123
0.416500 0.453786 0.470581
0.423898 0.461185 0.477137
0.431621 0.468908 0.484030
0.439454 0.476651 0.490726
0.447654 0.484751 0.497795
0.456115 0.493049 0.504925
0.464903 0.501590 0.512168
0.474170 0.510583 0.519870
0.483639 0.519668 0.527402
0.493626 0.529221 0.535394
0.504018 0.539085 0.543606
0.514784 0.549215 0.551950
0.526212 0.559929 0.560948
0.537931 0.570829 0.569972
0.550356 0.582319 0.579655
0.563426 0.594380 0.589910
0.576994 0.606861 0.600498
0.591523 0.620177 0.612096
0.606499 0.633875 0.624069
0.622640 0.648682 0.637476
0.639767 0.664444 0.652101
0.657662 0.680767 0.667120
0.677386 0.698592 0.683927
0.699448 0.718500 0.703392
0.723026 0.740104 0.724486
0.752971 0.767604 0.753891
0.782432 0.795133 0.781430
0.815813 0.826088 0.812815
0.872903 0.878322 0.870928
0.937368 0.940553 0.935474
1.000000 1.000000 1.000000
6
1.578706 -0.509131 -0.026729
-0.129182 1.430037 -0.268639
0.026785 -0.554129 1.556603
3
2.078780 -0.513843 -0.059748
-0.170102 1.443271 -0.600499
0.035270 -0.559258 3.479538
1.316762 1.009255 2.235341
4
3.669737 -0.518789 -0.032981
-0.300287 1.457163 -0.331475
0.062263 -0.564641 1.920704
2.324523 1.018969 1.233907
9
3.236377 -0.514826 -0.037586
-0.264826 1.446031 -0.377754
0.054910 -0.560327 2.188862
2.050019 1.011185 1.406179
10
3.484625 -0.518360 -0.034442
-0.285140 1.455959 -0.346159
0.059122 -0.564174 2.005786
2.207267 1.018127 1.288567
11
4.023950 -0.520715 -0.031075
-0.329271 1.462574 -0.312315
0.068272 -0.566737 1.809679
2.548892 1.022753 1.162582
14
2.892238 -0.509131 -0.054189
-0.236666 1.430037 -0.544623
0.049071 -0.554129 3.155769
1.832031 1.000000 2.027344
3706
-2 -0.5 -0.1
0.1 0.2 0.3
0 0 0
0 0 0
0 0 0
0 0 0
3702
0.3 0.1 0.5
0.1 0.2 0.3
16400.000000 0.000000 0.000000 0.000000
0.0 0.0 0.0
0.0334579976985 0.033284457478 0.0334829443447
0.0650447427293 0.0646723646724 0.0650203370134
0.0949129488575 0.0943213296399 0.0947769621683
0.123199152542 0.122371967655 0.122899505766
0.150025799794 0.148950131234 0.149518973811
0.175503018109 0.174168797954 0.174752732952
0.199730127576 0.19812967581 0.198706240487
0.222796934866 0.220924574209 0.221474517566
0.24478484565 0.242636579572 0.243143408981
0.265767824497 0.263341067285 0.263790664781
0.285813226095 0.283106575964 0.283486872409
0.304982517483 0.30199556541 0.302296262945
0.323331907613 0.320065075922 0.320277410832
0.340912897822 0.337367303609 0.337483843171
0.357772764561 0.35395010395 0.353964571911
0.373954983923 0.369857433809 0.369764560099
0.389499605989 0.385129740519 0.384925131526
0.404443585781 0.399804305284 0.399484331614
0.418821076573 0.413915547025 0.413477246208
0.432663690476 0.427495291902 0.426936283861
0.44600073046 0.440573012939 0.439891426432
0.458859397418 0.453176043557 0.45237045204
0.471264975335 0.465329768271 0.464399133887
0.48324099723 0.477057793345 0.476001417937
0.494809394146 0.488382099828 0.487199582027
0.505990629183 0.499323181049 0.498014378637
0.516803818302 0.509900166389 0.508465163245
0.527266839378 0.520130932897 0.51857000993
0.537396430848 0.530032206119 0.528345815695
0.547208281054 0.539619651347 0.537808394745
0.556717109327 0.548907956318 0.54697256386
0.565936739659 0.557910906298 0.555852219808
0.574880167765 0.566641452345 0.564460409661
0.583559622196 0.575111773472 0.572809394761
0.591986620128 0.583333333333 0.580910708988
0.600172018349 0.591316931983 0.588775211926
0.608126059921 0.59907275321 0.596413137424
0.615858416945 0.606610407876 0.603834138029
0.623378229797 0.613938973648 0.611047325679
0.630694143167 0.621067031464 0.618061309031
0.637814339219 0.628002699055 0.624884227731
0.64474656811 0.634753661784 0.631523783929
0.651498176133 0.641327201051 0.637987271281
0.658076131687 0.647730220493 0.644281601675
0.664487049264 0.653969270166 0.650413329889
0.670737211635 0.6600505689 0.656388676358
0.676832590391 0.665980024969 0.662213548225
0.682778864971 0.67176325524 0.667893558816
0.688581440309 0.677405602923 0.673434045689
0.694245463228 0.682912154031 0.678840087357
0.699775837659 0.688287752675 0.68411651882
0.705177238806 0.693537015276 0.689267945984
0.710454126325 0.698664343786 0.694298759073
0.715610756609 0.703673938002 0.699213145105
0.720651194232 0.708569807037 0.70401509952
0.725579322638 0.713355780022 0.708708437005
0.730398854121 0.718035516093 0.71329680161
0.735113339146 0.722612513721 0.717783676178
0.739726175075 0.727090119435 0.722172391162
0.744240614334 0.731471535983 0.726466132872
0.748659772056 0.735759829968 0.730667951188
0.75298663325 0.739957939012 0.734780766787
0.757224059529 0.74406867846 0.738807377908
0.761374795417 0.748094747683 0.742750466708
0.765441474281 0.752038735984 0.746612605215
0.769426623897 0.755903128153 0.750396260923
0.773332671695 0.75969030969 0.754103802052
0.777161949686 0.763402571711 0.75773750249
0.780916699105 0.767042115573 0.761299546441
0.784599074788 0.770611057226 0.764792032806
0.788211149294 0.774111431316 0.768216979308
0.791754916793 0.777545195052 0.771576326374
0.79523229674 0.780914231857 0.774871940808
0.798645137342 0.784220354809 0.778105619245
0.80199521883 0.787465309898 0.781279091417
0.80528425656 0.790650779102 0.784394023243
0.808513903936 0.793778383288 0.78745201974
0.81168575519 0.796849684968 0.790454627785
0.814801347996 0.799866190901 0.793403338718
0.817862165963 0.802829354553 0.79629959082
0.82086964099 0.80574057844 0.799144771645
0.823825155494 0.808601216334 0.801940220241
0.826730044536 0.811412575366 0.80468722925
0.829585597826 0.814175918019 0.807387046899
0.832393061637 0.816892464014 0.810040878896
0.835153640615 0.819563392107 0.812649890221
0.837868499503 0.822189841799 0.815215206833
0.840538764783 0.824772914946 0.817737917289
0.84316552623 0.827313677314 0.820219074288
0.845749838397 0.829813160032 0.822659696128
0.848292722026 0.832272360999 0.825060768109
0.850795165394 0.834692246203 0.827423243851
0.853258125592 0.837073750991 0.829748046564
0.855682529743 0.839417781275 0.832036070242
0.858069276173 0.841725214676 0.834288180819
0.860419235512 0.843996901627 0.836505217256
0.862733251759 0.84623366641 0.838687992582
0.865012143291 0.848436308162 0.840837294893
0.867256703826 0.850605601817 0.842953888297
0.869467703349 0.852742299023 0.84503851382
0.871645888988 0.854847129008 0.847091890271
0.873791985857 0.856920799408 0.849114715072
0.875906697865 0.858963997061 0.851107665042
0.877990708479 0.860977388767 0.853071397156
0.880044681464 0.862961622013 0.855006549265
0.882069261591 0.864917325665 0.856913740789
0.884065075305 0.866845110635 0.858793573375
0.886032731377 0.868745570517 0.860646631534
0.887972821519 0.870619282196 0.862473483241
0.889885920979 0.872466806429 0.864274680522
0.891772589113 0.874288688411 0.866050760006
0.893633369923 0.876085458305 0.867802243457
0.895468792587 0.877857631759 0.869529638289
0.897279371955 0.879605710401 0.871233438055
0.899065609035 0.881330182309 0.872914122914
0.900827991453 0.883031522468 0.874572160086
0.902566993898 0.884710193205 0.876208004283
0.904283078545 0.886366644606 0.877822098125
0.90597669547 0.888001314924 0.87941487254
0.907648283039 0.88961463096 0.880986747146
0.909298268286 0.891207008436 0.882538130622
0.910927067283 0.892778852353 0.884069421059
0.912535085481 0.894330557335 0.885581006305
0.914122718053 0.895862507957 0.887073264288
0.915690350214 0.897375079064 0.888546563334
0.917238357536 0.898868636078 0.890001262467
0.918767106245 0.90034353529 0.891437711705
0.920276953511 0.901800124146 0.892856252338
0.921768247727 0.903238741518 0.894257217197
0.923241328774 0.904659717964 0.89564093092
0.924696528284 0.90606337599 0.897007710195
0.926134169884 0.907450030285 0.898357864007
0.927554569441 0.908819987959 0.89969169387
0.928958035289 0.910173548773 0.901009494051
0.930344868452 0.911511005354 0.902311551786
0.931715362865 0.912832643406 0.903598147488
0.933069805575 0.914138741917 0.904869554952
0.934408476945 0.915429573349 0.906126041544
0.935731650845 0.916705403835 0.907367868393
0.937039594843 0.917966493356 0.90859529057
0.938332570382 0.919213095922 0.90980855726
0.939610832954 0.920445459737 0.911007911937
0.94087463227 0.921663827371 0.912193592521
0.942124212421 0.922868435912 0.913365831538
0.943359812038 0.924059517125 0.914524856273
0.944581664441 0.925237297599 0.915670888914
0.945789997787 0.92640199889 0.916804146695
0.946985035211 0.927553837659 0.917924842035
0.948166994966 0.92869302581 0.91903318267
0.949336090553 0.929819770617 0.920129371779
0.950492530851 0.930934274851 0.921213608113
0.951636520241 0.932036736899 0.922286086108
0.952768258728 0.933127350887 0.923346996009
0.953887942054 0.934206306788 0.924396523978
0.954995761814 0.935273790537 0.925434852204
0.956091905565 0.936329984135 0.926462159006
0.95717655693 0.937375065755 0.927478618942
0.958249895703 0.938409209838 0.928484402899
0.959312097946 0.939432587194 0.929479678195
0.960363336086 0.940445365096 0.930464608669
0.96140377901 0.941447707367 0.931439354772
0.962433592154 0.942439774475 0.932404073655
0.963452937589 0.94342172361 0.933358919251
0.96446197411 0.944393708777 0.934304042358
0.965460857315 0.945355880868 0.93523959072
0.966449739688 0.946308387745 0.936165709102
0.967428770671 0.947251374313 0.937082539364
0.968398096749 0.948184982596 0.937990220537
0.969357861511 0.949109351806 0.938888888889
0.970308205732 0.950024618415 0.939778677996
0.971249267435 0.950930916218 0.940659718808
0.97218118196 0.951828376402 0.941532139712
0.973104082027 0.952717127608 0.942396066595
0.974018097805 0.953597295992 0.943251622905
0.974923356965 0.954469005286 0.944098929708
0.975819984744 0.955332376853 0.944938105748
0.976708104005 0.956187529748 0.945769267501
0.977587835285 0.957034580767 0.946592529227
0.97845929686 0.957873644507 0.947408003027
0.97932260479 0.958704833412 0.948215798889
0.980177872974 0.959528257823 0.94901602474
0.9810252132 0.960344026034 0.949808786494
0.981864735191 0.961152244331 0.950594188098
0.982696546657 0.961953017043 0.951372331577
0.983520753337 0.962746446584 0.952143317082
0.984337459046 0.963532633501 0.952907242926
0.985146765718 0.964311676511 0.953664205633
0.985948773449 0.965083672546 0.954414299973
0.986743580535 0.965848716794 0.955157619005
0.987531283518 0.966606902734 0.955894254114
0.98831197722 0.967358322178 0.95662429505
0.989085754784 0.968103065304 0.957347829962
0.989852707709 0.968841220699 0.958064945435
0.990612925887 0.969572875385 0.958775726526
0.991366497639 0.970298114862 0.959480256794
0.992113509749 0.971017023134 0.960178618335
0.992854047495 0.971729682747 0.960870891814
0.993588194684 0.972436174816 0.961557156497
0.994316033683 0.973136579061 0.962237490277
0.995037645448 0.973830973831 0.96291196971
0.995753109559 0.974519436138 0.963580670037
0.996462504242 0.975202041684 0.964243665216
0.997165906403 0.975878864888 0.96490102795
0.997863391655 0.976549978912 0.96555282971
0.998555034344 0.977215455691 0.966199140763
0.999240907574 0.977875365956 0.966840030199
0.999921083236 0.978529779259 0.967475565951
1 0.979178763998 0.968105814824
1 0.979822387443 0.968730842515
1 0.980460715755 0.969350713637
1 0.981093814011 0.969965491743
1 0.981721746226 0.970575239342
1 0.982344575376 0.971180017928
1 0.982962363416 0.971779887996
1 0.983575171302 0.972374909062
1 0.984183059012 0.972965139683
1 0.984786085566 0.973550637479
1 0.98538430904 0.974131459149
1 0.985977786593 0.974707660488
1 0.986566574476 0.975279296411
1 0.98715072806 0.975846420961
1 0.987730301842 0.976409087336
1 0.988305349473 0.976967347898
1 0.988875923765 0.977521254192
1 0.989442076714 0.978070856965
1 0.990003859514 0.978616206176
1 0.990561322568 0.979157351014
1 0.991114515511 0.979694339912
1 0.991663487219 0.980227220565
1 0.992208285823 0.980756039936
1 0.992748958728 0.981280844279
1 0.993285552622 0.981801679147
1 0.993818113491 0.982318589405
1 0.994346686634 0.982831619248
1 0.994871316673 0.983340812206
1 0.995392047566 0.983846211162
1 0.995908922621 0.984347858362
1 0.996421984508 0.984845795429
1 0.996931275266 0.98534006337
1 0.997436836324 0.985830702592
1 0.997938708501 0.986317752908
1 0.998436932025 0.986801253553
1 0.998931546541 0.987281243192
1 0.999422591122 0.987757759931
1 0.999910104279 0.988230841324
1 1 0.988700524388
1 1 0.989166845609
1 1 0.989629840953
1 1 0.990089545874
1 1 0.990545995326
1 1 0.990999223767
1 1 0.991449265171
1 1 0.991896153038
1 1 0.992339920397
1 1 0.992780599819
6
1.578706 -0.509131 -0.026729
-0.129182 1.430037 -0.268639
0.026785 -0.554129 1.556603
3
2.078780 -0.513843 -0.059748
-0.170102 1.443271 -0.600499
0.035270 -0.559258 3.479538
1.316762 1.009255 2.235341
4
3.669737 -0.518789 -0.032981
-0.300287 1.457163 -0.331475
0.062263 -0.564641 1.920704
2.324523 1.018969 1.233907
9
3.236377 -0.514826 -0.037586
-0.264826 1.446031 -0.377754
0.054910 -0.560327 2.188862
2.050019 1.011185 1.406179
10
3.484625 -0.518360 -0.034442
-0.285140 1.455959 -0.346159
0.059122 -0.564174 2.005786
2.207267 1.018127 1.288567
11
4.023950 -0.520715 -0.031075
-0.329271 1.462574 -0.312315
0.068272 -0.566737 1.809679
2.548892 1.022753 1.162582
14
2.892238 -0.509131 -0.054189
-0.236666 1.430037 -0.544623
0.049071 -0.554129 3.155769
1.832031 1.000000 2.027344
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment