Skip to content

Commit 669197a

Browse files
authored
Merge pull request #179 from CVCUDA/release-patch-v0.10.0
Merge patched release code for v0.10.0-beta into main
2 parents 4d89620 + 660cb14 commit 669197a

File tree

843 files changed

+5890
-3931
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

843 files changed

+5890
-3931
lines changed

.gitattributes

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# SPDX-FileCopyrightText: Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
1+
# SPDX-FileCopyrightText: Copyright (c) 2022-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
22
# SPDX-License-Identifier: Apache-2.0
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");

.github/workflows/codeql.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
# SPDX-FileCopyrightText: Copyright (c) 2022-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
# SPDX-License-Identifier: Apache-2.0
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
116
name: "CodeQL"
217

318
on:

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# SPDX-FileCopyrightText: Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
1+
# SPDX-FileCopyrightText: Copyright (c) 2022-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
22
# SPDX-License-Identifier: Apache-2.0
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ endif()
2323

2424
project(cvcuda
2525
LANGUAGES C CXX
26-
VERSION 0.9.0
26+
VERSION 0.10.0
2727
DESCRIPTION "CUDA-accelerated Computer Vision algorithms"
2828
)
2929

LICENSE.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -87,18 +87,18 @@ END OF TERMS AND CONDITIONS
8787

8888
# APPENDIX: How to apply the Apache License to your work
8989

90-
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
90+
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[ ]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
9191

92-
Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
92+
Copyright (c) [yyyy] [name of copyright owner]
9393

94-
Licensed under the Apache License, Version 2.0 (the "License");
95-
you may not use this file except in compliance with the License.
96-
You may obtain a copy of the License at
94+
Licensed under the Apache License, Version 2.0 (the "License");
95+
you may not use this file except in compliance with the License.
96+
You may obtain a copy of the License at
9797

98-
http://www.apache.org/licenses/LICENSE-2.0
98+
http://www.apache.org/licenses/LICENSE-2.0
9999

