wrapper.rst 2.72 KB
Newer Older
randyh62's avatar
randyh62 committed
1
2
3
4
5
6
7
.. meta::
  :description: Composable Kernel documentation and API reference library
  :keywords: composable kernel, CK, ROCm, API, documentation

.. _wrapper:

********************************************************************
8
Wrapper
randyh62's avatar
randyh62 committed
9
********************************************************************
10
11
12
13
14
15

-------------------------------------
Description
-------------------------------------


randyh62's avatar
randyh62 committed
16
The CK library provides a lightweight wrapper for more complex operations implemented in 
17
the library.
18
19
20
21
22
23
24
25

Example:

.. code-block:: c

    const auto shape_4x2x4         = ck::make_tuple(4, ck::make_tuple(2, 4));
    const auto strides_s2x1x8      = ck::make_tuple(2, ck::make_tuple(1, 8));
    const auto layout = ck::wrapper::make_layout(shape_4x2x4, strides_s2x1x8);
26
27
28
    
    std::array<ck::index_t, 32> data;
    auto tensor = ck::wrapper::make_tensor<ck::wrapper::MemoryTypeEnum::Generic>(&data[0], layout);
29

30
31
32
33
34
35
36
37
    for(ck::index_t w = 0; w < size(tensor); w++) {
        tensor(w) = w;
    }

    // slice() == slice(0, -1) (whole dimension)
    auto tensor_slice = tensor(ck::wrapper::slice(1, 3), ck::make_tuple(ck::wrapper::slice(), ck::wrapper::slice()));
    std::cout << "dims:2,(2,4) strides:2,(1,8)" << std::endl;
    for(ck::index_t h = 0; h < ck::wrapper::size<0>(tensor_slice); h++)
38
    {
39
        for(ck::index_t w = 0; w < ck::wrapper::size<1>(tensor_slice); w++)
40
        {
41
            std::cout << tensor_slice(h, w) << " ";
42
43
44
45
46
47
        }
        std::cout << std::endl;
    }

Output::

48
49
50
    dims:2,(2,4) strides:2,(1,8)
    1 5 9 13 17 21 25 29 
    2 6 10 14 18 22 26 30 
51

52

53
54
55
56
Tutorials:

* `GEMM tutorial <https://github.com/ROCm/composable_kernel/blob/develop/client_example/25_wrapper/README.md>`_

57
58
59
Advanced examples:

* `Image to column <https://github.com/ROCm/composable_kernel/blob/develop/client_example/25_wrapper/wrapper_img2col.cpp>`_
60
61
* `Basic gemm <https://github.com/ROCm/composable_kernel/blob/develop/client_example/25_wrapper/wrapper_basic_gemm.cpp>`_
* `Optimized gemm <https://github.com/ROCm/composable_kernel/blob/develop/client_example/25_wrapper/wrapper_optimized_gemm.cpp>`_
62

63
64
65
66
67
68
69
70
71
72
73
-------------------------------------
Layout
-------------------------------------

.. doxygenstruct:: ck::wrapper::Layout

-------------------------------------
Layout helpers
-------------------------------------

.. doxygenfile:: layout_utils.hpp
74
75
76
77
78
79
80
81
82
83
84
85

-------------------------------------
Tensor
-------------------------------------

.. doxygenstruct:: ck::wrapper::Tensor

-------------------------------------
Tensor helpers
-------------------------------------

.. doxygenfile:: tensor_utils.hpp
86
87
88
89
90
91
92
93

.. doxygenfile:: tensor_partition.hpp

-------------------------------------
Operations
-------------------------------------

.. doxygenfile:: copy.hpp
94
.. doxygenfile:: gemm.hpp