Вхід

Запуск задач на OpenCL на гібридних вузлах кластера СКІТ

На кластері СКІТ встановлений стандартний AMD APP SDK, тому можна користуватися документацією по ньому:

http://developer.amd.com/sdks/AMDAPPSDK/documentation/Pages/default.aspx

Єдине, що може відрізнятися на різних установках, - це шляхи, за якими встановлений той чи інший компонент. В нашому випадку вони наступні:

/opt/AMDAPP                  - AMD APP SDK
/opt/clAmdBlas-1.6.236    - BLAS
/opt/clAmdFft-1.6.244      - FFT
/usr/lib64/fglrx                - біблиотеки, що йдуть в комплекті з AMD Catalyst (libGL, libOpenCL тощо)

Продемонструємо, як компілювати задачі на OpenCL, на прикладі з другої глави "AMD Accelerated Parallel Processing OpenCL(tm) Programming Guide".

Запускаємо на вузлі sleep, займаємо вузол.
[access ~]$ sbatch -p lt_radeon --wrap="sleep 3h"
sbatch: Submitted batch job 83244

Переглядаємо задачі для свого користувача, щоб переконатися, що задача стартувала. Також дивимось hostname вузла в колонці NODELIST.
[access ~]$ squeue -u $USER
JOBID PARTITION     NAME     USER  ST       TIME  NODES NODELIST(REASON)
83244 lt_radeon   sbatch     user R       0:17      1 g3222

Йдемо на вузол.
[access ~]$ ssh g3222

Створюємо директорію для експериментів та переходимо в неї.
[g3222 ~]$ mkdir amd_opencl_test
[g3222 ~]$ cd amd_opencl_test/

Копіюємо приклад з AMDAPP. Переходимо в директорію з прикладом.
[g3222 amd_opencl_test]$ cp -r /opt/AMDAPP/samples/opencl/cl/
app/Template .
[g3222 amd_opencl_test]$ cd Template/

Компілюємо приклад за допомогою GNU компіляторів. Прикоади команд взяті з "AMD Accelerated Parallel Processing OpenCL(tm) Programming Guide", шляхи до файлів підставлені місцеві.
[g3222 Template]$ g++ -o Template.o -DATI_OS_LINUX -c
Template.cpp -I /opt/AMDAPP/include
[g3222 Template]$ g++ -o Template Template.o -lOpenCL -L/usr/lib64/fglrx

Запускаємо зібраний приклад.
[g3222 Template]$ ./Template

Input:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215
216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232
233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249
250 251 252 253 254 255

Output:
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48
50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94
96 98 100 102 104 106 108 110 112 114 116 118 120 122 124 126 128 130
132 134 136 138 140 142 144 146 148 150 152 154 156 158 160 162 164
166 168 170 172 174 176 178 180 182 184 186 188 190 192 194 196 198
200 202 204 206 208 210 212 214 216 218 220 222 224 226 228 230 232
234 236 238 240 242 244 246 248 250 252 254 256 258 260 262 264 266
268 270 272 274 276 278 280 282 284 286 288 290 292 294 296 298 300
302 304 306 308 310 312 314 316 318 320 322 324 326 328 330 332 334
336 338 340 342 344 346 348 350 352 354 356 358 360 362 364 366 368
370 372 374 376 378 380 382 384 386 388 390 392 394 396 398 400 402
404 406 408 410 412 414 416 418 420 422 424 426 428 430 432 434 436
438 440 442 444 446 448 450 452 454 456 458 460 462 464 466 468 470
472 474 476 478 480 482 484 486 488 490 492 494 496 498 500 502 504
506 508 510
Passed!

Збираємо та запускаємо ще раз, тільки на цей раз використовуємо Intel компілятори.
[g3222 Template]$ icpc -o Template.o -DATI_OS_LINUX -c
Template.cpp -I /opt/AMDAPP/include
[g3222 Template]$ icpc -o Template Template.o -lOpenCL -L/usr/lib64/fglrx
[g3222 Template]$ ./Template


Input:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215
216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232
233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249
250 251 252 253 254 255

Output:
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48
50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94
96 98 100 102 104 106 108 110 112 114 116 118 120 122 124 126 128 130
132 134 136 138 140 142 144 146 148 150 152 154 156 158 160 162 164
166 168 170 172 174 176 178 180 182 184 186 188 190 192 194 196 198
200 202 204 206 208 210 212 214 216 218 220 222 224 226 228 230 232
234 236 238 240 242 244 246 248 250 252 254 256 258 260 262 264 266
268 270 272 274 276 278 280 282 284 286 288 290 292 294 296 298 300
302 304 306 308 310 312 314 316 318 320 322 324 326 328 330 332 334
336 338 340 342 344 346 348 350 352 354 356 358 360 362 364 366 368
370 372 374 376 378 380 382 384 386 388 390 392 394 396 398 400 402
404 406 408 410 412 414 416 418 420 422 424 426 428 430 432 434 436
438 440 442 444 446 448 450 452 454 456 458 460 462 464 466 468 470
472 474 476 478 480 482 484 486 488 490 492 494 496 498 500 502 504
506 508 510
Passed!

Виходимо. Знімаємо задачу, якою займали вузол.
[g3222 Template]$ logout
[access ~]$ squeue -u $USER
JOBID PARTITION     NAME     USER  ST       TIME  NODES NODELIST(REASON)
83244 lt_radeon   sbatch     user   R      47:30      1 g3222
[access ~]$ scancel 83244

вычисления на суперкомпьютере, сверхбыстрые вычисления, рендеринг, фитнес клубы, спортивные клубы