<pre style='margin:0'>
Chris Jones (cjones051073) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/44d36e52540afb3b9ddb77944348e56af4082086">https://github.com/macports/macports-ports/commit/44d36e52540afb3b9ddb77944348e56af4082086</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 44d36e52540 hptt: Add missing patch file
</span>44d36e52540 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 44d36e52540afb3b9ddb77944348e56af4082086
</span>Author: Chris Jones <jonesc@macports.org>
AuthorDate: Tue Apr 11 15:07:25 2023 +0100
<span style='display:block; white-space:pre;color:#404040;'> hptt: Add missing patch file
</span>---
math/hptt/files/0004-Fix-Build-With-Clang.patch | 116 ++++++++++++++++++++++++
1 file changed, 116 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/math/hptt/files/0004-Fix-Build-With-Clang.patch b/math/hptt/files/0004-Fix-Build-With-Clang.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..0931162acfb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/math/hptt/files/0004-Fix-Build-With-Clang.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,116 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/benchmark/reference.cpp b/benchmark/reference.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index a74318a..13dd108 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/benchmark/reference.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/benchmark/reference.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -13,6 +13,35 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "defines.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Check if 'floatType' is complex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++template <typename floatType>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++class is_complex {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ template <
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ template <typename> typename _floatType, typename T,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ typename = typename std::enable_if<
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std::is_same<_floatType<T>, std::complex<T>>::value, bool>::type>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bool static constexpr _is_complex(_floatType<T>) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ template <typename _floatType>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bool static constexpr _is_complex(_floatType) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ static constexpr auto value =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ _is_complex(typename std::remove_reference<
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ typename std::remove_cv<floatType>::type>::type());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Re-define 'conj' to make sure it return a floating point if
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// argument is a floating point
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++template <typename floatType, typename = typename std::enable_if<
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ !is_complex<floatType>::value, bool>::type>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++floatType conj(floatType &&x) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return x;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ template<typename floatType>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void transpose_ref( uint32_t *size, uint32_t *perm, int dim,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -57,13 +86,13 @@ void transpose_ref( uint32_t *size, uint32_t *perm, int dim,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if( beta == (floatType) 0 )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for(int i=0; i < sizeInner; ++i)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if( conjA )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- B_[i] = alpha * std::conj(A_[i * strideAinner]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ B_[i] = alpha * conj(A_[i * strideAinner]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ B_[i] = alpha * A_[i * strideAinner];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for(int i=0; i < sizeInner; ++i)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if( conjA )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- B_[i] = alpha * std::conj(A_[i * strideAinner]) + beta * B_[i];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ B_[i] = alpha * conj(A_[i * strideAinner]) + beta * B_[i];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ B_[i] = alpha * A_[i * strideAinner] + beta * B_[i];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/pythonAPI/hptt/hptt.py b/pythonAPI/hptt/hptt.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f6f4171..a0df69c 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/pythonAPI/hptt/hptt.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/pythonAPI/hptt/hptt.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -115,10 +115,16 @@ def tensorTransposeAndUpdate(perm, alpha, A, beta, B, numThreads=-1):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ raise ValueError("Unsupported dtype: {}.".format(A.dtype))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # tranpose!
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- tranpose_fn(permc, ctypes.c_int32(A.ndim),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- scalar_fn(alpha), dataA, sizeA, outerSizeA,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- scalar_fn(beta), dataB, outerSizeB,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ctypes.c_int32(numThreads), ctypes.c_int32(useRowMajor))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if 'float' in str(A.dtype):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ tranpose_fn(permc, ctypes.c_int32(A.ndim),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ scalar_fn(alpha), dataA, sizeA, outerSizeA,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ scalar_fn(beta), dataB, outerSizeB,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ctypes.c_int32(numThreads), ctypes.c_int32(useRowMajor))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ tranpose_fn(permc, ctypes.c_int32(A.ndim),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ scalar_fn(alpha), False, dataA, sizeA, outerSizeA,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ scalar_fn(beta), dataB, outerSizeB,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ctypes.c_int32(numThreads), ctypes.c_int32(useRowMajor))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def tensorTranspose(perm, alpha, A, numThreads=-1):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -168,7 +174,7 @@ def transpose(a, axes=None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ``a`` with its axes permuted.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if axes is None:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- axes = reversed(range(a.ndim))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ axes = list(reversed(range(a.ndim)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return tensorTranspose(axes, 1.0, a)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/hptt.cpp b/src/hptt.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ea761c8..41c4551 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/src/hptt.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/src/hptt.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -171,8 +171,8 @@ void dTensorTranspose( const int *perm, const int dim,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void cTensorTranspose( const int *perm, const int dim,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- const float _Complex alpha, bool conjA, const float _Complex *A, const int *sizeA, const int *outerSizeA,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- const float _Complex beta, float _Complex *B, const int *outerSizeB,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ const float alpha, bool conjA, const float *A, const int *sizeA, const int *outerSizeA,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ const float beta, float *B, const int *outerSizeB,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const int numThreads, const int useRowMajor)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ auto plan(std::make_shared<hptt::Transpose<hptt::FloatComplex> >(sizeA, perm, outerSizeA, outerSizeB, dim,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -182,8 +182,8 @@ void cTensorTranspose( const int *perm, const int dim,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void zTensorTranspose( const int *perm, const int dim,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- const double _Complex alpha, bool conjA, const double _Complex *A, const int *sizeA, const int *outerSizeA,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- const double _Complex beta, double _Complex *B, const int *outerSizeB,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ const double alpha, bool conjA, const double *A, const int *sizeA, const int *outerSizeA,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ const double beta, double *B, const int *outerSizeB,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const int numThreads, const int useRowMajor)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ auto plan(std::make_shared<hptt::Transpose<hptt::DoubleComplex> >(sizeA, perm, outerSizeA, outerSizeB, dim,
</span></pre><pre style='margin:0'>
</pre>