Skip to content

Commit

Permalink
[builds] in CODEGEN, backport cudand changes from gg_tt.mad madgraph5…
Browse files Browse the repository at this point in the history
…/madgraph4gpu#679, include small formatting fixes
  • Loading branch information
valassi committed Jun 4, 2023
1 parent da8466e commit b9f781e
Show file tree
Hide file tree
Showing 7 changed files with 95 additions and 56 deletions.
37 changes: 37 additions & 0 deletions madgraph/iolibs/template_files/gpu/CommonRandomNumberKernel.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Copyright (C) 2020-2023 CERN and UCLouvain.
// Licensed under the GNU Lesser General Public License (version 3 or later).
// Created by: A. Valassi (Dec 2021) for the MG5aMC CUDACPP plugin.
// Further modified by: A. Valassi (2021-2023) for the MG5aMC CUDACPP plugin.

#include "CommonRandomNumbers.h"
#include "MemoryBuffers.h"
#include "RandomNumberKernels.h"

#include <cassert>

#ifdef __CUDACC__
namespace mg5amcGpu
#else
namespace mg5amcCpu
#endif
{
//--------------------------------------------------------------------------

CommonRandomNumberKernel::CommonRandomNumberKernel( BufferRndNumMomenta& rnarray )
: RandomNumberKernelBase( rnarray )
, m_seed( 20211220 )
{
if( m_rnarray.isOnDevice() )
throw std::runtime_error( "CommonRandomNumberKernel on host with a device random number array" );
}

//--------------------------------------------------------------------------

void CommonRandomNumberKernel::generateRnarray()
{
std::vector<double> rnd = CommonRandomNumbers::generate<double>( m_rnarray.size(), m_seed ); // NB: generate as double (HARDCODED)
std::copy( rnd.begin(), rnd.end(), m_rnarray.data() ); // NB: copy may imply a double-to-float conversion
}

//--------------------------------------------------------------------------
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,14 @@
// Created by: A. Valassi (Dec 2021) for the MG5aMC CUDACPP plugin.
// Further modified by: A. Valassi (2021-2023) for the MG5aMC CUDACPP plugin.

#include "RandomNumberKernels.h"

#include "CommonRandomNumbers.h"
#include "CudaRuntime.h"
#include "MemoryBuffers.h"
#include "RandomNumberKernels.h"

#include <cassert>

#ifndef MGONGPU_HAS_NO_CURAND /* clang-format off */
#include "curand.h"
#define checkCurand( code ){ assertCurand( code, __FILE__, __LINE__ ); }
inline void assertCurand( curandStatus_t code, const char *file, int line, bool abort = true )
{
Expand All @@ -30,25 +29,6 @@ namespace mg5amcCpu
#endif
{
//--------------------------------------------------------------------------

CommonRandomNumberKernel::CommonRandomNumberKernel( BufferRndNumMomenta& rnarray )
: RandomNumberKernelBase( rnarray )
, m_seed( 20211220 )
{
if( m_rnarray.isOnDevice() )
throw std::runtime_error( "CommonRandomNumberKernel on host with a device random number array" );
}

//--------------------------------------------------------------------------

void CommonRandomNumberKernel::generateRnarray()
{
std::vector<double> rnd = CommonRandomNumbers::generate<double>( m_rnarray.size(), m_seed ); // NB: generate as double (HARDCODED)
std::copy( rnd.begin(), rnd.end(), m_rnarray.data() ); // NB: copy may imply a double-to-float conversion
}

//--------------------------------------------------------------------------

#ifndef MGONGPU_HAS_NO_CURAND
CurandRandomNumberKernel::CurandRandomNumberKernel( BufferRndNumMomenta& rnarray, const bool onDevice )
: RandomNumberKernelBase( rnarray )
Expand Down
6 changes: 4 additions & 2 deletions madgraph/iolibs/template_files/gpu/RandomNumberKernels.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@

// NB This must come AFTER mgOnGpuConfig.h which contains our definition of __global__ when __CUDACC__ is not defined
#ifndef MGONGPU_HAS_NO_CURAND
#include "curand.h"
//#include "curand.h"
struct curandGenerator_st; // forward definition from curand.h
#endif

#include "MemoryBuffers.h"
Expand Down Expand Up @@ -141,7 +142,8 @@ namespace mg5amcCpu
const bool m_isOnDevice;

// The curand generator
curandGenerator_t m_rnGen;
// (NB: curand.h defines typedef generator_t as a pointer to forward-defined 'struct curandGenerator_st')
curandGenerator_st* m_rnGen;
};

#endif
Expand Down
74 changes: 46 additions & 28 deletions madgraph/iolibs/template_files/gpu/cudacpp.mk
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ endif

#=== Configure the C++ compiler

CXXFLAGS = $(OPTFLAGS) -std=c++17 $(INCFLAGS) $(USE_NVTX) -Wall -Wshadow -Wextra
CXXFLAGS = $(OPTFLAGS) -std=c++17 $(INCFLAGS) -Wall -Wshadow -Wextra
ifeq ($(shell $(CXX) --version | grep ^nvc++),)
CXXFLAGS+= -ffast-math # see issue #117
endif
Expand Down Expand Up @@ -119,11 +119,11 @@ ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),)
###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533
comma:=,
CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch))
CUINC = -I$(CUDA_HOME)/include/
CULIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here!
CUOPTFLAGS = -lineinfo
CUFLAGS = $(OPTFLAGS) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math
###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow
CUINC = -I$(CUDA_HOME)/include/
CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here!
CUOPTFLAGS = -lineinfo
CUFLAGS = $(OPTFLAGS) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math
###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow
###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1)
CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h
# Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12)
Expand All @@ -139,7 +139,8 @@ else
$(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda)
override NVCC=
override USE_NVTX=
override CULIBFLAGS=
override CUINC=
override CURANDLIBFLAGS=
endif

