Alien  1.3.0
Developer documentation
Loading...
Searching...
No Matches
SYCLParallelEngineImplT.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7
8
9#pragma once
10
11#include <alien/kernels/sycl/SYCLBackEnd.h>
12#include <alien/kernels/sycl/SYCLPrecomp.h>
13
14#include <alien/kernels/sycl/data/SYCLEnv.h>
15#include <alien/kernels/sycl/data/SYCLEnvInternal.h>
16#include <alien/kernels/sycl/data/SYCLParallelEngineInternal.h>
17namespace Alien
18{
19
20 class SYCLControlGroupHandler
21 {
22 public:
23 SYCLControlGroupHandler(sycl::handler& cgh)
24 : m_internal(cgh)
25 {}
26
27 template<typename LambdaT>
28 void parallel_for(std::size_t range, LambdaT lambda)
29 {
30 m_internal.parallel_for<LambdaT>(sycl::range<1>{range},lambda) ;
31 }
32
33 template<typename LambdaT>
34 void parallel_for(std::size_t range1, std::size_t range2, LambdaT lambda)
35 {
36 m_internal.parallel_for<LambdaT>(sycl::range<2>{range1,range2},lambda) ;
37 }
38
39 sycl::handler& m_internal ;
40
41 } ;
42
43 template<typename LambdaT>
44 void SYCLParallelEngine::submit(LambdaT lambda)
45 {
46 m_internal->m_env->internal()->queue().submit( [&](sycl::handler& cgh)
47 {
48 SYCLControlGroupHandler handler(cgh) ;
49 lambda(handler) ;
50 }
51 ) ;
52 }
53
54}
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Definition BackEnd.h:17