message: Fixed work group synchronization in FullyConnected op.
diff: @@ -80,11 +80,9 @@ std::string FullyConnected::GetFullyConnectedKernelCode(
  c += "__kernel void main_function(\n";
  c += "$0) {\n";
  c += " int gid = get_global_id(0);\n";
  - c += " if (gid >= args.dst_tensor.Slices()) {\n";
  - c += " return;\n";
  - c += " }\n";
  c += " int2 tid = (int2)(get_local_id(0), get_local_id(1));\n";
  c += " ACCUM_FLT4 s = (ACCUM_FLT4)(0.0f);\n";
  + c += " if (gid < args.dst_tensor.Slices()) {\n";
  c += " for (uint c = tid.y; c < args.src_tensor.Slices(); c += " + wg_y +
  ") {\n";
  c += " FLT4 v = args.src_tensor.Read(0, 0, c);\n";
  @@ -94,9 +92,13 @@ std::string FullyConnected::GetFullyConnectedKernelCode(
  c += " s.z += dot(v, w.s89ab);\n";
  c += " s.w += dot(v, w.scdef);\n";
  c += " }\n";
  + c += " }\n";
  c += " __local ACCUM_FLT4 temp[" + wg_x + "][" + wg_y + "];\n";
  c += " temp[tid.x][tid.y] = s;\n";
  c += " barrier(CLK_LOCAL_MEM_FENCE);\n";
  + c += " if (gid >= args.dst_tensor.Slices()) {\n";
  + c += " return;\n";
  + c += " }\n";
  c += " if (tid.y == 0) {\n";
  for (int i = 1; i < work_group_size.y; ++i) {
  c += " s += temp[tid.x][" + std::to_string(i) + "];\n";
  