You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

task_executor.cpp 1.2 kB

1234567891011121314151617181920212223242526272829303132333435
  1. #include "src/naive/handle.h"
  2. #include "test/common/utils.h"
  3. #include "test/cpu/fixture.h"
  4. using namespace megdnn;
  5. using namespace test;
  6. TEST_F(CPU_MULTI_THREADS, THREAD_POOL) {
  7. auto single_thread_handle = create_cpu_handle(0);
  8. std::vector<int> data(100, 0);
  9. std::vector<int> result_singel_thread(100);
  10. std::vector<int> result_multi_thread(100);
  11. for (int i = 0; i < 100; i++) {
  12. data[i] = i;
  13. }
  14. auto single_run = [&data, &result_singel_thread]() {
  15. for (int i = 0; i < 100; i++) {
  16. result_singel_thread[i] = data[i];
  17. }
  18. };
  19. auto multi_thread_run = [&data, &result_multi_thread](size_t index, size_t) {
  20. for (size_t i = index * 5; i < (index + 1) * 5; i++) {
  21. result_multi_thread[i] = data[i];
  22. }
  23. };
  24. MEGDNN_DISPATCH_CPU_KERN(
  25. static_cast<naive::HandleImpl*>(single_thread_handle.get()), single_run());
  26. MEGDNN_DISPATCH_MULTI_THREAD_CPU_KERN(
  27. static_cast<naive::HandleImpl*>(handle()), 20, multi_thread_run);
  28. for (int i = 0; i < 100; i++) {
  29. ASSERT_EQ(result_singel_thread[i], result_multi_thread[i]);
  30. }
  31. }
  32. // vim: syntax=cpp.doxygen