private void ReleaseAllDescriptors() { lock (_sync) { foreach (var descriptor in _availableDescriptors) { var ptr = descriptor.Ptr; IntelMklUnm.FreeDftiDescriptor(ref ptr); } _availableDescriptors.Clear(); } }
private IntPtr GetDescriptor(int nx, int ny) { lock (_sync) { var descriptor = _availableDescriptors.FirstOrDefault(d => d.Nx == nx && d.Ny == ny); if (descriptor != FftDescriptor.Empty) { return(descriptor.Ptr); } var ptr = IntelMklUnm.CreateDftiDescriptor(nx, ny); _availableDescriptors.Add(new FftDescriptor(nx, ny, ptr)); return(ptr); } }
public void Backward2D(int nx, int ny, IntPtr ptr) { var descriptor = GetDescriptor(nx, ny); IntelMklUnm.PerformBackwardFft(descriptor, ptr); }