# Set the host C++ compiler for nvcc via "-ccbin <host-compiler>"
Expand Down Expand Up @@ -251,10 +252,12 @@ ifeq ($(HRDCOD),)
endif

# Set the default RNDGEN (random number generator) choice
ifeq ($(NVCC),)
override RNDGEN = hasNoCurand
else ifeq ($(RNDGEN),)
override RNDGEN = hasCurand
ifeq ($(RNDGEN),)
ifeq ($(NVCC),)
override RNDGEN = hasNoCurand
else ifeq ($(RNDGEN),)
override RNDGEN = hasCurand
endif
endif

# Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too
Expand Down Expand Up @@ -357,8 +360,10 @@ endif
# Set the build flags appropriate to each RNDGEN choice (example: "make RNDGEN=hasNoCurand")
$(info RNDGEN=$(RNDGEN))
ifeq ($(RNDGEN),hasNoCurand)
CXXFLAGS += -DMGONGPU_HAS_NO_CURAND
else ifneq ($(RNDGEN),hasCurand)
override CXXFLAGSCURAND = -DMGONGPU_HAS_NO_CURAND
else ifeq ($(RNDGEN),hasCurand)
override CXXFLAGSCURAND =
else
$(error Unknown RNDGEN='$(RNDGEN)': only 'hasCurand' and 'hasNoCurand' are supported)
endif

Expand Down Expand Up @@ -448,19 +453,20 @@ $(BUILDDIR)/.build.$(TAG):

