stream_utility.hpp 1.05 KB
Newer Older
Umang Yadav's avatar
Umang Yadav committed
1
2
3

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Weverything"
4
5
6
7
8
9
10
11
12
13
// SPDX-License-Identifier: MIT
// Copyright (c) 2018-2023, Advanced Micro Devices, Inc. All rights reserved.

#pragma once

#include <hip/hip_runtime.h>

#include "ck/stream_config.hpp"
#include "ck/host_utility/hip_check_error.hpp"

rocking's avatar
rocking committed
14
static inline int getAvailableComputeUnitCount(const StreamConfig& stream_config)
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{
    constexpr int MAX_MASK_DWORDS = 64;

    // assume at most 64*32 = 2048 CUs
    uint32_t cuMask[MAX_MASK_DWORDS];

    for(int i = 0; i < MAX_MASK_DWORDS; i++)
        cuMask[i] = 0;

    auto countSetBits = [](uint32_t dword) {
        int count = 0;

        while(dword != 0)
        {
            if(dword & 0x1)
                count++;

            dword = dword >> 1;
        };

        return (count);
    };

    hip_check_error(hipExtStreamGetCUMask(stream_config.stream_id_, MAX_MASK_DWORDS, &cuMask[0]));

    int ret = 0;

    for(int i = 0; i < MAX_MASK_DWORDS; i++)
        ret += countSetBits(cuMask[i]);

    return (ret);
};
Umang Yadav's avatar
Umang Yadav committed
47
48

#pragma clang diagnostic pop