Struct custos_math::custos::devices::opencl::KernelCacheCL
source · pub struct KernelCacheCL {
pub kernel_cache: HashMap<String, Rc<Kernel>, RandomState>,
}Expand description
This stores the previously compiled OpenCL kernels.
Fields§
§kernel_cache: HashMap<String, Rc<Kernel>, RandomState>Implementations§
source§impl KernelCacheCL
impl KernelCacheCL
sourcepub fn kernel_cache(
&mut self,
device: &OpenCL,
src: &str
) -> Result<Rc<Kernel>, Box<dyn Error + Send + Sync + 'static, Global>>
pub fn kernel_cache( &mut self, device: &OpenCL, src: &str ) -> Result<Rc<Kernel>, Box<dyn Error + Send + Sync + 'static, Global>>
Returns a cached kernel. If the kernel source code does not exist, a new kernel is created and cached.
Example
use std::collections::HashMap;
use custos::{OpenCL, opencl::KernelCacheCL};
fn main() -> custos::Result<()> {
let device = OpenCL::new(0)?;
let mut kernel_cache = KernelCacheCL {
kernel_cache: HashMap::new(),
};
let mut kernel_fn = || kernel_cache.kernel_cache(&device, "
__kernel void test(__global float* test) {}
");
let kernel = kernel_fn()?;
let same_kernel = kernel_fn()?;
assert_eq!(kernel.0, same_kernel.0);
Ok(())
}Trait Implementations§
source§impl Debug for KernelCacheCL
impl Debug for KernelCacheCL
source§impl Default for KernelCacheCL
impl Default for KernelCacheCL
source§fn default() -> KernelCacheCL
fn default() -> KernelCacheCL
Returns the “default value” for a type. Read more