docs/vector_8h_source.html
| | CUTLASS
CUDA Templates for Linear Algebra Subroutines and Solvers |
vector.h
Go to the documentation of this file.
1 /***************************************************************************************************
2 * Copyright (c) 2017-2019, NVIDIA CORPORATION. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without modification, are permitted
5 * provided that the following conditions are met:
6 * * Redistributions of source code must retain the above copyright notice, this list of
7 * conditions and the following disclaimer.
8 * * Redistributions in binary form must reproduce the above copyright notice, this list of
9 * conditions and the following disclaimer in the documentation and/or other materials
10 * provided with the distribution.
11 * * Neither the name of the NVIDIA CORPORATION nor the names of its contributors may be used
12 * to endorse or promote products derived from this software without specific prior written
13 * permission.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
17 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
19 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
20 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
21 * STRICT LIABILITY, OR TOR (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 *
24 **************************************************************************************************/
28 #pragma once
29
30 #include "cutlass/cutlass.h"
31 #include "cutlass/coord.h"
32
33 namespace cutlass {
34 namespace layout {
35
37 class PackedVectorLayout {
38 public:
41
43static int const kStrideRank = 1;
44
47
50
52using TensorCoord = Coord<kRank, Index>;
53
55using Stride = Coord<kStrideRank, Index>;
56
57 private:
58
59//
60// No actual stride vector stored
61//
62
63 public:
64
65//
66// Methods
67//
68
70PackedVectorLayout() { }
71
74static PackedVectorLayout packed(TensorCoord const &size) {
75return PackedVectorLayout();
76 }
77
80LongIndex operator()(TensorCoord const &coord) const {
81return coord[0];
82 }
83
87return make_Coord(1);
88 }
89
92LongIndex capacity(TensorCoord const &size) const {
93return size[0];
94 }
95 };
96
97 } // namespace layout
98 } // namespace cutlass
cutlass::layout::PackedVectorLayout::LongIndex
int64_t LongIndex
Long index type used for offsets.
Definition: vector.h:49
cutlass::layout::PackedVectorLayout::kStrideRank
static int const kStrideRank
Rank of stride vector.
Definition: vector.h:43
Definition: aligned_buffer.h:35
A Coord is a coordinate of arbitrary rank into a tensor or matrix.
CUTLASS_HOST_DEVICE Coord< 1 > make_Coord(int _0)
Helper to make a 2-element coordinate.
Definition: coord.h:387
cutlass::layout::PackedVectorLayout::PackedVectorLayout
CUTLASS_HOST_DEVICE PackedVectorLayout()
Definition: vector.h:70
cutlass::layout::PackedVectorLayout::stride
CUTLASS_HOST_DEVICE Stride stride() const
Returns the stride of the layout.
Definition: vector.h:86
cutlass::layout::PackedVectorLayout::kRank
static int const kRank
Logical rank of tensor.
Definition: vector.h:40
cutlass::layout::PackedVectorLayout::Index
int32_t Index
Index type used for coordinates.
Definition: vector.h:46
cutlass::layout::PackedVectorLayout::packed
static CUTLASS_HOST_DEVICE PackedVectorLayout packed(TensorCoord const &size)
Helper returns a layout to a tightly packed tensor.
Definition: vector.h:74
#define CUTLASS_HOST_DEVICE
Definition: cutlass.h:89
cutlass::layout::PackedVectorLayout::operator()
CUTLASS_HOST_DEVICE LongIndex operator()(TensorCoord const &coord) const
Returns the offset of a coordinate in linear memory.
Definition: vector.h:80
Statically-sized array specifying Coords within a tensor.
Definition: coord.h:43
cutlass::layout::PackedVectorLayout
Tensor layout for densely packed vectors.
Definition: vector.h:37
Basic include for CUTLASS.
cutlass::layout::PackedVectorLayout::capacity
CUTLASS_HOST_DEVICE LongIndex capacity(TensorCoord const &size) const
Compute the number of contiguous elements needed to store a tensor with the given size...
Definition: vector.h:92
Generated by 1.8.11