[cig-commits] r20798 - in seismo/3D/SPECFEM3D/trunk/src: cuda specfem3D
dkomati1 at geodynamics.org
dkomati1 at geodynamics.org
Sat Sep 29 09:28:36 PDT 2012
Author: dkomati1
Date: 2012-09-29 09:28:36 -0700 (Sat, 29 Sep 2012)
New Revision: 20798
Modified:
seismo/3D/SPECFEM3D/trunk/src/cuda/prepare_constants_cuda.h
seismo/3D/SPECFEM3D/trunk/src/cuda/prepare_mesh_constants_cuda.cu
seismo/3D/SPECFEM3D/trunk/src/specfem3D/Makefile.in
Log:
applied Peter Messmer's patch to use some improved features of CUDA5;
kept the old version as well using #ifdef USE_OLDER_CUDA4_GPU
Modified: seismo/3D/SPECFEM3D/trunk/src/cuda/prepare_constants_cuda.h
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/cuda/prepare_constants_cuda.h 2012-09-29 01:00:58 UTC (rev 20797)
+++ seismo/3D/SPECFEM3D/trunk/src/cuda/prepare_constants_cuda.h 2012-09-29 16:28:36 UTC (rev 20798)
@@ -89,7 +89,11 @@
exit(1);
}
+#ifdef USE_OLDER_CUDA4_GPU
err = cudaGetSymbolAddress((void**)&(mp->d_hprime_xx),"d_hprime_xx");
+#else
+ err = cudaGetSymbolAddress((void**)&(mp->d_hprime_xx),d_hprime_xx);
+#endif
if(err != cudaSuccess) {
fprintf(stderr, "Error with d_hprime_xx: %s\n", cudaGetErrorString(err));
exit(1);
@@ -142,7 +146,11 @@
exit(1);
}
+#if USE_OLDER_CUDA4_GPU
err = cudaGetSymbolAddress((void**)&(mp->d_hprimewgll_xx),"d_hprimewgll_xx");
+#else
+ err = cudaGetSymbolAddress((void**)&(mp->d_hprimewgll_xx),d_hprimewgll_xx);
+#endif
if(err != cudaSuccess) {
fprintf(stderr, "Error with d_hprimewgll_xx: %s\n", cudaGetErrorString(err));
exit(1);
@@ -196,7 +204,11 @@
exit(1);
}
//mp->d_wgllwgll_xy = d_wgllwgll_xy;
+#ifdef USE_OLDER_CUDA4_GPU
err = cudaGetSymbolAddress((void**)&(mp->d_wgllwgll_xy),"d_wgllwgll_xy");
+#else
+ err = cudaGetSymbolAddress((void**)&(mp->d_wgllwgll_xy),d_wgllwgll_xy);
+#endif
if(err != cudaSuccess) {
fprintf(stderr, "Error with d_wgllwgll_xy: %s\n", cudaGetErrorString(err));
exit(1);
@@ -213,7 +225,11 @@
exit(1);
}
//mp->d_wgllwgll_xz = d_wgllwgll_xz;
+#if USE_OLDER_CUDA4_GPU
err = cudaGetSymbolAddress((void**)&(mp->d_wgllwgll_xz),"d_wgllwgll_xz");
+#else
+ err = cudaGetSymbolAddress((void**)&(mp->d_wgllwgll_xz),d_wgllwgll_xz);
+#endif
if(err != cudaSuccess) {
fprintf(stderr, "Error with d_wgllwgll_xz: %s\n", cudaGetErrorString(err));
exit(1);
@@ -230,7 +246,11 @@
exit(1);
}
//mp->d_wgllwgll_yz = d_wgllwgll_yz;
+#if USE_OLDER_CUDA4_GPU
err = cudaGetSymbolAddress((void**)&(mp->d_wgllwgll_yz),"d_wgllwgll_yz");
+#else
+ err = cudaGetSymbolAddress((void**)&(mp->d_wgllwgll_yz),d_wgllwgll_yz);
+#endif
if(err != cudaSuccess) {
fprintf(stderr, "Error with d_wgllwgll_yz: %s\n", cudaGetErrorString(err));
exit(1);
@@ -247,7 +267,11 @@
exit(1);
}
//mp->d_wgll_cube = d_wgll_cube;
+#if USE_OLDER_CUDA4_GPU
err = cudaGetSymbolAddress((void**)&(mp->d_wgll_cube),"d_wgll_cube");
+#else
+ err = cudaGetSymbolAddress((void**)&(mp->d_wgll_cube),d_wgll_cube);
+#endif
if(err != cudaSuccess) {
fprintf(stderr, "Error with d_wgll_cube: %s\n", cudaGetErrorString(err));
exit(1);
Modified: seismo/3D/SPECFEM3D/trunk/src/cuda/prepare_mesh_constants_cuda.cu
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/cuda/prepare_mesh_constants_cuda.cu 2012-09-29 01:00:58 UTC (rev 20797)
+++ seismo/3D/SPECFEM3D/trunk/src/cuda/prepare_mesh_constants_cuda.cu 2012-09-29 16:28:36 UTC (rev 20798)
@@ -41,6 +41,19 @@
#include "mesh_constants_cuda.h"
#include "prepare_constants_cuda.h"
+#ifdef USE_OLDER_CUDA4_GPU
+#else
+ #ifdef USE_TEXTURES_FIELDS
+extern texture<realw, cudaTextureType1D, cudaReadModeElementType> d_displ_tex;
+extern texture<realw, cudaTextureType1D, cudaReadModeElementType> d_accel_tex;
+ #endif
+
+ #ifdef USE_TEXTURES_CONSTANTS
+extern texture<realw, cudaTextureType1D, cudaReadModeElementType> d_hprime_xx_tex;
+ #endif
+#endif
+
+
/* ----------------------------------------------------------------------------------------------- */
// helper functions
@@ -177,10 +190,15 @@
// in the code with with #USE_TEXTURES_FIELDS not-defined.
#ifdef USE_TEXTURES_CONSTANTS
{
- const textureReference* d_hprime_xx_tex_ptr;
- print_CUDA_error_if_any(cudaGetTextureReference(&d_hprime_xx_tex_ptr, "d_hprime_xx_tex"), 4101);
- cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<float>();
- print_CUDA_error_if_any(cudaBindTexture(0, d_hprime_xx_tex_ptr, mp->d_hprime_xx, &channelDesc, sizeof(realw)*(NGLL2)), 4001);
+ #ifdef USE_OLDER_CUDA4_GPU
+ const textureReference* d_hprime_xx_tex_ptr;
+ print_CUDA_error_if_any(cudaGetTextureReference(&d_hprime_xx_tex_ptr, "d_hprime_xx_tex"), 4101);
+ cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<float>();
+ print_CUDA_error_if_any(cudaBindTexture(0, d_hprime_xx_tex_ptr, mp->d_hprime_xx, &channelDesc, sizeof(realw)*(NGLL2)), 4001);
+ #else
+ cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<float>();
+ print_CUDA_error_if_any(cudaBindTexture(0, &d_hprime_xx, mp->d_hprime_xx, &channelDesc, sizeof(realw)*(NGLL2)), 4001);
+ #endif
}
#endif
@@ -691,15 +709,25 @@
#ifdef USE_TEXTURES_FIELDS
{
- print_CUDA_error_if_any(cudaGetTextureReference(&mp->d_displ_tex_ref_ptr, "d_displ_tex"), 4001);
- cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<float>();
- print_CUDA_error_if_any(cudaBindTexture(0, mp->d_displ_tex_ref_ptr, mp->d_displ, &channelDesc, sizeof(realw)*(*size)), 4001);
+ #ifdef USE_OLDER_CUDA4_GPU
+ print_CUDA_error_if_any(cudaGetTextureReference(&mp->d_displ_tex_ref_ptr, "d_displ_tex"), 4001);
+ cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<float>();
+ print_CUDA_error_if_any(cudaBindTexture(0, mp->d_displ_tex_ref_ptr, mp->d_displ, &channelDesc, sizeof(realw)*(*size)), 4001);
+ #else
+ cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<float>();
+ print_CUDA_error_if_any(cudaBindTexture(0, &d_displ_tex, mp->d_displ, &channelDesc, sizeof(realw)*(*size)), 4001);
+ #endif
}
{
- print_CUDA_error_if_any(cudaGetTextureReference(&mp->d_accel_tex_ref_ptr, "d_accel_tex"), 4003);
- cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<float>();
- print_CUDA_error_if_any(cudaBindTexture(0, mp->d_accel_tex_ref_ptr, mp->d_accel, &channelDesc, sizeof(realw)*(*size)), 4003);
+ #ifdef USE_OLDER_CUDA4_GPU
+ print_CUDA_error_if_any(cudaGetTextureReference(&mp->d_accel_tex_ref_ptr, "d_accel_tex"), 4003);
+ cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<float>();
+ print_CUDA_error_if_any(cudaBindTexture(0, mp->d_accel_tex_ref_ptr, mp->d_accel, &channelDesc, sizeof(realw)*(*size)), 4003);
+ #else
+ cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<float>();
+ print_CUDA_error_if_any(cudaBindTexture(0, &d_accel_tex, mp->d_accel, &channelDesc, sizeof(realw)*(*size)), 4003);
+ #endif
}
#endif
Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/Makefile.in
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/Makefile.in 2012-09-29 01:00:58 UTC (rev 20797)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/Makefile.in 2012-09-29 16:28:36 UTC (rev 20798)
@@ -45,8 +45,10 @@
@COND_CUDA_TRUE at NVCC = nvcc
@COND_CUDA_FALSE at NVCC = @CC@
- at COND_CUDA_TRUE@NVCC_FLAGS = $(CUDA_INC) $(MPI_INC) $(COND_MPI_CPPFLAGS) -DCUDA -gencode=arch=compute_20,code=sm_20
+ at COND_CUDA_TRUE@NVCC_FLAGS = $(CUDA_INC) $(MPI_INC) $(COND_MPI_CPPFLAGS) -dc -DCUDA -gencode=arch=compute_35,code=sm_35
+ at COND_CUDA_TRUE@NVCCLINK = $(NVCC) -dlink $(CUDA_INC) $(MPI_INC) $(COND_MPI_CPPFLAGS) -DCUDA -gencode=arch=compute_35,code=sm_35
@COND_CUDA_FALSE at NVCC_FLAGS = $(MPI_INC) $(COND_MPI_CPPFLAGS)
+ at COND_CUDA_FALSE@NVCCLINK = $(NVCC) $(NVCC_FLAGS)
# OpenMP
# with configure: ./configure --with-openmp FLAGS_NO_CHECK="-openmp .." OPENMP_LIB=..
@@ -282,6 +284,7 @@
# rules for the pure Fortran version
@COND_PYRE_FALSE@# solver also depends on values from mesher
@COND_PYRE_FALSE at xspecfem3D: $(XSPECFEM_OBJECTS) $(COND_MPI_OBJECTS) $(COND_OPENMP_OBJECTS)
+ at COND_PYRE_FALSE@ ${NVCCLINK} -o $(CUDA_DEVICE_OBJ) $(CUDA_OBJECTS)
@COND_PYRE_FALSE@ ${FCLINK} -o ${E}/xspecfem3D $(XSPECFEM_OBJECTS) $(COND_MPI_OBJECTS) $(MPILIBS) $(COND_OPENMP_OBJECTS) $(OPENMP_LIBS) $(CUDA_LINK)
@COND_PYRE_FALSE@
More information about the CIG-COMMITS
mailing list