├── .gitignore ├── include ├── Eigen └── .gitignore ├── src ├── algo │ ├── algo_common.hpp │ ├── cpu_algos.hpp │ ├── gpu_algos.hpp │ ├── cpu_algos.cpp │ └── gpu_algos.cpp ├── util │ ├── bit_tools.hpp │ ├── my_hash.hpp │ ├── primitive_structures.hpp │ ├── print_printable.hpp │ ├── lambda_compose.hpp │ ├── logging.cpp │ ├── id.hpp │ ├── utils.hpp │ └── logging.hpp ├── impl │ ├── impl_common.hpp │ ├── gpu_impl.hpp │ ├── cpu_impl.hpp │ ├── cpu_impl.cpp │ ├── gpu_impl.cu │ └── reduction_kernel.cu ├── cpu_only_main.cpp ├── gpu_cpu_main.cpp ├── run │ ├── common_ui.hpp │ └── common_ui.cpp ├── datastructures │ ├── tableau.hpp │ ├── problem.cpp │ └── problem.hpp └── Makefile ├── Makefile ├── LICENSE ├── README.md ├── enter-environment └── notes.txt /.gitignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | -------------------------------------------------------------------------------- /include/Eigen: -------------------------------------------------------------------------------- 1 | eigen-eigen-5a0156e40feb/Eigen -------------------------------------------------------------------------------- /include/.gitignore: -------------------------------------------------------------------------------- 1 | eigen-eigen-5a0156e40feb 2 | -------------------------------------------------------------------------------- /src/algo/algo_common.hpp: -------------------------------------------------------------------------------- 1 | #ifndef ALGO__ALGO_COMMON_H 2 | #define ALGO__ALGO_COMMON_H 3 | 4 | enum class TableauErrors { 5 | PROBLEM_UNBOUNDED, 6 | }; 7 | 8 | #endif /* ALGO__ALGO_COMMON_H */ 9 | -------------------------------------------------------------------------------- /src/util/bit_tools.hpp: -------------------------------------------------------------------------------- 1 | #ifndef UTIL__BIT_TOOLS_H 2 | #define UTIL__BIT_TOOLS_H 3 | 4 | #include 5 | 6 | namespace util { 7 | 8 | template 9 | DEST no_sign_ext_cast(const SRC src) { 10 | return static_cast(static_cast>(src)); 11 | } 12 | 13 | } 14 | 15 | #endif // UTIL__BIT_TOOLS_H 16 | -------------------------------------------------------------------------------- /src/algo/cpu_algos.hpp: -------------------------------------------------------------------------------- 1 | #ifndef ALGO__CPU_ARGOS 2 | #define ALGO__CPU_ARGOS 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | namespace simplex{ 10 | 11 | boost::variant< 12 | Assignments, 13 | TableauErrors 14 | > cpu_only_algo_from_paper(const Problem& problem); 15 | 16 | } // end namespace simplex 17 | 18 | #endif /* ALGO__CPU_ARGOS */ 19 | -------------------------------------------------------------------------------- /src/algo/gpu_algos.hpp: -------------------------------------------------------------------------------- 1 | #ifndef ALGO__CPU_ARGOS 2 | #define ALGO__CPU_ARGOS 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | namespace simplex{ 10 | 11 | boost::variant< 12 | Assignments, 13 | TableauErrors 14 | > gpu_cpu_algo_from_paper(const Problem& problem); 15 | 16 | } // end namespace simplex 17 | 18 | #endif /* ALGO__CPU_ARGOS */ 19 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | 2 | SUBDIRS = src 3 | 4 | # this recipe is for making the default target of the sub-makefiles 5 | # the following should be a sufficiently "random" string to never cause any problems 6 | default_target_maker_crdaeukntmouerdqjbhtrlchtbhrhckmcrhkbbhetkqn: 7 | @for dir in $(SUBDIRS); do \ 8 | $(MAKE) -C $${dir} --no-print-directory; \ 9 | done 10 | 11 | % : 12 | @for dir in $(SUBDIRS); do \ 13 | $(MAKE) $@ -C $${dir} --no-print-directory; \ 14 | done 15 | -------------------------------------------------------------------------------- /src/util/my_hash.hpp: -------------------------------------------------------------------------------- 1 | #ifndef UTIL__MY_HASH_H 2 | #define UTIL__MY_HASH_H 3 | 4 | #if __cplusplus >= 201103L 5 | 6 | namespace std { 7 | template 8 | struct hash; 9 | } 10 | 11 | namespace util { 12 | 13 | template 14 | struct MyHash { 15 | using type = std::hash; 16 | }; 17 | 18 | template 19 | using MyHash_t = typename MyHash::type; 20 | 21 | template