File size: 2,215 Bytes
be903e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include <stdio.h>

#include "cpu.h"

#if defined __ANDROID__ || defined __linux__ || defined __APPLE__

static int test_cpu_set()
{
    ncnn::CpuSet set;

    if (set.num_enabled() != 0)
    {
        fprintf(stderr, "By default all cpus should be disabled\n");
        return 1;
    }

    set.enable(0);
    if (!set.is_enabled(0))
    {
        fprintf(stderr, "CpuSet enable doesn't work\n");
        return 1;
    }

    if (set.num_enabled() != 1)
    {
        fprintf(stderr, "Only one cpu should be enabled\n");
        return 1;
    }

    set.disable(0);
    if (set.is_enabled(0))
    {
        fprintf(stderr, "CpuSet disable doesn't work\n");
        return 1;
    }

    return 0;
}

#else

static int test_cpu_set()
{
    return 0;
}

#endif

#if defined __ANDROID__ || defined __linux__

static int test_cpu_info()
{
    if (ncnn::get_cpu_count() >= 0 && ncnn::get_little_cpu_count() >= 0 && ncnn::get_big_cpu_count() >= 0)
    {
        return 0;
    }
    else
    {
        fprintf(stderr, "The system cannot have a negative number of processors\n");
        return 1;
    }
}

static int test_cpu_omp()
{
    if (ncnn::get_omp_num_threads() >= 0 && ncnn::get_omp_thread_num() >= 0 && ncnn::get_omp_dynamic() >= 0)
    {
        return 0;
    }
    else
    {
        fprintf(stderr, "The OMP cannot have a negative number of processors\n");
        return 1;
    }

    ncnn::set_omp_num_threads(1);

    ncnn::set_omp_dynamic(1);
}

static int test_cpu_powersave()
{
    if (ncnn::get_cpu_powersave() >= 0)
    {
        return 0;
    }
    else
    {
        fprintf(stderr, "By default powersave must be zero\n");
        return 1;
    }

    if (ncnn::set_cpu_powersave(-1) == -1 && ncnn::set_cpu_powersave(3) == -1)
    {
        return 0;
    }
    else
    {
        fprintf(stderr, "Set cpu powersave for `-1 < argument < 2` works incorrectly.\n");
        return 1;
    }
}

#else

static int test_cpu_info()
{
    return 0;
}

static int test_cpu_omp()
{
    return 0;
}

static int test_cpu_powersave()
{
    return 0;
}

#endif

int main()
{
    return 0
           || test_cpu_set()
           || test_cpu_info()
           || test_cpu_omp()
           || test_cpu_powersave();
}