Clean up the Tensor header and get rid of the EIGEN_SLEEP macro.

This commit is contained in:
Rasmus Munk Larsen 2020-12-02 11:04:04 -08:00
parent 70fbcf82ed
commit 71c85df4c1
5 changed files with 11 additions and 18 deletions

View File

@ -33,10 +33,13 @@
* Much of the documentation can be found \ref eigen_tensors "here".
*/
#include <atomic>
#include <chrono>
#include <cmath>
#include <cstddef>
#include <cstring>
#include <random>
#include <thread>
#ifdef _WIN32
typedef __int16 int16_t;
@ -48,7 +51,6 @@ typedef unsigned __int64 uint64_t;
#include <windows.h>
#else
#include <stdint.h>
#include <unistd.h>
#endif
#ifdef _WIN32
@ -70,8 +72,6 @@ typedef unsigned __int64 uint64_t;
#else
#include <cuda_runtime.h>
#endif
#include <atomic>
#include <unistd.h>
#endif
#include "src/Tensor/TensorMacros.h"

View File

@ -83,7 +83,7 @@ static void initializeDeviceProp() {
// Wait for the other thread to inititialize the properties.
while (!m_devicePropInitialized) {
std::atomic_thread_fence(std::memory_order_acquire);
EIGEN_SLEEP(1000);
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
}
}
}

View File

@ -43,15 +43,6 @@
#define EIGEN_SFINAE_ENABLE_IF( __condition__ ) \
typename internal::enable_if< ( __condition__ ) , int >::type = 0
#if EIGEN_OS_WIN || EIGEN_OS_WIN64
#define EIGEN_SLEEP(n) Sleep(n)
#elif EIGEN_OS_GNULINUX
#define EIGEN_SLEEP(n) usleep(n * 1000);
#else
#define EIGEN_SLEEP(n) sleep(std::max<unsigned>(1, n/1000))
#endif
// Define a macro to use a reference on the host but a value on the device
#if defined(SYCL_DEVICE_ONLY)
#define EIGEN_DEVICE_REF

View File

@ -109,7 +109,9 @@ static void test_cancel()
// Schedule a large number of closure that each sleeps for one second. This
// will keep the thread pool busy for much longer than the default test timeout.
for (int i = 0; i < 1000; ++i) {
tp.Schedule([]() { EIGEN_SLEEP(2000); });
tp.Schedule([]() {
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
});
}
// Cancel the processing of all the closures that are still pending.

View File

@ -23,7 +23,7 @@ static void test_notification_single()
Eigen::Notification n;
auto func = [&n, &counter](){ n.Wait(); ++counter;};
thread_pool.Schedule(func);
EIGEN_SLEEP(1000);
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
// The thread should be waiting for the notification.
VERIFY_IS_EQUAL(counter, 0);
@ -31,7 +31,7 @@ static void test_notification_single()
// Unblock the thread
n.Notify();
EIGEN_SLEEP(1000);
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
// Verify the counter has been incremented
VERIFY_IS_EQUAL(counter, 1);
@ -50,10 +50,10 @@ static void test_notification_multiple()
thread_pool.Schedule(func);
thread_pool.Schedule(func);
thread_pool.Schedule(func);
EIGEN_SLEEP(1000);
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
VERIFY_IS_EQUAL(counter, 0);
n.Notify();
EIGEN_SLEEP(1000);
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
VERIFY_IS_EQUAL(counter, 4);
}