Skip to content

Commit

Permalink
Upgrade the version of Eigen to commit b4890dc6bc34.
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 220359861
  • Loading branch information
tensorflower-gardener committed Nov 6, 2018
1 parent bfb4bda commit cf02d61
Show file tree
Hide file tree
Showing 25 changed files with 988 additions and 896 deletions.
2 changes: 1 addition & 1 deletion tensorflow/contrib/rnn/kernels/lstm_ops_gpu.cu.cc
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ __global__ void lstm_gates(const T* icfo, const T* b, const T* cs_prev,
//
const int gid = batch_id * cell_size * 4 + act_id;
const int cid = batch_id * cell_size + act_id;
Eigen::internal::scalar_sigmoid_op<T> sigmoid_op;
Eigen::internal::scalar_logistic_op<T> sigmoid_op;
Eigen::internal::scalar_tanh_op<T> tanh_op;
Eigen::scalar_clip_op<T> clip_op;

Expand Down
16 changes: 8 additions & 8 deletions tensorflow/core/common_runtime/gpu/gpu_device.cc
Original file line number Diff line number Diff line change
Expand Up @@ -84,13 +84,13 @@ namespace tensorflow {
// corresponding stream have completed. The following two classes
// serve this purpose in two different compilation environments.

class EigenCudaStreamDevice : public ::Eigen::StreamInterface {
class EigenGpuStreamDevice : public ::Eigen::StreamInterface {
public:
EigenCudaStreamDevice()
EigenGpuStreamDevice()
: scratch_(nullptr), semaphore_(nullptr), context_(nullptr) {
Eigen::initializeDeviceProp();
}
~EigenCudaStreamDevice() override {}
~EigenGpuStreamDevice() override {}
void Reinitialize(OpKernelContext* context, const cudaStream_t* cuda_stream,
TfGpuId tf_gpu_id, ::tensorflow::Allocator* alloc,
char* scratch) {
Expand All @@ -101,7 +101,7 @@ class EigenCudaStreamDevice : public ::Eigen::StreamInterface {
context_ = context;
scratch_ = scratch;
semaphore_ =
reinterpret_cast<unsigned int*>(scratch + Eigen::kCudaScratchSize);
reinterpret_cast<unsigned int*>(scratch + Eigen::kGpuScratchSize);
stream_ = cuda_stream;
allocator_ = alloc;
PlatformGpuId platform_gpu_id;
Expand Down Expand Up @@ -185,7 +185,7 @@ class EigenCudaStreamDevice : public ::Eigen::StreamInterface {
mutable unsigned int* semaphore_;
OpKernelContext* context_;

TF_DISALLOW_COPY_AND_ASSIGN(EigenCudaStreamDevice);
TF_DISALLOW_COPY_AND_ASSIGN(EigenGpuStreamDevice);
};

// This factory helps to ensure that different GPU device objects that refer to
Expand Down Expand Up @@ -292,7 +292,7 @@ Status BaseGPUDevice::InitScratchBuffers() {
DCHECK(streams_[i]);
if (scratch_.size() > i && scratch_[i]) continue;
size_t scratch_buffer_size =
Eigen::kCudaScratchSize + sizeof(unsigned int);
Eigen::kGpuScratchSize + sizeof(unsigned int);
void* scratch_buffer = gpu_allocator_->AllocateRaw(
Allocator::kAllocatorAlignment, scratch_buffer_size);
if (scratch_buffer == nullptr) {
Expand All @@ -304,7 +304,7 @@ Status BaseGPUDevice::InitScratchBuffers() {
se::DeviceMemoryBase(scratch_buffer, scratch_buffer_size));

bool ok = executor_->SynchronousMemZero(
&mem, Eigen::kCudaScratchSize + sizeof(unsigned int));
&mem, Eigen::kGpuScratchSize + sizeof(unsigned int));
if (!ok) {
return errors::FailedPrecondition(
"Failed to memcopy into scratch buffer for device ",
Expand Down Expand Up @@ -692,7 +692,7 @@ class ConcretePerOpGpuDevice : public PerOpGpuDevice {
const Eigen::GpuDevice& device() const override { return device_; }

private:
EigenCudaStreamDevice stream_device_;
EigenGpuStreamDevice stream_device_;
Eigen::GpuDevice device_;
};

Expand Down
4 changes: 2 additions & 2 deletions tensorflow/core/grappler/costs/op_level_cost_estimator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -311,8 +311,8 @@ OpLevelCostEstimator::OpLevelCostEstimator() {
{"Square", EIGEN_COST(scalar_square_op<float>)},
{"Tanh", EIGEN_COST(scalar_tanh_op<float>)},
{"Relu", EIGEN_COST(scalar_max_op<float>)},
{"Sigmoid", EIGEN_COST(scalar_sigmoid_op<float>)},
{"QuantizedSigmoid", EIGEN_COST(scalar_sigmoid_op<float>)},
{"Sigmoid", EIGEN_COST(scalar_logistic_op<float>)},
{"QuantizedSigmoid", EIGEN_COST(scalar_logistic_op<float>)},
{"Sign", EIGEN_COST(scalar_sign_op<float>)},
{"Sin", EIGEN_COST(scalar_sin_op<float>)},
{"Tan", EIGEN_COST(scalar_tan_op<float>)},
Expand Down
4 changes: 2 additions & 2 deletions tensorflow/core/kernels/check_numerics_op_gpu.cu.cc
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@ template <typename T>
struct CheckNumericsLaunch {
void Run(const GPUDevice &d, const T *data, int size,
int abnormal_detected[2]) {
const int32 block_size = d.maxCudaThreadsPerBlock();
const int32 block_size = d.maxGpuThreadsPerBlock();
const int32 num_blocks =
(d.getNumCudaMultiProcessors() * d.maxCudaThreadsPerMultiProcessor()) /
(d.getNumGpuMultiProcessors() * d.maxGpuThreadsPerMultiProcessor()) /
block_size;

CheckNumericsKernel<T><<<num_blocks, block_size, 0, d.stream()>>>(
Expand Down
2 changes: 1 addition & 1 deletion tensorflow/core/kernels/cwise_ops.h
Original file line number Diff line number Diff line change
Expand Up @@ -656,7 +656,7 @@ template <typename T>
struct erfc : base<T, Eigen::internal::scalar_erfc_op<T>> {};

template <typename T>
struct sigmoid : base<T, Eigen::internal::scalar_sigmoid_op<T>> {};
struct sigmoid : base<T, Eigen::internal::scalar_logistic_op<T>> {};

template <typename T>
struct sin : base<T, Eigen::internal::scalar_sin_op<T>> {};
Expand Down
5 changes: 3 additions & 2 deletions tensorflow/core/kernels/deep_conv2d.cc
Original file line number Diff line number Diff line change
Expand Up @@ -500,8 +500,9 @@ class GemmFilterPacker {
typedef Eigen::internal::const_blas_data_mapper<T, int64, Eigen::RowMajor>
LhsMapper;
typedef Eigen::internal::gebp_traits<T, T> Traits;
Eigen::internal::gemm_pack_lhs<T, int64, LhsMapper, Traits::mr,
Traits::LhsProgress, Eigen::RowMajor>
Eigen::internal::gemm_pack_lhs<
T, int64, LhsMapper, Traits::mr, Traits::LhsProgress,
typename Traits::LhsPacket4Packing, Eigen::RowMajor>
pack_lhs;

GemmFilterPacker(const int64 rows, const int64 depth, const T* lhs_input,
Expand Down
2 changes: 1 addition & 1 deletion tensorflow/core/kernels/depthwise_conv_op_gpu.cu.cc
Original file line number Diff line number Diff line change
Expand Up @@ -764,7 +764,7 @@ Status LaunchDepthwiseConv2dGPU(OpKernelContext* ctx, const DepthwiseArgs& args,
const int max_block_count = kKnownFilterWidth < 0 || kKnownFilterHeight < 0 ||
kKnownDepthMultiplier < 0
? std::numeric_limits<int>::max()
: device.getNumCudaMultiProcessors();
: device.getNumGpuMultiProcessors();
kernel<<<std::min(max_block_count, config.block_count),
config.thread_per_block, 0, device.stream()>>>(args, input, filter,
output, num_outputs);
Expand Down
4 changes: 2 additions & 2 deletions tensorflow/core/kernels/random_op_gpu.cu.cc
Original file line number Diff line number Diff line change
Expand Up @@ -217,9 +217,9 @@ void FillPhiloxRandom<GPUDevice, Distribution>::operator()(
OpKernelContext*, const GPUDevice& d, random::PhiloxRandom gen,
typename Distribution::ResultElementType* data, int64 size,
Distribution dist) {
const int32 block_size = d.maxCudaThreadsPerBlock();
const int32 block_size = d.maxGpuThreadsPerBlock();
const int32 num_blocks =
(d.getNumCudaMultiProcessors() * d.maxCudaThreadsPerMultiProcessor()) /
(d.getNumGpuMultiProcessors() * d.maxGpuThreadsPerMultiProcessor()) /
block_size;

FillPhiloxRandomKernelLaunch<Distribution>
Expand Down
2 changes: 1 addition & 1 deletion tensorflow/core/util/cuda_kernel_helper_test.cu.cc
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ class CudaLaunchConfigTest : public ::testing::Test {
protected:
const int bufsize = 1024;
int* outbuf = nullptr;
Eigen::CudaStreamDevice stream;
Eigen::GpuStreamDevice stream;
Eigen::GpuDevice d = Eigen::GpuDevice(&stream);

virtual void SetUp() {
Expand Down
10 changes: 5 additions & 5 deletions tensorflow/core/util/cuda_launch_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,12 +128,12 @@ inline CudaLaunchConfig GetCudaLaunchConfig(int work_element_count,
CudaLaunchConfig config;
const int virtual_thread_count = work_element_count;
const int physical_thread_count = std::min(
d.getNumCudaMultiProcessors() * d.maxCudaThreadsPerMultiProcessor(),
d.getNumGpuMultiProcessors() * d.maxGpuThreadsPerMultiProcessor(),
virtual_thread_count);
const int thread_per_block = std::min(1024, d.maxCudaThreadsPerBlock());
const int thread_per_block = std::min(1024, d.maxGpuThreadsPerBlock());
const int block_count =
std::min(DivUp(physical_thread_count, thread_per_block),
d.getNumCudaMultiProcessors());
d.getNumGpuMultiProcessors());

config.virtual_thread_count = virtual_thread_count;
config.thread_per_block = thread_per_block;
Expand Down Expand Up @@ -184,7 +184,7 @@ inline CudaLaunchConfig GetCudaLaunchConfigFixedBlockSize(
cudaError_t err = cudaOccupancyMaxActiveBlocksPerMultiprocessor(
&block_count, func, fixed_block_size, dynamic_shared_memory_size);
CHECK_EQ(err, cudaSuccess);
block_count = std::min(block_count * d.getNumCudaMultiProcessors(),
block_count = std::min(block_count * d.getNumGpuMultiProcessors(),
DivUp(work_element_count, fixed_block_size));

config.virtual_thread_count = work_element_count;
Expand Down Expand Up @@ -213,7 +213,7 @@ inline Cuda2DLaunchConfig GetCuda2DLaunchConfig(int xdim, int ydim,
int block_rows = std::max(kThreadsPerBlock / block_cols, 1);

const int physical_thread_count =
d.getNumCudaMultiProcessors() * d.maxCudaThreadsPerMultiProcessor();
d.getNumGpuMultiProcessors() * d.maxGpuThreadsPerMultiProcessor();

const int max_blocks = std::max(physical_thread_count / kThreadsPerBlock, 1);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,55 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==============================================================================*/
#ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_OPTIMIZED_EIGEN_TENSOR_REDUCED_INSTANTIATIONS_GOOGLE_H_
#define TENSORFLOW_LITE_KERNELS_INTERNAL_OPTIMIZED_EIGEN_TENSOR_REDUCED_INSTANTIATIONS_GOOGLE_H_

#define EIGEN_USE_CUSTOM_THREAD_POOL
#define EIGEN_USE_THREADS
// This is essentially unsupported/CXX11/Eigen/Tensor.h
// TODO(petewarden) - move this to a common location in Eigen itself.

// clang-format off

#include <stdint.h>

#ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_OPTIMIZED_EIGEN_TENSOR_REDUCED_INSTANTIATIONS_GOOGLE_H_
#define TENSORFLOW_LITE_KERNELS_INTERNAL_OPTIMIZED_EIGEN_TENSOR_REDUCED_INSTANTIATIONS_GOOGLE_H_


#include "Eigen/Core"

#if defined(EIGEN_USE_SYCL)
#undef min
#undef max
#undef isnan
#undef isinf
#undef isfinite
#include <CL/sycl.hpp>
#include <iostream>
#include <map>
#include <memory>
#include <utility>
#endif
#include <cmath>
#include <cstddef>
#include <cstring>
#include <cmath>





#ifdef _WIN32
typedef __int16 int16_t;
typedef unsigned __int16 uint16_t;
typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;
#include <windows.h>
#else
#include <stdint.h>
#include <unistd.h>
#endif

#if __cplusplus > 199711 || EIGEN_COMP_MSVC >= 1900
#include <random>
#include <atomic>
#include <condition_variable> // NOLINT(build/c++11)
#include <mutex> // NOLINT(build/c++11)
#include <thread> // NOLINT(build/c++11)
#include <functional>
#endif

#ifdef _WIN32
#include <windows.h>
Expand All @@ -40,58 +70,53 @@ limitations under the License.
#include <time.h>
#endif

// #if defined(EIGEN_USE_LIBXSMM)
// #include "libxsmm.h"
// #endif

// Because some programs may link Eigen in through other frameworks with
// different flags, we can run into multiple definition issues if we don't have
// a private namespace for our versions. This is a nasty hack, but a similar
// approach is used elsewhere to handle the problem, so it should be stable.
#define Eigen EigenForTFLite
#ifdef EIGEN_USE_THREADS
#include "third_party/eigen3/unsupported/Eigen/CXX11/ThreadPool"
#endif

#include "Eigen/src/Core/util/StaticAssert.h"
#include "unsupported/Eigen/CXX11/Core"
#include "unsupported/Eigen/SpecialFunctions"

#include "Eigen/src/Core/util/DisableStupidWarnings.h"

#include "Eigen/Core"
#include "third_party/eigen3/unsupported/Eigen/SpecialFunctions"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Meta.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h"


// Beware: the order of the include matters to some compilers. For example
// TensorIndexList.h should be included before TensorDimensions.h in order to
// use index lists to encode tensor dimensions when compiling with llvm.
// We're defining this ourselves rather than using the Eigen Tensor header file
// so that we can alter the macro definition of TENSOR_CONTRACTION_DISPATCH to
// reduce binary size.
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h"

#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/ThreadPoolInterface.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceType.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorNonBlockingThreadPool.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h"

#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStats.h"

#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h"

#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h"

#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMappers.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h"

#undef TENSOR_CONTRACTION_DISPATCH
#define TENSOR_CONTRACTION_DISPATCH(METHOD, ALIGNMENT, ARGS) \
if (this->m_lhs_inner_dim_contiguous && \
Expand All @@ -102,8 +127,9 @@ limitations under the License.
eigen_assert(false && "Unsupported contraction formats"); \
}


#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h"
Expand All @@ -125,19 +151,18 @@ limitations under the License.
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h"

#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTrace.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorSycl.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h"

#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/Tensor.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h"

#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h"

#include "third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h"

#include "Eigen/src/Core/util/ReenableStupidWarnings.h"


#endif // TENSORFLOW_LITE_KERNELS_INTERNAL_OPTIMIZED_EIGEN_TENSOR_REDUCED_INSTANTIATIONS_GOOGLE_H_
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ typedef unsigned __int64 uint64_t;
#include "unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h"
Expand All @@ -106,10 +106,11 @@ typedef unsigned __int64 uint64_t;
#include "unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorBase.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h"
Expand All @@ -128,7 +129,7 @@ typedef unsigned __int64 uint64_t;


#include "unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h"
#include "unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h"
Expand Down
Loading

0 comments on commit cf02d61

Please sign in to comment.