# Generic target and build rules: objects from CUDA compilation
ifneq ($(NVCC),)
$(BUILDDIR)/%%.o : %%.cu *.h ../../src/*.h
$(BUILDDIR)/%%.o : %%.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG)
@if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi
$(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@

$(BUILDDIR)/%%_cu.o : %%.cc *.h ../../src/*.h
$(BUILDDIR)/%%_cu.o : %%.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG)
@if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi
$(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@
endif

# Generic target and build rules: objects from C++ compilation
$(BUILDDIR)/%%.o : %%.cc *.h ../../src/*.h
# (NB do not include CUINC here! add it only for NVTX or curand #679)
$(BUILDDIR)/%%.o : %%.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG)
@if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(CUINC) -fPIC -c $< -o $@
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@

# Apply special build flags only to CrossSectionKernel.cc and gCrossSectionKernel.cu (no fast math, see #117)
ifeq ($(shell $(CXX) --version | grep ^nvc++),)
Expand All @@ -471,6 +477,18 @@ $(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math
endif
endif

# Apply special build flags only to check_sa.o and gcheck_sa.o (NVTX in timermap.h, #679)
$(BUILDDIR)/check_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC)
$(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC)

# Apply special build flags only to check_sa and CurandRandomNumberKernel (curand headers, #679)
$(BUILDDIR)/check_sa.o: CXXFLAGS += $(CXXFLAGSCURAND)
$(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(CXXFLAGSCURAND)
$(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CXXFLAGSCURAND)
ifeq ($(RNDGEN),hasCurand)
$(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CUINC)
endif

# Avoid "warning: builtin __has_trivial_... is deprecated; use __is_trivially_... instead" in nvcc with icx2023 (#592)
ifneq ($(shell $(CXX) --version | egrep '^(Intel)'),)
ifneq ($(NVCC),)
Expand Down Expand Up @@ -498,7 +516,7 @@ endif
# Target (and build rules): common (src) library
commonlib : $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so

$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc
$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(BUILDDIR)/.build.$(TAG)
$(MAKE) -C ../../src $(MAKEDEBUG) -f $(CUDACPP_SRC_MAKEFILE)

#-------------------------------------------------------------------------------
Expand All @@ -508,12 +526,12 @@ processid_short=$(shell basename $(CURDIR) | awk -F_ '{print $$(NF-1)"_"$$NF}')

MG5AMC_CXXLIB = mg5amc_$(processid_short)_cpp
cxx_objects_lib=$(BUILDDIR)/CPPProcess.o $(BUILDDIR)/MatrixElementKernels.o $(BUILDDIR)/BridgeKernels.o $(BUILDDIR)/CrossSectionKernels.o
cxx_objects_exe=$(BUILDDIR)/RandomNumberKernels.o $(BUILDDIR)/RamboSamplingKernels.o
cxx_objects_exe=$(BUILDDIR)/CommonRandomNumberKernel.o $(BUILDDIR)/RamboSamplingKernels.o

ifneq ($(NVCC),)
MG5AMC_CULIB = mg5amc_$(processid_short)_cuda
cu_objects_lib=$(BUILDDIR)/gCPPProcess.o $(BUILDDIR)/gMatrixElementKernels.o $(BUILDDIR)/gBridgeKernels.o $(BUILDDIR)/gCrossSectionKernels.o
cu_objects_exe=$(BUILDDIR)/gRandomNumberKernels.o $(BUILDDIR)/gRamboSamplingKernels.o
cu_objects_exe=$(BUILDDIR)/gCommonRandomNumberKernel.o $(BUILDDIR)/gRamboSamplingKernels.o
endif

# Target (and build rules): C++ and CUDA shared libraries
Expand All @@ -540,8 +558,8 @@ endif

# Target (and build rules): C++ and CUDA standalone executables
$(cxx_main): LIBFLAGS += $(CXXLIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH
$(cxx_main): $(BUILDDIR)/check_sa.o $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(cxx_objects_exe)
$(CXX) -o $@ $(BUILDDIR)/check_sa.o $(OMPFLAGS) -ldl -pthread $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CXXLIB) $(cxx_objects_exe) $(CULIBFLAGS)
$(cxx_main): $(BUILDDIR)/check_sa.o $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(cxx_objects_exe) $(BUILDDIR)/CurandRandomNumberKernel.o
$(CXX) -o $@ $(BUILDDIR)/check_sa.o $(OMPFLAGS) -ldl -pthread $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CXXLIB) $(cxx_objects_exe) $(BUILDDIR)/CurandRandomNumberKernel.o $(CURANDLIBFLAGS)

ifneq ($(NVCC),)
ifneq ($(shell $(CXX) --version | grep ^Intel),)
Expand All @@ -551,8 +569,8 @@ else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531
$(cu_main): LIBFLAGS += -L$(patsubst %%bin/nvc++,%%lib,$(subst ccache ,,$(CXX))) -lnvhpcatm -lnvcpumath -lnvc
endif
$(cu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH
$(cu_main): $(BUILDDIR)/gcheck_sa.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe)
$(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(CULIBFLAGS)
$(cu_main): $(BUILDDIR)/gcheck_sa.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o
$(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(CURANDLIBFLAGS)
endif

#-------------------------------------------------------------------------------
Expand All @@ -576,7 +594,7 @@ $(fcxx_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libg
endif
$(fcxx_main): LIBFLAGS += $(CXXLIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH
$(fcxx_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler.o $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(cxx_objects_exe)
$(CXX) -o $@ $(BUILDDIR)/fcheck_sa.o $(OMPFLAGS) $(BUILDDIR)/fsampler.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CXXLIB) $(cxx_objects_exe) $(CULIBFLAGS)
$(CXX) -o $@ $(BUILDDIR)/fcheck_sa.o $(OMPFLAGS) $(BUILDDIR)/fsampler.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CXXLIB) $(cxx_objects_exe)

ifneq ($(NVCC),)
ifneq ($(shell $(CXX) --version | grep ^Intel),)
Expand All @@ -588,7 +606,7 @@ $(fcu_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libgf
endif
$(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH
$(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe)
$(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(CULIBFLAGS)
$(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe)
endif

#-------------------------------------------------------------------------------
Expand Down Expand Up @@ -657,11 +675,11 @@ endif
ifeq ($(NVCC),) # link only runTest.o
$(testmain): LIBFLAGS += $(CXXLIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH
$(testmain): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cxx_objects_lib) $(cxx_objects_exe) $(GTESTLIBS)
$(CXX) -o $@ $(cxx_objects_lib) $(cxx_objects_exe) -ldl -pthread $(LIBFLAGS) $(CULIBFLAGS)
$(CXX) -o $@ $(cxx_objects_lib) $(cxx_objects_exe) -ldl -pthread $(LIBFLAGS)
else # link both runTest.o and runTest_cu.o
$(testmain): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH
$(testmain): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cxx_objects_lib) $(cxx_objects_exe) $(cu_objects_lib) $(cu_objects_exe) $(GTESTLIBS)
$(NVCC) -o $@ $(cxx_objects_lib) $(cxx_objects_exe) $(cu_objects_lib) $(cu_objects_exe) -ldl $(LIBFLAGS) -lcuda $(CULIBFLAGS)
$(NVCC) -o $@ $(cxx_objects_lib) $(cxx_objects_exe) $(cu_objects_lib) $(cu_objects_exe) -ldl $(LIBFLAGS) -lcuda
endif

# Use flock (Linux only, no Mac) to allow 'make -j' if googletest has not yet been downloaded https://stackoverflow.com/a/32666215
Expand Down
2 changes: 1 addition & 1 deletion madgraph/iolibs/template_files/gpu/cudacpp_src.mk
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ $(LIBDIR)/.build.$(TAG):
#-------------------------------------------------------------------------------

# Generic target and build rules: objects from C++ compilation
$(BUILDDIR)/%%.o : %%.cc *.h
$(BUILDDIR)/%%.o : %%.cc *.h $(BUILDDIR)/.build.$(TAG)
@if [ ! -d $(BUILDDIR) ]; then mkdir -p $(BUILDDIR); fi
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@

Expand Down
3 changes: 2 additions & 1 deletion model_handling.py
Original file line number Diff line number Diff line change
Expand Up @@ -1306,7 +1306,8 @@ def generate_process_files(self):
files.ln(pjoin(self.path, 'CrossSectionKernels.cc'), self.path, 'gCrossSectionKernels.cu')
files.ln(pjoin(self.path, 'MatrixElementKernels.cc'), self.path, 'gMatrixElementKernels.cu')
files.ln(pjoin(self.path, 'RamboSamplingKernels.cc'), self.path, 'gRamboSamplingKernels.cu')
files.ln(pjoin(self.path, 'RandomNumberKernels.cc'), self.path, 'gRandomNumberKernels.cu')
files.ln(pjoin(self.path, 'CommonRandomNumberKernel.cc'), self.path, 'gCommonRandomNumberKernel.cu')
files.ln(pjoin(self.path, 'CurandRandomNumberKernel.cc'), self.path, 'gCurandRandomNumberKernel.cu')
files.ln(pjoin(self.path, 'BridgeKernels.cc'), self.path, 'gBridgeKernels.cu')
# NB: symlink of cudacpp.mk to makefile is overwritten by madevent makefile if this exists (#480)
# NB: this relies on the assumption that cudacpp code is generated before madevent code
Expand Down
5 changes: 3 additions & 2 deletions output.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,8 @@ class PLUGIN_ProcessExporter(PLUGIN_export_cpp.ProcessExporterGPU):
s+'gpu/CrossSectionKernels.cc', s+'gpu/CrossSectionKernels.h',
s+'gpu/MatrixElementKernels.cc', s+'gpu/MatrixElementKernels.h',
s+'gpu/RamboSamplingKernels.cc', s+'gpu/RamboSamplingKernels.h',
s+'gpu/RandomNumberKernels.cc', s+'gpu/RandomNumberKernels.h',
s+'gpu/RandomNumberKernels.h',
s+'gpu/CommonRandomNumberKernel.cc', s+'gpu/CurandRandomNumberKernel.cc',
s+'gpu/Bridge.h', s+'gpu/BridgeKernels.cc', s+'gpu/BridgeKernels.h',
s+'gpu/fbridge.cc', s+'gpu/fbridge.inc', s+'gpu/fsampler.cc', s+'gpu/fsampler.inc',
s+'gpu/MadgraphTest.h', s+'gpu/runTest.cc',
Expand All @@ -119,7 +120,7 @@ class PLUGIN_ProcessExporter(PLUGIN_export_cpp.ProcessExporterGPU):
'CrossSectionKernels.cc', 'CrossSectionKernels.h',
'MatrixElementKernels.cc', 'MatrixElementKernels.h',
'RamboSamplingKernels.cc', 'RamboSamplingKernels.h',
'RandomNumberKernels.h', 'RandomNumberKernels.cc',
'RandomNumberKernels.h', 'CommonRandomNumberKernel.cc', 'CurandRandomNumberKernel.cc',
'Bridge.h', 'BridgeKernels.cc', 'BridgeKernels.h',
'fbridge.cc', 'fbridge.inc', 'fsampler.cc', 'fsampler.inc',
'MadgraphTest.h', 'runTest.cc',
Expand Down

0 comments on commit b9f781e

Please # to comment.