| 60 | } |
| 61 | |
| 62 | void |
| 63 | ScoreMetaCallback() |
| 64 | { |
| 65 | omp_set_num_threads(NumThreads); |
| 66 | |
| 67 | // DMTCP hangs with this uncommented: |
| 68 | #pragma omp critical(ScoreMetaCallback) |
| 69 | { |
| 70 | memarray = new int *[size3]; |
| 71 | |
| 72 | // gcc 4.2 and 4.3 implement OpenMP 2.5. gcc 4.4 and later implement OpenMP |
| 73 | // 3.0 |
| 74 | // Some distros (Red Hat?, Open Suse?) backported OpenMP to gcc 4.1 |
| 75 | // OpenMP 2.5 requires 'signed int' |
| 76 | #if __GNUC__ == 4 && __GNUC_MINOR__ < 4 |
| 77 | int m = 0; |
| 78 | #else // if __GNUC__ == 4 && __GNUC_MINOR__ < 4 |
| 79 | unsigned int m = 0; |
| 80 | #endif // if __GNUC__ == 4 && __GNUC_MINOR__ < 4 |
| 81 | |
| 82 | #pragma omp parallel for \ |
| 83 | private(m) \ |
| 84 | schedule(static) |
| 85 | for (m = 0; m < size3; m++) { |
| 86 | // cout << "add m: " << m << endl; |
| 87 | memarray[m] = new int[size4]; |
| 88 | } |
| 89 | |
| 90 | #pragma omp parallel for \ |
| 91 | private(m) \ |
| 92 | schedule(static) |
| 93 | for (m = 0; m < size3; m++) { |
| 94 | if (m % 1000 == 0) { |
| 95 | cout << "m: " << m << endl; |
| 96 | } |
| 97 | ScoreCallback(m); |
| 98 | } |
| 99 | |
| 100 | |
| 101 | #pragma omp parallel for \ |
| 102 | private(m) \ |
| 103 | schedule(static) |
| 104 | for (m = 0; m < size3; m++) { |
| 105 | // cout << "del m: " << m << endl; |
| 106 | delete[] memarray[m]; |
| 107 | } |
| 108 | |
| 109 | delete[] memarray; |
| 110 | } |
| 111 | } |
| 112 | |
| 113 | void |
| 114 | ScoreCallback(unsigned int m) |
no test coverage detected