fork(1) download
  1. #include <stdio.h>
  2. #define MIN(X, Y) (((X) < (Y)) ? (X) : (Y))
  3.  
  4. int main(void) {
  5. int USCS = 6;
  6. int N_STEPS = 72;
  7. int M_STEPS = 9;
  8. int matrix[M_STEPS][N_STEPS];
  9. int WGS_PER_USC = M_STEPS*N_STEPS/USCS;
  10. for (int y=0; y<M_STEPS; ++y)
  11. for (int x=0; x<N_STEPS; ++x)
  12. matrix[y][x] = 9;
  13. for (int gid=0; gid<N_STEPS*M_STEPS; gid++){
  14. //Assuming round-robin assignment of WGs to USCs:
  15. int block = gid / (USCS * N_STEPS);
  16. int sidx = gid % (USCS * N_STEPS);
  17. int y = block * USCS;
  18. int height = MIN(M_STEPS - y, USCS);
  19. int x = sidx / height;
  20. y += sidx % height;
  21.  
  22. // printf("x:%3d y:%3d usc: %d\n", x, y, gid%4);
  23. matrix[y][x] = gid%6;
  24. //matrix[gid/N_STEPS][gid%N_STEPS] = gid%6;
  25. }
  26. for (int y=0; y<M_STEPS; ++y){
  27. for (int x=0; x<N_STEPS; ++x)
  28. printf("%d", matrix[y][x]);
  29. printf("\n");
  30. }
  31. return 0;
  32. }
Success #stdin #stdout 0s 5280KB
stdin
Standard input is empty
stdout
000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111
222222222222222222222222222222222222222222222222222222222222222222222222
333333333333333333333333333333333333333333333333333333333333333333333333
444444444444444444444444444444444444444444444444444444444444444444444444
555555555555555555555555555555555555555555555555555555555555555555555555
030303030303030303030303030303030303030303030303030303030303030303030303
141414141414141414141414141414141414141414141414141414141414141414141414
252525252525252525252525252525252525252525252525252525252525252525252525