2c2
< * Copyright (c) 2014-2015 Advanced Micro Devices, Inc.
---
> * Copyright (c) 2014-2017 Advanced Micro Devices, Inc.
17,19c17,19
< * 3. Neither the name of the copyright holder nor the names of its contributors
< * may be used to endorse or promote products derived from this software
< * without specific prior written permission.
---
> * 3. Neither the name of the copyright holder nor the names of its
> * contributors may be used to endorse or promote products derived from this
> * software without specific prior written permission.
33c33,34
< * Author: Sooraj Puthoor
---
> * Authors: Sooraj Puthoor,
> * Anthony Gutierrez
36,37c37,38
< #ifndef __SCHEDULING_POLICY_HH__
< #define __SCHEDULING_POLICY_HH__
---
> #ifndef __GPU_COMPUTE_SCHEDULING_POLICY_HH__
> #define __GPU_COMPUTE_SCHEDULING_POLICY_HH__
41c42,46
< template<typename Impl>
---
> class Wavefront;
>
> /**
> * Interface class for the wave scheduling policy.
> */
45c50,52
< Wavefront* chooseWave() { return policyImpl.chooseWave(); }
---
> SchedulingPolicy() { }
> virtual Wavefront *chooseWave(std::vector<Wavefront*> *sched_list) = 0;
> };
47,48c54,69
< void
< bindList(std::vector<Wavefront*> *list)
---
> /**
> * Intermediate class that derives from the i-face class, and implements
> * its API. It uses the CRTP to take in the actual scheduling policy
> * implementation as a template parameter. This allows us to use a pointer
> * to SchedulingPolicy and instantiate whichever policy we want. The
> * derived policies implement the scheduler arbitration logic using
> * the static member method called __chooseWave();
> */
> template<typename Policy>
> class __SchedulingPolicy : public SchedulingPolicy
> {
> public:
> __SchedulingPolicy() { }
>
> Wavefront*
> chooseWave(std::vector<Wavefront*> *sched_list) override
50c71
< return policyImpl.bindList(list);
---
> return Policy::__chooseWave(sched_list);
52,54d72
<
< private:
< Impl policyImpl;
57c75
< #endif // __SCHEDULING_POLICY_HH__
---
> #endif // __GPU_COMPUTE_SCHEDULING_POLICY_HH__