Skip to content

Commit

Permalink
Skip CUDA-related tests if no GPU is present (#252)
Browse files Browse the repository at this point in the history
Make unit tests that require a CUDA device skip the test and exit
succesfully if the CUDA runtime is not available, or no CUDA devices
are available.
  • Loading branch information
cmsbuild authored and fwyzard committed Dec 25, 2020
1 parent 2314e4c commit 795ca8e
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 30 deletions.
59 changes: 32 additions & 27 deletions RecoPixelVertexing/PixelTrackFitting/test/BuildFile.xml
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
<library file="PixelTrackTest.cc" name="PixelTrackTest">
<use name="boost"/>
<use name="root"/>
<use name="FWCore/Framework"/>
<use name="FWCore/PluginManager"/>
<use name="FWCore/ParameterSet"/>
<use name="Geometry/Records"/>
<use name="Geometry/CommonDetUnit"/>
<use name="Geometry/TrackerGeometryBuilder"/>
<use name="DataFormats/TrackerRecHit2D"/>
<use name="RecoTracker/TkHitPairs"/>
<use name="RecoTracker/TkTrackingRegions"/>
<use name="RecoPixelVertexing/PixelTriplets"/>
<use name="RecoPixelVertexing/PixelTrackFitting"/>
<flags EDM_PLUGIN="1"/>
<library file="PixelTrackTest.cc" name="PixelTrackTest">
<use name="boost"/>
<use name="root"/>
<use name="FWCore/Framework"/>
<use name="FWCore/PluginManager"/>
<use name="FWCore/ParameterSet"/>
<use name="Geometry/Records"/>
<use name="Geometry/CommonDetUnit"/>
<use name="Geometry/TrackerGeometryBuilder"/>
<use name="DataFormats/TrackerRecHit2D"/>
<use name="RecoTracker/TkHitPairs"/>
<use name="RecoTracker/TkTrackingRegions"/>
<use name="RecoPixelVertexing/PixelTriplets"/>
<use name="RecoPixelVertexing/PixelTrackFitting"/>
<flags EDM_PLUGIN="1"/>
</library>


<bin file="testRiemannFit.cpp">
<use name="eigen"/>
<use name="cuda"/>
Expand All @@ -32,28 +31,34 @@
<use name="eigen"/>
<use name="cuda"/>
<use name="cuda-api-wrappers"/>
<use name="HeterogeneousCore/CUDAUtilities"/>
<flags CXXFLAGS="-g"/>
</bin>

<bin file="testEigenGPUNoFit.cu" name="testEigenGPUNoFit_t">
<use name="eigen"/>
<use name="cuda"/>
<use name="cuda-api-wrappers"/>
<use name="HeterogeneousCore/CUDAUtilities"/>
<flags CXXFLAGS="-g"/>
</bin>

<bin file="PixelTrackRiemannFit.cc">
<use name="eigen"/>
<use name="cuda"/>
<use name="root"/>
<flags CXXFLAGS="-DEIGEN_NO_DEBUG"/>
<use name="eigen"/>
<use name="cuda"/>
<use name="root"/>
<flags CXXFLAGS="-DEIGEN_NO_DEBUG"/>
</bin>

<bin file="PixelTrackRiemannFit.cc" name = "PixelTrackRiemannFit_Debug">
<use name="eigen"/>
<use name="cuda"/>
<use name="root"/>
<flags CXXFLAGS="-g"/>
<use name="eigen"/>
<use name="cuda"/>
<use name="root"/>
<flags CXXFLAGS="-g"/>
</bin>

<bin file="testEigenJacobian.cpp">
<use name="eigen"/>
<use name="cuda"/>
<flags CXXFLAGS="-g"/>
<use name="eigen"/>
<use name="cuda"/>
<flags CXXFLAGS="-g"/>
</bin>
7 changes: 4 additions & 3 deletions RecoPixelVertexing/PixelTrackFitting/test/testEigenGPU.cu
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
#include <Eigen/Core>
#include <Eigen/Eigenvalues>


#include "RecoPixelVertexing/PixelTrackFitting/interface/RiemannFit.h"

#include "test_common.h"
#include "HeterogeneousCore/CUDAUtilities/interface/cudaCheck.h"
#include "HeterogeneousCore/CUDAUtilities/interface/exitSansCUDADevices.h"
#include "RecoPixelVertexing/PixelTrackFitting/interface/RiemannFit.h"

using namespace Eigen;

Expand Down Expand Up @@ -216,6 +215,8 @@ void testFit() {
}

int main (int argc, char * argv[]) {
exitSansCUDADevices();

testFit();
std::cout << "TEST FIT, NO ERRORS" << std::endl;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

#include "test_common.h"

#include "HeterogeneousCore/CUDAUtilities/interface/exitSansCUDADevices.h"

using namespace Eigen;

__host__ __device__ void eigenValues(Matrix3d * m, Eigen::SelfAdjointEigenSolver<Matrix3d>::RealVectorType * ret) {
Expand Down Expand Up @@ -183,6 +185,7 @@ std::cout << "*************************\n\n" << std::endl;


int main (int argc, char * argv[]) {
exitSansCUDADevices();

testEigenvalues();
testInverse3x3();
Expand Down

0 comments on commit 795ca8e

Please sign in to comment.