pub struct CudaTileBackend { /* private fields */ }Expand description
CUDA tile GPU backend.
Manages CUDA device, compiled kernels, and provides the TileGpuBackend implementation.
Implementations§
Source§impl CudaTileBackend
impl CudaTileBackend
Sourcepub fn new(tile_size: u32) -> Result<Self>
pub fn new(tile_size: u32) -> Result<Self>
Create a new CUDA tile backend.
Compiles the FDTD kernels using NVRTC.
Sourcepub fn with_device(ordinal: usize, tile_size: u32) -> Result<Self>
pub fn with_device(ordinal: usize, tile_size: u32) -> Result<Self>
Create a CUDA tile backend on a specific device.
Sourcepub fn buffer_width(&self) -> u32
pub fn buffer_width(&self) -> u32
Get buffer width (tile_size + 2 for halos).
Sourcepub fn buffer_size_bytes(&self) -> usize
pub fn buffer_size_bytes(&self) -> usize
Get buffer size in bytes (18x18 floats for 16x16 tile).
Sourcepub fn halo_size_bytes(&self) -> usize
pub fn halo_size_bytes(&self) -> usize
Get halo buffer size in bytes (16 floats).
Sourcepub fn interior_size_bytes(&self) -> usize
pub fn interior_size_bytes(&self) -> usize
Get interior buffer size in bytes (16x16 floats).
Sourcepub fn device(&self) -> &CudaDevice
pub fn device(&self) -> &CudaDevice
Get device reference.
Trait Implementations§
Source§impl TileGpuBackend for CudaTileBackend
impl TileGpuBackend for CudaTileBackend
Source§type Buffer = CudaBuffer
type Buffer = CudaBuffer
GPU buffer type for this backend.
Source§fn create_tile_buffers(
&self,
tile_size: u32,
) -> Result<TileGpuBuffers<Self::Buffer>>
fn create_tile_buffers( &self, tile_size: u32, ) -> Result<TileGpuBuffers<Self::Buffer>>
Create GPU buffers for a tile. Read more
Source§fn upload_initial_state(
&self,
buffers: &TileGpuBuffers<Self::Buffer>,
pressure: &[f32],
pressure_prev: &[f32],
) -> Result<()>
fn upload_initial_state( &self, buffers: &TileGpuBuffers<Self::Buffer>, pressure: &[f32], pressure_prev: &[f32], ) -> Result<()>
Upload initial pressure data (one-time, at tile creation).
Source§fn fdtd_step(
&self,
buffers: &TileGpuBuffers<Self::Buffer>,
params: &FdtdParams,
) -> Result<()>
fn fdtd_step( &self, buffers: &TileGpuBuffers<Self::Buffer>, params: &FdtdParams, ) -> Result<()>
Execute FDTD step entirely on GPU (no host transfer). Read more
Source§fn extract_halo(
&self,
buffers: &TileGpuBuffers<Self::Buffer>,
edge: Edge,
) -> Result<Vec<f32>>
fn extract_halo( &self, buffers: &TileGpuBuffers<Self::Buffer>, edge: Edge, ) -> Result<Vec<f32>>
Extract halo from GPU to host (small transfer for K2K). Read more
Source§fn inject_halo(
&self,
buffers: &TileGpuBuffers<Self::Buffer>,
edge: Edge,
data: &[f32],
) -> Result<()>
fn inject_halo( &self, buffers: &TileGpuBuffers<Self::Buffer>, edge: Edge, data: &[f32], ) -> Result<()>
Inject neighbor halo from K2K message into GPU buffer. Read more
Source§fn swap_buffers(&self, buffers: &mut TileGpuBuffers<Self::Buffer>)
fn swap_buffers(&self, buffers: &mut TileGpuBuffers<Self::Buffer>)
Swap ping-pong buffers (pointer swap, no data movement).
Source§fn read_interior_pressure(
&self,
buffers: &TileGpuBuffers<Self::Buffer>,
) -> Result<Vec<f32>>
fn read_interior_pressure( &self, buffers: &TileGpuBuffers<Self::Buffer>, ) -> Result<Vec<f32>>
Read full tile pressure for visualization. Read more
Source§fn synchronize(&self) -> Result<()>
fn synchronize(&self) -> Result<()>
Synchronize GPU operations.
Auto Trait Implementations§
impl Freeze for CudaTileBackend
impl RefUnwindSafe for CudaTileBackend
impl Send for CudaTileBackend
impl Sync for CudaTileBackend
impl Unpin for CudaTileBackend
impl UnwindSafe for CudaTileBackend
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Convert the source color to the destination color using the specified
method.
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Convert the source color to the destination color using the bradford
method by default.
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Cast a collection of colors into a collection of arrays.
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
Cast this collection of arrays into a collection of colors.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
The number type that’s used in
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
Converts
self into C, using the provided parameters.Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Cast a collection of colors into a collection of color components.
Source§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
Performs a conversion from
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
Converts
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
Performs a conversion into
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
The number type that’s used in
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
Converts
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Convert into T with values clamped to the color defined bounds Read more
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Convert into T. The resulting color might be invalid in its color space Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
Converts
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Gets the layout of the type.
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
The error for when
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Try to cast this collection of color components into a collection of
colors. Read more
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
Convert into T, returning ok if the color is inside of its defined
range, otherwise an
OutOfBounds error is returned which contains
the unclamped color. Read moreSource§impl<C, U> UintsFrom<C> for Uwhere
C: IntoUints<U>,
impl<C, U> UintsFrom<C> for Uwhere
C: IntoUints<U>,
Source§fn uints_from(colors: C) -> U
fn uints_from(colors: C) -> U
Cast a collection of colors into a collection of unsigned integers.
Source§impl<C, U> UintsInto<C> for Uwhere
C: FromUints<U>,
impl<C, U> UintsInto<C> for Uwhere
C: FromUints<U>,
Source§fn uints_into(self) -> C
fn uints_into(self) -> C
Cast this collection of unsigned integers into a collection of colors.