100-
Unless required by applicable law or agreed to in writing, software
101-
distributed under the License is distributed on an "AS IS" BASIS,
102-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
103-
See the License for the specific language governing permissions and
104-
limitations under the License.
100+
Unless required by applicable law or agreed to in writing, software
101+
distributed under the License is distributed on an "AS IS" BASIS,
102+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
103+
See the License for the specific language governing permissions and
104+
limitations under the License.

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
[![License](https://img.shields.io/badge/License-Apache_2.0-yellogreen.svg)](https://opensource.org/licenses/Apache-2.0)
2020

21-
![Version](https://img.shields.io/badge/Version-v0.9.0--beta-blue)
21+
![Version](https://img.shields.io/badge/Version-v0.10.0--beta-blue)
2222

2323
![Platform](https://img.shields.io/badge/Platform-linux--64_%7C_win--64_wsl2%7C_aarch64-gray)
2424

@@ -61,7 +61,9 @@ To get a local copy up and running follow these steps.
6161
- Only one CUDA version (CUDA 11.x or CUDA 12.x) of CV-CUDA packages (Debian packages, tarballs, Python Wheels) can be installed at a time. Please uninstall all packages from a given CUDA version before installing packages from a different version.
6262
- Documentation built on Ubuntu 20.04 needs an up-to-date version of sphinx (`pip install --upgrade sphinx`) as well as explicitly parsing the system's default python version ` ./ci/build_docs path/to/build -DPYTHON_VERSIONS="<py_ver>"`.
6363
- Python bindings installed via Debian packages and Python tests fail with Numpy 2.0. We recommend using an older version of Numpy (e.g. 1.26) until we have implemented a fix.
64-
- The Resize and RandomResizedCrop operators incorrectly interpolate pixel values near the boundary of an image or tensor when using linear and cubic interpolation. This will be fixed in an upcoming release.
64+
- The Resize and RandomResizedCrop operators incorrectly interpolate pixel values near the boundary of an image or tensor when using cubic interpolation. This will be fixed in an upcoming release.
65+
- Cache/resource management introduced in v0.10 add micro-second-level overhead to Python operator calls. Based on the performance analysis of our Python samples, we expect the production- and pipeline-level impact to be negligible. CUDA kernel and C++ call performance is not affected. We aim to investigate and reduce this overhead further in a future release.​
66+
- Sporadic Pybind11-deallocation crashes have been reported in long-lasting multi-threaded Python pipelines with externally allocated memory (eg wrapped Pytorch buffers). We are evaluating an upgrade of Pybind11 (currently using 2.10) as a potential fix in an upcoming release.
6567

6668
### Installation
6769

bench/BenchAdaptiveThreshold.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

bench/BenchAverageBlur.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

bench/BenchBilateralFilter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

bench/BenchBrightnessContrast.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

bench/BenchColorTwist.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

bench/BenchComposite.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

bench/BenchCopyMakeBorder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

bench/BenchCvtColor.cpp

Lines changed: 127 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,63 +21,158 @@
2121

2222
#include <nvbench/nvbench.cuh>
2323

24-
template<typename T>
25-
inline void CvtColor(nvbench::state &state, nvbench::type_list<T>)
24+
#include <map>
25+
#include <stdexcept>
26+
#include <tuple>
27+
28+
inline static std::tuple<NVCVColorConversionCode, NVCVImageFormat, NVCVImageFormat> StringToFormats(
29+
const std::string &str)
30+
{
31+
// clang-format off
32+
static const std::map<std::string, std::tuple<NVCVColorConversionCode, NVCVImageFormat, NVCVImageFormat>> codeMap{
33+
{ "RGB2BGR", {NVCV_COLOR_RGB2BGR, NVCV_IMAGE_FORMAT_RGB8, NVCV_IMAGE_FORMAT_BGR8 }},
34+
{ "RGB2RGBA", {NVCV_COLOR_RGB2RGBA, NVCV_IMAGE_FORMAT_RGB8, NVCV_IMAGE_FORMAT_RGBA8}},
35+
{ "RGBA2RGB", {NVCV_COLOR_RGBA2RGB, NVCV_IMAGE_FORMAT_RGBA8, NVCV_IMAGE_FORMAT_RGB8 }},
36+
{ "RGB2GRAY", {NVCV_COLOR_RGB2GRAY, NVCV_IMAGE_FORMAT_RGB8, NVCV_IMAGE_FORMAT_Y8 }},
37+
{ "GRAY2RGB", {NVCV_COLOR_GRAY2RGB, NVCV_IMAGE_FORMAT_Y8, NVCV_IMAGE_FORMAT_RGB8 }},
38+
{ "RGB2HSV", {NVCV_COLOR_RGB2HSV, NVCV_IMAGE_FORMAT_RGB8, NVCV_IMAGE_FORMAT_HSV8 }},
39+
{ "HSV2RGB", {NVCV_COLOR_HSV2RGB, NVCV_IMAGE_FORMAT_HSV8, NVCV_IMAGE_FORMAT_RGB8 }},
40+
{ "RGB2YUV", {NVCV_COLOR_RGB2YUV, NVCV_IMAGE_FORMAT_RGB8, NVCV_IMAGE_FORMAT_YUV8 }},
41+
{ "YUV2RGB", {NVCV_COLOR_YUV2RGB, NVCV_IMAGE_FORMAT_YUV8, NVCV_IMAGE_FORMAT_RGB8 }},
42+
{"RGB2YUV_NV12", {NVCV_COLOR_RGB2YUV_NV12, NVCV_IMAGE_FORMAT_RGB8, NVCV_IMAGE_FORMAT_NV12 }},
43+
{"YUV2RGB_NV12", {NVCV_COLOR_YUV2RGB_NV12, NVCV_IMAGE_FORMAT_NV12, NVCV_IMAGE_FORMAT_RGB8 }},
44+
};
45+
// clang-format on
46+
47+
if (auto it = codeMap.find(str); it != codeMap.end())
48+
{
49+
return it->second;
50+
}
51+
else
52+
{
53+
throw std::invalid_argument("Unrecognized color code");
54+
}
55+
}
56+
57+
template<typename BT>
58+
inline float BytesPerPixel(NVCVImageFormat imgFormat)
59+
{
60+
switch (imgFormat)
61+
{
62+
#define CVCUDA_BYTES_PER_PIXEL_CASE(FORMAT, BYTES) \
63+
case FORMAT: \
64+
return BYTES * sizeof(BT)
65+
CVCUDA_BYTES_PER_PIXEL_CASE(NVCV_IMAGE_FORMAT_RGB8, 3);
66+
CVCUDA_BYTES_PER_PIXEL_CASE(NVCV_IMAGE_FORMAT_BGR8, 3);
67+
CVCUDA_BYTES_PER_PIXEL_CASE(NVCV_IMAGE_FORMAT_HSV8, 3);
68+
CVCUDA_BYTES_PER_PIXEL_CASE(NVCV_IMAGE_FORMAT_RGBA8, 4);
69+
CVCUDA_BYTES_PER_PIXEL_CASE(NVCV_IMAGE_FORMAT_YUV8, 3);
70+
CVCUDA_BYTES_PER_PIXEL_CASE(NVCV_IMAGE_FORMAT_NV12, 1.5f);
71+
CVCUDA_BYTES_PER_PIXEL_CASE(NVCV_IMAGE_FORMAT_Y8, 1);
72+
#undef CVCUDA_BYTES_PER_PIXEL_CASE
73+
default:
74+
throw std::invalid_argument("Unrecognized format");
75+
}
76+
}
77+
78+
// Adapted from src/util/TensorDataUtils.hpp
79+
inline static nvcv::Tensor CreateTensor(int numImages, int imgWidth, int imgHeight, const nvcv::ImageFormat &imgFormat)
80+
{
81+
if (imgFormat == NVCV_IMAGE_FORMAT_NV12 || imgFormat == NVCV_IMAGE_FORMAT_NV12_ER
82+
|| imgFormat == NVCV_IMAGE_FORMAT_NV21 || imgFormat == NVCV_IMAGE_FORMAT_NV21_ER)
83+
{
84+
int height420 = (imgHeight * 3) / 2;
85+
if (height420 % 3 != 0 || imgWidth % 2 != 0)
86+
{
87+
throw std::invalid_argument("Invalid height");
88+
}
89+
90+
return nvcv::Tensor(numImages, {imgWidth, height420}, nvcv::ImageFormat(NVCV_IMAGE_FORMAT_Y8));
91+
}
92+
else
93+
{
94+
return nvcv::Tensor(numImages, {imgWidth, imgHeight}, imgFormat);
95+
}
96+
}
97+
98+
template<typename BT>
99+
inline void CvtColor(nvbench::state &state, nvbench::type_list<BT>)
26100
try
27101
{
28102
long3 shape = benchutils::GetShape<3>(state.get_string("shape"));
29103
long varShape = state.get_int64("varShape");
104+
std::tuple<NVCVColorConversionCode, NVCVImageFormat, NVCVImageFormat> formats
105+
= StringToFormats(state.get_string("code"));
30106

31-
using BT = typename nvcv::cuda::BaseType<T>;
32-
33-
int ch = nvcv::cuda::NumElements<T>;
107+
NVCVColorConversionCode code = std::get<0>(formats);
108+
nvcv::ImageFormat inFormat{std::get<1>(formats)};
109+
nvcv::ImageFormat outFormat{std::get<2>(formats)};
34110

35-
NVCVColorConversionCode code = ch == 3 ? NVCV_COLOR_BGR2RGB : NVCV_COLOR_BGRA2RGBA;
36-
37-
state.add_global_memory_reads(shape.x * shape.y * shape.z * sizeof(T));
38-
state.add_global_memory_writes(shape.x * shape.y * shape.z * sizeof(T));
111+
state.add_global_memory_reads(shape.x * shape.y * shape.z * BytesPerPixel<BT>(inFormat));
112+
state.add_global_memory_writes(shape.x * shape.y * shape.z * BytesPerPixel<BT>(outFormat));
39113

40114
cvcuda::CvtColor op;
41115

42-
// clang-format off
43-
44116
if (varShape < 0) // negative var shape means use Tensor
45117
{
46-
nvcv::Tensor src({{shape.x, shape.y, shape.z, ch}, "NHWC"}, benchutils::GetDataType<BT>());
47-
nvcv::Tensor dst({{shape.x, shape.y, shape.z, ch}, "NHWC"}, benchutils::GetDataType<BT>());
118+
nvcv::Tensor src = CreateTensor(shape.x, shape.z, shape.y, inFormat);
119+
nvcv::Tensor dst = CreateTensor(shape.x, shape.z, shape.y, outFormat);
48120

49121
benchutils::FillTensor<BT>(src, benchutils::RandomValues<BT>());
50122

51-
state.exec(nvbench::exec_tag::sync, [&op, &src, &dst, &code](nvbench::launch &launch)
52-
{
53-
op(launch.get_stream(), src, dst, code);
54-
});
123+
state.exec(nvbench::exec_tag::sync,
124+
[&op, &src, &dst, &code](nvbench::launch &launch) { op(launch.get_stream(), src, dst, code); });
55125
}
56126
else // zero and positive var shape means use ImageBatchVarShape
57127
{
58-
nvcv::ImageBatchVarShape src(shape.x);
59-
nvcv::ImageBatchVarShape dst(shape.x);
128+
if (inFormat.chromaSubsampling() != nvcv::ChromaSubsampling::CSS_444
129+
|| outFormat.chromaSubsampling() != nvcv::ChromaSubsampling::CSS_444)
130+
{
131+
state.skip("Skipping formats that have subsampled planes for the varshape benchmark");
132+
}
133+
134+
std::vector<nvcv::Image> imgSrc;
135+
std::vector<nvcv::Image> imgDst;
136+
nvcv::ImageBatchVarShape src(shape.x);
137+
nvcv::ImageBatchVarShape dst(shape.x);
138+
std::vector<std::vector<uint8_t>> srcVec(shape.x);
60139

61-
benchutils::FillImageBatch<T>(src, long2{shape.z, shape.y}, long2{varShape, varShape},
62-
benchutils::RandomValues<T>());
63-
dst.pushBack(src.begin(), src.end());
140+
auto randomValuesU8 = benchutils::RandomValues<uint8_t>();
64141

65-
state.exec(nvbench::exec_tag::sync, [&op, &src, &dst, &code](nvbench::launch &launch)
142+
for (int i = 0; i < shape.x; i++)
66143
{
67-
op(launch.get_stream(), src, dst, code);
68-
});
144+
imgSrc.emplace_back(nvcv::Size2D{(int)shape.z, (int)shape.y}, inFormat);
145+
imgDst.emplace_back(nvcv::Size2D{(int)shape.z, (int)shape.y}, outFormat);
146+
147+
int srcRowStride = imgSrc[i].size().w * inFormat.planePixelStrideBytes(0);
148+
int srcBufSize = imgSrc[i].size().h * srcRowStride;
149+
srcVec[i].resize(srcBufSize);
150+
for (int idx = 0; idx < srcBufSize; idx++)
151+
{
152+
srcVec[i][idx] = randomValuesU8();
153+
}
154+
155+
auto imgData = imgSrc[i].exportData<nvcv::ImageDataStridedCuda>();
156+
CUDA_CHECK_ERROR(cudaMemcpy2D(imgData->plane(0).basePtr, imgData->plane(0).rowStride, srcVec[i].data(),
157+
srcRowStride, srcRowStride, imgSrc[i].size().h, cudaMemcpyHostToDevice));
158+
}
159+
src.pushBack(imgSrc.begin(), imgSrc.end());
160+
dst.pushBack(imgDst.begin(), imgDst.end());
161+
162+
state.exec(nvbench::exec_tag::sync,
163+
[&op, &src, &dst, &code](nvbench::launch &launch) { op(launch.get_stream(), src, dst, code); });
69164
}
70165
}
71166
catch (const std::exception &err)
72167
{
73168
state.skip(err.what());
74169
}
75170

76-
// clang-format on
77-
78-
using CvtColorTypes = nvbench::type_list<uchar3, uchar4>;
171+
using BaseTypes = nvbench::type_list<uint8_t>;
79172

80-
NVBENCH_BENCH_TYPES(CvtColor, NVBENCH_TYPE_AXES(CvtColorTypes))
81-
.set_type_axes_names({"InOutDataType"})
82-
.add_string_axis("shape", {"1x1080x1920"})
173+
NVBENCH_BENCH_TYPES(CvtColor, NVBENCH_TYPE_AXES(BaseTypes))
174+
.set_type_axes_names({"BaseType"})
175+
.add_string_axis("shape", {"1x1080x1920", "64x720x1280"})
176+
.add_string_axis("code", {"RGB2BGR", "RGB2RGBA", "RGBA2RGB", "RGB2GRAY", "GRAY2RGB", "RGB2HSV", "HSV2RGB",
177+
"RGB2YUV", "YUV2RGB", "RGB2YUV_NV12", "YUV2RGB_NV12"})
83178
.add_int64_axis("varShape", {-1, 0});

bench/BenchErase.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

bench/BenchFlip.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

bench/BenchGaussian.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

bench/BenchGaussianNoise.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

bench/BenchHistogramEq.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

bench/BenchInpaint.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

bench/BenchJointBilateralFilter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

bench/BenchLabel.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

bench/BenchLaplacian.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");

0 commit comments

Comments
 (0)