Skip to content

Commit 6bbea40

Browse files
author
leonardo beltrame
committed
Added span to view direct accessors
1 parent 8f214e9 commit 6bbea40

File tree

60 files changed

+730
-590
lines changed

Some content is hidden

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

60 files changed

+730
-590
lines changed

CUDADataFormats/TrackingRecHit/interface/TrackingRecHitSoADevice.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ class TrackingRecHitSoADevice : public cms::cuda::PortableDeviceCollection<Track
4949
auto ret = cms::cuda::make_host_unique<float[]>(4 * nHits(), stream);
5050
size_t rowSize = sizeof(float) * nHits();
5151

52-
size_t srcPitch = ptrdiff_t(view().yLocal()) - ptrdiff_t(view().xLocal());
53-
cudaCheck(
54-
cudaMemcpy2DAsync(ret.get(), rowSize, view().xLocal(), srcPitch, rowSize, 4, cudaMemcpyDeviceToHost, stream));
52+
size_t srcPitch = ptrdiff_t(view().yLocal().data()) - ptrdiff_t(view().xLocal().data());
53+
cudaCheck(cudaMemcpy2DAsync(
54+
ret.get(), rowSize, view().xLocal().data(), srcPitch, rowSize, 4, cudaMemcpyDeviceToHost, stream));
5555

5656
return ret;
5757
} //move to utilities

