b3PrefixScanCL.h 818 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #ifndef B3_PREFIX_SCAN_CL_H
  2. #define B3_PREFIX_SCAN_CL_H
  3. #include "b3OpenCLArray.h"
  4. #include "b3BufferInfoCL.h"
  5. #include "Bullet3Common/b3AlignedObjectArray.h"
  6. class b3PrefixScanCL
  7. {
  8. enum
  9. {
  10. BLOCK_SIZE = 128
  11. };
  12. // Option m_option;
  13. cl_command_queue m_commandQueue;
  14. cl_kernel m_localScanKernel;
  15. cl_kernel m_blockSumKernel;
  16. cl_kernel m_propagationKernel;
  17. b3OpenCLArray<unsigned int>* m_workBuffer;
  18. public:
  19. b3PrefixScanCL(cl_context ctx, cl_device_id device, cl_command_queue queue,int size=0);
  20. virtual ~b3PrefixScanCL();
  21. void execute(b3OpenCLArray<unsigned int>& src, b3OpenCLArray<unsigned int>& dst, int n, unsigned int* sum = 0);
  22. void executeHost(b3AlignedObjectArray<unsigned int>& src, b3AlignedObjectArray<unsigned int>& dst, int n, unsigned int* sum=0);
  23. };
  24. #endif //B3_PREFIX_SCAN_CL_H