   int which = nwa*10000 + nwb;
   switch (which) {
   case 50001: __word2vecFwd<5,1,BYDIMF><<<nblocks,threads>>>(nrows, ncols, WA, WB, A, B, C); break;
-  case 110001: __word2vecFwd<11,1,BYDIMF><<<nblocks,threads>>>(nrows, ncols, WA, WB, A, B, C); break;
   case 50005: __word2vecFwd<5,5,BYDIMF><<<nblocks,threads>>>(nrows, ncols, WA, WB, A, B, C); break;
-  case 110005: __word2vecFwd<11,5,BYDIMF><<<nblocks,threads>>>(nrows, ncols, WA, WB, A, B, C); break;
-  case 80006: __word2vecFwd<8,6,BYDIMF><<<nblocks,threads>>>(nrows, ncols, WA, WB, A, B, C); break;
+  case 100005: __word2vecFwd<10,5,BYDIMF><<<nblocks,threads>>>(nrows, ncols, WA, WB, A, B, C); break;
   default : printf("word2vecFwd unsupport size combination %d %d\n", nwa, nwb); return 1;
   }
   cudaDeviceSynchronize();

  int which = nwa*10000 + nwb;
  switch (which) {
  case 50001: __word2vec<5,1,5><<<nblocks,threads>>>(nrows, ncols, WA, WB, A, B, lrate); break;
  case 110001: __word2vec<11,1,11><<<nblocks,threads>>>(nrows, ncols, WA, WB, A, B, lrate); break;
  case 50005: __word2vec<5,5,5><<<nblocks,threads>>>(nrows, ncols, WA, WB, A, B, lrate); break;
  case 110005: __word2vec<11,5,11><<<nblocks,threads>>>(nrows, ncols, WA, WB, A, B, lrate); break;
  case 80006: __word2vec<8,6,8><<<nblocks,threads>>>(nrows, ncols, WA, WB, A, B, lrate); break;
  default : printf("word2vec unsupport size combination %d %d\n", nwa, nwb); return 1;
  }
  cudaDeviceSynchronize();

  int which = nwa*10000 + nwb;
  switch (which) {
  case 50001: __word2vecBwd<5,1,5><<<nblocks,threads>>>(nrows, ncols, WA, WB, A, B, C, lrate); break;
  case 50005: __word2vecBwd<5,5,5><<<nblocks,threads>>>(nrows, ncols, WA, WB, A, B, C, lrate); break;
  case 100005: __word2vecBwd<10,5,10><<<nblocks,threads>>>(nrows, ncols, WA, WB, A, B, C, lrate); break;
  default : printf("word2vecBwd unsupport size combination %d %d\n", nwa, nwb); return 1;
  }
  cudaDeviceSynchronize();
