fft_support.doxy 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /* StarPU --- Runtime system for heterogeneous multicore architectures.
  2. *
  3. * Copyright (C) 2010-2013,2015,2017 CNRS
  4. * Copyright (C) 2009-2011,2014 Université de Bordeaux
  5. * Copyright (C) 2011,2012 Inria
  6. *
  7. * StarPU is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU Lesser General Public License as published by
  9. * the Free Software Foundation; either version 2.1 of the License, or (at
  10. * your option) any later version.
  11. *
  12. * StarPU is distributed in the hope that it will be useful, but
  13. * WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  15. *
  16. * See the GNU Lesser General Public License in COPYING.LGPL for more details.
  17. */
  18. /*! \defgroup API_FFT_Support FFT Support
  19. \def STARPUFFT_FORWARD
  20. \ingroup API_FFT_Support
  21. todo
  22. \def STARPUFFT_INVERSE
  23. \ingroup API_FFT_Support
  24. todo
  25. \fn void * starpufft_malloc(size_t n)
  26. \ingroup API_FFT_Support
  27. Allocate memory for \p n bytes. This is preferred over \c malloc(),
  28. since it allocates pinned memory, which allows overlapped transfers.
  29. \fn void * starpufft_free(void *p)
  30. \ingroup API_FFT_Support
  31. Release memory previously allocated.
  32. \fn struct starpufft_plan * starpufft_plan_dft_1d(int n, int sign, unsigned flags)
  33. \ingroup API_FFT_Support
  34. Initialize a plan for 1D FFT of size \p n. \p sign can be STARPUFFT_FORWARD
  35. or STARPUFFT_INVERSE. \p flags must be 0.
  36. \fn struct starpufft_plan * starpufft_plan_dft_2d(int n, int m, int sign, unsigned flags)
  37. \ingroup API_FFT_Support
  38. Initialize a plan for 2D FFT of size (\p n, \p m). \p sign can be
  39. STARPUFFT_FORWARD or STARPUFFT_INVERSE. flags must be \p 0.
  40. \fn struct starpu_task * starpufft_start(starpufft_plan p, void *in, void *out)
  41. \ingroup API_FFT_Support
  42. Start an FFT previously planned as \p p, using \p in and \p out as
  43. input and output. This only submits the task and does not wait for it.
  44. The application should call starpufft_cleanup() to unregister the
  45. \fn struct starpu_task * starpufft_start_handle(starpufft_plan p, starpu_data_handle_t in, starpu_data_handle_t out)
  46. \ingroup API_FFT_Support
  47. Start an FFT previously planned as \p p, using data handles \p in and
  48. \p out as input and output (assumed to be vectors of elements of the
  49. expected types). This only submits the task and does not wait for it.
  50. \fn void starpufft_execute(starpufft_plan p, void *in, void *out)
  51. \ingroup API_FFT_Support
  52. Execute an FFT previously planned as \p p, using \p in and \p out as
  53. input and output. This submits and waits for the task.
  54. \fn void starpufft_execute_handle(starpufft_plan p, starpu_data_handle_t in, starpu_data_handle_t out)
  55. \ingroup API_FFT_Support
  56. Execute an FFT previously planned as \p p, using data handles \p in
  57. and \p out as input and output (assumed to be vectors of elements of
  58. the expected types). This submits and waits for the task.
  59. \fn void starpufft_cleanup(starpufft_plan p)
  60. \ingroup API_FFT_Support
  61. Release data for plan \p p, in the starpufft_start() case.
  62. \fn void starpufft_destroy_plan(starpufft_plan p)
  63. \ingroup API_FFT_Support
  64. Destroy plan \p p, i.e. release all CPU (fftw) and GPU (cufft)
  65. resources.
  66. */