Skip to content

Commit

Permalink
Rr/sc 60366 sparse global order reader merge (#5417)
Browse files Browse the repository at this point in the history
Sc-60366

Implements "pre-process tile order" mode for the sparse global order reader.
In brief, this does a first pass over the fragment metadata tile MBRs
to create a single unified list of all the (fragment ID, tile ID) pairs arranged
approximately in global order.

When running natively, the tile order is computed a single time the first
time the query is submitted, and then kept in memory.  When running
on the REST server, the tile order is recomputed for each query message.
Evidence indicates that the overhead of this is low; we expect that it is
lower than serializing the tile order would be.

- Add parallel merge algorithm
- Add rapidcheck library and some common scaffolding code
- Add `tiledb_submit_a_b` performance testing binary
- Add preprocess tile order mode to sparse global order reader, on by default

---
TYPE: FEATURE | BUG | IMPROVEMENT
DESC: sparse global order reader determine global order of result tiles
  • Loading branch information
rroelke authored Feb 7, 2025
1 parent 004f8aa commit 3c617e3
Show file tree
Hide file tree
Showing 57 changed files with 9,329 additions and 786 deletions.
2 changes: 1 addition & 1 deletion .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ trigger_pipeline:
TILEDB_REF: ${CI_COMMIT_REF_NAME}
trigger:
project: tiledb-inc/tiledb-internal
strategy: depend
strategy: depend
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -447,6 +447,7 @@ target_include_directories(local_install INTERFACE ${CMAKE_SOURCE_DIR})
enable_testing()

if(TILEDB_TESTS)
find_package(rapidcheck CONFIG REQUIRED)
# Add custom Catch2 entry point that suppresses message boxes on debug assertion
# failures on Windows CI.
find_package(Catch2 REQUIRED)
Expand Down
2 changes: 1 addition & 1 deletion scripts/find_heap_api_violations.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@
"zstd_compressor.h": ["std::unique_ptr<ZSTD_DCtx, decltype(&ZSTD_freeDCtx)> ctx_;", "std::unique_ptr<ZSTD_CCtx, decltype(&ZSTD_freeCCtx)> ctx_;"],
"posix.cc": ["std::unique_ptr<DIR, UniqueDIRDeleter>", "static std::unique_ptr<char, decltype(&free)> cwd_(getcwd(nullptr, 0), free);"],
"curl.h": ["std::unique_ptr<CURL, decltype(&curl_easy_cleanup)>"],
"pmr.h": ["std::unique_ptr", "unique_ptr<Tp> make_unique("],
"pmr.h": ["std::unique_ptr", "unique_ptr<Tp> make_unique(", "unique_ptr<Tp> emplace_unique("],
}


Expand Down
3 changes: 1 addition & 2 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,7 @@ target_link_libraries(tiledb_unit
Catch2::Catch2
tiledb_test_support_lib
configuration_definitions
rapidcheck
)

target_link_libraries(tiledb_unit PRIVATE $<BUILD_INTERFACE:common>)
Expand Down Expand Up @@ -373,9 +374,7 @@ endif()

# CI tests
add_subdirectory(ci)
if(WIN32)
add_subdirectory(performance)
endif()

add_custom_target(
check-package
Expand Down
23 changes: 23 additions & 0 deletions test/performance/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
# THE SOFTWARE.
#

if(WIN32)

# These options not exposed in bootstrap script.
option(TILEDB_TESTS_AWS_S3_CONFIG "Use an S3 config appropriate for AWS in tests" OFF)

Expand Down Expand Up @@ -94,3 +96,24 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux" AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU
LINK_FLAGS "-Wl,--no-as-needed -ldl"
)
endif()

endif()


add_executable(
tiledb_submit_a_b EXCLUDE_FROM_ALL
$<TARGET_OBJECTS:TILEDB_CORE_OBJECTS>
"tiledb_submit_a_b.cc"
)

target_include_directories(
tiledb_submit_a_b BEFORE PRIVATE
${TILEDB_CORE_INCLUDE_DIR}
${TILEDB_EXPORT_HEADER_DIR}
)

target_link_libraries(tiledb_submit_a_b
PUBLIC
TILEDB_CORE_OBJECTS_ILIB
tiledb_test_support_lib
)
Loading

0 comments on commit 3c617e3

Please sign in to comment.