CUDADataFormats/TrackingRecHit/test/TrackingRecHitSoA_test.cu

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ namespace testTrackingRecHitSoA {
4545
cudaCheck(cudaDeviceSynchronize());
4646
cms::cuda::fillManyFromVector(&(hits.view().phiBinner()),
4747
10,
48-
hits.view().iphi(),
48+
hits.view().iphi().data(),
4949
hits.view().hitsLayerStart().data(),
5050
2000,
5151
256,
52-
hits.view().phiBinnerStorage(),
52+
hits.view().phiBinnerStorage().data(),
5353
stream);
5454
cudaCheck(cudaDeviceSynchronize());
5555
show<TrackerTraits><<<10, 1000, 0, stream>>>(hits.view());

DQM/SiPixelHeterogeneous/plugins/SiPixelCompareTrackSoA.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,8 @@ void SiPixelCompareTrackSoA<T>::analyze(const edm::Event& iEvent, const edm::Eve
157157
auto const& tsoaGPU = *tsoaHandleGPU;
158158
auto maxTracksCPU = tsoaCPU.view().metadata().size(); //this should be same for both?
159159
auto maxTracksGPU = tsoaGPU.view().metadata().size(); //this should be same for both?
160-
auto const* qualityCPU = tsoaCPU.view().quality();
161-
auto const* qualityGPU = tsoaGPU.view().quality();
160+
auto const qualityCPU = tsoaCPU.view().quality();
161+
auto const qualityGPU = tsoaGPU.view().quality();
162162
int32_t nTracksCPU = 0;
163163
int32_t nTracksGPU = 0;
164164
int32_t nLooseAndAboveTracksCPU = 0;

DQM/SiPixelHeterogeneous/plugins/SiPixelCompareTracks.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,8 @@ void SiPixelCompareTracks<T>::analyzeSeparate(U tokenRef, V tokenTar, const edm:
170170
auto maxTracksRef = tsoaRef.view().metadata().size(); //this should be same for both?
171171
auto maxTracksTar = tsoaTar.view().metadata().size(); //this should be same for both?
172172

173-
auto const* qualityRef = tsoaRef.view().quality();
174-
auto const* qualityTar = tsoaTar.view().quality();
173+
auto const qualityRef = tsoaRef.view().quality();
174+
auto const qualityTar = tsoaTar.view().quality();
175175

176176
int32_t nTracksRef = 0;
177177
int32_t nTracksTar = 0;

DQM/SiPixelHeterogeneous/plugins/SiPixelMonitorTrackSoA.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ void SiPixelMonitorTrackSoA<T>::analyze(const edm::Event& iEvent, const edm::Eve
8686
using helper = TracksUtilities<T>;
8787
auto const& tsoa = *tsoaHandle.product();
8888
auto maxTracks = tsoa.view().metadata().size();
89-
auto const* quality = tsoa.view().quality();
89+
auto const quality = tsoa.view().quality();
9090
int32_t nTracks = 0;
9191
int32_t nLooseAndAboveTracks = 0;
9292

DQM/SiPixelHeterogeneous/plugins/SiPixelMonitorTrackSoAAlpaka.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ void SiPixelMonitorTrackSoAAlpaka<T>::analyze(const edm::Event& iEvent, const ed
8585

8686
auto const& tsoa = *tsoaHandle.product();
8787
auto maxTracks = tsoa.view().metadata().size();
88-
auto const* quality = tsoa.view().quality();
88+
auto const quality = tsoa.view().quality();
8989
int32_t nTracks = 0;
9090
int32_t nLooseAndAboveTracks = 0;
9191

DataFormats/SiPixelDigi/interface/SiPixelDigisSoA.h

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include <cstddef>
55
#include <cstdint>
6+
#include <span>
67
#include <vector>
78

89
namespace legacy {
@@ -17,12 +18,15 @@ namespace legacy {
1718
class SiPixelDigisSoA {
1819
public:
1920
SiPixelDigisSoA() = default;
20-
explicit SiPixelDigisSoA(
21-
size_t nDigis, const uint32_t* pdigi, const uint32_t* rawIdArr, const uint16_t* adc, const int32_t* clus)
22-
: pdigi_(pdigi, pdigi + nDigis),
23-
rawIdArr_(rawIdArr, rawIdArr + nDigis),
24-
adc_(adc, adc + nDigis),
25-
clus_(clus, clus + nDigis) {}
21+
explicit SiPixelDigisSoA(size_t nDigis,
22+
std::span<const uint32_t> pdigi,
23+
std::span<const uint32_t> rawIdArr,
24+
std::span<const uint16_t> adc,
25+
std::span<const int32_t> clus)
26+
: pdigi_(pdigi.data(), pdigi.data() + nDigis),
27+
rawIdArr_(rawIdArr.data(), rawIdArr.data() + nDigis),
28+
adc_(adc.data(), adc.data() + nDigis),
29+
clus_(clus.data(), clus.data() + nDigis) {}
2630

2731
~SiPixelDigisSoA() = default;
2832

DataFormats/SiPixelDigiSoA/interface/SiPixelDigiErrorsHost.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ class SiPixelDigiErrorsHost : public PortableHostCollection<SiPixelDigiErrorsSoA
2222

2323
int maxFedWords() const { return maxFedWords_; }
2424

25-
auto& error_data() { return (*view().pixelErrors()); }
26-
auto const& error_data() const { return (*view().pixelErrors()); }
25+
auto& error_data() { return (*view().pixelErrors().data()); }
26+
auto const& error_data() const { return (*view().pixelErrors().data()); }
2727

2828
private:
2929
int maxFedWords_ = 0;

DataFormats/SoATemplate/interface/SoACommon.h

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -677,30 +677,36 @@ namespace cms::soa {
677677
// Column
678678
template <typename T, byte_size_type alignment, bool restrictQualify>
679679
struct SoAColumnAccessorsImpl<T, SoAColumnType::column, SoAAccessType::mutableAccess, alignment, restrictQualify> {
680-
SOA_HOST_DEVICE SOA_INLINE SoAColumnAccessorsImpl(const SoAParametersImpl<SoAColumnType::column, T>& params)
681-
: params_(params) {}
682-
SOA_HOST_DEVICE SOA_INLINE T* operator()() { return params_.addr_; }
680+
SOA_HOST_DEVICE SOA_INLINE SoAColumnAccessorsImpl(const SoAParametersImpl<SoAColumnType::column, T>& params,
681+
size_type size)
682+
: params_(params), size_(size) {}
683+
SOA_HOST_DEVICE SOA_INLINE std::span<T> operator()() { return std::span<T>(params_.addr_, size_); }
683684

684-
using NoParamReturnType = T*;
685+
using NoParamReturnType = std::span<T>;
685686
using ParamReturnType = T&;
686687
SOA_HOST_DEVICE SOA_INLINE T& operator()(size_type index) { return params_.addr_[index]; }
687688

688689
private:
689690
SoAParametersImpl<SoAColumnType::column, T> params_;
691+
size_type size_;
690692
};
691693

692694
// Const column
693695
template <typename T, byte_size_type alignment, bool restrictQualify>
694696
struct SoAColumnAccessorsImpl<T, SoAColumnType::column, SoAAccessType::constAccess, alignment, restrictQualify> {
695-
SOA_HOST_DEVICE SOA_INLINE SoAColumnAccessorsImpl(const SoAConstParametersImpl<SoAColumnType::column, T>& params)
696-
: params_(params) {}
697-
SOA_HOST_DEVICE SOA_INLINE const T* operator()() const { return params_.addr_; }
698-
using NoParamReturnType = const T*;
697+
SOA_HOST_DEVICE SOA_INLINE SoAColumnAccessorsImpl(const SoAConstParametersImpl<SoAColumnType::column, T>& params,
698+
size_type size)
699+
: params_(params), size_(size) {}
700+
SOA_HOST_DEVICE SOA_INLINE std::span<const T> operator()() const {
701+
return std::span<const T>(params_.addr_, size_);
702+
}
703+
using NoParamReturnType = std::span<const T>;
699704
using ParamReturnType = const T&;
700705
SOA_HOST_DEVICE SOA_INLINE T const& operator()(size_type index) const { return params_.addr_[index]; }
701706

702707
private:
703708
SoAConstParametersImpl<SoAColumnType::column, T> params_;
709+
const size_type size_;
704710
};
705711

706712
// Scalar
@@ -738,33 +744,41 @@ namespace cms::soa {
738744
// Eigen-type
739745
template <typename T, byte_size_type alignment, bool restrictQualify>
740746
struct SoAColumnAccessorsImpl<T, SoAColumnType::eigen, SoAAccessType::mutableAccess, alignment, restrictQualify> {
741-
SOA_HOST_DEVICE SOA_INLINE SoAColumnAccessorsImpl(const SoAParametersImpl<SoAColumnType::eigen, T>& params)
742-
: params_(params) {}
743-
SOA_HOST_DEVICE SOA_INLINE typename T::Scalar* operator()() { return params_.addr_; }
744-
using NoParamReturnType = typename T::Scalar*;
747+
SOA_HOST_DEVICE SOA_INLINE SoAColumnAccessorsImpl(const SoAParametersImpl<SoAColumnType::eigen, T>& params,
748+
size_type size)
749+
: params_(params), size_(size) {}
750+
SOA_HOST_DEVICE SOA_INLINE std::span<typename T::Scalar> operator()() {
751+
return std::span<typename T::Scalar>(params_.addr_, size_);
752+
}
753+
using NoParamReturnType = std::span<typename T::Scalar>;
745754
using ParamReturnType = typename SoAValue<SoAColumnType::eigen, T, alignment, restrictQualify>::MapType;
746755
SOA_HOST_DEVICE SOA_INLINE ParamReturnType operator()(size_type index) {
747756
return SoAValue<SoAColumnType::eigen, T, alignment, restrictQualify>(index, params_)();
748757
}
749758

750759
private:
751760
SoAParametersImpl<SoAColumnType::eigen, T> params_;
761+
size_type size_;
752762
};
753763

754764
// Const Eigen-type
755765
template <typename T, byte_size_type alignment, bool restrictQualify>
756766
struct SoAColumnAccessorsImpl<T, SoAColumnType::eigen, SoAAccessType::constAccess, alignment, restrictQualify> {
757-
SOA_HOST_DEVICE SOA_INLINE SoAColumnAccessorsImpl(const SoAConstParametersImpl<SoAColumnType::eigen, T>& params)
758-
: params_(params) {}
759-
SOA_HOST_DEVICE SOA_INLINE typename T::Scalar const* operator()() const { return params_.addr_; }
760-
using NoParamReturnType = typename T::Scalar const*;
767+
SOA_HOST_DEVICE SOA_INLINE SoAColumnAccessorsImpl(const SoAConstParametersImpl<SoAColumnType::eigen, T>& params,
768+
size_type size)
769+
: params_(params), size_(size) {}
770+
SOA_HOST_DEVICE SOA_INLINE std::span<typename T::Scalar const> operator()() const {
771+
return std::span<typename T::Scalar const>(params_.addr_, size_);
772+
}
773+
using NoParamReturnType = std::span<typename T::Scalar const>;
761774
using ParamReturnType = typename SoAValue<SoAColumnType::eigen, T, alignment, restrictQualify>::CMapType;
762775
SOA_HOST_DEVICE SOA_INLINE ParamReturnType operator()(size_type index) const {
763776
return SoAConstValue<SoAColumnType::eigen, T, alignment, restrictQualify>(index, params_)();
764777
}
765778

766779
private:
767780
SoAConstParametersImpl<SoAColumnType::eigen, T> params_;
781+
const size_type size_;
768782
};
769783

770784
/* A helper template stager to avoid commas inside macros */

0 commit comments

Comments
 (0)