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 
38 public:
40  static int const kRank = 1;
41 
43  static int const kStrideRank = 1;
44 
46  using Index = int32_t;
47 
49  using LongIndex = int64_t;
50 
53 
56 
57 private:
58 
59  //
60  // No actual stride vector stored
61  //
62 
63 public:
64 
65  //
66  // Methods
67  //
68 
71 
74  static PackedVectorLayout packed(TensorCoord const &size) {
75  return PackedVectorLayout();
76  }
77 
80  LongIndex operator()(TensorCoord const &coord) const {
81  return coord[0];
82  }
83 
86  Stride stride() const {
87  return make_Coord(1);
88  }
89 
92  LongIndex capacity(TensorCoord const &size) const {
93  return size[0];
94  }
95 };
96 
97 } // namespace layout
98 } // namespace cutlass
int64_t LongIndex
Long index type used for offsets.
Definition: vector.h:49
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_HOST_DEVICE PackedVectorLayout()
Definition: vector.h:70
CUTLASS_HOST_DEVICE Stride stride() const
Returns the stride of the layout.
Definition: vector.h:86
static int const kRank
Logical rank of tensor.
Definition: vector.h:40
int32_t Index
Index type used for coordinates.
Definition: vector.h:46
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_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
Tensor layout for densely packed vectors.
Definition: vector.h:37
Basic include for CUTLASS.
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