Skip to content

[DFT] feat(cudf): GPU Decimal (Part 2 of 3) (#16750)#1433

Open
prestodb-ci wants to merge 30 commits intooss-baselinefrom
staging-1777c7523-pr
Open

[DFT] feat(cudf): GPU Decimal (Part 2 of 3) (#16750)#1433
prestodb-ci wants to merge 30 commits intooss-baselinefrom
staging-1777c7523-pr

Conversation

@prestodb-ci
Copy link
Copy Markdown
Collaborator

@prestodb-ci prestodb-ci commented Nov 25, 2025

DFT rebase for branch staging-7ed90a53d-dft-pr with head 7ed90a5

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci prestodb-ci deleted the staging-1777c7523-pr branch November 26, 2025 01:29
Signed-off-by: Yuan <yuanzhou@apache.org>

Set ccache maximum size to 1G

Remove sed command from Gluten workflow

Removed a sed command that replaces 'oap-project' with 'IBM' in the get-velox.sh script.

Modify get-velox.sh to change 'ibm' to 'ibm-xxx'

Update the get-velox.sh script to replace 'ibm' with 'ibm-xxx'.

Update sed command to be case-insensitive

Update gluten.yml

fix iceberg unit test

Signed-off-by: Yuan <yuanzhou@apache.org>

Update gluten.yml

Enable enhanced features in gluten build script

Update cache keys for Gluten workflow
@FelixYBW FelixYBW restored the staging-1777c7523-pr branch November 27, 2025 09:14
@FelixYBW FelixYBW reopened this Nov 27, 2025
@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@FelixYBW FelixYBW changed the title fix: Avoid TSAN data race during cache entry initialization (#15623) refactor: Extract common BaseSerializedPage API (#15626) Dec 3, 2025
@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci prestodb-ci changed the title refactor: Extract common BaseSerializedPage API (#15626) fix(build): Ambiguity caused by long literal (#15670) Dec 3, 2025
@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

@prestodb-ci
Copy link
Copy Markdown
Collaborator Author

pramodsatya and others added 26 commits April 21, 2026 10:34
…acebookincubator#17221)

Summary:
When the build side of a hash join has no data (e.g. anti-join with
empty result), inputs_ is empty. With a debug build, the logging at
`noMoreInput()` accesses `inputs_[0]` without bound checking,
which could result in a `SIGSEGV`.

This fixes Q16 (TPC-H) which uses NOT IN (anti-join) where the build
side can be empty for some partitions.

Pull Request resolved: facebookincubator#17221

Reviewed By: kagamiori

Differential Revision: D101671299

Pulled By: peterenescu

fbshipit-source-id: 0971d85671e67810789d8148ce3891e757faf4f7
…r#16037)

Summary:
Replaces previous PR facebookincubator#15014  that erroneously also included changes in some `experimental/cudf` files.

This experimental feature is targeted at a multi-node setup of Prestissimo when running with the Cudf extension. It provides an exchange mechanism to transfer CudfVectors between GPU device memory without the need to first copy data to host memory. This mechanism is in addition to the HTTP-based exchange used in Prestissimo. The main goal is to exploit fast hardware interconnects that are available between GPUs.

The cudf exchange builds on top of the existing experimental Cudf extension. The approach follows the same design as the HTTP based exchange. Its components operate on CudfVectors instead of SerializedPages and include:

* CudfOutputQueueManager and CudfQueues instead of the OutputBufferManager and OutputBuffers
* CudfExchangeClient and CudfExchangeSource instead of ExchangeClient and ExchangeSource/PrestoExchangeSource
* CudfExchange and CudfExchangeQueue instead of Exchange and ExchangeQueue
* CudfExchangeServer instead of Prestissimo's HTTP resource

The code in this PR does not contain the necessary hooks needed to initialize Cudf exchange.

Pull Request resolved: facebookincubator#16037

Reviewed By: pratikpugalia

Differential Revision: D101650220

Pulled By: peterenescu

fbshipit-source-id: 207b7964d0039f1885055ee4dae302a200480159
Summary:
This is Part 2 of 3 of the GPU Decimal implementation. It adds decimal functions and some other tidying-up.

More explanation and annotation to follow.

Pull Request resolved: facebookincubator#16750

Reviewed By: kgpai

Differential Revision: D101837619

Pulled By: kagamiori

fbshipit-source-id: 4e7971aba5f3f5668d19bb2ff53571aa28b74d72
Alchemy-item: (ID = 1270) [OAP] Support struct schema evolution matching by name commit 1/1 - 4316ae5
…ter join

Signed-off-by: Yuan <yuanzhou@apache.org>

Alchemy-item: (ID = 1227) [OAP] [11771] Fix smj result mismatch issue commit 1/1 - 987fd37
Alchemy-item: (ID = 1309) feat: Enable the hash join to accept a pre-built hash table for joining commit 1/1 - b1a8bb4
Alchemy-item: (ID = 1294) feat: Change SpillPartitionId::kMaxSpillLevel to 7 commit 1/1 - 7280b67
Co-authored-by: Li Zhou <unidevel@hotmail.com>

Alchemy-item: (ID = 1153) Iceberg staging hub commit 1/6 - c5a69de3d1021073c13a99e1c7c6d6fcce355178

Support insert data into iceberg table.

Add iceberg partition transforms.

Co-authored-by: Chengcheng Jin <Chengcheng.Jin@ibm.com>

Add NaN statistics to parquet writer.

Collect Iceberg data file statistics in dwio.

Integrate Iceberg data file statistics and adding unit test.

Support write field_id to parquet metadata SchemaElement.

Implement iceberg sort order

Add clustered Iceberg writer mode.

Fix parquet writer ut

Add IcebergConnector

Fix unittest error

Resolve confict

Resolve confict

Fix test build issue

Fix crash

Alchemy-item: (ID = 1334) Iceberg core code commit 1/1 - 41bbbf4
Signed-off-by: Yuan <yuanzhou@apache.org>

Alchemy-item: (ID = 906) fix: Adding daily tests commit 1/2 - e2eb2c6
we can cache ccache on every build even on failure, since ibm/velox is
always incremental build

Alchemy-item: (ID = 906) fix: Adding daily tests commit 2/2 - 0899ddc
1
Alchemy-item: (ID = 988) Add fileNameGenerator to the constructor of IcebergInsertTableHandle commit 1/1 - a5f7e46
Alchemy-item: (ID = 1281) Remove website folder commit 1/1 - 35730e5
This commit introduces `PartitionedVector` - a low-level execution
abstraction that provides an in-place, partition-aware layout of a
vector based on per-row partition IDs.

1. **In-place rearrangement**: Rearrange vector data in memory without
   creating multiple copies
2. **Buffer reuse**: Allow reuse of temporary buffers across multiple
   partitioning operations
3. **Minimal abstraction**: Similar to `DecodedVector`, focus on
   efficient execution rather than operator semantics
4. **Thread-unsafe by design**: Optimized for single-threaded execution
   contexts

For more information please see #1703

Alchemy-item: (ID = 1150) Introducing PartitionedVector commit 1/1 - 960f41b

Alchemy-item: (ID = 1327) Optimized PartitionedOutput staging hub commit 1/11 - 76dc41a
Signed-off-by: Xin Zhang <xin-zhang2@ibm.com>

Alchemy-item: (ID = 1167) Add PartitionedRowVector commit 1/1 - f2af427

Alchemy-item: (ID = 1327) Optimized PartitionedOutput staging hub commit 2/11 - 3853bf6
…dthValuesInPlace

Alchemy-item: (ID = 1327) Optimized PartitionedOutput staging hub commit 3/11 - ff2e34b
Alchemy-item: (ID = 1327) Optimized PartitionedOutput staging hub commit 4/11 - 875c92c
PartitionedFlatVector::partition() and PartitionedRowVector::partition()
called mutableRawNulls() unconditionally. mutableRawNulls() allocates a
null buffer if one does not exist, causing mayHaveNulls() to return true
for every vector after partitioning, even when the original had no nulls.

Fix both sites to check rawNulls() first and only call mutableRawNulls()
when a null buffer already exists.

Add noNullBufferAllocatedForNullFreeFlat and
noNullBufferAllocatedForNullFreeRow tests to PartitionedVectorTest to
cover this case.

# Conflicts:
#	velox/vector/PartitionedVector.cpp

Alchemy-item: (ID = 1327) Optimized PartitionedOutput staging hub commit 5/11 - 281a365
Alchemy-item: (ID = 1327) Optimized PartitionedOutput staging hub commit 6/11 - 6519a8f
Alchemy-item: (ID = 1327) Optimized PartitionedOutput staging hub commit 7/11 - d8f34b4
Alchemy-item: (ID = 1327) Optimized PartitionedOutput staging hub commit 8/11 - 9eafc9d
This commit introduces PrestoIterativePartitioningSerializer, which
buffers RowVectors across multiple append() calls, partitions rows
in-place using PartitionedVector, and on flush() serializes each
non-empty partition into a Presto wire-format IOBuf. The serializer has
no dependency on velox_exec: it returns raw folly::IOBuf objects,
leaving SerializedPage creation to the caller.

Alchemy-item: (ID = 1327) Optimized PartitionedOutput staging hub commit 9/11 - 6f09ea9
This commit introduces OptimizedPartitionedOutput, a PartitionedOutput
operator backed by PrestoIterativePartitioningSerializer. Enabled via query
config key "optimized_repartitioning" (default off). LocalPlanner
selects it over the standard PartitionedOutput when the flag is set.

TODO: replicateNullsAndAny is not yet supported and raises a user error.

Alchemy-item: (ID = 1327) Optimized PartitionedOutput staging hub commit 10/11 - c114147
…geBenchmark

- Added normal vs optimized PartitionedOutput comparison by running each
  exchange case twice with kOptimizedPartitionedOutputEnabled=false/true.
- Added per-mode benchmark names:
  - exchange<Case>_normalPartitionedOutput
  - exchange<Case>_optimizedPartitionedOutput in ExchangeBenchmark.cpp.
- Refactored result printing into shared helpers and fixed output
  consistency in ExchangeBenchmark.cpp.

Alchemy-item: (ID = 1327) Optimized PartitionedOutput staging hub commit 11/11 - 211901c
Signed-off-by: Hazmi <ialhazmim@gmail.com>

Alchemy-item: (ID = 1203) Fix iceberg min max statistics for decimal type when encoded as int32 commit 1/1 - 0ac9930
Alchemy-item: (ID = 1335) Fix GCC 11.2 compilation issue commit 1/1 - b8d656e
Signed-off-by: Linsong Wang <linsong.wang@ibm.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.