Back to Cutlass

CUTLASS: vector.h Source File

docs/vector_8h_source.html

4.4.29.5 KB
Original Source

| | 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:

40static int const kRank = 1;

41

43static int const kStrideRank = 1;

44

46using Index = int32_t;

47

49using LongIndex = int64_t;

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

69CUTLASS_HOST_DEVICE

70PackedVectorLayout() { }

71

73CUTLASS_HOST_DEVICE

74static PackedVectorLayout packed(TensorCoord const &size) {

75return PackedVectorLayout();

76 }

77

79CUTLASS_HOST_DEVICE

80LongIndex operator()(TensorCoord const &coord) const {

81return coord[0];

82 }

83

85CUTLASS_HOST_DEVICE

86Stride stride() const {

87return make_Coord(1);

88 }

89

91CUTLASS_HOST_DEVICE

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

cutlass

Definition: aligned_buffer.h:35

coord.h

A Coord is a coordinate of arbitrary rank into a tensor or matrix.

cutlass::make_Coord

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

CUTLASS_HOST_DEVICE

#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

cutlass::Coord

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

cutlass.h

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