Merged
Conversation
This initial SAR backprojector supports single and double-precision backprojection, but does not yet implement further optimizations or mixed precision. Validation is still underway. This implementation has the following assumptions/limitations: 1. It largely assumes that the data has been motion-compenstated to some mocomp point (potentially per pulse). The operator accepts an operator with the range to the mocomp point and uses differential range calculations in the backprojector. 2. It accepts an operator with per-voxel coordinates. For regular grids, it would be more efficient to accept, e.g., min_x, min_y, dx, dy, etc. and construct the regular grid in the kernel. The more general implementation supports reconstructions onto polar or other irregular grids. 3. It does not yet include any optimizations. Signed-off-by: Thomas Benson <tbenson@nvidia.com>
Signed-off-by: Thomas Benson <tbenson@nvidia.com>
Signed-off-by: Thomas Benson <tbenson@nvidia.com>
Signed-off-by: Thomas Benson <tbenson@nvidia.com>
Signed-off-by: Thomas Benson <tbenson@nvidia.com>
Signed-off-by: Thomas Benson <tbenson@nvidia.com>
Collaborator
|
/build |
Contributor
Greptile SummaryAdded initial experimental SAR backprojection operator with multi-precision compute modes (Double, Mixed, Float, FloatFloat) designed to optimize performance on platforms with reduced fp64 throughput. Key changes:
Confidence Score: 5/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant User
participant SarBpOp as sar_bp Operator
participant Transform as Transform Layer
participant Kernel as CUDA Kernel
participant FltFlt as Float-Float Lib
User->>SarBpOp: Call sar_bp(initial_image, range_profiles, platform_positions, voxel_locations, range_to_mcp, params)
SarBpOp->>SarBpOp: Validate inputs (rank, types)
SarBpOp->>Transform: Exec() with parameters
Transform->>Transform: Check FloatFloat requires PhaseLUT
alt PhaseLUTOptimization enabled
Transform->>Transform: Allocate workspace for phase LUT
Transform->>Kernel: Launch SarBpFillPhaseLUT kernel
Kernel-->>Transform: Phase LUT populated
end
alt ComputeType == FloatFloat
Transform->>Kernel: Launch SarBp kernel (FloatFloat mode)
loop Each pixel
loop Each pulse block
Kernel->>FltFlt: Convert platform positions to fltflt
Kernel->>FltFlt: ComputeRangeToPixelFloatFloat()
FltFlt-->>Kernel: High-precision range
Kernel->>Kernel: Interpolate range profiles
Kernel->>Kernel: Apply phase correction from LUT
Kernel->>Kernel: Accumulate contribution
end
end
else ComputeType == Double/Mixed/Float
Transform->>Kernel: Launch SarBp kernel
loop Each pixel
loop Each pulse
Kernel->>Kernel: ComputeRangeToPixel()
Kernel->>Kernel: Interpolate range profiles
alt PhaseLUT enabled
Kernel->>Kernel: Get phase from LUT + incremental
else
Kernel->>Kernel: Compute phase with sincos
end
Kernel->>Kernel: Accumulate contribution
end
end
end
Kernel-->>Transform: Output image populated
Transform-->>SarBpOp: Execution complete
SarBpOp-->>User: Return result operator
|
cliffburdick
reviewed
Jan 5, 2026
cliffburdick
reviewed
Jan 5, 2026
cliffburdick
reviewed
Jan 5, 2026
cliffburdick
reviewed
Jan 5, 2026
cliffburdick
reviewed
Jan 5, 2026
cliffburdick
reviewed
Jan 5, 2026
cliffburdick
reviewed
Jan 5, 2026
cliffburdick
reviewed
Jan 5, 2026
Signed-off-by: Thomas Benson <tbenson@nvidia.com>
Signed-off-by: Thomas Benson <tbenson@nvidia.com>
cliffburdick
reviewed
Jan 5, 2026
cliffburdick
reviewed
Jan 5, 2026
cliffburdick
reviewed
Jan 5, 2026
cliffburdick
approved these changes
Jan 5, 2026
Signed-off-by: Thomas Benson <tbenson@nvidia.com>
Contributor
Greptile's behavior is changing!From now on, if a review finishes with no comments, we will not post an additional "statistics" comment to confirm that our review found nothing to comment on. However, you can confirm that we reviewed your changes in the status check section. This feature can be toggled off in your Code Review Settings by deselecting "Create a status check for each PR". |
Collaborator
|
/build |
3 similar comments
Collaborator
|
/build |
Collaborator
|
/build |
Collaborator
|
/build |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add initial version of a synthetic aperture radar (SAR) backprojection operator. The operator is currently in the matx::experimental namespace as its API is subject to change. A large focus of this implementation is offering reasonable performance on platforms with reduced fp64 throughput. A ComputeType parameter indicates the overall computational mode. The ComputeType drives part of the accuracy-performance trade-off, with the types of the input/output tensors driving the remainder. The options are as follows: