MCPcopy Create free account
hub / github.com/KomputeProject/kompute / TEST

Function TEST

test/TestWorkgroup.cpp:10–65  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8#include "test_workgroup_shader.hpp"
9
10TEST(TestWorkgroup, TestSimpleWorkgroup)
11{
12 std::shared_ptr<kp::TensorT<float>> tensorA = nullptr;
13 std::shared_ptr<kp::TensorT<float>> tensorB = nullptr;
14 {
15 std::shared_ptr<kp::Sequence> sq = nullptr;
16
17 {
18 kp::Manager mgr;
19
20 tensorA = mgr.tensor(std::vector<float>(16 * 8));
21 tensorB = mgr.tensor(std::vector<float>(16 * 8));
22
23 std::vector<std::shared_ptr<kp::Tensor>> params = { tensorA,
24 tensorB };
25 std::vector<uint32_t> spirv(
26 kp::TEST_WORKGROUP_SHADER_COMP_SPV.begin(),
27 kp::TEST_WORKGROUP_SHADER_COMP_SPV.end());
28
29 kp::Workgroup workgroup = { 16, 8, 1 };
30
31 std::shared_ptr<kp::Algorithm> algorithm =
32 mgr.algorithm(params, spirv, workgroup);
33
34 sq = mgr.sequence();
35 sq->record<kp::OpTensorSyncDevice>(params);
36 sq->record<kp::OpAlgoDispatch>(algorithm);
37 sq->record<kp::OpTensorSyncLocal>(params);
38 sq->eval();
39
40 std::vector<float> expectedA = {
41 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
42 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
43 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5,
44 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7,
45 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
46 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11,
47 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13,
48 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15
49 };
50
51 std::vector<float> expectedB = {
52 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2,
53 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5,
54 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0,
55 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3,
56 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6,
57 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1,
58 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7
59 };
60
61 EXPECT_EQ(tensorA->vector(), expectedA);
62 EXPECT_EQ(tensorB->vector(), expectedB);
63 }
64 }
65}

Callers

nothing calls this directly

Calls 7

tensorMethod · 0.80
beginMethod · 0.80
endMethod · 0.80
algorithmMethod · 0.80
sequenceMethod · 0.80
evalMethod · 0.45
vectorMethod · 0.45

Tested by

no test coverage detected