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.
Files changed (825) hide show
  1. falcata-1.0.0/CMakeLists.txt +1056 -0
  2. falcata-1.0.0/LICENSE +23 -0
  3. falcata-1.0.0/NOTICE +41 -0
  4. falcata-1.0.0/PKG-INFO +184 -0
  5. falcata-1.0.0/README.rst +131 -0
  6. falcata-1.0.0/cmake/IntegratedOpenCL.cmake +217 -0
  7. falcata-1.0.0/cmake/Sanitizer.cmake +51 -0
  8. falcata-1.0.0/cmake/modules/FindLibR.cmake +267 -0
  9. falcata-1.0.0/cmake/modules/FindNCCL.cmake +84 -0
  10. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/accumulate.hpp +193 -0
  11. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/adjacent_difference.hpp +126 -0
  12. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/adjacent_find.hpp +169 -0
  13. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/all_of.hpp +42 -0
  14. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/any_of.hpp +46 -0
  15. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/binary_search.hpp +43 -0
  16. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/copy.hpp +881 -0
  17. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/copy_if.hpp +67 -0
  18. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/copy_n.hpp +55 -0
  19. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/count.hpp +62 -0
  20. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/count_if.hpp +69 -0
  21. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/balanced_path.hpp +162 -0
  22. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/binary_find.hpp +133 -0
  23. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/compact.hpp +77 -0
  24. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/copy_on_device.hpp +199 -0
  25. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/copy_to_device.hpp +204 -0
  26. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/copy_to_host.hpp +207 -0
  27. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/count_if_with_ballot.hpp +78 -0
  28. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/count_if_with_reduce.hpp +87 -0
  29. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/count_if_with_threads.hpp +129 -0
  30. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/find_extrema.hpp +70 -0
  31. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/find_extrema_on_cpu.hpp +138 -0
  32. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/find_extrema_with_atomics.hpp +108 -0
  33. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/find_extrema_with_reduce.hpp +444 -0
  34. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/find_if_with_atomics.hpp +213 -0
  35. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/inplace_reduce.hpp +136 -0
  36. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/insertion_sort.hpp +165 -0
  37. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/merge_path.hpp +116 -0
  38. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/merge_sort_on_cpu.hpp +366 -0
  39. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/merge_sort_on_gpu.hpp +602 -0
  40. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/merge_with_merge_path.hpp +203 -0
  41. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/radix_sort.hpp +469 -0
  42. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/random_fill.hpp +57 -0
  43. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/reduce_by_key.hpp +119 -0
  44. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/reduce_by_key_with_scan.hpp +541 -0
  45. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/reduce_on_cpu.hpp +110 -0
  46. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/reduce_on_gpu.hpp +286 -0
  47. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/scan.hpp +45 -0
  48. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/scan_on_cpu.hpp +205 -0
  49. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/scan_on_gpu.hpp +330 -0
  50. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/search_all.hpp +86 -0
  51. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/serial_accumulate.hpp +56 -0
  52. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/serial_count_if.hpp +68 -0
  53. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/serial_find_extrema.hpp +87 -0
  54. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/serial_merge.hpp +97 -0
  55. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/serial_reduce.hpp +63 -0
  56. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/serial_reduce_by_key.hpp +106 -0
  57. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/detail/serial_scan.hpp +103 -0
  58. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/equal.hpp +62 -0
  59. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/equal_range.hpp +48 -0
  60. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/exclusive_scan.hpp +109 -0
  61. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/fill.hpp +313 -0
  62. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/fill_n.hpp +42 -0
  63. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/find.hpp +63 -0
  64. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/find_end.hpp +144 -0
  65. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/find_if.hpp +41 -0
  66. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/find_if_not.hpp +49 -0
  67. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/for_each.hpp +72 -0
  68. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/for_each_n.hpp +41 -0
  69. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/gather.hpp +91 -0
  70. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/generate.hpp +55 -0
  71. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/generate_n.hpp +37 -0
  72. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/includes.hpp +162 -0
  73. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/inclusive_scan.hpp +92 -0
  74. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/inner_product.hpp +103 -0
  75. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/inplace_merge.hpp +66 -0
  76. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/iota.hpp +54 -0
  77. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/is_partitioned.hpp +49 -0
  78. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/is_permutation.hpp +73 -0
  79. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/is_sorted.hpp +71 -0
  80. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/lexicographical_compare.hpp +126 -0
  81. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/lower_bound.hpp +50 -0
  82. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/max_element.hpp +82 -0
  83. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/merge.hpp +116 -0
  84. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/min_element.hpp +82 -0
  85. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/minmax_element.hpp +78 -0
  86. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/mismatch.hpp +98 -0
  87. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/next_permutation.hpp +175 -0
  88. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/none_of.hpp +42 -0
  89. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/nth_element.hpp +94 -0
  90. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/partial_sum.hpp +46 -0
  91. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/partition.hpp +45 -0
  92. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/partition_copy.hpp +72 -0
  93. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/partition_point.hpp +52 -0
  94. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/prev_permutation.hpp +175 -0
  95. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/random_shuffle.hpp +90 -0
  96. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/reduce.hpp +310 -0
  97. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/reduce_by_key.hpp +137 -0
  98. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/remove.hpp +60 -0
  99. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/remove_if.hpp +53 -0
  100. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/replace.hpp +96 -0
  101. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/replace_copy.hpp +70 -0
  102. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/reverse.hpp +80 -0
  103. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/reverse_copy.hpp +87 -0
  104. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/rotate.hpp +56 -0
  105. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/rotate_copy.hpp +43 -0
  106. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/scatter.hpp +107 -0
  107. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/scatter_if.hpp +131 -0
  108. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/search.hpp +80 -0
  109. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/search_n.hpp +146 -0
  110. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/set_difference.hpp +191 -0
  111. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/set_intersection.hpp +179 -0
  112. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/set_symmetric_difference.hpp +204 -0
  113. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/set_union.hpp +204 -0
  114. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/sort.hpp +207 -0
  115. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/sort_by_key.hpp +168 -0
  116. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/stable_partition.hpp +78 -0
  117. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/stable_sort.hpp +115 -0
  118. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/stable_sort_by_key.hpp +168 -0
  119. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/swap_ranges.hpp +52 -0
  120. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/transform.hpp +87 -0
  121. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/transform_if.hpp +123 -0
  122. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/transform_reduce.hpp +100 -0
  123. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/unique.hpp +73 -0
  124. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/unique_copy.hpp +175 -0
  125. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm/upper_bound.hpp +49 -0
  126. falcata-1.0.0/external_libs/compute/include/boost/compute/algorithm.hpp +94 -0
  127. falcata-1.0.0/external_libs/compute/include/boost/compute/allocator/buffer_allocator.hpp +118 -0
  128. falcata-1.0.0/external_libs/compute/include/boost/compute/allocator/pinned_allocator.hpp +53 -0
  129. falcata-1.0.0/external_libs/compute/include/boost/compute/allocator.hpp +21 -0
  130. falcata-1.0.0/external_libs/compute/include/boost/compute/async/future.hpp +196 -0
  131. falcata-1.0.0/external_libs/compute/include/boost/compute/async/wait.hpp +56 -0
  132. falcata-1.0.0/external_libs/compute/include/boost/compute/async/wait_guard.hpp +63 -0
  133. falcata-1.0.0/external_libs/compute/include/boost/compute/async.hpp +21 -0
  134. falcata-1.0.0/external_libs/compute/include/boost/compute/buffer.hpp +227 -0
  135. falcata-1.0.0/external_libs/compute/include/boost/compute/cl.hpp +52 -0
  136. falcata-1.0.0/external_libs/compute/include/boost/compute/cl_ext.hpp +22 -0
  137. falcata-1.0.0/external_libs/compute/include/boost/compute/closure.hpp +347 -0
  138. falcata-1.0.0/external_libs/compute/include/boost/compute/command_queue.hpp +2008 -0
  139. falcata-1.0.0/external_libs/compute/include/boost/compute/config.hpp +66 -0
  140. falcata-1.0.0/external_libs/compute/include/boost/compute/container/array.hpp +317 -0
  141. falcata-1.0.0/external_libs/compute/include/boost/compute/container/basic_string.hpp +331 -0
  142. falcata-1.0.0/external_libs/compute/include/boost/compute/container/detail/scalar.hpp +62 -0
  143. falcata-1.0.0/external_libs/compute/include/boost/compute/container/dynamic_bitset.hpp +237 -0
  144. falcata-1.0.0/external_libs/compute/include/boost/compute/container/flat_map.hpp +406 -0
  145. falcata-1.0.0/external_libs/compute/include/boost/compute/container/flat_set.hpp +339 -0
  146. falcata-1.0.0/external_libs/compute/include/boost/compute/container/mapped_view.hpp +250 -0
  147. falcata-1.0.0/external_libs/compute/include/boost/compute/container/stack.hpp +81 -0
  148. falcata-1.0.0/external_libs/compute/include/boost/compute/container/string.hpp +25 -0
  149. falcata-1.0.0/external_libs/compute/include/boost/compute/container/valarray.hpp +500 -0
  150. falcata-1.0.0/external_libs/compute/include/boost/compute/container/vector.hpp +823 -0
  151. falcata-1.0.0/external_libs/compute/include/boost/compute/container.hpp +27 -0
  152. falcata-1.0.0/external_libs/compute/include/boost/compute/context.hpp +245 -0
  153. falcata-1.0.0/external_libs/compute/include/boost/compute/core.hpp +33 -0
  154. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/assert_cl_success.hpp +24 -0
  155. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/buffer_value.hpp +180 -0
  156. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/cl_versions.hpp +64 -0
  157. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/device_ptr.hpp +215 -0
  158. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/diagnostic.hpp +112 -0
  159. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/duration.hpp +54 -0
  160. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/get_object_info.hpp +284 -0
  161. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/getenv.hpp +36 -0
  162. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/global_static.hpp +37 -0
  163. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/is_buffer_iterator.hpp +30 -0
  164. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/is_contiguous_iterator.hpp +118 -0
  165. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/iterator_plus_distance.hpp +53 -0
  166. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/iterator_range_size.hpp +44 -0
  167. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/iterator_traits.hpp +35 -0
  168. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/literal.hpp +53 -0
  169. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/lru_cache.hpp +139 -0
  170. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/meta_kernel.hpp +1145 -0
  171. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/mpl_vector_to_tuple.hpp +65 -0
  172. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/nvidia_compute_capability.hpp +61 -0
  173. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/parameter_cache.hpp +223 -0
  174. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/path.hpp +73 -0
  175. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/print_range.hpp +82 -0
  176. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/read_write_single_value.hpp +78 -0
  177. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/sha1.hpp +58 -0
  178. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/variadic_macros.hpp +35 -0
  179. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/vendor.hpp +50 -0
  180. falcata-1.0.0/external_libs/compute/include/boost/compute/detail/work_size.hpp +37 -0
  181. falcata-1.0.0/external_libs/compute/include/boost/compute/device.hpp +673 -0
  182. falcata-1.0.0/external_libs/compute/include/boost/compute/event.hpp +338 -0
  183. falcata-1.0.0/external_libs/compute/include/boost/compute/exception/context_error.hpp +88 -0
  184. falcata-1.0.0/external_libs/compute/include/boost/compute/exception/no_device_found.hpp +48 -0
  185. falcata-1.0.0/external_libs/compute/include/boost/compute/exception/opencl_error.hpp +158 -0
  186. falcata-1.0.0/external_libs/compute/include/boost/compute/exception/program_build_failure.hpp +58 -0
  187. falcata-1.0.0/external_libs/compute/include/boost/compute/exception/unsupported_extension_error.hpp +71 -0
  188. falcata-1.0.0/external_libs/compute/include/boost/compute/exception.hpp +23 -0
  189. falcata-1.0.0/external_libs/compute/include/boost/compute/experimental/clamp_range.hpp +49 -0
  190. falcata-1.0.0/external_libs/compute/include/boost/compute/experimental/malloc.hpp +51 -0
  191. falcata-1.0.0/external_libs/compute/include/boost/compute/experimental/sort_by_transform.hpp +66 -0
  192. falcata-1.0.0/external_libs/compute/include/boost/compute/experimental/tabulate.hpp +44 -0
  193. falcata-1.0.0/external_libs/compute/include/boost/compute/function.hpp +467 -0
  194. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/as.hpp +51 -0
  195. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/atomic.hpp +141 -0
  196. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/bind.hpp +261 -0
  197. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/common.hpp +29 -0
  198. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/convert.hpp +51 -0
  199. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/detail/macros.hpp +35 -0
  200. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/detail/nvidia_ballot.hpp +48 -0
  201. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/detail/nvidia_popcount.hpp +42 -0
  202. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/detail/unpack.hpp +143 -0
  203. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/field.hpp +86 -0
  204. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/geometry.hpp +32 -0
  205. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/get.hpp +76 -0
  206. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/hash.hpp +91 -0
  207. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/identity.hpp +64 -0
  208. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/integer.hpp +30 -0
  209. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/logical.hpp +208 -0
  210. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/math.hpp +80 -0
  211. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/operator.hpp +100 -0
  212. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/popcount.hpp +55 -0
  213. falcata-1.0.0/external_libs/compute/include/boost/compute/functional/relational.hpp +39 -0
  214. falcata-1.0.0/external_libs/compute/include/boost/compute/functional.hpp +34 -0
  215. falcata-1.0.0/external_libs/compute/include/boost/compute/image/image1d.hpp +204 -0
  216. falcata-1.0.0/external_libs/compute/include/boost/compute/image/image2d.hpp +262 -0
  217. falcata-1.0.0/external_libs/compute/include/boost/compute/image/image3d.hpp +265 -0
  218. falcata-1.0.0/external_libs/compute/include/boost/compute/image/image_format.hpp +135 -0
  219. falcata-1.0.0/external_libs/compute/include/boost/compute/image/image_object.hpp +170 -0
  220. falcata-1.0.0/external_libs/compute/include/boost/compute/image/image_sampler.hpp +221 -0
  221. falcata-1.0.0/external_libs/compute/include/boost/compute/image.hpp +25 -0
  222. falcata-1.0.0/external_libs/compute/include/boost/compute/image2d.hpp +12 -0
  223. falcata-1.0.0/external_libs/compute/include/boost/compute/image3d.hpp +12 -0
  224. falcata-1.0.0/external_libs/compute/include/boost/compute/image_format.hpp +12 -0
  225. falcata-1.0.0/external_libs/compute/include/boost/compute/image_sampler.hpp +12 -0
  226. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/eigen/core.hpp +72 -0
  227. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/eigen.hpp +16 -0
  228. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opencv/core.hpp +141 -0
  229. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opencv/highgui.hpp +33 -0
  230. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opencv/ocl.hpp +51 -0
  231. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opencv.hpp +17 -0
  232. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/acquire.hpp +100 -0
  233. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/cl_gl.hpp +22 -0
  234. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/cl_gl_ext.hpp +22 -0
  235. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/context.hpp +139 -0
  236. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/gl.hpp +20 -0
  237. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/opengl_buffer.hpp +106 -0
  238. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/opengl_renderbuffer.hpp +129 -0
  239. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl/opengl_texture.hpp +133 -0
  240. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/opengl.hpp +24 -0
  241. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/qt/qimage.hpp +69 -0
  242. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/qt/qpoint.hpp +20 -0
  243. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/qt/qpointf.hpp +20 -0
  244. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/qt/qtcore.hpp +18 -0
  245. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/qt/qtgui.hpp +16 -0
  246. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/qt/qvector.hpp +48 -0
  247. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/qt.hpp +17 -0
  248. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/vtk/bounds.hpp +59 -0
  249. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/vtk/data_array.hpp +65 -0
  250. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/vtk/matrix4x4.hpp +46 -0
  251. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/vtk/points.hpp +55 -0
  252. falcata-1.0.0/external_libs/compute/include/boost/compute/interop/vtk.hpp +19 -0
  253. falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/buffer_iterator.hpp +295 -0
  254. falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/constant_buffer_iterator.hpp +209 -0
  255. falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/constant_iterator.hpp +171 -0
  256. falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/counting_iterator.hpp +185 -0
  257. falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/detail/get_base_iterator_buffer.hpp +52 -0
  258. falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/detail/swizzle_iterator.hpp +188 -0
  259. falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/discard_iterator.hpp +170 -0
  260. falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/function_input_iterator.hpp +186 -0
  261. falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/permutation_iterator.hpp +192 -0
  262. falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/strided_iterator.hpp +298 -0
  263. falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/transform_iterator.hpp +227 -0
  264. falcata-1.0.0/external_libs/compute/include/boost/compute/iterator/zip_iterator.hpp +316 -0
  265. falcata-1.0.0/external_libs/compute/include/boost/compute/iterator.hpp +28 -0
  266. falcata-1.0.0/external_libs/compute/include/boost/compute/kernel.hpp +538 -0
  267. falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/context.hpp +364 -0
  268. falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/functional.hpp +597 -0
  269. falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/get.hpp +148 -0
  270. falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/make_pair.hpp +70 -0
  271. falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/make_tuple.hpp +127 -0
  272. falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/placeholder.hpp +28 -0
  273. falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/placeholders.hpp +93 -0
  274. falcata-1.0.0/external_libs/compute/include/boost/compute/lambda/result_of.hpp +113 -0
  275. falcata-1.0.0/external_libs/compute/include/boost/compute/lambda.hpp +22 -0
  276. falcata-1.0.0/external_libs/compute/include/boost/compute/memory/local_buffer.hpp +91 -0
  277. falcata-1.0.0/external_libs/compute/include/boost/compute/memory/svm_ptr.hpp +184 -0
  278. falcata-1.0.0/external_libs/compute/include/boost/compute/memory.hpp +21 -0
  279. falcata-1.0.0/external_libs/compute/include/boost/compute/memory_object.hpp +264 -0
  280. falcata-1.0.0/external_libs/compute/include/boost/compute/pipe.hpp +154 -0
  281. falcata-1.0.0/external_libs/compute/include/boost/compute/platform.hpp +258 -0
  282. falcata-1.0.0/external_libs/compute/include/boost/compute/program.hpp +799 -0
  283. falcata-1.0.0/external_libs/compute/include/boost/compute/random/bernoulli_distribution.hpp +100 -0
  284. falcata-1.0.0/external_libs/compute/include/boost/compute/random/default_random_engine.hpp +24 -0
  285. falcata-1.0.0/external_libs/compute/include/boost/compute/random/discrete_distribution.hpp +160 -0
  286. falcata-1.0.0/external_libs/compute/include/boost/compute/random/linear_congruential_engine.hpp +238 -0
  287. falcata-1.0.0/external_libs/compute/include/boost/compute/random/mersenne_twister_engine.hpp +254 -0
  288. falcata-1.0.0/external_libs/compute/include/boost/compute/random/normal_distribution.hpp +140 -0
  289. falcata-1.0.0/external_libs/compute/include/boost/compute/random/threefry_engine.hpp +318 -0
  290. falcata-1.0.0/external_libs/compute/include/boost/compute/random/uniform_int_distribution.hpp +119 -0
  291. falcata-1.0.0/external_libs/compute/include/boost/compute/random/uniform_real_distribution.hpp +116 -0
  292. falcata-1.0.0/external_libs/compute/include/boost/compute/random.hpp +28 -0
  293. falcata-1.0.0/external_libs/compute/include/boost/compute/source.hpp +12 -0
  294. falcata-1.0.0/external_libs/compute/include/boost/compute/svm.hpp +72 -0
  295. falcata-1.0.0/external_libs/compute/include/boost/compute/system.hpp +288 -0
  296. falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/common_type.hpp +55 -0
  297. falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/detail/capture_traits.hpp +33 -0
  298. falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/is_device_iterator.hpp +39 -0
  299. falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/is_fundamental.hpp +58 -0
  300. falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/is_vector_type.hpp +38 -0
  301. falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/make_vector_type.hpp +71 -0
  302. falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/result_of.hpp +39 -0
  303. falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/scalar_type.hpp +72 -0
  304. falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/type_definition.hpp +42 -0
  305. falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/type_name.hpp +124 -0
  306. falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits/vector_size.hpp +65 -0
  307. falcata-1.0.0/external_libs/compute/include/boost/compute/type_traits.hpp +25 -0
  308. falcata-1.0.0/external_libs/compute/include/boost/compute/types/builtin.hpp +12 -0
  309. falcata-1.0.0/external_libs/compute/include/boost/compute/types/complex.hpp +196 -0
  310. falcata-1.0.0/external_libs/compute/include/boost/compute/types/fundamental.hpp +217 -0
  311. falcata-1.0.0/external_libs/compute/include/boost/compute/types/pair.hpp +117 -0
  312. falcata-1.0.0/external_libs/compute/include/boost/compute/types/size_t.hpp +60 -0
  313. falcata-1.0.0/external_libs/compute/include/boost/compute/types/struct.hpp +173 -0
  314. falcata-1.0.0/external_libs/compute/include/boost/compute/types/tuple.hpp +220 -0
  315. falcata-1.0.0/external_libs/compute/include/boost/compute/types.hpp +25 -0
  316. falcata-1.0.0/external_libs/compute/include/boost/compute/user_event.hpp +88 -0
  317. falcata-1.0.0/external_libs/compute/include/boost/compute/utility/dim.hpp +76 -0
  318. falcata-1.0.0/external_libs/compute/include/boost/compute/utility/extents.hpp +164 -0
  319. falcata-1.0.0/external_libs/compute/include/boost/compute/utility/invoke.hpp +71 -0
  320. falcata-1.0.0/external_libs/compute/include/boost/compute/utility/program_cache.hpp +172 -0
  321. falcata-1.0.0/external_libs/compute/include/boost/compute/utility/source.hpp +39 -0
  322. falcata-1.0.0/external_libs/compute/include/boost/compute/utility/wait_list.hpp +217 -0
  323. falcata-1.0.0/external_libs/compute/include/boost/compute/utility.hpp +21 -0
  324. falcata-1.0.0/external_libs/compute/include/boost/compute/version.hpp +18 -0
  325. falcata-1.0.0/external_libs/compute/include/boost/compute/wait_list.hpp +12 -0
  326. falcata-1.0.0/external_libs/compute/include/boost/compute.hpp +44 -0
  327. falcata-1.0.0/external_libs/eigen/CMakeLists.txt +653 -0
  328. falcata-1.0.0/external_libs/eigen/Eigen/Cholesky +45 -0
  329. falcata-1.0.0/external_libs/eigen/Eigen/Core +384 -0
  330. falcata-1.0.0/external_libs/eigen/Eigen/Dense +7 -0
  331. falcata-1.0.0/external_libs/eigen/Eigen/Eigenvalues +60 -0
  332. falcata-1.0.0/external_libs/eigen/Eigen/Geometry +59 -0
  333. falcata-1.0.0/external_libs/eigen/Eigen/Householder +29 -0
  334. falcata-1.0.0/external_libs/eigen/Eigen/Jacobi +32 -0
  335. falcata-1.0.0/external_libs/eigen/Eigen/LU +47 -0
  336. falcata-1.0.0/external_libs/eigen/Eigen/QR +50 -0
  337. falcata-1.0.0/external_libs/eigen/Eigen/SVD +50 -0
  338. falcata-1.0.0/external_libs/eigen/Eigen/src/Cholesky/LDLT.h +688 -0
  339. falcata-1.0.0/external_libs/eigen/Eigen/src/Cholesky/LLT.h +558 -0
  340. falcata-1.0.0/external_libs/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
  341. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/ArithmeticSequence.h +413 -0
  342. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Array.h +417 -0
  343. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/ArrayBase.h +226 -0
  344. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/ArrayWrapper.h +209 -0
  345. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Assign.h +90 -0
  346. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/AssignEvaluator.h +1010 -0
  347. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Assign_MKL.h +178 -0
  348. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/BandMatrix.h +353 -0
  349. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Block.h +448 -0
  350. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/BooleanRedux.h +162 -0
  351. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CommaInitializer.h +164 -0
  352. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/ConditionEstimator.h +175 -0
  353. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CoreEvaluators.h +1741 -0
  354. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CoreIterators.h +132 -0
  355. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CwiseBinaryOp.h +183 -0
  356. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
  357. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CwiseTernaryOp.h +197 -0
  358. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CwiseUnaryOp.h +103 -0
  359. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -0
  360. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/DenseBase.h +701 -0
  361. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/DenseCoeffsBase.h +685 -0
  362. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/DenseStorage.h +652 -0
  363. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Diagonal.h +258 -0
  364. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/DiagonalMatrix.h +391 -0
  365. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/DiagonalProduct.h +28 -0
  366. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Dot.h +318 -0
  367. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/EigenBase.h +160 -0
  368. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/ForceAlignedAccess.h +150 -0
  369. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Fuzzy.h +155 -0
  370. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/GeneralProduct.h +465 -0
  371. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/GenericPacketMath.h +1040 -0
  372. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/GlobalFunctions.h +194 -0
  373. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/IO.h +258 -0
  374. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/IndexedView.h +237 -0
  375. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Inverse.h +117 -0
  376. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Map.h +171 -0
  377. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/MapBase.h +310 -0
  378. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/MathFunctions.h +2057 -0
  379. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/MathFunctionsImpl.h +200 -0
  380. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Matrix.h +565 -0
  381. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/MatrixBase.h +547 -0
  382. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/NestByValue.h +85 -0
  383. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/NoAlias.h +109 -0
  384. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/NumTraits.h +335 -0
  385. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  386. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/PermutationMatrix.h +605 -0
  387. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/PlainObjectBase.h +1128 -0
  388. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Product.h +191 -0
  389. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/ProductEvaluators.h +1179 -0
  390. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Random.h +218 -0
  391. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Redux.h +515 -0
  392. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Ref.h +381 -0
  393. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Replicate.h +142 -0
  394. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Reshaped.h +454 -0
  395. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/ReturnByValue.h +119 -0
  396. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Reverse.h +217 -0
  397. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Select.h +164 -0
  398. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/SelfAdjointView.h +365 -0
  399. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
  400. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Solve.h +188 -0
  401. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/SolveTriangular.h +235 -0
  402. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/SolverBase.h +168 -0
  403. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/StableNorm.h +251 -0
  404. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/StlIterators.h +463 -0
  405. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Stride.h +116 -0
  406. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Swap.h +68 -0
  407. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Transpose.h +464 -0
  408. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Transpositions.h +386 -0
  409. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/TriangularMatrix.h +1001 -0
  410. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/VectorBlock.h +96 -0
  411. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/VectorwiseOp.h +784 -0
  412. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/Visitor.h +381 -0
  413. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX/Complex.h +372 -0
  414. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
  415. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
  416. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
  417. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  418. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
  419. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
  420. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  421. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
  422. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
  423. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  424. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  425. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  426. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
  427. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
  428. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  429. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
  430. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  431. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  432. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/Default/Half.h +942 -0
  433. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/Default/Settings.h +49 -0
  434. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  435. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
  436. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  437. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  438. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  439. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  440. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  441. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  442. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/NEON/Complex.h +584 -0
  443. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  444. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
  445. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
  446. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  447. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SSE/Complex.h +351 -0
  448. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
  449. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
  450. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
  451. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  452. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  453. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  454. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  455. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  456. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  457. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  458. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  459. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
  460. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
  461. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
  462. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
  463. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
  464. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
  465. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/functors/StlFunctors.h +166 -0
  466. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
  467. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
  468. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
  469. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
  470. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
  471. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
  472. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
  473. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
  474. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
  475. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/Parallelizer.h +180 -0
  476. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
  477. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
  478. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
  479. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
  480. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
  481. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
  482. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
  483. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
  484. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
  485. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
  486. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
  487. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
  488. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
  489. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/BlasUtil.h +583 -0
  490. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  491. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/Constants.h +563 -0
  492. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
  493. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
  494. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  495. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/IntegralConstant.h +272 -0
  496. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/MKL_support.h +137 -0
  497. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/Macros.h +1464 -0
  498. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/Memory.h +1163 -0
  499. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/Meta.h +812 -0
  500. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/NonMPL2.h +3 -0
  501. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
  502. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  503. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/StaticAssert.h +221 -0
  504. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  505. falcata-1.0.0/external_libs/eigen/Eigen/src/Core/util/XprHelper.h +856 -0
  506. falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
  507. falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
  508. falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
  509. falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
  510. falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
  511. falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
  512. falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
  513. falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
  514. falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/RealQZ.h +657 -0
  515. falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/RealSchur.h +558 -0
  516. falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
  517. falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
  518. falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
  519. falcata-1.0.0/external_libs/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
  520. falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/AlignedBox.h +486 -0
  521. falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/AngleAxis.h +247 -0
  522. falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/EulerAngles.h +114 -0
  523. falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Homogeneous.h +501 -0
  524. falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Hyperplane.h +282 -0
  525. falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/OrthoMethods.h +235 -0
  526. falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/ParametrizedLine.h +232 -0
  527. falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Quaternion.h +870 -0
  528. falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Rotation2D.h +199 -0
  529. falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/RotationBase.h +206 -0
  530. falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Scaling.h +188 -0
  531. falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Transform.h +1563 -0
  532. falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Translation.h +202 -0
  533. falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/Umeyama.h +166 -0
  534. falcata-1.0.0/external_libs/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  535. falcata-1.0.0/external_libs/eigen/Eigen/src/Householder/BlockHouseholder.h +110 -0
  536. falcata-1.0.0/external_libs/eigen/Eigen/src/Householder/Householder.h +176 -0
  537. falcata-1.0.0/external_libs/eigen/Eigen/src/Householder/HouseholderSequence.h +545 -0
  538. falcata-1.0.0/external_libs/eigen/Eigen/src/Jacobi/Jacobi.h +483 -0
  539. falcata-1.0.0/external_libs/eigen/Eigen/src/LU/Determinant.h +117 -0
  540. falcata-1.0.0/external_libs/eigen/Eigen/src/LU/FullPivLU.h +877 -0
  541. falcata-1.0.0/external_libs/eigen/Eigen/src/LU/InverseImpl.h +432 -0
  542. falcata-1.0.0/external_libs/eigen/Eigen/src/LU/PartialPivLU.h +624 -0
  543. falcata-1.0.0/external_libs/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
  544. falcata-1.0.0/external_libs/eigen/Eigen/src/LU/arch/InverseSize4.h +351 -0
  545. falcata-1.0.0/external_libs/eigen/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
  546. falcata-1.0.0/external_libs/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
  547. falcata-1.0.0/external_libs/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
  548. falcata-1.0.0/external_libs/eigen/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
  549. falcata-1.0.0/external_libs/eigen/Eigen/src/QR/HouseholderQR.h +434 -0
  550. falcata-1.0.0/external_libs/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
  551. falcata-1.0.0/external_libs/eigen/Eigen/src/SVD/BDCSVD.h +1366 -0
  552. falcata-1.0.0/external_libs/eigen/Eigen/src/SVD/JacobiSVD.h +812 -0
  553. falcata-1.0.0/external_libs/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
  554. falcata-1.0.0/external_libs/eigen/Eigen/src/SVD/SVDBase.h +376 -0
  555. falcata-1.0.0/external_libs/eigen/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
  556. falcata-1.0.0/external_libs/eigen/Eigen/src/misc/Image.h +82 -0
  557. falcata-1.0.0/external_libs/eigen/Eigen/src/misc/Kernel.h +79 -0
  558. falcata-1.0.0/external_libs/eigen/Eigen/src/misc/RealSvd2x2.h +55 -0
  559. falcata-1.0.0/external_libs/eigen/Eigen/src/misc/blas.h +440 -0
  560. falcata-1.0.0/external_libs/eigen/Eigen/src/misc/lapack.h +152 -0
  561. falcata-1.0.0/external_libs/eigen/Eigen/src/misc/lapacke.h +16292 -0
  562. falcata-1.0.0/external_libs/eigen/Eigen/src/misc/lapacke_mangling.h +17 -0
  563. falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
  564. falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
  565. falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/BlockMethods.h +1442 -0
  566. falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
  567. falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
  568. falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  569. falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
  570. falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
  571. falcata-1.0.0/external_libs/eigen/Eigen/src/plugins/ReshapedMethods.h +149 -0
  572. falcata-1.0.0/external_libs/fast_double_parser/CMakeLists.txt +101 -0
  573. falcata-1.0.0/external_libs/fast_double_parser/LICENSE +201 -0
  574. falcata-1.0.0/external_libs/fast_double_parser/LICENSE.BSL +25 -0
  575. falcata-1.0.0/external_libs/fast_double_parser/include/fast_double_parser.h +1270 -0
  576. falcata-1.0.0/external_libs/fmt/CMakeLists.txt +101 -0
  577. falcata-1.0.0/external_libs/fmt/LICENSE +27 -0
  578. falcata-1.0.0/external_libs/fmt/include/fmt/args.h +220 -0
  579. falcata-1.0.0/external_libs/fmt/include/fmt/base.h +2958 -0
  580. falcata-1.0.0/external_libs/fmt/include/fmt/chrono.h +2338 -0
  581. falcata-1.0.0/external_libs/fmt/include/fmt/color.h +610 -0
  582. falcata-1.0.0/external_libs/fmt/include/fmt/compile.h +551 -0
  583. falcata-1.0.0/external_libs/fmt/include/fmt/core.h +5 -0
  584. falcata-1.0.0/external_libs/fmt/include/fmt/format-inl.h +1949 -0
  585. falcata-1.0.0/external_libs/fmt/include/fmt/format.h +4232 -0
  586. falcata-1.0.0/external_libs/fmt/include/fmt/os.h +427 -0
  587. falcata-1.0.0/external_libs/fmt/include/fmt/ostream.h +166 -0
  588. falcata-1.0.0/external_libs/fmt/include/fmt/printf.h +633 -0
  589. falcata-1.0.0/external_libs/fmt/include/fmt/ranges.h +848 -0
  590. falcata-1.0.0/external_libs/fmt/include/fmt/std.h +726 -0
  591. falcata-1.0.0/external_libs/fmt/include/fmt/xchar.h +373 -0
  592. falcata-1.0.0/external_libs/nanoarrow/CMakeLists.txt +862 -0
  593. falcata-1.0.0/external_libs/nanoarrow/LICENSE.txt +208 -0
  594. falcata-1.0.0/external_libs/nanoarrow/NOTICE.txt +5 -0
  595. falcata-1.0.0/external_libs/nanoarrow/cmake/config.cmake.in +38 -0
  596. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/common/array.c +1672 -0
  597. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/common/array_stream.c +155 -0
  598. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/common/inline_array.h +1382 -0
  599. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/common/inline_buffer.h +730 -0
  600. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/common/inline_types.h +1046 -0
  601. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/common/schema.c +1729 -0
  602. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/common/utils.c +561 -0
  603. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/hpp/array_stream.hpp +204 -0
  604. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/hpp/buffer.hpp +85 -0
  605. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/hpp/exception.hpp +79 -0
  606. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/hpp/operators.hpp +62 -0
  607. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/hpp/unique.hpp +226 -0
  608. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/hpp/view.hpp +428 -0
  609. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/nanoarrow.h +1285 -0
  610. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/nanoarrow.hpp +30 -0
  611. falcata-1.0.0/external_libs/nanoarrow/src/nanoarrow/nanoarrow_config.h.in +39 -0
  612. falcata-1.0.0/falcata/VERSION.txt +1 -0
  613. falcata-1.0.0/falcata/__init__.py +82 -0
  614. falcata-1.0.0/falcata/__main__.py +78 -0
  615. falcata-1.0.0/falcata/basic.py +5780 -0
  616. falcata-1.0.0/falcata/callback.py +511 -0
  617. falcata-1.0.0/falcata/compat.py +223 -0
  618. falcata-1.0.0/falcata/dask.py +1749 -0
  619. falcata-1.0.0/falcata/engine.py +872 -0
  620. falcata-1.0.0/falcata/importers.py +575 -0
  621. falcata-1.0.0/falcata/libpath.py +95 -0
  622. falcata-1.0.0/falcata/plotting.py +849 -0
  623. falcata-1.0.0/falcata/py.typed +0 -0
  624. falcata-1.0.0/falcata/sklearn.py +1968 -0
  625. falcata-1.0.0/include/Falcata/application.h +93 -0
  626. falcata-1.0.0/include/Falcata/arrow.h +90 -0
  627. falcata-1.0.0/include/Falcata/bin.h +686 -0
  628. falcata-1.0.0/include/Falcata/boosting.h +355 -0
  629. falcata-1.0.0/include/Falcata/c_api.h +1809 -0
  630. falcata-1.0.0/include/Falcata/c_api_compat.h +122 -0
  631. falcata-1.0.0/include/Falcata/config.h +1398 -0
  632. falcata-1.0.0/include/Falcata/cuda/cuda_algorithms.hpp +668 -0
  633. falcata-1.0.0/include/Falcata/cuda/cuda_bagging.hpp +46 -0
  634. falcata-1.0.0/include/Falcata/cuda/cuda_column_data.hpp +221 -0
  635. falcata-1.0.0/include/Falcata/cuda/cuda_metadata.hpp +59 -0
  636. falcata-1.0.0/include/Falcata/cuda/cuda_metric.hpp +50 -0
  637. falcata-1.0.0/include/Falcata/cuda/cuda_nccl_topology.hpp +253 -0
  638. falcata-1.0.0/include/Falcata/cuda/cuda_objective_function.hpp +103 -0
  639. falcata-1.0.0/include/Falcata/cuda/cuda_random.hpp +77 -0
  640. falcata-1.0.0/include/Falcata/cuda/cuda_rocm_interop.h +71 -0
  641. falcata-1.0.0/include/Falcata/cuda/cuda_row_data.hpp +247 -0
  642. falcata-1.0.0/include/Falcata/cuda/cuda_split_info.hpp +130 -0
  643. falcata-1.0.0/include/Falcata/cuda/cuda_tree.hpp +306 -0
  644. falcata-1.0.0/include/Falcata/cuda/cuda_utils.hu +407 -0
  645. falcata-1.0.0/include/Falcata/cuda/pack_codecs.hpp +392 -0
  646. falcata-1.0.0/include/Falcata/cuda/vector_cudahost.h +99 -0
  647. falcata-1.0.0/include/Falcata/dataset.h +1155 -0
  648. falcata-1.0.0/include/Falcata/dataset_loader.h +111 -0
  649. falcata-1.0.0/include/Falcata/export.h +26 -0
  650. falcata-1.0.0/include/Falcata/falcata_plan.h +318 -0
  651. falcata-1.0.0/include/Falcata/feature_group.h +659 -0
  652. falcata-1.0.0/include/Falcata/meta.h +97 -0
  653. falcata-1.0.0/include/Falcata/metric.h +146 -0
  654. falcata-1.0.0/include/Falcata/network.h +318 -0
  655. falcata-1.0.0/include/Falcata/objective_function.h +142 -0
  656. falcata-1.0.0/include/Falcata/prediction_early_stop.h +37 -0
  657. falcata-1.0.0/include/Falcata/sample_strategy.h +91 -0
  658. falcata-1.0.0/include/Falcata/train_share_states.h +367 -0
  659. falcata-1.0.0/include/Falcata/tree.h +742 -0
  660. falcata-1.0.0/include/Falcata/tree_learner.h +119 -0
  661. falcata-1.0.0/include/Falcata/tree_split_math.h +95 -0
  662. falcata-1.0.0/include/Falcata/utils/array_args.h +200 -0
  663. falcata-1.0.0/include/Falcata/utils/binary_writer.h +59 -0
  664. falcata-1.0.0/include/Falcata/utils/byte_buffer.h +63 -0
  665. falcata-1.0.0/include/Falcata/utils/chunked_array.hpp +261 -0
  666. falcata-1.0.0/include/Falcata/utils/common.h +1304 -0
  667. falcata-1.0.0/include/Falcata/utils/file_io.h +79 -0
  668. falcata-1.0.0/include/Falcata/utils/json11.h +226 -0
  669. falcata-1.0.0/include/Falcata/utils/log.h +186 -0
  670. falcata-1.0.0/include/Falcata/utils/openmp_wrapper.h +136 -0
  671. falcata-1.0.0/include/Falcata/utils/pipeline_reader.h +72 -0
  672. falcata-1.0.0/include/Falcata/utils/random.h +118 -0
  673. falcata-1.0.0/include/Falcata/utils/text_reader.h +360 -0
  674. falcata-1.0.0/include/Falcata/utils/threading.h +201 -0
  675. falcata-1.0.0/include/Falcata/utils/yamc/alternate_shared_mutex.hpp +212 -0
  676. falcata-1.0.0/include/Falcata/utils/yamc/yamc_rwlock_sched.hpp +149 -0
  677. falcata-1.0.0/include/Falcata/utils/yamc/yamc_shared_lock.hpp +199 -0
  678. falcata-1.0.0/pyproject.toml +272 -0
  679. falcata-1.0.0/src/application/application.cpp +296 -0
  680. falcata-1.0.0/src/application/predictor.hpp +303 -0
  681. falcata-1.0.0/src/arrow/array.hpp +413 -0
  682. falcata-1.0.0/src/boosting/bagging.hpp +324 -0
  683. falcata-1.0.0/src/boosting/boosting.cpp +112 -0
  684. falcata-1.0.0/src/boosting/cuda/cuda_bagging.cu +118 -0
  685. falcata-1.0.0/src/boosting/cuda/cuda_score_updater.cpp +93 -0
  686. falcata-1.0.0/src/boosting/cuda/cuda_score_updater.cu +46 -0
  687. falcata-1.0.0/src/boosting/cuda/cuda_score_updater.hpp +66 -0
  688. falcata-1.0.0/src/boosting/cuda/nccl_gbdt.cpp +230 -0
  689. falcata-1.0.0/src/boosting/cuda/nccl_gbdt.hpp +152 -0
  690. falcata-1.0.0/src/boosting/cuda/nccl_gbdt_component.hpp +125 -0
  691. falcata-1.0.0/src/boosting/dart.hpp +212 -0
  692. falcata-1.0.0/src/boosting/falb.h +256 -0
  693. falcata-1.0.0/src/boosting/gbdt.cpp +896 -0
  694. falcata-1.0.0/src/boosting/gbdt.h +647 -0
  695. falcata-1.0.0/src/boosting/gbdt_model_binary.cpp +855 -0
  696. falcata-1.0.0/src/boosting/gbdt_model_text.cpp +667 -0
  697. falcata-1.0.0/src/boosting/gbdt_prediction.cpp +100 -0
  698. falcata-1.0.0/src/boosting/goss.hpp +173 -0
  699. falcata-1.0.0/src/boosting/prediction_early_stop.cpp +94 -0
  700. falcata-1.0.0/src/boosting/rf.hpp +237 -0
  701. falcata-1.0.0/src/boosting/sample_strategy.cpp +28 -0
  702. falcata-1.0.0/src/boosting/score_updater.hpp +129 -0
  703. falcata-1.0.0/src/c_api.cpp +3618 -0
  704. falcata-1.0.0/src/cuda/cuda_algorithms.cu +517 -0
  705. falcata-1.0.0/src/cuda/cuda_utils.cpp +66 -0
  706. falcata-1.0.0/src/io/bin.cpp +1077 -0
  707. falcata-1.0.0/src/io/config.cpp +643 -0
  708. falcata-1.0.0/src/io/config_auto.cpp +1116 -0
  709. falcata-1.0.0/src/io/cuda/cuda_column_data.cpp +313 -0
  710. falcata-1.0.0/src/io/cuda/cuda_column_data.cu +77 -0
  711. falcata-1.0.0/src/io/cuda/cuda_dense_binner.cpp +585 -0
  712. falcata-1.0.0/src/io/cuda/cuda_dense_binner.cu +289 -0
  713. falcata-1.0.0/src/io/cuda/cuda_dense_binner.hpp +61 -0
  714. falcata-1.0.0/src/io/cuda/cuda_metadata.cpp +79 -0
  715. falcata-1.0.0/src/io/cuda/cuda_row_data.cpp +903 -0
  716. falcata-1.0.0/src/io/cuda/cuda_tree.cpp +475 -0
  717. falcata-1.0.0/src/io/cuda/cuda_tree.cu +650 -0
  718. falcata-1.0.0/src/io/dataset.cpp +2356 -0
  719. falcata-1.0.0/src/io/dataset_loader.cpp +1592 -0
  720. falcata-1.0.0/src/io/dense_bin.hpp +668 -0
  721. falcata-1.0.0/src/io/file_io.cpp +74 -0
  722. falcata-1.0.0/src/io/json11.cpp +785 -0
  723. falcata-1.0.0/src/io/metadata.cpp +950 -0
  724. falcata-1.0.0/src/io/multi_val_dense_bin.hpp +360 -0
  725. falcata-1.0.0/src/io/multi_val_sparse_bin.hpp +449 -0
  726. falcata-1.0.0/src/io/parser.cpp +319 -0
  727. falcata-1.0.0/src/io/parser.hpp +136 -0
  728. falcata-1.0.0/src/io/sparse_bin.hpp +858 -0
  729. falcata-1.0.0/src/io/train_share_states.cpp +540 -0
  730. falcata-1.0.0/src/io/tree.cpp +1060 -0
  731. falcata-1.0.0/src/main.cpp +46 -0
  732. falcata-1.0.0/src/metric/binary_metric.hpp +389 -0
  733. falcata-1.0.0/src/metric/cuda/cuda_binary_metric.cpp +35 -0
  734. falcata-1.0.0/src/metric/cuda/cuda_binary_metric.hpp +73 -0
  735. falcata-1.0.0/src/metric/cuda/cuda_pointwise_metric.cpp +52 -0
  736. falcata-1.0.0/src/metric/cuda/cuda_pointwise_metric.cu +89 -0
  737. falcata-1.0.0/src/metric/cuda/cuda_pointwise_metric.hpp +46 -0
  738. falcata-1.0.0/src/metric/cuda/cuda_regression_metric.cpp +53 -0
  739. falcata-1.0.0/src/metric/cuda/cuda_regression_metric.hpp +216 -0
  740. falcata-1.0.0/src/metric/dcg_calculator.cpp +174 -0
  741. falcata-1.0.0/src/metric/map_metric.hpp +169 -0
  742. falcata-1.0.0/src/metric/metric.cpp +147 -0
  743. falcata-1.0.0/src/metric/multiclass_metric.hpp +440 -0
  744. falcata-1.0.0/src/metric/rank_metric.hpp +170 -0
  745. falcata-1.0.0/src/metric/regression_metric.hpp +433 -0
  746. falcata-1.0.0/src/metric/xentropy_metric.hpp +359 -0
  747. falcata-1.0.0/src/network/linker_topo.cpp +182 -0
  748. falcata-1.0.0/src/network/linkers.h +329 -0
  749. falcata-1.0.0/src/network/linkers_mpi.cpp +64 -0
  750. falcata-1.0.0/src/network/linkers_socket.cpp +241 -0
  751. falcata-1.0.0/src/network/network.cpp +332 -0
  752. falcata-1.0.0/src/network/socket_wrapper.hpp +333 -0
  753. falcata-1.0.0/src/objective/binary_objective.hpp +239 -0
  754. falcata-1.0.0/src/objective/cuda/cuda_binary_objective.cpp +58 -0
  755. falcata-1.0.0/src/objective/cuda/cuda_binary_objective.cu +230 -0
  756. falcata-1.0.0/src/objective/cuda/cuda_binary_objective.hpp +64 -0
  757. falcata-1.0.0/src/objective/cuda/cuda_multiclass_objective.cpp +63 -0
  758. falcata-1.0.0/src/objective/cuda/cuda_multiclass_objective.cu +109 -0
  759. falcata-1.0.0/src/objective/cuda/cuda_multiclass_objective.hpp +79 -0
  760. falcata-1.0.0/src/objective/cuda/cuda_rank_objective.cpp +69 -0
  761. falcata-1.0.0/src/objective/cuda/cuda_rank_objective.cu +1140 -0
  762. falcata-1.0.0/src/objective/cuda/cuda_rank_objective.hpp +127 -0
  763. falcata-1.0.0/src/objective/cuda/cuda_regression_objective.cpp +116 -0
  764. falcata-1.0.0/src/objective/cuda/cuda_regression_objective.cu +513 -0
  765. falcata-1.0.0/src/objective/cuda/cuda_regression_objective.hpp +186 -0
  766. falcata-1.0.0/src/objective/multi_regression_objective.hpp +168 -0
  767. falcata-1.0.0/src/objective/multiclass_objective.hpp +280 -0
  768. falcata-1.0.0/src/objective/objective_function.cpp +171 -0
  769. falcata-1.0.0/src/objective/rank_objective.hpp +466 -0
  770. falcata-1.0.0/src/objective/regression_objective.hpp +764 -0
  771. falcata-1.0.0/src/objective/xentropy_objective.hpp +317 -0
  772. falcata-1.0.0/src/treelearner/col_sampler.hpp +208 -0
  773. falcata-1.0.0/src/treelearner/cost_effective_gradient_boosting.hpp +175 -0
  774. falcata-1.0.0/src/treelearner/cuda/cuda_best_split_finder.cpp +649 -0
  775. falcata-1.0.0/src/treelearner/cuda/cuda_best_split_finder.cu +3780 -0
  776. falcata-1.0.0/src/treelearner/cuda/cuda_best_split_finder.hpp +616 -0
  777. falcata-1.0.0/src/treelearner/cuda/cuda_construct_jit.cpp +458 -0
  778. falcata-1.0.0/src/treelearner/cuda/cuda_construct_jit.hpp +114 -0
  779. falcata-1.0.0/src/treelearner/cuda/cuda_data_partition.cpp +746 -0
  780. falcata-1.0.0/src/treelearner/cuda/cuda_data_partition.cu +2264 -0
  781. falcata-1.0.0/src/treelearner/cuda/cuda_data_partition.hpp +697 -0
  782. falcata-1.0.0/src/treelearner/cuda/cuda_feature_parallel.hpp +87 -0
  783. falcata-1.0.0/src/treelearner/cuda/cuda_gradient_discretizer.cu +445 -0
  784. falcata-1.0.0/src/treelearner/cuda/cuda_gradient_discretizer.hpp +141 -0
  785. falcata-1.0.0/src/treelearner/cuda/cuda_histogram_constructor.cpp +1223 -0
  786. falcata-1.0.0/src/treelearner/cuda/cuda_histogram_constructor.cu +3604 -0
  787. falcata-1.0.0/src/treelearner/cuda/cuda_histogram_constructor.hpp +900 -0
  788. falcata-1.0.0/src/treelearner/cuda/cuda_hybrid_graph.cu +622 -0
  789. falcata-1.0.0/src/treelearner/cuda/cuda_hybrid_graph.hpp +360 -0
  790. falcata-1.0.0/src/treelearner/cuda/cuda_leaf_splits.cpp +98 -0
  791. falcata-1.0.0/src/treelearner/cuda/cuda_leaf_splits.cu +420 -0
  792. falcata-1.0.0/src/treelearner/cuda/cuda_leaf_splits.hpp +277 -0
  793. falcata-1.0.0/src/treelearner/cuda/cuda_single_gpu_tree_learner.cpp +4308 -0
  794. falcata-1.0.0/src/treelearner/cuda/cuda_single_gpu_tree_learner.cu +691 -0
  795. falcata-1.0.0/src/treelearner/cuda/cuda_single_gpu_tree_learner.hpp +741 -0
  796. falcata-1.0.0/src/treelearner/data_parallel_tree_learner.cpp +470 -0
  797. falcata-1.0.0/src/treelearner/data_partition.hpp +171 -0
  798. falcata-1.0.0/src/treelearner/feature_histogram.cpp +746 -0
  799. falcata-1.0.0/src/treelearner/feature_histogram.hpp +1581 -0
  800. falcata-1.0.0/src/treelearner/feature_parallel_tree_learner.cpp +84 -0
  801. falcata-1.0.0/src/treelearner/gpu_tree_learner.cpp +1132 -0
  802. falcata-1.0.0/src/treelearner/gpu_tree_learner.h +288 -0
  803. falcata-1.0.0/src/treelearner/gradient_discretizer.cpp +263 -0
  804. falcata-1.0.0/src/treelearner/gradient_discretizer.hpp +129 -0
  805. falcata-1.0.0/src/treelearner/leaf_splits.hpp +277 -0
  806. falcata-1.0.0/src/treelearner/linear_leaf_solver.h +92 -0
  807. falcata-1.0.0/src/treelearner/linear_tree_learner.cpp +375 -0
  808. falcata-1.0.0/src/treelearner/linear_tree_learner.h +130 -0
  809. falcata-1.0.0/src/treelearner/monotone_constraints.hpp +1187 -0
  810. falcata-1.0.0/src/treelearner/ocl/histogram16.cl +767 -0
  811. falcata-1.0.0/src/treelearner/ocl/histogram256.cl +792 -0
  812. falcata-1.0.0/src/treelearner/ocl/histogram64.cl +743 -0
  813. falcata-1.0.0/src/treelearner/parallel_tree_learner.h +236 -0
  814. falcata-1.0.0/src/treelearner/serial_tree_learner.cpp +1122 -0
  815. falcata-1.0.0/src/treelearner/serial_tree_learner.h +261 -0
  816. falcata-1.0.0/src/treelearner/split_info.hpp +294 -0
  817. falcata-1.0.0/src/treelearner/tree_learner.cpp +78 -0
  818. falcata-1.0.0/src/treelearner/voting_parallel_tree_learner.cpp +515 -0
  819. falcata-1.0.0/src/utils/openmp_wrapper.cpp +44 -0
  820. falcata-1.0.0/swig/ChunkedArray_API_extensions.i +28 -0
  821. falcata-1.0.0/swig/StringArray.hpp +141 -0
  822. falcata-1.0.0/swig/StringArray.i +98 -0
  823. falcata-1.0.0/swig/StringArray_API_extensions.i +148 -0
  824. falcata-1.0.0/swig/falcatalib.i +289 -0
  825. 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()