     using shape_type = typename traits::shape_type;
     using index_type = typename traits::index_type;
 
-    executor_array_type exec_array(2);
-
-    for(size_t i = 0; i < 2; ++i)
+    executor_array_type exec_array(num_devices);
+
+    for(size_t i = 0; i < exec_array.size(); ++i)
     {
       exec_array[i].device(i);
     }
 
     executor_type exec{exec_array};
 
-    shape_type shape{2, 2};
+    shape_type shape{exec_array.size(), 2};
 
     auto ready = traits::make_ready_future<void>(exec);
 

  using outer_executor_type = cuda::this_thread::parallel_executor;
  using inner_executor_type = cuda::grid_executor;

  {
    // test executor_array then_execute()
    using executor_type = executor_array<inner_executor_type, outer_executor_type>;

    using traits = agency::executor_traits<executor_type>;
    using shape_type = typename traits::shape_type;

    executor_type exec(num_devices);

    auto past = traits::make_ready_future<int>(exec,13);

