OpenNet
Kernel.h
Aller à la documentation de ce fichier.
1 
2 // Product OpenNet
3 
8 
9 #pragma once
10 
11 // Includes
13 
14 // ===== C++ ================================================================
15 #include <map>
16 
17 // ===== Includes ===========================================================
18 #include <OpenNet/SourceCode.h>
20 
21 // ===== OpenNet ============================================================
22 class Event;
23 
24 namespace OpenNet
25 {
26 
27  class UserBuffer;
28 
29  // Class
31 
38  class Kernel : public SourceCode, public StatisticsProvider
39  {
40 
41  public:
42 
49  OPEN_NET_PUBLIC Kernel();
50 
60  OPEN_NET_PUBLIC Status DisableProfiling();
61 
71  OPEN_NET_PUBLIC Status EnableProfiling();
72 
82  OPEN_NET_PUBLIC const char * GetBuildLog() const;
83 
93  OPEN_NET_PUBLIC unsigned int GetCodeLineCount();
94 
104  OPEN_NET_PUBLIC const char ** GetCodeLines();
105 
116  OPEN_NET_PUBLIC void * GetCommandQueue();
117 
129  OPEN_NET_PUBLIC bool IsProfilingEnabled() const;
130 
145  OPEN_NET_PUBLIC Status SetStaticUserArgument(unsigned int aIndex, UserBuffer * aArg);
146 
155  OPEN_NET_PUBLIC virtual void SetUserKernelArgs(void * aKernel);
156 
165  OPEN_NET_PUBLIC virtual void SetUserKernelArgs(void * * aArguments);
166 
167  // ===== SourceCode =================================================
168  OPEN_NET_PUBLIC virtual ~Kernel ();
169  OPEN_NET_PUBLIC virtual Status AppendCode (const char * aCode, unsigned int aCodeSize_byte);
170  OPEN_NET_PUBLIC virtual Status ResetCode ();
171  OPEN_NET_PUBLIC virtual Status SetCode (const char * aFileName);
172  OPEN_NET_PUBLIC virtual Status SetCode (const char * aCode, unsigned int aCodeSize_byte);
173  OPEN_NET_PUBLIC virtual Status Display (FILE * aOut) const;
174  OPEN_NET_PUBLIC virtual unsigned int Edit_Remove (const char * aSearch);
175  OPEN_NET_PUBLIC virtual unsigned int Edit_Replace(const char * aSearch, const char * aReplace);
176 
177  // ===== StatisticsProvider =========================================
178  OPEN_NET_PUBLIC virtual Status GetStatistics (unsigned int * aOut, unsigned int aOutSize_byte, unsigned int * aInfo_byte, bool aReset);
179  OPEN_NET_PUBLIC virtual Status ResetStatistics();
180 
181  // Internal:
182 
183  void ResetCommandQueue();
184 
185  void SetCommandQueue(void * aCommandQueue);
186 
187  void AddStatistics( Event * aEvent );
188 
189  void * AllocateBuildLog();
190  char * AllocateBuildLog( size_t aSize_byte );
191 
192  private:
193 
194  typedef std::map< unsigned int, UserBuffer * > UserArgumentMap;
195 
196  Kernel(const Kernel &);
197 
198  const Kernel & operator = (const Kernel &);
199 
200  void CodeLines_Count ();
201  void CodeLines_Generate();
202 
203  void Invalidate();
204 
205  // TODO OpenNet.Kernel
206  // Normal (Cleanup) - Remove the line buffer for Linux and, if
207  // possible, for Windows.
208 
209  char * mBuildLog ;
210  char * mCodeLineBuffer ;
211  unsigned int mCodeLineCount ;
212  const char ** mCodeLines ;
213  void * mCommandQueue ;
214  bool mProfilingEnabled ;
215  unsigned int * mStatistics ;
216  uint64_t mStatisticsSums[3];
217 
218  UserArgumentMap mUserArguments;
219 
220  };
221 
222  // Public
224 
225  inline bool Kernel::IsProfilingEnabled() const
226  {
227  return mProfilingEnabled;
228  }
229 
230 }
virtual OPEN_NET_PUBLIC unsigned int Edit_Replace(const char *aSearch, const char *aReplace)
Remplacer des chaines dans le code.
OPEN_NET_PUBLIC Status SetStaticUserArgument(unsigned int aIndex, UserBuffer *aArg)
Ajouter un argument utilisateur qui est toujours passée au kernel.
OPEN_NET_PUBLIC void * GetCommandQueue()
Obtenir la queue de command qui execute ce kernel.
OpenNet::StatisticsProvider.
Definition: Adapter.h:19
virtual OPEN_NET_PUBLIC unsigned int Edit_Remove(const char *aSearch)
Retirer des chaines du code.
La classe Kernel.
Definition: Kernel.h:38
La classe SourceCode.
Definition: SourceCode.h:30
OPEN_NET_PUBLIC bool IsProfilingEnabled() const
Est-ce que le profiling OpenCL est activé?
Definition: Kernel.h:225
virtual OPEN_NET_PUBLIC Status AppendCode(const char *aCode, unsigned int aCodeSize_byte)
Ajouter du code.
OPEN_NET_PUBLIC Status EnableProfiling()
Activer le profiling OpenCL.
OPEN_NET_PUBLIC unsigned int GetCodeLineCount()
Obtenir le nombre de lignes de code.
virtual OPEN_NET_PUBLIC Status ResetCode()
Reinitialiser le code.
virtual OPEN_NET_PUBLIC Status ResetStatistics()
Cette méthode remet à zéro les compteurs de statistiques de l'adaptateur.
OPEN_NET_PUBLIC Kernel()
Constructeur.
OPEN_NET_PUBLIC const char * GetBuildLog() const
Obtenir le log de compilation.
La classe UserBuffer.
Definition: UserBuffer.h:29
OPEN_NET_PUBLIC Status DisableProfiling()
Désactiver le profiling OpenCL.
virtual OPEN_NET_PUBLIC Status GetStatistics(unsigned int *aOut, unsigned int aOutSize_byte, unsigned int *aInfo_byte, bool aReset)
Cette méthode retourne les statistiques de l'adaptateur.
La class StatisticsProvider.
Definition: StatisticsProvider.h:30
OPEN_NET_PUBLIC const char ** GetCodeLines()
Obtenir les lignes de code.
OpenNet::SourceCode.
virtual OPEN_NET_PUBLIC Status SetCode(const char *aFileName)
Assigner le code en utilisant un fichier source.
virtual OPEN_NET_PUBLIC void SetUserKernelArgs(void *aKernel)
Appelé pour ajouter des arguments utilisateur au kernel.
virtual OPEN_NET_PUBLIC Status Display(FILE *aOut) const
Afficher.