falcata 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- falcata-1.0.0/CMakeLists.txt +1056 -0
- falcata-1.0.0/LICENSE +23 -0
- falcata-1.0.0/NOTICE +41 -0
- falcata-1.0.0/PKG-INFO +184 -0
- falcata-1.0.0/README.rst +131 -0
- falcata-1.0.0/cmake/IntegratedOpenCL.cmake +217 -0
- falcata-1.0.0/cmake/Sanitizer.cmake +51 -0
- falcata-1.0.0/cmake/modules/FindLibR.cmake +267 -0
- falcata-1.0.0/cmake/modules/FindNCCL.cmake +84 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/accumulate.hpp +193 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/adjacent_difference.hpp +126 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/adjacent_find.hpp +169 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/all_of.hpp +42 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/any_of.hpp +46 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/binary_search.hpp +43 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/copy.hpp +881 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/copy_if.hpp +67 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/copy_n.hpp +55 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/count.hpp +62 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/count_if.hpp +69 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/balanced_path.hpp +162 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/binary_find.hpp +133 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/compact.hpp +77 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/copy_on_device.hpp +199 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/copy_to_device.hpp +204 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/copy_to_host.hpp +207 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/count_if_with_ballot.hpp +78 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/count_if_with_reduce.hpp +87 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/count_if_with_threads.hpp +129 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/find_extrema.hpp +70 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/find_extrema_on_cpu.hpp +138 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/find_extrema_with_atomics.hpp +108 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/find_extrema_with_reduce.hpp +444 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/find_if_with_atomics.hpp +213 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/inplace_reduce.hpp +136 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/insertion_sort.hpp +165 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/merge_path.hpp +116 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/merge_sort_on_cpu.hpp +366 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/merge_sort_on_gpu.hpp +602 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/merge_with_merge_path.hpp +203 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/radix_sort.hpp +469 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/random_fill.hpp +57 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/reduce_by_key.hpp +119 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/reduce_by_key_with_scan.hpp +541 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/reduce_on_cpu.hpp +110 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/reduce_on_gpu.hpp +286 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/scan.hpp +45 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/scan_on_cpu.hpp +205 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/scan_on_gpu.hpp +330 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/search_all.hpp +86 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/serial_accumulate.hpp +56 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/serial_count_if.hpp +68 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/serial_find_extrema.hpp +87 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/serial_merge.hpp +97 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/serial_reduce.hpp +63 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/serial_reduce_by_key.hpp +106 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/serial_scan.hpp +103 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/equal.hpp +62 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/equal_range.hpp +48 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/exclusive_scan.hpp +109 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/fill.hpp +313 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/fill_n.hpp +42 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/find.hpp +63 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/find_end.hpp +144 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/find_if.hpp +41 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/find_if_not.hpp +49 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/for_each.hpp +72 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/for_each_n.hpp +41 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/gather.hpp +91 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/generate.hpp +55 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/generate_n.hpp +37 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/includes.hpp +162 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/inclusive_scan.hpp +92 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/inner_product.hpp +103 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/inplace_merge.hpp +66 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/iota.hpp +54 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/is_partitioned.hpp +49 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/is_permutation.hpp +73 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/is_sorted.hpp +71 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/lexicographical_compare.hpp +126 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/lower_bound.hpp +50 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/max_element.hpp +82 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/merge.hpp +116 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/min_element.hpp +82 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/minmax_element.hpp +78 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/mismatch.hpp +98 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/next_permutation.hpp +175 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/none_of.hpp +42 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/nth_element.hpp +94 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/partial_sum.hpp +46 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/partition.hpp +45 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/partition_copy.hpp +72 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/partition_point.hpp +52 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/prev_permutation.hpp +175 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/random_shuffle.hpp +90 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/reduce.hpp +310 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/reduce_by_key.hpp +137 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/remove.hpp +60 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/remove_if.hpp +53 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/replace.hpp +96 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/replace_copy.hpp +70 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/reverse.hpp +80 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/reverse_copy.hpp +87 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/rotate.hpp +56 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/rotate_copy.hpp +43 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/scatter.hpp +107 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/scatter_if.hpp +131 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/search.hpp +80 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/search_n.hpp +146 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/set_difference.hpp +191 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/set_intersection.hpp +179 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/set_symmetric_difference.hpp +204 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/set_union.hpp +204 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/sort.hpp +207 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/sort_by_key.hpp +168 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/stable_partition.hpp +78 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/stable_sort.hpp +115 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/stable_sort_by_key.hpp +168 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/swap_ranges.hpp +52 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/transform.hpp +87 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/transform_if.hpp +123 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/transform_reduce.hpp +100 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/unique.hpp +73 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/unique_copy.hpp +175 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/upper_bound.hpp +49 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm.hpp +94 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/allocator/buffer_allocator.hpp +118 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/allocator/pinned_allocator.hpp +53 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/allocator.hpp +21 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/async/future.hpp +196 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/async/wait.hpp +56 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/async/wait_guard.hpp +63 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/async.hpp +21 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/buffer.hpp +227 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/cl.hpp +52 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/cl_ext.hpp +22 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/closure.hpp +347 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/command_queue.hpp +2008 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/config.hpp +66 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/container/array.hpp +317 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/container/basic_string.hpp +331 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/container/detail/scalar.hpp +62 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/container/dynamic_bitset.hpp +237 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/container/flat_map.hpp +406 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/container/flat_set.hpp +339 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/container/mapped_view.hpp +250 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/container/stack.hpp +81 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/container/string.hpp +25 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/container/valarray.hpp +500 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/container/vector.hpp +823 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/container.hpp +27 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/context.hpp +245 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/core.hpp +33 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/assert_cl_success.hpp +24 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/buffer_value.hpp +180 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/cl_versions.hpp +64 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/device_ptr.hpp +215 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/diagnostic.hpp +112 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/duration.hpp +54 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/get_object_info.hpp +284 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/getenv.hpp +36 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/global_static.hpp +37 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/is_buffer_iterator.hpp +30 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/is_contiguous_iterator.hpp +118 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/iterator_plus_distance.hpp +53 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/iterator_range_size.hpp +44 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/iterator_traits.hpp +35 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/literal.hpp +53 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/lru_cache.hpp +139 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/meta_kernel.hpp +1145 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/mpl_vector_to_tuple.hpp +65 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/nvidia_compute_capability.hpp +61 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/parameter_cache.hpp +223 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/path.hpp +73 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/print_range.hpp +82 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/read_write_single_value.hpp +78 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/sha1.hpp +58 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/variadic_macros.hpp +35 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/vendor.hpp +50 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/detail/work_size.hpp +37 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/device.hpp +673 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/event.hpp +338 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/exception/context_error.hpp +88 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/exception/no_device_found.hpp +48 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/exception/opencl_error.hpp +158 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/exception/program_build_failure.hpp +58 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/exception/unsupported_extension_error.hpp +71 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/exception.hpp +23 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/experimental/clamp_range.hpp +49 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/experimental/malloc.hpp +51 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/experimental/sort_by_transform.hpp +66 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/experimental/tabulate.hpp +44 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/function.hpp +467 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/as.hpp +51 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/atomic.hpp +141 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/bind.hpp +261 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/common.hpp +29 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/convert.hpp +51 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/detail/macros.hpp +35 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/detail/nvidia_ballot.hpp +48 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/detail/nvidia_popcount.hpp +42 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/detail/unpack.hpp +143 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/field.hpp +86 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/geometry.hpp +32 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/get.hpp +76 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/hash.hpp +91 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/identity.hpp +64 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/integer.hpp +30 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/logical.hpp +208 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/math.hpp +80 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/operator.hpp +100 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/popcount.hpp +55 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional/relational.hpp +39 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/functional.hpp +34 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/image/image1d.hpp +204 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/image/image2d.hpp +262 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/image/image3d.hpp +265 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/image/image_format.hpp +135 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/image/image_object.hpp +170 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/image/image_sampler.hpp +221 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/image.hpp +25 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/image2d.hpp +12 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/image3d.hpp +12 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/image_format.hpp +12 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/image_sampler.hpp +12 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/eigen/core.hpp +72 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/eigen.hpp +16 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opencv/core.hpp +141 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opencv/highgui.hpp +33 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opencv/ocl.hpp +51 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opencv.hpp +17 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/acquire.hpp +100 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/cl_gl.hpp +22 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/cl_gl_ext.hpp +22 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/context.hpp +139 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/gl.hpp +20 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/opengl_buffer.hpp +106 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/opengl_renderbuffer.hpp +129 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/opengl_texture.hpp +133 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl.hpp +24 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/qt/qimage.hpp +69 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/qt/qpoint.hpp +20 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/qt/qpointf.hpp +20 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/qt/qtcore.hpp +18 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/qt/qtgui.hpp +16 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/qt/qvector.hpp +48 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/qt.hpp +17 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/vtk/bounds.hpp +59 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/vtk/data_array.hpp +65 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/vtk/matrix4x4.hpp +46 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/vtk/points.hpp +55 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/interop/vtk.hpp +19 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/buffer_iterator.hpp +295 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/constant_buffer_iterator.hpp +209 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/constant_iterator.hpp +171 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/counting_iterator.hpp +185 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/detail/get_base_iterator_buffer.hpp +52 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/detail/swizzle_iterator.hpp +188 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/discard_iterator.hpp +170 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/function_input_iterator.hpp +186 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/permutation_iterator.hpp +192 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/strided_iterator.hpp +298 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/transform_iterator.hpp +227 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/zip_iterator.hpp +316 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/iterator.hpp +28 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/kernel.hpp +538 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/context.hpp +364 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/functional.hpp +597 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/get.hpp +148 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/make_pair.hpp +70 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/make_tuple.hpp +127 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/placeholder.hpp +28 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/placeholders.hpp +93 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/result_of.hpp +113 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/lambda.hpp +22 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/memory/local_buffer.hpp +91 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/memory/svm_ptr.hpp +184 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/memory.hpp +21 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/memory_object.hpp +264 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/pipe.hpp +154 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/platform.hpp +258 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/program.hpp +799 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/random/bernoulli_distribution.hpp +100 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/random/default_random_engine.hpp +24 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/random/discrete_distribution.hpp +160 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/random/linear_congruential_engine.hpp +238 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/random/mersenne_twister_engine.hpp +254 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/random/normal_distribution.hpp +140 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/random/threefry_engine.hpp +318 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/random/uniform_int_distribution.hpp +119 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/random/uniform_real_distribution.hpp +116 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/random.hpp +28 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/source.hpp +12 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/svm.hpp +72 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/system.hpp +288 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/common_type.hpp +55 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/detail/capture_traits.hpp +33 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/is_device_iterator.hpp +39 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/is_fundamental.hpp +58 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/is_vector_type.hpp +38 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/make_vector_type.hpp +71 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/result_of.hpp +39 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/scalar_type.hpp +72 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/type_definition.hpp +42 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/type_name.hpp +124 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/vector_size.hpp +65 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits.hpp +25 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/types/builtin.hpp +12 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/types/complex.hpp +196 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/types/fundamental.hpp +217 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/types/pair.hpp +117 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/types/size_t.hpp +60 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/types/struct.hpp +173 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/types/tuple.hpp +220 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/types.hpp +25 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/user_event.hpp +88 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/utility/dim.hpp +76 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/utility/extents.hpp +164 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/utility/invoke.hpp +71 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/utility/program_cache.hpp +172 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/utility/source.hpp +39 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/utility/wait_list.hpp +217 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/utility.hpp +21 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/version.hpp +18 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute/wait_list.hpp +12 -0
- falcata-1.0.0/external_libs/compute/include/boost/compute.hpp +44 -0
- falcata-1.0.0/external_libs/eigen/CMakeLists.txt +653 -0
- falcata-1.0.0/external_libs/eigen/Eigen/Cholesky +45 -0
- falcata-1.0.0/external_libs/eigen/Eigen/Core +384 -0
- falcata-1.0.0/external_libs/eigen/Eigen/Dense +7 -0
- falcata-1.0.0/external_libs/eigen/Eigen/Eigenvalues +60 -0
- falcata-1.0.0/external_libs/eigen/Eigen/Geometry +59 -0
- falcata-1.0.0/external_libs/eigen/Eigen/Householder +29 -0
- falcata-1.0.0/external_libs/eigen/Eigen/Jacobi +32 -0
- falcata-1.0.0/external_libs/eigen/Eigen/LU +47 -0
- falcata-1.0.0/external_libs/eigen/Eigen/QR +50 -0
- falcata-1.0.0/external_libs/eigen/Eigen/SVD +50 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Cholesky/LDLT.h +688 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Cholesky/LLT.h +558 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/ArithmeticSequence.h +413 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Array.h +417 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/ArrayBase.h +226 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/ArrayWrapper.h +209 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Assign.h +90 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/AssignEvaluator.h +1010 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Assign_MKL.h +178 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/BandMatrix.h +353 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Block.h +448 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/BooleanRedux.h +162 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CommaInitializer.h +164 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/ConditionEstimator.h +175 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CoreEvaluators.h +1741 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CoreIterators.h +132 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CwiseBinaryOp.h +183 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CwiseTernaryOp.h +197 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CwiseUnaryOp.h +103 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/DenseBase.h +701 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/DenseCoeffsBase.h +685 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/DenseStorage.h +652 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Diagonal.h +258 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/DiagonalMatrix.h +391 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/DiagonalProduct.h +28 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Dot.h +318 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/EigenBase.h +160 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/ForceAlignedAccess.h +150 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Fuzzy.h +155 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/GeneralProduct.h +465 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/GenericPacketMath.h +1040 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/GlobalFunctions.h +194 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/IO.h +258 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/IndexedView.h +237 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Inverse.h +117 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Map.h +171 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/MapBase.h +310 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/MathFunctions.h +2057 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/MathFunctionsImpl.h +200 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Matrix.h +565 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/MatrixBase.h +547 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/NestByValue.h +85 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/NoAlias.h +109 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/NumTraits.h +335 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/PermutationMatrix.h +605 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/PlainObjectBase.h +1128 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Product.h +191 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/ProductEvaluators.h +1179 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Random.h +218 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Redux.h +515 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Ref.h +381 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Replicate.h +142 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Reshaped.h +454 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/ReturnByValue.h +119 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Reverse.h +217 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Select.h +164 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/SelfAdjointView.h +365 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Solve.h +188 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/SolveTriangular.h +235 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/SolverBase.h +168 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/StableNorm.h +251 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/StlIterators.h +463 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Stride.h +116 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Swap.h +68 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Transpose.h +464 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Transpositions.h +386 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/TriangularMatrix.h +1001 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/VectorBlock.h +96 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/VectorwiseOp.h +784 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Visitor.h +381 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX/Complex.h +372 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/Default/Half.h +942 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/Default/Settings.h +49 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/MSA/Complex.h +648 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/NEON/Complex.h +584 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SSE/Complex.h +351 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/functors/StlFunctors.h +166 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/Parallelizer.h +180 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/BlasUtil.h +583 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/Constants.h +563 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/IntegralConstant.h +272 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/MKL_support.h +137 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/Macros.h +1464 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/Memory.h +1163 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/Meta.h +812 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/NonMPL2.h +3 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/StaticAssert.h +221 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/SymbolicIndex.h +293 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/XprHelper.h +856 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/RealQZ.h +657 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/RealSchur.h +558 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/AlignedBox.h +486 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/AngleAxis.h +247 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/EulerAngles.h +114 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Homogeneous.h +501 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Hyperplane.h +282 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/OrthoMethods.h +235 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/ParametrizedLine.h +232 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Quaternion.h +870 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Rotation2D.h +199 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/RotationBase.h +206 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Scaling.h +188 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Transform.h +1563 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Translation.h +202 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Umeyama.h +166 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Householder/BlockHouseholder.h +110 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Householder/Householder.h +176 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Householder/HouseholderSequence.h +545 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/Jacobi/Jacobi.h +483 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/LU/Determinant.h +117 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/LU/FullPivLU.h +877 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/LU/InverseImpl.h +432 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/LU/PartialPivLU.h +624 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/LU/arch/InverseSize4.h +351 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/QR/HouseholderQR.h +434 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/SVD/BDCSVD.h +1366 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/SVD/JacobiSVD.h +812 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/SVD/SVDBase.h +376 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/misc/Image.h +82 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/misc/Kernel.h +79 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/misc/RealSvd2x2.h +55 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/misc/blas.h +440 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/misc/lapack.h +152 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/misc/lapacke.h +16292 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/misc/lapacke_mangling.h +17 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/BlockMethods.h +1442 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/IndexedViewMethods.h +262 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
- falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/ReshapedMethods.h +149 -0
- falcata-1.0.0/external_libs/fast_double_parser/CMakeLists.txt +101 -0
- falcata-1.0.0/external_libs/fast_double_parser/LICENSE +201 -0
- falcata-1.0.0/external_libs/fast_double_parser/LICENSE.BSL +25 -0
- falcata-1.0.0/external_libs/fast_double_parser/include/fast_double_parser.h +1270 -0
- falcata-1.0.0/external_libs/fmt/CMakeLists.txt +101 -0
- falcata-1.0.0/external_libs/fmt/LICENSE +27 -0
- falcata-1.0.0/external_libs/fmt/include/fmt/args.h +220 -0
- falcata-1.0.0/external_libs/fmt/include/fmt/base.h +2958 -0
- falcata-1.0.0/external_libs/fmt/include/fmt/chrono.h +2338 -0
- falcata-1.0.0/external_libs/fmt/include/fmt/color.h +610 -0
- falcata-1.0.0/external_libs/fmt/include/fmt/compile.h +551 -0
- falcata-1.0.0/external_libs/fmt/include/fmt/core.h +5 -0
- falcata-1.0.0/external_libs/fmt/include/fmt/format-inl.h +1949 -0
- falcata-1.0.0/external_libs/fmt/include/fmt/format.h +4232 -0
- falcata-1.0.0/external_libs/fmt/include/fmt/os.h +427 -0
- falcata-1.0.0/external_libs/fmt/include/fmt/ostream.h +166 -0
- falcata-1.0.0/external_libs/fmt/include/fmt/printf.h +633 -0
- falcata-1.0.0/external_libs/fmt/include/fmt/ranges.h +848 -0
- falcata-1.0.0/external_libs/fmt/include/fmt/std.h +726 -0
- falcata-1.0.0/external_libs/fmt/include/fmt/xchar.h +373 -0
- falcata-1.0.0/external_libs/nanoarrow/CMakeLists.txt +862 -0
- falcata-1.0.0/external_libs/nanoarrow/LICENSE.txt +208 -0
- falcata-1.0.0/external_libs/nanoarrow/NOTICE.txt +5 -0
- falcata-1.0.0/external_libs/nanoarrow/cmake/config.cmake.in +38 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/common/array.c +1672 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/common/array_stream.c +155 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/common/inline_array.h +1382 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/common/inline_buffer.h +730 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/common/inline_types.h +1046 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/common/schema.c +1729 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/common/utils.c +561 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/hpp/array_stream.hpp +204 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/hpp/buffer.hpp +85 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/hpp/exception.hpp +79 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/hpp/operators.hpp +62 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/hpp/unique.hpp +226 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/hpp/view.hpp +428 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/nanoarrow.h +1285 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/nanoarrow.hpp +30 -0
- falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/nanoarrow_config.h.in +39 -0
- falcata-1.0.0/falcata/VERSION.txt +1 -0
- falcata-1.0.0/falcata/__init__.py +82 -0
- falcata-1.0.0/falcata/__main__.py +78 -0
- falcata-1.0.0/falcata/basic.py +5780 -0
- falcata-1.0.0/falcata/callback.py +511 -0
- falcata-1.0.0/falcata/compat.py +223 -0
- falcata-1.0.0/falcata/dask.py +1749 -0
- falcata-1.0.0/falcata/engine.py +872 -0
- falcata-1.0.0/falcata/importers.py +575 -0
- falcata-1.0.0/falcata/libpath.py +95 -0
- falcata-1.0.0/falcata/plotting.py +849 -0
- falcata-1.0.0/falcata/py.typed +0 -0
- falcata-1.0.0/falcata/sklearn.py +1968 -0
- falcata-1.0.0/include/Falcata/application.h +93 -0
- falcata-1.0.0/include/Falcata/arrow.h +90 -0
- falcata-1.0.0/include/Falcata/bin.h +686 -0
- falcata-1.0.0/include/Falcata/boosting.h +355 -0
- falcata-1.0.0/include/Falcata/c_api.h +1809 -0
- falcata-1.0.0/include/Falcata/c_api_compat.h +122 -0
- falcata-1.0.0/include/Falcata/config.h +1398 -0
- falcata-1.0.0/include/Falcata/cuda/cuda_algorithms.hpp +668 -0
- falcata-1.0.0/include/Falcata/cuda/cuda_bagging.hpp +46 -0
- falcata-1.0.0/include/Falcata/cuda/cuda_column_data.hpp +221 -0
- falcata-1.0.0/include/Falcata/cuda/cuda_metadata.hpp +59 -0
- falcata-1.0.0/include/Falcata/cuda/cuda_metric.hpp +50 -0
- falcata-1.0.0/include/Falcata/cuda/cuda_nccl_topology.hpp +253 -0
- falcata-1.0.0/include/Falcata/cuda/cuda_objective_function.hpp +103 -0
- falcata-1.0.0/include/Falcata/cuda/cuda_random.hpp +77 -0
- falcata-1.0.0/include/Falcata/cuda/cuda_rocm_interop.h +71 -0
- falcata-1.0.0/include/Falcata/cuda/cuda_row_data.hpp +247 -0
- falcata-1.0.0/include/Falcata/cuda/cuda_split_info.hpp +130 -0
- falcata-1.0.0/include/Falcata/cuda/cuda_tree.hpp +306 -0
- falcata-1.0.0/include/Falcata/cuda/cuda_utils.hu +407 -0
- falcata-1.0.0/include/Falcata/cuda/pack_codecs.hpp +392 -0
- falcata-1.0.0/include/Falcata/cuda/vector_cudahost.h +99 -0
- falcata-1.0.0/include/Falcata/dataset.h +1155 -0
- falcata-1.0.0/include/Falcata/dataset_loader.h +111 -0
- falcata-1.0.0/include/Falcata/export.h +26 -0
- falcata-1.0.0/include/Falcata/falcata_plan.h +318 -0
- falcata-1.0.0/include/Falcata/feature_group.h +659 -0
- falcata-1.0.0/include/Falcata/meta.h +97 -0
- falcata-1.0.0/include/Falcata/metric.h +146 -0
- falcata-1.0.0/include/Falcata/network.h +318 -0
- falcata-1.0.0/include/Falcata/objective_function.h +142 -0
- falcata-1.0.0/include/Falcata/prediction_early_stop.h +37 -0
- falcata-1.0.0/include/Falcata/sample_strategy.h +91 -0
- falcata-1.0.0/include/Falcata/train_share_states.h +367 -0
- falcata-1.0.0/include/Falcata/tree.h +742 -0
- falcata-1.0.0/include/Falcata/tree_learner.h +119 -0
- falcata-1.0.0/include/Falcata/tree_split_math.h +95 -0
- falcata-1.0.0/include/Falcata/utils/array_args.h +200 -0
- falcata-1.0.0/include/Falcata/utils/binary_writer.h +59 -0
- falcata-1.0.0/include/Falcata/utils/byte_buffer.h +63 -0
- falcata-1.0.0/include/Falcata/utils/chunked_array.hpp +261 -0
- falcata-1.0.0/include/Falcata/utils/common.h +1304 -0
- falcata-1.0.0/include/Falcata/utils/file_io.h +79 -0
- falcata-1.0.0/include/Falcata/utils/json11.h +226 -0
- falcata-1.0.0/include/Falcata/utils/log.h +186 -0
- falcata-1.0.0/include/Falcata/utils/openmp_wrapper.h +136 -0
- falcata-1.0.0/include/Falcata/utils/pipeline_reader.h +72 -0
- falcata-1.0.0/include/Falcata/utils/random.h +118 -0
- falcata-1.0.0/include/Falcata/utils/text_reader.h +360 -0
- falcata-1.0.0/include/Falcata/utils/threading.h +201 -0
- falcata-1.0.0/include/Falcata/utils/yamc/alternate_shared_mutex.hpp +212 -0
- falcata-1.0.0/include/Falcata/utils/yamc/yamc_rwlock_sched.hpp +149 -0
- falcata-1.0.0/include/Falcata/utils/yamc/yamc_shared_lock.hpp +199 -0
- falcata-1.0.0/pyproject.toml +272 -0
- falcata-1.0.0/src/application/application.cpp +296 -0
- falcata-1.0.0/src/application/predictor.hpp +303 -0
- falcata-1.0.0/src/arrow/array.hpp +413 -0
- falcata-1.0.0/src/boosting/bagging.hpp +324 -0
- falcata-1.0.0/src/boosting/boosting.cpp +112 -0
- falcata-1.0.0/src/boosting/cuda/cuda_bagging.cu +118 -0
- falcata-1.0.0/src/boosting/cuda/cuda_score_updater.cpp +93 -0
- falcata-1.0.0/src/boosting/cuda/cuda_score_updater.cu +46 -0
- falcata-1.0.0/src/boosting/cuda/cuda_score_updater.hpp +66 -0
- falcata-1.0.0/src/boosting/cuda/nccl_gbdt.cpp +230 -0
- falcata-1.0.0/src/boosting/cuda/nccl_gbdt.hpp +152 -0
- falcata-1.0.0/src/boosting/cuda/nccl_gbdt_component.hpp +125 -0
- falcata-1.0.0/src/boosting/dart.hpp +212 -0
- falcata-1.0.0/src/boosting/falb.h +256 -0
- falcata-1.0.0/src/boosting/gbdt.cpp +896 -0
- falcata-1.0.0/src/boosting/gbdt.h +647 -0
- falcata-1.0.0/src/boosting/gbdt_model_binary.cpp +855 -0
- falcata-1.0.0/src/boosting/gbdt_model_text.cpp +667 -0
- falcata-1.0.0/src/boosting/gbdt_prediction.cpp +100 -0
- falcata-1.0.0/src/boosting/goss.hpp +173 -0
- falcata-1.0.0/src/boosting/prediction_early_stop.cpp +94 -0
- falcata-1.0.0/src/boosting/rf.hpp +237 -0
- falcata-1.0.0/src/boosting/sample_strategy.cpp +28 -0
- falcata-1.0.0/src/boosting/score_updater.hpp +129 -0
- falcata-1.0.0/src/c_api.cpp +3618 -0
- falcata-1.0.0/src/cuda/cuda_algorithms.cu +517 -0
- falcata-1.0.0/src/cuda/cuda_utils.cpp +66 -0
- falcata-1.0.0/src/io/bin.cpp +1077 -0
- falcata-1.0.0/src/io/config.cpp +643 -0
- falcata-1.0.0/src/io/config_auto.cpp +1116 -0
- falcata-1.0.0/src/io/cuda/cuda_column_data.cpp +313 -0
- falcata-1.0.0/src/io/cuda/cuda_column_data.cu +77 -0
- falcata-1.0.0/src/io/cuda/cuda_dense_binner.cpp +585 -0
- falcata-1.0.0/src/io/cuda/cuda_dense_binner.cu +289 -0
- falcata-1.0.0/src/io/cuda/cuda_dense_binner.hpp +61 -0
- falcata-1.0.0/src/io/cuda/cuda_metadata.cpp +79 -0
- falcata-1.0.0/src/io/cuda/cuda_row_data.cpp +903 -0
- falcata-1.0.0/src/io/cuda/cuda_tree.cpp +475 -0
- falcata-1.0.0/src/io/cuda/cuda_tree.cu +650 -0
- falcata-1.0.0/src/io/dataset.cpp +2356 -0
- falcata-1.0.0/src/io/dataset_loader.cpp +1592 -0
- falcata-1.0.0/src/io/dense_bin.hpp +668 -0
- falcata-1.0.0/src/io/file_io.cpp +74 -0
- falcata-1.0.0/src/io/json11.cpp +785 -0
- falcata-1.0.0/src/io/metadata.cpp +950 -0
- falcata-1.0.0/src/io/multi_val_dense_bin.hpp +360 -0
- falcata-1.0.0/src/io/multi_val_sparse_bin.hpp +449 -0
- falcata-1.0.0/src/io/parser.cpp +319 -0
- falcata-1.0.0/src/io/parser.hpp +136 -0
- falcata-1.0.0/src/io/sparse_bin.hpp +858 -0
- falcata-1.0.0/src/io/train_share_states.cpp +540 -0
- falcata-1.0.0/src/io/tree.cpp +1060 -0
- falcata-1.0.0/src/main.cpp +46 -0
- falcata-1.0.0/src/metric/binary_metric.hpp +389 -0
- falcata-1.0.0/src/metric/cuda/cuda_binary_metric.cpp +35 -0
- falcata-1.0.0/src/metric/cuda/cuda_binary_metric.hpp +73 -0
- falcata-1.0.0/src/metric/cuda/cuda_pointwise_metric.cpp +52 -0
- falcata-1.0.0/src/metric/cuda/cuda_pointwise_metric.cu +89 -0
- falcata-1.0.0/src/metric/cuda/cuda_pointwise_metric.hpp +46 -0
- falcata-1.0.0/src/metric/cuda/cuda_regression_metric.cpp +53 -0
- falcata-1.0.0/src/metric/cuda/cuda_regression_metric.hpp +216 -0
- falcata-1.0.0/src/metric/dcg_calculator.cpp +174 -0
- falcata-1.0.0/src/metric/map_metric.hpp +169 -0
- falcata-1.0.0/src/metric/metric.cpp +147 -0
- falcata-1.0.0/src/metric/multiclass_metric.hpp +440 -0
- falcata-1.0.0/src/metric/rank_metric.hpp +170 -0
- falcata-1.0.0/src/metric/regression_metric.hpp +433 -0
- falcata-1.0.0/src/metric/xentropy_metric.hpp +359 -0
- falcata-1.0.0/src/network/linker_topo.cpp +182 -0
- falcata-1.0.0/src/network/linkers.h +329 -0
- falcata-1.0.0/src/network/linkers_mpi.cpp +64 -0
- falcata-1.0.0/src/network/linkers_socket.cpp +241 -0
- falcata-1.0.0/src/network/network.cpp +332 -0
- falcata-1.0.0/src/network/socket_wrapper.hpp +333 -0
- falcata-1.0.0/src/objective/binary_objective.hpp +239 -0
- falcata-1.0.0/src/objective/cuda/cuda_binary_objective.cpp +58 -0
- falcata-1.0.0/src/objective/cuda/cuda_binary_objective.cu +230 -0
- falcata-1.0.0/src/objective/cuda/cuda_binary_objective.hpp +64 -0
- falcata-1.0.0/src/objective/cuda/cuda_multiclass_objective.cpp +63 -0
- falcata-1.0.0/src/objective/cuda/cuda_multiclass_objective.cu +109 -0
- falcata-1.0.0/src/objective/cuda/cuda_multiclass_objective.hpp +79 -0
- falcata-1.0.0/src/objective/cuda/cuda_rank_objective.cpp +69 -0
- falcata-1.0.0/src/objective/cuda/cuda_rank_objective.cu +1140 -0
- falcata-1.0.0/src/objective/cuda/cuda_rank_objective.hpp +127 -0
- falcata-1.0.0/src/objective/cuda/cuda_regression_objective.cpp +116 -0
- falcata-1.0.0/src/objective/cuda/cuda_regression_objective.cu +513 -0
- falcata-1.0.0/src/objective/cuda/cuda_regression_objective.hpp +186 -0
- falcata-1.0.0/src/objective/multi_regression_objective.hpp +168 -0
- falcata-1.0.0/src/objective/multiclass_objective.hpp +280 -0
- falcata-1.0.0/src/objective/objective_function.cpp +171 -0
- falcata-1.0.0/src/objective/rank_objective.hpp +466 -0
- falcata-1.0.0/src/objective/regression_objective.hpp +764 -0
- falcata-1.0.0/src/objective/xentropy_objective.hpp +317 -0
- falcata-1.0.0/src/treelearner/col_sampler.hpp +208 -0
- falcata-1.0.0/src/treelearner/cost_effective_gradient_boosting.hpp +175 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_best_split_finder.cpp +649 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_best_split_finder.cu +3780 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_best_split_finder.hpp +616 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_construct_jit.cpp +458 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_construct_jit.hpp +114 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_data_partition.cpp +746 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_data_partition.cu +2264 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_data_partition.hpp +697 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_feature_parallel.hpp +87 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_gradient_discretizer.cu +445 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_gradient_discretizer.hpp +141 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_histogram_constructor.cpp +1223 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_histogram_constructor.cu +3604 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_histogram_constructor.hpp +900 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_hybrid_graph.cu +622 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_hybrid_graph.hpp +360 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_leaf_splits.cpp +98 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_leaf_splits.cu +420 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_leaf_splits.hpp +277 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_single_gpu_tree_learner.cpp +4308 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_single_gpu_tree_learner.cu +691 -0
- falcata-1.0.0/src/treelearner/cuda/cuda_single_gpu_tree_learner.hpp +741 -0
- falcata-1.0.0/src/treelearner/data_parallel_tree_learner.cpp +470 -0
- falcata-1.0.0/src/treelearner/data_partition.hpp +171 -0
- falcata-1.0.0/src/treelearner/feature_histogram.cpp +746 -0
- falcata-1.0.0/src/treelearner/feature_histogram.hpp +1581 -0
- falcata-1.0.0/src/treelearner/feature_parallel_tree_learner.cpp +84 -0
- falcata-1.0.0/src/treelearner/gpu_tree_learner.cpp +1132 -0
- falcata-1.0.0/src/treelearner/gpu_tree_learner.h +288 -0
- falcata-1.0.0/src/treelearner/gradient_discretizer.cpp +263 -0
- falcata-1.0.0/src/treelearner/gradient_discretizer.hpp +129 -0
- falcata-1.0.0/src/treelearner/leaf_splits.hpp +277 -0
- falcata-1.0.0/src/treelearner/linear_leaf_solver.h +92 -0
- falcata-1.0.0/src/treelearner/linear_tree_learner.cpp +375 -0
- falcata-1.0.0/src/treelearner/linear_tree_learner.h +130 -0
- falcata-1.0.0/src/treelearner/monotone_constraints.hpp +1187 -0
- falcata-1.0.0/src/treelearner/ocl/histogram16.cl +767 -0
- falcata-1.0.0/src/treelearner/ocl/histogram256.cl +792 -0
- falcata-1.0.0/src/treelearner/ocl/histogram64.cl +743 -0
- falcata-1.0.0/src/treelearner/parallel_tree_learner.h +236 -0
- falcata-1.0.0/src/treelearner/serial_tree_learner.cpp +1122 -0
- falcata-1.0.0/src/treelearner/serial_tree_learner.h +261 -0
- falcata-1.0.0/src/treelearner/split_info.hpp +294 -0
- falcata-1.0.0/src/treelearner/tree_learner.cpp +78 -0
- falcata-1.0.0/src/treelearner/voting_parallel_tree_learner.cpp +515 -0
- falcata-1.0.0/src/utils/openmp_wrapper.cpp +44 -0
- falcata-1.0.0/swig/ChunkedArray_API_extensions.i +28 -0
- falcata-1.0.0/swig/StringArray.hpp +141 -0
- falcata-1.0.0/swig/StringArray.i +98 -0
- falcata-1.0.0/swig/StringArray_API_extensions.i +148 -0
- falcata-1.0.0/swig/falcatalib.i +289 -0
- falcata-1.0.0/swig/pointer_manipulation.i +151 -0
|
@@ -0,0 +1,1056 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.28)
|
|
2
|
+
|
|
3
|
+
option(USE_MPI "Enable MPI-based distributed learning" OFF)
|
|
4
|
+
option(USE_OPENMP "Enable OpenMP" ON)
|
|
5
|
+
option(USE_GPU "Enable GPU-accelerated training" OFF)
|
|
6
|
+
option(USE_SWIG "Enable SWIG to generate Java API" OFF)
|
|
7
|
+
option(USE_TIMETAG "Set to ON to output time costs" OFF)
|
|
8
|
+
option(USE_CUDA "Enable CUDA-accelerated training " OFF)
|
|
9
|
+
# OFF by default: NCCL has no official Windows distribution and only multi-GPU
|
|
10
|
+
# training needs it. Pass -DUSE_NCCL=ON (with BUILD_WITH_SHARED_NCCL=ON
|
|
11
|
+
# recommended on newer archs) for multi-GPU builds.
|
|
12
|
+
option(USE_NCCL "Enable NCCL for multi-GPU CUDA training (requires USE_CUDA)" OFF)
|
|
13
|
+
option(USE_ROCM "Enable ROCm-accelerated training " OFF)
|
|
14
|
+
option(USE_DEBUG "Set to ON for Debug mode" OFF)
|
|
15
|
+
option(USE_SANITIZER "Use sanitizer flags" OFF)
|
|
16
|
+
# Applies to GNU/Clang and nvcc. Never applied to the R-package build: CRAN
|
|
17
|
+
# rejects -Werror, and R's own headers warn under -Wextra.
|
|
18
|
+
option(USE_WERROR "Treat compiler warnings as errors" ON)
|
|
19
|
+
set(
|
|
20
|
+
ENABLED_SANITIZERS
|
|
21
|
+
"address" "leak" "undefined"
|
|
22
|
+
CACHE
|
|
23
|
+
STRING
|
|
24
|
+
"Semicolon separated list of sanitizer names, e.g., 'address;leak'. \
|
|
25
|
+
Supported sanitizers are address, leak, undefined and thread."
|
|
26
|
+
)
|
|
27
|
+
option(USE_HOMEBREW_FALLBACK "(macOS-only) also look in 'brew --prefix' for libraries (e.g. OpenMP)" ON)
|
|
28
|
+
option(BUILD_CLI "Build the 'falcata' command-line interface in addition to lib_falcata" ON)
|
|
29
|
+
option(BUILD_CPP_TEST "Build C++ tests with Google Test" OFF)
|
|
30
|
+
option(BUILD_STATIC_LIB "Build static library" OFF)
|
|
31
|
+
option(INSTALL_HEADERS "Install headers to CMAKE_INSTALL_PREFIX (e.g. '/usr/local/include')" ON)
|
|
32
|
+
option(__BUILD_FOR_PYTHON "Set to ON if building lib_falcata for use with the Python-package" OFF)
|
|
33
|
+
option(__BUILD_FOR_R "Set to ON if building lib_falcata for use with the R-package" OFF)
|
|
34
|
+
option(__INTEGRATE_OPENCL "Set to ON if building Falcata with the OpenCL ICD Loader and its dependencies included" OFF)
|
|
35
|
+
|
|
36
|
+
# If using Visual Studio generators, always target v10.x of the Windows SDK.
|
|
37
|
+
# Doing this avoids lookups that could fall back to very old versions, e.g. by finding
|
|
38
|
+
# outdated registry entries.
|
|
39
|
+
# ref: https://cmake.org/cmake/help/latest/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.html
|
|
40
|
+
if(CMAKE_GENERATOR MATCHES "Visual Studio")
|
|
41
|
+
set(CMAKE_SYSTEM_VERSION 10.0 CACHE INTERNAL "target Windows SDK version" FORCE)
|
|
42
|
+
endif()
|
|
43
|
+
|
|
44
|
+
project(falcata LANGUAGES C CXX)
|
|
45
|
+
|
|
46
|
+
set(CMAKE_CXX_STANDARD 17)
|
|
47
|
+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
48
|
+
|
|
49
|
+
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules")
|
|
50
|
+
|
|
51
|
+
#-- Sanitizer
|
|
52
|
+
if(USE_SANITIZER)
|
|
53
|
+
if(MSVC)
|
|
54
|
+
message(FATAL_ERROR "Sanitizers are not supported with MSVC.")
|
|
55
|
+
endif()
|
|
56
|
+
include(cmake/Sanitizer.cmake)
|
|
57
|
+
enable_sanitizers("${ENABLED_SANITIZERS}")
|
|
58
|
+
endif()
|
|
59
|
+
|
|
60
|
+
if(__INTEGRATE_OPENCL)
|
|
61
|
+
set(__INTEGRATE_OPENCL ON CACHE BOOL "" FORCE)
|
|
62
|
+
set(USE_GPU OFF CACHE BOOL "" FORCE)
|
|
63
|
+
message(STATUS "Building library with integrated OpenCL components")
|
|
64
|
+
endif()
|
|
65
|
+
|
|
66
|
+
if(__BUILD_FOR_PYTHON OR __BUILD_FOR_R OR USE_SWIG)
|
|
67
|
+
# the SWIG wrapper, the Python and R packages don't require the CLI
|
|
68
|
+
set(BUILD_CLI OFF)
|
|
69
|
+
# installing the SWIG wrapper, the R and Python packages shouldn't place LightGBM's headers
|
|
70
|
+
# outside of where the package is installed
|
|
71
|
+
set(INSTALL_HEADERS OFF)
|
|
72
|
+
endif()
|
|
73
|
+
|
|
74
|
+
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
75
|
+
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.8.2")
|
|
76
|
+
message(FATAL_ERROR "Insufficient gcc version (${CMAKE_CXX_COMPILER_VERSION})")
|
|
77
|
+
endif()
|
|
78
|
+
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
79
|
+
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.8")
|
|
80
|
+
message(FATAL_ERROR "Insufficient Clang version (${CMAKE_CXX_COMPILER_VERSION})")
|
|
81
|
+
endif()
|
|
82
|
+
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
|
83
|
+
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.1.0")
|
|
84
|
+
message(FATAL_ERROR "Insufficient AppleClang version (${CMAKE_CXX_COMPILER_VERSION})")
|
|
85
|
+
endif()
|
|
86
|
+
elseif(MSVC)
|
|
87
|
+
if(MSVC_VERSION LESS 1900)
|
|
88
|
+
message(FATAL_ERROR "Insufficient MSVC version (${MSVC_VERSION})")
|
|
89
|
+
endif()
|
|
90
|
+
endif()
|
|
91
|
+
|
|
92
|
+
if(USE_SWIG)
|
|
93
|
+
find_package(SWIG REQUIRED)
|
|
94
|
+
find_package(Java REQUIRED)
|
|
95
|
+
find_package(JNI REQUIRED)
|
|
96
|
+
include(UseJava)
|
|
97
|
+
include(UseSWIG)
|
|
98
|
+
set(SWIG_CXX_EXTENSION "cxx")
|
|
99
|
+
set(SWIG_EXTRA_LIBRARIES "")
|
|
100
|
+
set(SWIG_JAVA_EXTRA_FILE_EXTENSIONS ".java" "JNI.java")
|
|
101
|
+
set(SWIG_MODULE_JAVA_LANGUAGE "JAVA")
|
|
102
|
+
set(SWIG_MODULE_JAVA_SWIG_LANGUAGE_FLAG "java")
|
|
103
|
+
set(CMAKE_SWIG_OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/java")
|
|
104
|
+
include_directories(Java_INCLUDE_DIRS)
|
|
105
|
+
include_directories(JNI_INCLUDE_DIRS)
|
|
106
|
+
include_directories($ENV{JAVA_HOME}/include)
|
|
107
|
+
if(WIN32)
|
|
108
|
+
set(FLC_SWIG_DESTINATION_DIR "${CMAKE_CURRENT_BINARY_DIR}/ai/falcata/windows/x86_64")
|
|
109
|
+
include_directories($ENV{JAVA_HOME}/include/win32)
|
|
110
|
+
elseif(APPLE)
|
|
111
|
+
set(FLC_SWIG_DESTINATION_DIR "${CMAKE_CURRENT_BINARY_DIR}/ai/falcata/osx/x86_64")
|
|
112
|
+
include_directories($ENV{JAVA_HOME}/include/darwin)
|
|
113
|
+
else()
|
|
114
|
+
set(FLC_SWIG_DESTINATION_DIR "${CMAKE_CURRENT_BINARY_DIR}/ai/falcata/linux/x86_64")
|
|
115
|
+
include_directories($ENV{JAVA_HOME}/include/linux)
|
|
116
|
+
endif()
|
|
117
|
+
file(MAKE_DIRECTORY "${FLC_SWIG_DESTINATION_DIR}")
|
|
118
|
+
endif()
|
|
119
|
+
|
|
120
|
+
set(EIGEN_DIR "${PROJECT_SOURCE_DIR}/external_libs/eigen")
|
|
121
|
+
# SYSTEM: vendored headers must not produce warnings we then promote to errors.
|
|
122
|
+
include_directories(SYSTEM ${EIGEN_DIR})
|
|
123
|
+
|
|
124
|
+
# See https://gitlab.com/libeigen/eigen/-/blob/master/COPYING.README
|
|
125
|
+
add_definitions(-DEIGEN_MPL2_ONLY)
|
|
126
|
+
add_definitions(-DEIGEN_DONT_PARALLELIZE)
|
|
127
|
+
|
|
128
|
+
set(FAST_DOUBLE_PARSER_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/external_libs/fast_double_parser/include")
|
|
129
|
+
include_directories(SYSTEM ${FAST_DOUBLE_PARSER_INCLUDE_DIR})
|
|
130
|
+
|
|
131
|
+
set(FMT_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/external_libs/fmt/include")
|
|
132
|
+
include_directories(SYSTEM ${FMT_INCLUDE_DIR})
|
|
133
|
+
|
|
134
|
+
if(BUILD_CPP_TEST AND MSVC)
|
|
135
|
+
# Use /MT flag to statically link the C runtime. Must be set before
|
|
136
|
+
# add_subdirectory(nanoarrow) so the bundled library uses the same runtime
|
|
137
|
+
# as the test executable; otherwise linking fails with unresolved __imp_*
|
|
138
|
+
# symbols (e.g. __imp_realloc).
|
|
139
|
+
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
|
140
|
+
endif()
|
|
141
|
+
|
|
142
|
+
# nanoarrow is only needed by the Arrow-based C API entry points, which are
|
|
143
|
+
# disabled for the R package (the R API never calls them). Skipping the
|
|
144
|
+
# subdirectory keeps the package tarball free of nanoarrow sources, which
|
|
145
|
+
# would otherwise trigger CRAN warnings about diagnostic-suppressing pragmas.
|
|
146
|
+
if(NOT __BUILD_FOR_R)
|
|
147
|
+
add_subdirectory("${PROJECT_SOURCE_DIR}/external_libs/nanoarrow" EXCLUDE_FROM_ALL)
|
|
148
|
+
if(NOT BUILD_STATIC_LIB)
|
|
149
|
+
set_target_properties(nanoarrow_static PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
|
150
|
+
endif()
|
|
151
|
+
endif()
|
|
152
|
+
|
|
153
|
+
if(__BUILD_FOR_R)
|
|
154
|
+
find_package(LibR REQUIRED)
|
|
155
|
+
message(STATUS "LIBR_EXECUTABLE: ${LIBR_EXECUTABLE}")
|
|
156
|
+
message(STATUS "LIBR_INCLUDE_DIRS: ${LIBR_INCLUDE_DIRS}")
|
|
157
|
+
message(STATUS "LIBR_LIBS_DIR: ${LIBR_LIBS_DIR}")
|
|
158
|
+
message(STATUS "LIBR_CORE_LIBRARY: ${LIBR_CORE_LIBRARY}")
|
|
159
|
+
include_directories(${LIBR_INCLUDE_DIRS})
|
|
160
|
+
add_definitions(-DLGB_R_BUILD)
|
|
161
|
+
endif()
|
|
162
|
+
|
|
163
|
+
if(USE_TIMETAG)
|
|
164
|
+
add_definitions(-DTIMETAG)
|
|
165
|
+
endif()
|
|
166
|
+
|
|
167
|
+
if(USE_DEBUG)
|
|
168
|
+
add_definitions(-DDEBUG)
|
|
169
|
+
endif()
|
|
170
|
+
|
|
171
|
+
if(USE_MPI)
|
|
172
|
+
find_package(MPI REQUIRED)
|
|
173
|
+
add_definitions(-DUSE_MPI)
|
|
174
|
+
else()
|
|
175
|
+
add_definitions(-DUSE_SOCKET)
|
|
176
|
+
endif()
|
|
177
|
+
|
|
178
|
+
# The Python build turns USE_CUDA on by default, which is right everywhere CUDA
|
|
179
|
+
# can exist. Apple dropped CUDA support entirely, so honouring it there only
|
|
180
|
+
# produces a confusing configure failure -- fall back to the CPU build instead.
|
|
181
|
+
if(USE_CUDA AND APPLE)
|
|
182
|
+
message(STATUS "USE_CUDA=ON ignored on macOS (no CUDA toolkit exists for it): building CPU-only.")
|
|
183
|
+
set(USE_CUDA OFF CACHE BOOL "Enable CUDA-accelerated training " FORCE)
|
|
184
|
+
endif()
|
|
185
|
+
|
|
186
|
+
if(USE_CUDA)
|
|
187
|
+
set(CMAKE_CUDA_HOST_COMPILER "${CMAKE_CXX_COMPILER}")
|
|
188
|
+
enable_language(CUDA)
|
|
189
|
+
set(USE_OPENMP ON CACHE BOOL "CUDA requires OpenMP" FORCE)
|
|
190
|
+
endif()
|
|
191
|
+
|
|
192
|
+
if(USE_ROCM)
|
|
193
|
+
enable_language(HIP)
|
|
194
|
+
set(USE_OPENMP ON CACHE BOOL "ROCm requires OpenMP" FORCE)
|
|
195
|
+
endif()
|
|
196
|
+
|
|
197
|
+
if(USE_OPENMP)
|
|
198
|
+
if(APPLE)
|
|
199
|
+
find_package(OpenMP)
|
|
200
|
+
if(NOT OpenMP_FOUND)
|
|
201
|
+
if(USE_HOMEBREW_FALLBACK)
|
|
202
|
+
# libomp 15.0+ from brew is keg-only, so have to search in other locations.
|
|
203
|
+
# See https://github.com/Homebrew/homebrew-core/issues/112107#issuecomment-1278042927.
|
|
204
|
+
execute_process(COMMAND brew --prefix libomp
|
|
205
|
+
OUTPUT_VARIABLE HOMEBREW_LIBOMP_PREFIX
|
|
206
|
+
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
207
|
+
set(OpenMP_C_FLAGS "-Xpreprocessor -fopenmp -I${HOMEBREW_LIBOMP_PREFIX}/include")
|
|
208
|
+
set(OpenMP_CXX_FLAGS "-Xpreprocessor -fopenmp -I${HOMEBREW_LIBOMP_PREFIX}/include")
|
|
209
|
+
set(OpenMP_C_LIB_NAMES omp)
|
|
210
|
+
set(OpenMP_CXX_LIB_NAMES omp)
|
|
211
|
+
set(OpenMP_omp_LIBRARY ${HOMEBREW_LIBOMP_PREFIX}/lib/libomp.dylib)
|
|
212
|
+
endif()
|
|
213
|
+
find_package(OpenMP REQUIRED)
|
|
214
|
+
endif()
|
|
215
|
+
else()
|
|
216
|
+
find_package(OpenMP REQUIRED)
|
|
217
|
+
endif()
|
|
218
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
|
|
219
|
+
endif()
|
|
220
|
+
|
|
221
|
+
if(USE_GPU)
|
|
222
|
+
set(BOOST_COMPUTE_HEADER_DIR ${PROJECT_SOURCE_DIR}/external_libs/compute/include)
|
|
223
|
+
include_directories(${BOOST_COMPUTE_HEADER_DIR})
|
|
224
|
+
find_package(OpenCL REQUIRED)
|
|
225
|
+
include_directories(${OpenCL_INCLUDE_DIRS})
|
|
226
|
+
message(STATUS "OpenCL include directory: " ${OpenCL_INCLUDE_DIRS})
|
|
227
|
+
if(WIN32)
|
|
228
|
+
set(Boost_USE_STATIC_LIBS ON)
|
|
229
|
+
endif()
|
|
230
|
+
find_package(Boost 1.56.0 COMPONENTS filesystem system REQUIRED)
|
|
231
|
+
if(WIN32)
|
|
232
|
+
# disable autolinking in boost
|
|
233
|
+
add_definitions(-DBOOST_ALL_NO_LIB)
|
|
234
|
+
endif()
|
|
235
|
+
include_directories(${Boost_INCLUDE_DIRS})
|
|
236
|
+
add_definitions(-DUSE_GPU)
|
|
237
|
+
endif()
|
|
238
|
+
|
|
239
|
+
if(__INTEGRATE_OPENCL)
|
|
240
|
+
if(APPLE)
|
|
241
|
+
message(FATAL_ERROR "Integrated OpenCL build is not available on macOS")
|
|
242
|
+
else()
|
|
243
|
+
include(cmake/IntegratedOpenCL.cmake)
|
|
244
|
+
add_definitions(-DUSE_GPU)
|
|
245
|
+
endif()
|
|
246
|
+
endif()
|
|
247
|
+
|
|
248
|
+
if(USE_CUDA)
|
|
249
|
+
find_package(CUDAToolkit 11.0 REQUIRED)
|
|
250
|
+
if(USE_NCCL)
|
|
251
|
+
find_package(NCCL REQUIRED)
|
|
252
|
+
else()
|
|
253
|
+
message(STATUS "USE_NCCL is OFF: building single-GPU only, without the NCCL dependency.")
|
|
254
|
+
endif()
|
|
255
|
+
include_directories(${CUDAToolkit_INCLUDE_DIRS})
|
|
256
|
+
# These are forwarded (-Xcompiler=) to nvcc's host compiler. -fPIC and -Wall
|
|
257
|
+
# are GCC/Clang spellings; MSVC (the CUDA host compiler on Windows) rejects
|
|
258
|
+
# them (-fPIC is also meaningless there), so skip them under MSVC. The OpenMP
|
|
259
|
+
# flag is valid for both host compilers.
|
|
260
|
+
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler=${OpenMP_CXX_FLAGS}")
|
|
261
|
+
if(NOT MSVC)
|
|
262
|
+
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler=-fPIC -Xcompiler=-Wall")
|
|
263
|
+
endif()
|
|
264
|
+
# Warnings-as-errors gate our own sources on GCC/Clang. It is skipped under
|
|
265
|
+
# MSVC -- matching the CPU build, which never adds /WX -- both for the host
|
|
266
|
+
# -Xcompiler=-Werror and for nvcc's own device-side "-Werror all-warnings":
|
|
267
|
+
# on Windows, nvcc surfaces device-side diagnostics from vendored headers
|
|
268
|
+
# (fmt, fast_double_parser) that Linux's toolchain does not, and those are
|
|
269
|
+
# not our code. Device code is identical across platforms and is already
|
|
270
|
+
# gated by the Linux CUDA CI.
|
|
271
|
+
if(USE_WERROR AND NOT __BUILD_FOR_R AND NOT MSVC)
|
|
272
|
+
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler=-Werror")
|
|
273
|
+
# nvcc's own device-side diagnostics (e.g. cross-execution-space-call) are
|
|
274
|
+
# separate from the host compiler's; "all-warnings" landed in CUDA 11.2.
|
|
275
|
+
if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.2")
|
|
276
|
+
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Werror all-warnings")
|
|
277
|
+
else()
|
|
278
|
+
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Werror cross-execution-space-call")
|
|
279
|
+
endif()
|
|
280
|
+
endif()
|
|
281
|
+
|
|
282
|
+
# If the user passed -DCMAKE_CUDA_ARCHITECTURES (e.g. "120-real" for fast
|
|
283
|
+
# local builds on a single GPU), honor it verbatim. Otherwise build for
|
|
284
|
+
# every architecture the detected toolkit supports.
|
|
285
|
+
# reference for mapping of CUDA toolkit component versions to supported architectures ("compute capabilities"):
|
|
286
|
+
# https://en.wikipedia.org/wiki/CUDA#GPUs_supported
|
|
287
|
+
# CUDA 13.0 removed offline-compilation support for Maxwell (sm_50/52/53), Pascal (sm_60/61/62)
|
|
288
|
+
# and Volta (sm_70/72). sm_75 (Turing) is the lowest still-supported architecture.
|
|
289
|
+
# NOTE: when the user passes nothing, CMake itself injects nvcc's default
|
|
290
|
+
# target ("52") into CMAKE_CUDA_ARCHITECTURES at language enablement -- an
|
|
291
|
+
# arch our code does not even support. Treat that auto-injected value as
|
|
292
|
+
# "not set" so the every-supported-arch fallback below actually runs.
|
|
293
|
+
# Detect the GPUs actually present so a plain `pip install falcata` builds
|
|
294
|
+
# only for them (minutes instead of the better part of an hour). The
|
|
295
|
+
# every-supported-arch build below remains the fallback when no GPU is
|
|
296
|
+
# visible at build time (docker build stages, CPU-only CI).
|
|
297
|
+
set(FALCATA_DETECTED_ARCHS "")
|
|
298
|
+
execute_process(
|
|
299
|
+
COMMAND nvidia-smi --query-gpu=compute_cap --format=csv,noheader
|
|
300
|
+
OUTPUT_VARIABLE _falcata_caps
|
|
301
|
+
RESULT_VARIABLE _falcata_caps_rc
|
|
302
|
+
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
303
|
+
ERROR_QUIET
|
|
304
|
+
)
|
|
305
|
+
if(_falcata_caps_rc EQUAL 0 AND NOT "${_falcata_caps}" STREQUAL "")
|
|
306
|
+
string(REPLACE "\n" ";" _falcata_cap_list "${_falcata_caps}")
|
|
307
|
+
foreach(_cap IN LISTS _falcata_cap_list)
|
|
308
|
+
string(STRIP "${_cap}" _cap)
|
|
309
|
+
string(REPLACE "." "" _cap "${_cap}")
|
|
310
|
+
if(_cap MATCHES "^[0-9]+$")
|
|
311
|
+
list(APPEND FALCATA_DETECTED_ARCHS "${_cap}")
|
|
312
|
+
endif()
|
|
313
|
+
endforeach()
|
|
314
|
+
list(REMOVE_DUPLICATES FALCATA_DETECTED_ARCHS)
|
|
315
|
+
list(SORT FALCATA_DETECTED_ARCHS COMPARE NATURAL)
|
|
316
|
+
endif()
|
|
317
|
+
|
|
318
|
+
if(DEFINED CMAKE_CUDA_ARCHITECTURES AND NOT "${CMAKE_CUDA_ARCHITECTURES}" STREQUAL ""
|
|
319
|
+
AND NOT "${CMAKE_CUDA_ARCHITECTURES}" STREQUAL "52")
|
|
320
|
+
set(CUDA_ARCHS "${CMAKE_CUDA_ARCHITECTURES}")
|
|
321
|
+
elseif(NOT "${FALCATA_DETECTED_ARCHS}" STREQUAL "")
|
|
322
|
+
# real code for each detected GPU + PTX of the newest for forward compat
|
|
323
|
+
set(CUDA_ARCHS ${FALCATA_DETECTED_ARCHS})
|
|
324
|
+
list(GET CUDA_ARCHS -1 _falcata_max_arch)
|
|
325
|
+
list(TRANSFORM CUDA_ARCHS APPEND "-real")
|
|
326
|
+
list(APPEND CUDA_ARCHS "${_falcata_max_arch}-virtual")
|
|
327
|
+
message(STATUS "Building for the detected GPU(s): ${FALCATA_DETECTED_ARCHS}")
|
|
328
|
+
message(STATUS " (pass -DCMAKE_CUDA_ARCHITECTURES=... to override)")
|
|
329
|
+
else()
|
|
330
|
+
message(STATUS "No GPU detected at build time; building for every architecture the toolkit supports")
|
|
331
|
+
if(CUDAToolkit_VERSION VERSION_LESS "13.0")
|
|
332
|
+
set(CUDA_ARCHS "60" "61" "62" "70" "75")
|
|
333
|
+
else()
|
|
334
|
+
set(CUDA_ARCHS "75")
|
|
335
|
+
endif()
|
|
336
|
+
if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.0")
|
|
337
|
+
list(APPEND CUDA_ARCHS "80")
|
|
338
|
+
endif()
|
|
339
|
+
if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.1")
|
|
340
|
+
list(APPEND CUDA_ARCHS "86")
|
|
341
|
+
endif()
|
|
342
|
+
if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.5")
|
|
343
|
+
list(APPEND CUDA_ARCHS "87")
|
|
344
|
+
endif()
|
|
345
|
+
if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.8")
|
|
346
|
+
list(APPEND CUDA_ARCHS "89")
|
|
347
|
+
list(APPEND CUDA_ARCHS "90")
|
|
348
|
+
endif()
|
|
349
|
+
if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "12.8")
|
|
350
|
+
list(APPEND CUDA_ARCHS "100")
|
|
351
|
+
list(APPEND CUDA_ARCHS "120")
|
|
352
|
+
endif()
|
|
353
|
+
# Generate PTX for the most recent architecture for forwards compatibility
|
|
354
|
+
list(POP_BACK CUDA_ARCHS CUDA_LAST_SUPPORTED_ARCH)
|
|
355
|
+
list(TRANSFORM CUDA_ARCHS APPEND "-real")
|
|
356
|
+
list(APPEND CUDA_ARCHS "${CUDA_LAST_SUPPORTED_ARCH}-real" "${CUDA_LAST_SUPPORTED_ARCH}-virtual")
|
|
357
|
+
endif()
|
|
358
|
+
message(STATUS "CUDA_ARCHITECTURES: ${CUDA_ARCHS}")
|
|
359
|
+
# profiler source-line mapping in every kernel; costs real binary size,
|
|
360
|
+
# so release wheels turn it off
|
|
361
|
+
option(FALCATA_CUDA_LINEINFO "Embed CUDA -lineinfo" ON)
|
|
362
|
+
if(USE_DEBUG)
|
|
363
|
+
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -g")
|
|
364
|
+
elseif(FALCATA_CUDA_LINEINFO)
|
|
365
|
+
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -O3 -lineinfo")
|
|
366
|
+
else()
|
|
367
|
+
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -O3")
|
|
368
|
+
endif()
|
|
369
|
+
message(STATUS "CMAKE_CUDA_FLAGS: ${CMAKE_CUDA_FLAGS}")
|
|
370
|
+
|
|
371
|
+
add_definitions(-DUSE_CUDA)
|
|
372
|
+
if(USE_NCCL)
|
|
373
|
+
add_definitions(-DUSE_NCCL)
|
|
374
|
+
endif()
|
|
375
|
+
|
|
376
|
+
if(NOT DEFINED CMAKE_CUDA_STANDARD)
|
|
377
|
+
set(CMAKE_CUDA_STANDARD 17)
|
|
378
|
+
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
|
|
379
|
+
endif()
|
|
380
|
+
endif()
|
|
381
|
+
|
|
382
|
+
if(USE_ROCM)
|
|
383
|
+
find_package(HIP)
|
|
384
|
+
include_directories(${HIP_INCLUDE_DIRS})
|
|
385
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__HIP_PLATFORM_AMD__")
|
|
386
|
+
set(CMAKE_HIP_FLAGS "${CMAKE_HIP_FLAGS} ${OpenMP_CXX_FLAGS} -fPIC -Wall")
|
|
387
|
+
|
|
388
|
+
# avoid warning: unused variable 'mask' due to __shfl_down_sync work-around
|
|
389
|
+
set(DISABLED_WARNINGS "${DISABLED_WARNINGS} -Wno-unused-variable")
|
|
390
|
+
# avoid warning: 'hipHostAlloc' is deprecated: use hipHostMalloc instead
|
|
391
|
+
set(DISABLED_WARNINGS "${DISABLED_WARNINGS} -Wno-deprecated-declarations")
|
|
392
|
+
# avoid many warnings about missing overrides
|
|
393
|
+
set(DISABLED_WARNINGS "${DISABLED_WARNINGS} -Wno-inconsistent-missing-override")
|
|
394
|
+
# avoid warning: shift count >= width of type in feature_histogram.hpp
|
|
395
|
+
set(DISABLED_WARNINGS "${DISABLED_WARNINGS} -Wno-shift-count-overflow")
|
|
396
|
+
|
|
397
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DISABLED_WARNINGS}")
|
|
398
|
+
set(CMAKE_HIP_FLAGS "${CMAKE_HIP_FLAGS} ${DISABLED_WARNINGS}")
|
|
399
|
+
|
|
400
|
+
if(USE_DEBUG)
|
|
401
|
+
set(CMAKE_HIP_FLAGS "${CMAKE_HIP_FLAGS} -g -O0")
|
|
402
|
+
else()
|
|
403
|
+
set(CMAKE_HIP_FLAGS "${CMAKE_HIP_FLAGS} -O3")
|
|
404
|
+
endif()
|
|
405
|
+
message(STATUS "CMAKE_HIP_FLAGS: ${CMAKE_HIP_FLAGS}")
|
|
406
|
+
|
|
407
|
+
# Building for ROCm almost always means USE_CUDA.
|
|
408
|
+
# Exceptions to this will be guarded by USE_ROCM.
|
|
409
|
+
add_definitions(-DUSE_CUDA)
|
|
410
|
+
add_definitions(-DUSE_ROCM)
|
|
411
|
+
endif()
|
|
412
|
+
|
|
413
|
+
include(CheckCXXSourceCompiles)
|
|
414
|
+
check_cxx_source_compiles("
|
|
415
|
+
#include <xmmintrin.h>
|
|
416
|
+
int main() {
|
|
417
|
+
int a = 0;
|
|
418
|
+
_mm_prefetch(&a, _MM_HINT_NTA);
|
|
419
|
+
return 0;
|
|
420
|
+
}
|
|
421
|
+
" MM_PREFETCH)
|
|
422
|
+
|
|
423
|
+
if(${MM_PREFETCH})
|
|
424
|
+
message(STATUS "Using _mm_prefetch")
|
|
425
|
+
add_definitions(-DMM_PREFETCH)
|
|
426
|
+
endif()
|
|
427
|
+
|
|
428
|
+
include(CheckCXXSourceCompiles)
|
|
429
|
+
check_cxx_source_compiles("
|
|
430
|
+
#include <mm_malloc.h>
|
|
431
|
+
int main() {
|
|
432
|
+
char *a = (char*)_mm_malloc(8, 16);
|
|
433
|
+
_mm_free(a);
|
|
434
|
+
return 0;
|
|
435
|
+
}
|
|
436
|
+
" MM_MALLOC)
|
|
437
|
+
|
|
438
|
+
if(${MM_MALLOC})
|
|
439
|
+
message(STATUS "Using _mm_malloc")
|
|
440
|
+
add_definitions(-DMM_MALLOC)
|
|
441
|
+
endif()
|
|
442
|
+
|
|
443
|
+
if(UNIX OR MINGW OR CYGWIN)
|
|
444
|
+
set(
|
|
445
|
+
CMAKE_CXX_FLAGS
|
|
446
|
+
"${CMAKE_CXX_FLAGS} -pthread -Wextra -Wall -Wno-ignored-attributes -Wno-unknown-pragmas -Wno-return-type"
|
|
447
|
+
)
|
|
448
|
+
if(MINGW)
|
|
449
|
+
# ignore this warning: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95353
|
|
450
|
+
set(
|
|
451
|
+
CMAKE_CXX_FLAGS
|
|
452
|
+
"${CMAKE_CXX_FLAGS} -Wno-stringop-overflow"
|
|
453
|
+
)
|
|
454
|
+
endif()
|
|
455
|
+
if(USE_DEBUG)
|
|
456
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0")
|
|
457
|
+
else()
|
|
458
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
|
|
459
|
+
endif()
|
|
460
|
+
if(USE_SWIG)
|
|
461
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing")
|
|
462
|
+
endif()
|
|
463
|
+
if(NOT USE_OPENMP)
|
|
464
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas -Wno-unused-private-field")
|
|
465
|
+
endif()
|
|
466
|
+
if(__BUILD_FOR_R AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
467
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-cast-function-type")
|
|
468
|
+
endif()
|
|
469
|
+
if(USE_WERROR AND NOT __BUILD_FOR_R)
|
|
470
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
|
|
471
|
+
endif()
|
|
472
|
+
endif()
|
|
473
|
+
|
|
474
|
+
if(WIN32 AND MINGW)
|
|
475
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libstdc++")
|
|
476
|
+
endif()
|
|
477
|
+
|
|
478
|
+
# Check if inet_pton is already available, to avoid conflicts with the implementation in LightGBM.
|
|
479
|
+
# As of 2022, MinGW started including a definition of inet_pton.
|
|
480
|
+
if(WIN32)
|
|
481
|
+
include(CheckSymbolExists)
|
|
482
|
+
list(APPEND CMAKE_REQUIRED_LIBRARIES "ws2_32")
|
|
483
|
+
check_symbol_exists(inet_pton "ws2tcpip.h" WIN_INET_PTON_FOUND)
|
|
484
|
+
if(WIN_INET_PTON_FOUND)
|
|
485
|
+
add_definitions(-DWIN_HAS_INET_PTON)
|
|
486
|
+
endif()
|
|
487
|
+
list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES "ws2_32")
|
|
488
|
+
endif()
|
|
489
|
+
|
|
490
|
+
if(MSVC)
|
|
491
|
+
# compiling 'fmt' on MSVC: "Unicode support requires compiling with /utf-8"
|
|
492
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /MP /utf-8")
|
|
493
|
+
if(USE_CUDA)
|
|
494
|
+
# -Xcompiler=/utf-8 reaches cl.exe for nvcc's host-side compilation,
|
|
495
|
+
# but fmt's use_utf8 check (fmt/base.h) detects /utf-8 by checking how
|
|
496
|
+
# the compiler itself encodes a "§" literal, and nvcc's own
|
|
497
|
+
# front-end parse of .cu files (separate from the host cl.exe it
|
|
498
|
+
# shells out to) doesn't pick up that flag. Disabling FMT_UNICODE
|
|
499
|
+
# skips that compile-time assertion; it only guards an unused
|
|
500
|
+
# Windows-console UTF-8 print codepath, not core formatting.
|
|
501
|
+
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler=/utf-8 -DFMT_UNICODE=0")
|
|
502
|
+
endif()
|
|
503
|
+
if(__BUILD_FOR_R)
|
|
504
|
+
# MSVC does not like this commit:
|
|
505
|
+
# https://github.com/wch/r-source/commit/fb52ac1a610571fcb8ac92d886b9fefcffaa7d48
|
|
506
|
+
#
|
|
507
|
+
# and raises "error C3646: 'private_data_c': unknown override specifier"
|
|
508
|
+
add_definitions(-DR_LEGACY_RCOMPLEX)
|
|
509
|
+
endif()
|
|
510
|
+
if(USE_DEBUG)
|
|
511
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Od")
|
|
512
|
+
else()
|
|
513
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /O2 /Ob2 /Oi /Ot /Oy")
|
|
514
|
+
endif()
|
|
515
|
+
else()
|
|
516
|
+
if(NOT BUILD_STATIC_LIB)
|
|
517
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
|
|
518
|
+
endif()
|
|
519
|
+
if(NOT USE_DEBUG)
|
|
520
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -funroll-loops")
|
|
521
|
+
endif()
|
|
522
|
+
endif()
|
|
523
|
+
|
|
524
|
+
set(Falcata_HEADER_DIR ${PROJECT_SOURCE_DIR}/include)
|
|
525
|
+
|
|
526
|
+
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR})
|
|
527
|
+
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR})
|
|
528
|
+
|
|
529
|
+
include_directories(${Falcata_HEADER_DIR})
|
|
530
|
+
|
|
531
|
+
if(USE_MPI)
|
|
532
|
+
include_directories(${MPI_CXX_INCLUDE_PATH})
|
|
533
|
+
endif()
|
|
534
|
+
|
|
535
|
+
# zlib backs the FALB binary model format's compressed sections (space is the
|
|
536
|
+
# point for an archived model). Prefer the system zlib (dynamic link keeps the
|
|
537
|
+
# redistributable wheels portable); environments without dev headers (minimal
|
|
538
|
+
# CI containers, stock Windows runners) fall back to a pinned static build.
|
|
539
|
+
find_package(ZLIB)
|
|
540
|
+
if(NOT ZLIB_FOUND)
|
|
541
|
+
message(STATUS "System zlib not found; building pinned static zlib 1.3.1 via FetchContent")
|
|
542
|
+
include(FetchContent)
|
|
543
|
+
set(ZLIB_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
|
544
|
+
set(SKIP_INSTALL_ALL ON CACHE BOOL "" FORCE)
|
|
545
|
+
fetchcontent_declare(
|
|
546
|
+
zlib_fallback
|
|
547
|
+
URL https://github.com/madler/zlib/releases/download/v1.3.1/zlib-1.3.1.tar.gz
|
|
548
|
+
URL_HASH SHA256=9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23
|
|
549
|
+
)
|
|
550
|
+
fetchcontent_makeavailable(zlib_fallback)
|
|
551
|
+
set_target_properties(zlibstatic PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
|
552
|
+
target_include_directories(
|
|
553
|
+
zlibstatic
|
|
554
|
+
INTERFACE
|
|
555
|
+
$<BUILD_INTERFACE:${zlib_fallback_SOURCE_DIR}>
|
|
556
|
+
$<BUILD_INTERFACE:${zlib_fallback_BINARY_DIR}>
|
|
557
|
+
)
|
|
558
|
+
add_library(ZLIB::ZLIB ALIAS zlibstatic)
|
|
559
|
+
endif()
|
|
560
|
+
|
|
561
|
+
set(
|
|
562
|
+
FLC_SOURCES
|
|
563
|
+
src/boosting/boosting.cpp
|
|
564
|
+
src/boosting/gbdt_model_binary.cpp
|
|
565
|
+
src/boosting/gbdt_model_text.cpp
|
|
566
|
+
src/boosting/gbdt_prediction.cpp
|
|
567
|
+
src/boosting/gbdt.cpp
|
|
568
|
+
src/boosting/prediction_early_stop.cpp
|
|
569
|
+
src/boosting/sample_strategy.cpp
|
|
570
|
+
src/io/bin.cpp
|
|
571
|
+
src/io/config_auto.cpp
|
|
572
|
+
src/io/config.cpp
|
|
573
|
+
src/io/dataset_loader.cpp
|
|
574
|
+
src/io/dataset.cpp
|
|
575
|
+
src/io/file_io.cpp
|
|
576
|
+
src/io/json11.cpp
|
|
577
|
+
src/io/metadata.cpp
|
|
578
|
+
src/io/parser.cpp
|
|
579
|
+
src/io/train_share_states.cpp
|
|
580
|
+
src/io/tree.cpp
|
|
581
|
+
src/metric/dcg_calculator.cpp
|
|
582
|
+
src/metric/metric.cpp
|
|
583
|
+
src/network/linker_topo.cpp
|
|
584
|
+
src/network/linkers_mpi.cpp
|
|
585
|
+
src/network/linkers_socket.cpp
|
|
586
|
+
src/network/network.cpp
|
|
587
|
+
src/objective/objective_function.cpp
|
|
588
|
+
src/treelearner/data_parallel_tree_learner.cpp
|
|
589
|
+
src/treelearner/feature_histogram.cpp
|
|
590
|
+
src/treelearner/feature_parallel_tree_learner.cpp
|
|
591
|
+
src/treelearner/gpu_tree_learner.cpp
|
|
592
|
+
src/treelearner/gradient_discretizer.cpp
|
|
593
|
+
src/treelearner/linear_tree_learner.cpp
|
|
594
|
+
src/treelearner/serial_tree_learner.cpp
|
|
595
|
+
src/treelearner/tree_learner.cpp
|
|
596
|
+
src/treelearner/voting_parallel_tree_learner.cpp
|
|
597
|
+
src/utils/openmp_wrapper.cpp
|
|
598
|
+
)
|
|
599
|
+
set(
|
|
600
|
+
FLC_CUDA_SOURCES
|
|
601
|
+
src/boosting/cuda/cuda_score_updater.cpp
|
|
602
|
+
src/boosting/cuda/cuda_bagging.cu
|
|
603
|
+
src/boosting/cuda/cuda_score_updater.cu
|
|
604
|
+
src/metric/cuda/cuda_binary_metric.cpp
|
|
605
|
+
src/metric/cuda/cuda_pointwise_metric.cpp
|
|
606
|
+
src/metric/cuda/cuda_regression_metric.cpp
|
|
607
|
+
src/metric/cuda/cuda_pointwise_metric.cu
|
|
608
|
+
src/objective/cuda/cuda_binary_objective.cpp
|
|
609
|
+
src/objective/cuda/cuda_multiclass_objective.cpp
|
|
610
|
+
src/objective/cuda/cuda_rank_objective.cpp
|
|
611
|
+
src/objective/cuda/cuda_regression_objective.cpp
|
|
612
|
+
src/objective/cuda/cuda_binary_objective.cu
|
|
613
|
+
src/objective/cuda/cuda_multiclass_objective.cu
|
|
614
|
+
src/objective/cuda/cuda_rank_objective.cu
|
|
615
|
+
src/objective/cuda/cuda_regression_objective.cu
|
|
616
|
+
src/treelearner/cuda/cuda_best_split_finder.cpp
|
|
617
|
+
src/treelearner/cuda/cuda_data_partition.cpp
|
|
618
|
+
src/treelearner/cuda/cuda_histogram_constructor.cpp
|
|
619
|
+
src/treelearner/cuda/cuda_construct_jit.cpp
|
|
620
|
+
src/treelearner/cuda/cuda_leaf_splits.cpp
|
|
621
|
+
src/treelearner/cuda/cuda_single_gpu_tree_learner.cpp
|
|
622
|
+
src/treelearner/cuda/cuda_best_split_finder.cu
|
|
623
|
+
src/treelearner/cuda/cuda_data_partition.cu
|
|
624
|
+
src/treelearner/cuda/cuda_gradient_discretizer.cu
|
|
625
|
+
src/treelearner/cuda/cuda_histogram_constructor.cu
|
|
626
|
+
src/treelearner/cuda/cuda_hybrid_graph.cu
|
|
627
|
+
src/treelearner/cuda/cuda_leaf_splits.cu
|
|
628
|
+
src/treelearner/cuda/cuda_single_gpu_tree_learner.cu
|
|
629
|
+
src/io/cuda/cuda_column_data.cu
|
|
630
|
+
src/io/cuda/cuda_dense_binner.cu
|
|
631
|
+
src/io/cuda/cuda_tree.cu
|
|
632
|
+
src/io/cuda/cuda_column_data.cpp
|
|
633
|
+
src/io/cuda/cuda_dense_binner.cpp
|
|
634
|
+
src/io/cuda/cuda_metadata.cpp
|
|
635
|
+
src/io/cuda/cuda_row_data.cpp
|
|
636
|
+
src/io/cuda/cuda_tree.cpp
|
|
637
|
+
src/cuda/cuda_utils.cpp
|
|
638
|
+
src/cuda/cuda_algorithms.cu
|
|
639
|
+
)
|
|
640
|
+
|
|
641
|
+
if(USE_NCCL)
|
|
642
|
+
list(APPEND FLC_CUDA_SOURCES src/boosting/cuda/nccl_gbdt.cpp)
|
|
643
|
+
endif()
|
|
644
|
+
|
|
645
|
+
if(USE_CUDA OR USE_ROCM)
|
|
646
|
+
list(APPEND FLC_SOURCES ${FLC_CUDA_SOURCES})
|
|
647
|
+
endif()
|
|
648
|
+
|
|
649
|
+
if(USE_ROCM)
|
|
650
|
+
set(CU_FILES "")
|
|
651
|
+
foreach(file IN LISTS FLC_CUDA_SOURCES)
|
|
652
|
+
string(REGEX MATCH "\\.cu$" is_cu_file "${file}")
|
|
653
|
+
if(is_cu_file)
|
|
654
|
+
list(APPEND CU_FILES "${file}")
|
|
655
|
+
endif()
|
|
656
|
+
endforeach()
|
|
657
|
+
set_source_files_properties(${CU_FILES} PROPERTIES LANGUAGE HIP)
|
|
658
|
+
endif()
|
|
659
|
+
|
|
660
|
+
add_library(falcata_objs OBJECT ${FLC_SOURCES})
|
|
661
|
+
if(NOT __BUILD_FOR_R)
|
|
662
|
+
target_link_libraries(falcata_objs PRIVATE nanoarrow_static)
|
|
663
|
+
target_link_libraries(falcata_objs PUBLIC ZLIB::ZLIB)
|
|
664
|
+
endif()
|
|
665
|
+
|
|
666
|
+
if(BUILD_CLI)
|
|
667
|
+
add_executable(falcata src/main.cpp src/application/application.cpp)
|
|
668
|
+
target_link_libraries(falcata PRIVATE falcata_objs)
|
|
669
|
+
endif()
|
|
670
|
+
|
|
671
|
+
set(API_SOURCES "src/c_api.cpp")
|
|
672
|
+
# Only build the R part of the library if building for
|
|
673
|
+
# use with the R-package
|
|
674
|
+
if(__BUILD_FOR_R)
|
|
675
|
+
list(APPEND API_SOURCES "src/falcata_R.cpp")
|
|
676
|
+
endif()
|
|
677
|
+
|
|
678
|
+
add_library(falcata_capi_objs OBJECT ${API_SOURCES})
|
|
679
|
+
if(NOT __BUILD_FOR_R)
|
|
680
|
+
target_link_libraries(falcata_capi_objs PRIVATE nanoarrow_static)
|
|
681
|
+
endif()
|
|
682
|
+
|
|
683
|
+
if(BUILD_STATIC_LIB)
|
|
684
|
+
add_library(_falcata STATIC)
|
|
685
|
+
else()
|
|
686
|
+
add_library(_falcata SHARED)
|
|
687
|
+
endif()
|
|
688
|
+
|
|
689
|
+
# R expects libraries of the form <project>.{dll,dylib,so}, not lib_<project>.{dll,dylib,so}
|
|
690
|
+
if(__BUILD_FOR_R)
|
|
691
|
+
set_target_properties(
|
|
692
|
+
_falcata
|
|
693
|
+
PROPERTIES
|
|
694
|
+
PREFIX ""
|
|
695
|
+
OUTPUT_NAME "falcata"
|
|
696
|
+
)
|
|
697
|
+
endif()
|
|
698
|
+
|
|
699
|
+
# LightGBM headers include openmp, cuda, R etc. headers,
|
|
700
|
+
# thus PUBLIC is required for building _falcata_swig target.
|
|
701
|
+
target_link_libraries(_falcata PUBLIC falcata_capi_objs falcata_objs)
|
|
702
|
+
target_link_libraries(_falcata PUBLIC ZLIB::ZLIB)
|
|
703
|
+
|
|
704
|
+
if(MSVC AND NOT __BUILD_FOR_R)
|
|
705
|
+
set_target_properties(_falcata PROPERTIES OUTPUT_NAME "lib_falcata")
|
|
706
|
+
endif()
|
|
707
|
+
|
|
708
|
+
if(USE_SWIG)
|
|
709
|
+
set_property(SOURCE swig/falcatalib.i PROPERTY CPLUSPLUS ON)
|
|
710
|
+
list(APPEND swig_options -package ai.falcata)
|
|
711
|
+
set_property(SOURCE swig/falcatalib.i PROPERTY SWIG_FLAGS "${swig_options}")
|
|
712
|
+
swig_add_library(_falcata_swig LANGUAGE java SOURCES swig/falcatalib.i)
|
|
713
|
+
swig_link_libraries(_falcata_swig _falcata)
|
|
714
|
+
if(USE_WERROR AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
|
|
715
|
+
# The SWIG wrapper is GENERATED code: it legitimately wraps deprecated C API
|
|
716
|
+
# entry points (the deprecation is aimed at end users, not the binding) and
|
|
717
|
+
# inlines c_api.h helpers into JNI TUs where -Wformat-truncation fires.
|
|
718
|
+
# Same spirit as the vendored SYSTEM includes: -Werror gates our sources,
|
|
719
|
+
# not machine-produced ones.
|
|
720
|
+
target_compile_options(_falcata_swig PRIVATE -Wno-error)
|
|
721
|
+
endif()
|
|
722
|
+
set_target_properties(
|
|
723
|
+
_falcata_swig
|
|
724
|
+
PROPERTIES
|
|
725
|
+
# needed to ensure Linux build does not have lib prefix specified twice, e.g. liblib_falcata_swig
|
|
726
|
+
PREFIX ""
|
|
727
|
+
# needed in some versions of CMake for VS and MinGW builds to ensure output dll has lib prefix
|
|
728
|
+
OUTPUT_NAME "lib_falcata_swig"
|
|
729
|
+
)
|
|
730
|
+
if(WIN32)
|
|
731
|
+
set(FLC_SWIG_LIB_DESTINATION_PATH "${FLC_SWIG_DESTINATION_DIR}/lib_falcata_swig.dll")
|
|
732
|
+
if(MINGW OR CYGWIN)
|
|
733
|
+
set(FLC_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/lib_falcata.dll")
|
|
734
|
+
set(FLC_SWIG_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/lib_falcata_swig.dll")
|
|
735
|
+
else()
|
|
736
|
+
set(FLC_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/Release/lib_falcata.dll")
|
|
737
|
+
set(FLC_SWIG_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/Release/lib_falcata_swig.dll")
|
|
738
|
+
endif()
|
|
739
|
+
elseif(APPLE)
|
|
740
|
+
set(FLC_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/lib_falcata.dylib")
|
|
741
|
+
set(FLC_SWIG_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/lib_falcata_swig.jnilib")
|
|
742
|
+
set(FLC_SWIG_LIB_DESTINATION_PATH "${FLC_SWIG_DESTINATION_DIR}/lib_falcata_swig.dylib")
|
|
743
|
+
else()
|
|
744
|
+
set(FLC_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/lib_falcata.so")
|
|
745
|
+
set(FLC_SWIG_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/lib_falcata_swig.so")
|
|
746
|
+
set(FLC_SWIG_LIB_DESTINATION_PATH "${FLC_SWIG_DESTINATION_DIR}/lib_falcata_swig.so")
|
|
747
|
+
endif()
|
|
748
|
+
add_custom_command(
|
|
749
|
+
TARGET _falcata_swig
|
|
750
|
+
POST_BUILD
|
|
751
|
+
COMMAND "${Java_JAVAC_EXECUTABLE}" -d . java/*.java
|
|
752
|
+
COMMAND
|
|
753
|
+
"${CMAKE_COMMAND}"
|
|
754
|
+
-E
|
|
755
|
+
copy_if_different
|
|
756
|
+
"${FLC_LIB_SOURCE_PATH}"
|
|
757
|
+
"${FLC_SWIG_DESTINATION_DIR}"
|
|
758
|
+
COMMAND
|
|
759
|
+
"${CMAKE_COMMAND}"
|
|
760
|
+
-E
|
|
761
|
+
copy_if_different
|
|
762
|
+
"${FLC_SWIG_LIB_SOURCE_PATH}"
|
|
763
|
+
"${FLC_SWIG_LIB_DESTINATION_PATH}"
|
|
764
|
+
COMMAND "${Java_JAR_EXECUTABLE}" -cf falcatalib.jar ai
|
|
765
|
+
)
|
|
766
|
+
endif()
|
|
767
|
+
|
|
768
|
+
if(USE_MPI)
|
|
769
|
+
target_link_libraries(falcata_objs PUBLIC ${MPI_CXX_LIBRARIES})
|
|
770
|
+
endif()
|
|
771
|
+
|
|
772
|
+
if(USE_OPENMP)
|
|
773
|
+
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
774
|
+
target_link_libraries(falcata_objs PUBLIC OpenMP::OpenMP_CXX)
|
|
775
|
+
# c_api headers also includes OpenMP headers, thus compiling
|
|
776
|
+
# falcata_capi_objs needs include directory for OpenMP.
|
|
777
|
+
# Specifying OpenMP in target_link_libraries will get include directory
|
|
778
|
+
# requirements for compilation.
|
|
779
|
+
# This uses CMake's Transitive Usage Requirements. Refer to CMake doc:
|
|
780
|
+
# https://cmake.org/cmake/help/v3.16/manual/cmake-buildsystem.7.html#transitive-usage-requirements
|
|
781
|
+
target_link_libraries(falcata_capi_objs PUBLIC OpenMP::OpenMP_CXX)
|
|
782
|
+
endif()
|
|
783
|
+
endif()
|
|
784
|
+
|
|
785
|
+
if(USE_GPU)
|
|
786
|
+
target_link_libraries(falcata_objs PUBLIC ${OpenCL_LIBRARY} ${Boost_LIBRARIES})
|
|
787
|
+
endif()
|
|
788
|
+
|
|
789
|
+
if(USE_CUDA AND USE_NCCL)
|
|
790
|
+
target_link_libraries(falcata_objs PUBLIC NCCL::NCCL)
|
|
791
|
+
endif()
|
|
792
|
+
|
|
793
|
+
if(USE_CUDA)
|
|
794
|
+
# NVRTC + CUDA driver API for the runtime construct-kernel JIT
|
|
795
|
+
# (src/treelearner/cuda/cuda_construct_jit.cpp). Both are optional at runtime:
|
|
796
|
+
# if NVRTC compile fails the construct dispatch falls back to the AOT kernel.
|
|
797
|
+
target_link_libraries(falcata_objs PUBLIC CUDA::nvrtc CUDA::cuda_driver)
|
|
798
|
+
endif()
|
|
799
|
+
|
|
800
|
+
if(USE_ROCM)
|
|
801
|
+
find_package(rccl)
|
|
802
|
+
target_link_libraries(falcata_objs PUBLIC ${RCCL_LIBRARY})
|
|
803
|
+
endif()
|
|
804
|
+
|
|
805
|
+
if(__INTEGRATE_OPENCL)
|
|
806
|
+
# targets OpenCL and Boost are added in IntegratedOpenCL.cmake
|
|
807
|
+
add_dependencies(falcata_objs OpenCL Boost)
|
|
808
|
+
# variables INTEGRATED_OPENCL_* are set in IntegratedOpenCL.cmake
|
|
809
|
+
target_include_directories(falcata_objs PRIVATE ${INTEGRATED_OPENCL_INCLUDES})
|
|
810
|
+
target_compile_definitions(falcata_objs PRIVATE ${INTEGRATED_OPENCL_DEFINITIONS})
|
|
811
|
+
target_link_libraries(falcata_objs PUBLIC ${INTEGRATED_OPENCL_LIBRARIES} ${CMAKE_DL_LIBS})
|
|
812
|
+
endif()
|
|
813
|
+
|
|
814
|
+
if(USE_CUDA)
|
|
815
|
+
|
|
816
|
+
set_target_properties(
|
|
817
|
+
falcata_objs
|
|
818
|
+
PROPERTIES
|
|
819
|
+
CUDA_ARCHITECTURES "${CUDA_ARCHS}"
|
|
820
|
+
CUDA_SEPARABLE_COMPILATION ON
|
|
821
|
+
)
|
|
822
|
+
|
|
823
|
+
set_target_properties(
|
|
824
|
+
_falcata
|
|
825
|
+
PROPERTIES
|
|
826
|
+
CUDA_ARCHITECTURES "${CUDA_ARCHS}"
|
|
827
|
+
CUDA_RESOLVE_DEVICE_SYMBOLS ON
|
|
828
|
+
)
|
|
829
|
+
|
|
830
|
+
if(BUILD_CLI)
|
|
831
|
+
set_target_properties(
|
|
832
|
+
falcata
|
|
833
|
+
PROPERTIES
|
|
834
|
+
CUDA_ARCHITECTURES "${CUDA_ARCHS}"
|
|
835
|
+
CUDA_RESOLVE_DEVICE_SYMBOLS ON
|
|
836
|
+
)
|
|
837
|
+
endif()
|
|
838
|
+
endif()
|
|
839
|
+
|
|
840
|
+
if(USE_ROCM)
|
|
841
|
+
target_link_libraries(falcata_objs PUBLIC hip::host)
|
|
842
|
+
endif()
|
|
843
|
+
|
|
844
|
+
if(WIN32)
|
|
845
|
+
if(MINGW OR CYGWIN)
|
|
846
|
+
target_link_libraries(falcata_objs PUBLIC ws2_32 iphlpapi)
|
|
847
|
+
endif()
|
|
848
|
+
endif()
|
|
849
|
+
|
|
850
|
+
if(__BUILD_FOR_R)
|
|
851
|
+
# utils/log.h and capi uses R headers, thus both object libraries need to link
|
|
852
|
+
# with R lib.
|
|
853
|
+
if(MSVC)
|
|
854
|
+
set(R_LIB ${LIBR_MSVC_CORE_LIBRARY})
|
|
855
|
+
else()
|
|
856
|
+
set(R_LIB ${LIBR_CORE_LIBRARY})
|
|
857
|
+
endif()
|
|
858
|
+
target_link_libraries(falcata_objs PUBLIC ${R_LIB})
|
|
859
|
+
target_link_libraries(falcata_capi_objs PUBLIC ${R_LIB})
|
|
860
|
+
endif()
|
|
861
|
+
|
|
862
|
+
#-- Google C++ tests
|
|
863
|
+
if(BUILD_CPP_TEST)
|
|
864
|
+
find_package(GTest CONFIG)
|
|
865
|
+
if(NOT GTEST_FOUND)
|
|
866
|
+
message(STATUS "Did not find Google Test in the system root. Fetching Google Test now...")
|
|
867
|
+
include(FetchContent)
|
|
868
|
+
# lint_cmake: -readability/wonkycase
|
|
869
|
+
fetchcontent_declare(
|
|
870
|
+
# lint_cmake: +readability/wonkycase
|
|
871
|
+
googletest
|
|
872
|
+
GIT_REPOSITORY https://github.com/google/googletest.git
|
|
873
|
+
GIT_TAG v1.14.0
|
|
874
|
+
)
|
|
875
|
+
# lint_cmake: -readability/wonkycase
|
|
876
|
+
FetchContent_MakeAvailable(googletest)
|
|
877
|
+
# lint_cmake: +readability/wonkycase
|
|
878
|
+
add_library(GTest::GTest ALIAS gtest)
|
|
879
|
+
endif()
|
|
880
|
+
|
|
881
|
+
set(Falcata_TEST_HEADER_DIR ${PROJECT_SOURCE_DIR}/tests/cpp_tests)
|
|
882
|
+
include_directories(${Falcata_TEST_HEADER_DIR})
|
|
883
|
+
|
|
884
|
+
set(
|
|
885
|
+
CPP_TEST_SOURCES
|
|
886
|
+
tests/cpp_tests/test_array_args.cpp
|
|
887
|
+
tests/cpp_tests/test_arrow.cpp
|
|
888
|
+
tests/cpp_tests/test_arrow_deprecated.cpp
|
|
889
|
+
tests/cpp_tests/test_byte_buffer.cpp
|
|
890
|
+
tests/cpp_tests/test_chunked_array.cpp
|
|
891
|
+
tests/cpp_tests/test_common.cpp
|
|
892
|
+
tests/cpp_tests/test_main.cpp
|
|
893
|
+
tests/cpp_tests/test_serialize.cpp
|
|
894
|
+
tests/cpp_tests/test_single_row.cpp
|
|
895
|
+
tests/cpp_tests/test_stream.cpp
|
|
896
|
+
tests/cpp_tests/testutils.cpp
|
|
897
|
+
)
|
|
898
|
+
if(MSVC)
|
|
899
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /permissive-")
|
|
900
|
+
endif()
|
|
901
|
+
add_executable(testfalcata ${CPP_TEST_SOURCES})
|
|
902
|
+
target_link_libraries(testfalcata PRIVATE falcata_objs falcata_capi_objs nanoarrow_static GTest::GTest)
|
|
903
|
+
endif()
|
|
904
|
+
|
|
905
|
+
if(BUILD_CLI)
|
|
906
|
+
install(
|
|
907
|
+
TARGETS falcata
|
|
908
|
+
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
|
|
909
|
+
)
|
|
910
|
+
endif()
|
|
911
|
+
|
|
912
|
+
if(__BUILD_FOR_PYTHON)
|
|
913
|
+
# must match the Python package directory name (python-package/<name>)
|
|
914
|
+
set(CMAKE_INSTALL_PREFIX "falcata")
|
|
915
|
+
endif()
|
|
916
|
+
|
|
917
|
+
# The macOS linker puts an absolute path to linked libraries in lib_falcata.dylib.
|
|
918
|
+
# This block overrides that information for LightGBM's OpenMP dependency, to allow
|
|
919
|
+
# finding that library in more places.
|
|
920
|
+
#
|
|
921
|
+
# This reduces the risk of runtime issues resulting from multiple {libgomp,libiomp,libomp}.dylib being loaded.
|
|
922
|
+
#
|
|
923
|
+
if(APPLE AND USE_OPENMP AND NOT BUILD_STATIC_LIB)
|
|
924
|
+
# store path to {libgomp,libiomp,libomp}.dylib found at build time in a variable
|
|
925
|
+
get_target_property(
|
|
926
|
+
OpenMP_LIBRARY_LOCATION
|
|
927
|
+
OpenMP::OpenMP_CXX
|
|
928
|
+
INTERFACE_LINK_LIBRARIES
|
|
929
|
+
)
|
|
930
|
+
# get just the filename of that path
|
|
931
|
+
# (to deal with the possibility that it might be 'libomp.dylib' or 'libgomp.dylib' or 'libiomp.dylib')
|
|
932
|
+
get_filename_component(
|
|
933
|
+
OpenMP_LIBRARY_NAME
|
|
934
|
+
${OpenMP_LIBRARY_LOCATION}
|
|
935
|
+
NAME
|
|
936
|
+
)
|
|
937
|
+
# get directory of that path
|
|
938
|
+
get_filename_component(
|
|
939
|
+
OpenMP_LIBRARY_DIR
|
|
940
|
+
${OpenMP_LIBRARY_LOCATION}
|
|
941
|
+
DIRECTORY
|
|
942
|
+
)
|
|
943
|
+
# get exact name of the library in a variable
|
|
944
|
+
get_target_property(
|
|
945
|
+
__LIB_FALCATA_OUTPUT_NAME
|
|
946
|
+
_falcata
|
|
947
|
+
OUTPUT_NAME
|
|
948
|
+
)
|
|
949
|
+
if(NOT __LIB_FALCATA_OUTPUT_NAME)
|
|
950
|
+
set(__LIB_FALCATA_OUTPUT_NAME "lib_falcata")
|
|
951
|
+
endif()
|
|
952
|
+
|
|
953
|
+
if(CMAKE_SHARED_LIBRARY_SUFFIX_CXX)
|
|
954
|
+
set(
|
|
955
|
+
__LIB_FALCATA_FILENAME "${__LIB_FALCATA_OUTPUT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX_CXX}"
|
|
956
|
+
CACHE INTERNAL "falcata shared library filename"
|
|
957
|
+
)
|
|
958
|
+
else()
|
|
959
|
+
set(
|
|
960
|
+
__LIB_FALCATA_FILENAME "${__LIB_FALCATA_OUTPUT_NAME}.dylib"
|
|
961
|
+
CACHE INTERNAL "falcata shared library filename"
|
|
962
|
+
)
|
|
963
|
+
endif()
|
|
964
|
+
|
|
965
|
+
# Override the absolute path to OpenMP with a relative one using @rpath.
|
|
966
|
+
#
|
|
967
|
+
# This also ensures that if a {libgomp,libiomp,libomp}.dylib has already been loaded, it'll just use that.
|
|
968
|
+
add_custom_command(
|
|
969
|
+
TARGET _falcata
|
|
970
|
+
POST_BUILD
|
|
971
|
+
COMMAND
|
|
972
|
+
install_name_tool
|
|
973
|
+
-change
|
|
974
|
+
${OpenMP_LIBRARY_LOCATION}
|
|
975
|
+
"@rpath/${OpenMP_LIBRARY_NAME}"
|
|
976
|
+
"${__LIB_FALCATA_FILENAME}"
|
|
977
|
+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
978
|
+
COMMENT "Replacing hard-coded OpenMP install_name with '@rpath/${OpenMP_LIBRARY_NAME}'..."
|
|
979
|
+
)
|
|
980
|
+
# add RPATH entries to ensure the loader looks in the following, in the following order:
|
|
981
|
+
#
|
|
982
|
+
# - (R-only) ${LIBR_LIBS_DIR} (wherever R for macOS stores vendored third-party libraries)
|
|
983
|
+
# - ${OpenMP_LIBRARY_DIR} (wherever find_package(OpenMP) found OpenMP at build time)
|
|
984
|
+
# - /opt/homebrew/opt/libomp/lib (where 'brew install' / 'brew link' puts libomp.dylib)
|
|
985
|
+
# - /opt/local/lib/libomp (where 'port install' puts libomp.dylib)
|
|
986
|
+
#
|
|
987
|
+
|
|
988
|
+
# with some compilers, OpenMP ships with the compiler (e.g. libgomp with gcc)
|
|
989
|
+
list(APPEND __omp_install_rpaths "${OpenMP_LIBRARY_DIR}")
|
|
990
|
+
|
|
991
|
+
# with clang, libomp doesn't ship with the compiler and might be supplied separately
|
|
992
|
+
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
993
|
+
list(
|
|
994
|
+
APPEND __omp_install_rpaths
|
|
995
|
+
"/opt/homebrew/opt/libomp/lib"
|
|
996
|
+
"/opt/local/lib/libomp"
|
|
997
|
+
)
|
|
998
|
+
# It appears that CRAN's macOS binaries compiled with -fopenmp have install names
|
|
999
|
+
# of the form:
|
|
1000
|
+
#
|
|
1001
|
+
# /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libomp.dylib
|
|
1002
|
+
#
|
|
1003
|
+
# That corresponds to the libomp.dylib that ships with the R framework for macOS, available
|
|
1004
|
+
# from https://cran.r-project.org/bin/macosx/.
|
|
1005
|
+
#
|
|
1006
|
+
# That absolute-path install name leads to that library being loaded unconditionally.
|
|
1007
|
+
#
|
|
1008
|
+
# That can result in e.g. 'library(data.table)' loading R's libomp.dylib and 'library(falcata)' loading
|
|
1009
|
+
# Homebrew's. Having 2 loaded in the same process can lead to segfaults and unpredictable behavior.
|
|
1010
|
+
#
|
|
1011
|
+
# This can't be easily avoided by forcing R-package builds in LightGBM to use R's libomp.dylib
|
|
1012
|
+
# at build time... LightGBM's CMake uses find_package(OpenMP), and R for macOS only provides the
|
|
1013
|
+
# library, not CMake config files for it.
|
|
1014
|
+
#
|
|
1015
|
+
# Best we can do, to allow CMake-based builds of the R-package here to continue to work
|
|
1016
|
+
# alongside CRAN-prepared binaries of other packages with OpenMP dependencies, is to
|
|
1017
|
+
# ensure that R's library directory is the first place the loader searches for
|
|
1018
|
+
# libomp.dylib when clang is used.
|
|
1019
|
+
#
|
|
1020
|
+
# ref: https://github.com/lightgbm-org/LightGBM/issues/6628
|
|
1021
|
+
#
|
|
1022
|
+
if(__BUILD_FOR_R)
|
|
1023
|
+
list(PREPEND __omp_install_rpaths "${LIBR_LIBS_DIR}")
|
|
1024
|
+
endif()
|
|
1025
|
+
endif()
|
|
1026
|
+
set_target_properties(
|
|
1027
|
+
_falcata
|
|
1028
|
+
PROPERTIES
|
|
1029
|
+
BUILD_WITH_INSTALL_RPATH TRUE
|
|
1030
|
+
INSTALL_RPATH "${__omp_install_rpaths}"
|
|
1031
|
+
INSTALL_RPATH_USE_LINK_PATH FALSE
|
|
1032
|
+
)
|
|
1033
|
+
endif()
|
|
1034
|
+
|
|
1035
|
+
install(
|
|
1036
|
+
TARGETS _falcata
|
|
1037
|
+
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
|
|
1038
|
+
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
|
|
1039
|
+
ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
|
|
1040
|
+
)
|
|
1041
|
+
|
|
1042
|
+
if(INSTALL_HEADERS)
|
|
1043
|
+
install(
|
|
1044
|
+
DIRECTORY ${Falcata_HEADER_DIR}/Falcata
|
|
1045
|
+
DESTINATION ${CMAKE_INSTALL_PREFIX}/include
|
|
1046
|
+
)
|
|
1047
|
+
install(
|
|
1048
|
+
FILES ${FAST_DOUBLE_PARSER_INCLUDE_DIR}/fast_double_parser.h
|
|
1049
|
+
DESTINATION ${CMAKE_INSTALL_PREFIX}/include/Falcata/utils
|
|
1050
|
+
)
|
|
1051
|
+
install(
|
|
1052
|
+
DIRECTORY ${FMT_INCLUDE_DIR}/
|
|
1053
|
+
DESTINATION ${CMAKE_INSTALL_PREFIX}/include/Falcata/utils
|
|
1054
|
+
FILES_MATCHING PATTERN "*.h"
|
|
1055
|
+
)
|
|
1056
|
+
endif()
|