[arrayfire] 167/284: Fix bug in CUDA JIT when calling functions that return same value

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Sun Feb 7 18:59:30 UTC 2016


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to branch debian/experimental
in repository arrayfire.

commit ac25f5bb19c0f0db90d47576f29bfa81f6e060d6
Author: Shehzan Mohammed <shehzan at arrayfire.com>
Date:   Thu Jan 7 18:15:41 2016 -0500

    Fix bug in CUDA JIT when calling functions that return same value
    
    * Such as calling conj on float
---
 src/backend/cuda/JIT/numeric.cu | 13 +++++++++++++
 src/backend/cuda/complex.hpp    | 22 +++++++++++-----------
 2 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/src/backend/cuda/JIT/numeric.cu b/src/backend/cuda/JIT/numeric.cu
index 8253db6..2bcb15a 100644
--- a/src/backend/cuda/JIT/numeric.cu
+++ b/src/backend/cuda/JIT/numeric.cu
@@ -119,6 +119,19 @@ MATH_CAST(lgamma, intl  , float)
 MATH_CAST(lgamma, ushort, float)
 MATH_CAST(lgamma, short , float)
 
+MATH_NOOP(noop, float)
+MATH_NOOP(noop, double)
+MATH_NOOP(noop, cfloat)
+MATH_NOOP(noop, cdouble)
+MATH_NOOP(noop, int)
+MATH_NOOP(noop, uint)
+MATH_NOOP(noop, char)
+MATH_NOOP(noop, uchar)
+MATH_NOOP(noop, uintl)
+MATH_NOOP(noop, intl)
+MATH_NOOP(noop, ushort)
+MATH_NOOP(noop, short)
+
 __device__ float ___abs(cfloat a) { return cuCabsf(a); }
 __device__ double ___abs(cdouble a) { return cuCabs(a); }
 
diff --git a/src/backend/cuda/complex.hpp b/src/backend/cuda/complex.hpp
index 82304b9..b7de74a 100644
--- a/src/backend/cuda/complex.hpp
+++ b/src/backend/cuda/complex.hpp
@@ -17,25 +17,25 @@
 
 namespace cuda
 {
-    template<typename T> static const std::string cplx_name() { return "@___noop"; }
-    template<> STATIC_ const std::string cplx_name<cfloat >() { return cuMangledName<float , true>("___cplx"); }
-    template<> STATIC_ const std::string cplx_name<cdouble>() { return cuMangledName<double, true>("___cplx"); }
+    template<typename T> static const std::string cplx_name() { return cuMangledName<T, false>("___noop");       }
+    template<> STATIC_ const std::string cplx_name<cfloat >() { return cuMangledName<float , true>("___cplx");   }
+    template<> STATIC_ const std::string cplx_name<cdouble>() { return cuMangledName<double, true>("___cplx");   }
 
-    template<typename T> static const std::string real_name() { return "@___noop"; }
+    template<typename T> static const std::string real_name() { return cuMangledName<T, false>("___noop");       }
     template<> STATIC_ const std::string real_name<cfloat >() { return cuMangledName<cfloat , false>("___real"); }
     template<> STATIC_ const std::string real_name<cdouble>() { return cuMangledName<cdouble, false>("___real"); }
 
-    template<typename T> static const std::string imag_name() { return "@___noop"; }
+    template<typename T> static const std::string imag_name() { return cuMangledName<T, false>("___noop");       }
     template<> STATIC_ const std::string imag_name<cfloat >() { return cuMangledName<cfloat , false>("___imag"); }
     template<> STATIC_ const std::string imag_name<cdouble>() { return cuMangledName<cdouble, false>("___imag"); }
 
-    template<typename T> static const std::string abs_name() { return "@___noop"; }
-    template<> STATIC_ const std::string abs_name<float  >() { return cuMangledName<float  , false>("___abs"); }
-    template<> STATIC_ const std::string abs_name<double >() { return cuMangledName<double , false>("___abs"); }
-    template<> STATIC_ const std::string abs_name<cfloat >() { return cuMangledName<cfloat , false>("___abs"); }
-    template<> STATIC_ const std::string abs_name<cdouble>() { return cuMangledName<cdouble, false>("___abs"); }
+    template<typename T> static const std::string abs_name()  { return cuMangledName<T, false>("___noop");       }
+    template<> STATIC_ const std::string abs_name<float  >()  { return cuMangledName<float  , false>("___abs");  }
+    template<> STATIC_ const std::string abs_name<double >()  { return cuMangledName<double , false>("___abs");  }
+    template<> STATIC_ const std::string abs_name<cfloat >()  { return cuMangledName<cfloat , false>("___abs");  }
+    template<> STATIC_ const std::string abs_name<cdouble>()  { return cuMangledName<cdouble, false>("___abs");  }
 
-    template<typename T> static const std::string conj_name() { return "@___noop"; }
+    template<typename T> static const std::string conj_name() { return cuMangledName<T, false>("___noop");       }
     template<> STATIC_ const std::string conj_name<cfloat >() { return cuMangledName<cfloat , false>("___conj"); }
     template<> STATIC_ const std::string conj_name<cdouble>() { return cuMangledName<cdouble, false>("___conj"); }
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/arrayfire.git



More information about the debian-science-commits mailing list