mirror of
https://gitlab.com/libeigen/eigen.git
synced 2024-12-21 07:19:46 +08:00
Clean up the Tensor header and get rid of the EIGEN_SLEEP macro.
This commit is contained in:
parent
70fbcf82ed
commit
71c85df4c1
@ -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"
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user