XeTLA v0.3.6
IntelĀ® Xe Templates for Linear Algebra - API Definition Document
 
Loading...
Searching...
No Matches
raw_send_nbarrier.hpp
Go to the documentation of this file.
1/*******************************************************************************
2* Copyright (c) 2022-2023 Intel Corporation
3*
4* Licensed under the Apache License, Version 2.0 (the "License");
5* you may not use this file except in compliance with the License.
6* You may obtain a copy of the License at
7*
8* http://www.apache.org/licenses/LICENSE-2.0
9*
10* Unless required by applicable law or agreed to in writing, software
11* distributed under the License is distributed on an "AS IS" BASIS,
12* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13* See the License for the specific language governing permissions and
14* limitations under the License.
15*******************************************************************************/
16
19
20#pragma once
21
23
24namespace gpu::xetla {
25
28
29enum class nbarrier_role : uint8_t {
31 producer = 1,
32 consumer = 2
33};
34
41template <uint8_t num_producers = 1, uint8_t num_consumers = 1,
42 gpu_arch arch_tag = gpu_arch::Xe>
49 uint32_t barrier_id;
50
55 __XETLA_API void init_nbarrier(uint8_t nbarrier_id,
57 nbar[2] = (uint32_t)nbarrier_id | uint32_t((uint8_t)role << 14)
58 | uint32_t(num_producers << 16) | uint32_t(num_consumers << 24);
59 barrier_id = nbarrier_id;
60 }
61
66 constexpr uint32_t sfid = 0x3;
67 constexpr uint32_t exDesc = sfid;
68 constexpr uint32_t msg_desc = 0x2000004;
69 constexpr uint32_t execSize = 0;
70
71 xetla_raw_send<uint32_t, 16, execSize, sfid, 1>(nbar, exDesc, msg_desc);
72 }
73
77
81 arrive();
82 wait();
83 }
84};
85
87
88} // namespace gpu::xetla
#define __XETLA_API
Definition common.hpp:43
C++ API.
__XETLA_API void named_barrier_wait(uint8_t barrier_id)
Wait on a named barrier.
Definition barrier.hpp:64
__ESIMD_NS::simd< native_type_t< Ty >, N > xetla_vector
wrapper for xetla_vector.
Definition base_types.hpp:149
nbarrier_role
Definition raw_send_nbarrier.hpp:29
Definition arch_config.hpp:24
gpu_arch
Definition common.hpp:73
xetla nbarrier definition API.
Definition raw_send_nbarrier.hpp:43
__XETLA_API void arrive()
named barrier signal from subgroup.
Definition raw_send_nbarrier.hpp:65
__XETLA_API void arrive_wait()
named barrier signal from subgroup.
Definition raw_send_nbarrier.hpp:80
xetla_vector< uint32_t, 16 > nbar
Description of named barrier objection.
Definition raw_send_nbarrier.hpp:48
uint32_t barrier_id
Definition raw_send_nbarrier.hpp:49
__XETLA_API void init_nbarrier(uint8_t nbarrier_id, nbarrier_role role=nbarrier_role::producer_consumer)
Definition raw_send_nbarrier.hpp:55
__XETLA_API void wait()
named barrier wait within subgroup.
Definition raw_send_nbarrier.hpp:76