Intel Parallel Programming Professional (Introduction) - ответы
Количество вопросов - 207
int a = 0;#pragma omp parallel{…#pragma omp criticala++;…}Чему равно значение "a" на четырех процессорной системе, после выполнения параллельной секции?
int Bufs = N; // Буфер содержит N записейM = unlocked;Full = 0;() { while(1){ M.Lock(); if( Bufs != 0 ){ Bufs --; M.Unlock(); break; } M.Unlock(); } AddItemToBuffer();}() { while(1){ M.Lock(); if( Bufs != N ){ Bufs ++; M.Unlock(); break; } M.Unlock(); } RemoveItemFromBuffer();}
Semaphore Empty = N; // Буфер содержит N записейFull = 0;() { Empty.P(); AddItemToBuffer(); Full.V();}() { Full.P(); RemoveItemFromBuffer(); Empty.V();}
bool flag0 = false, flag1 = false;flag2 = 0;( true ){ flagi = true; flag2 = 1 - i; while( flag1-i && flag2 == 1 - i ) ; CSi(); flagi = false; NCSi();}
int a = 0;#pragma omp parallel{…a++;…}Чему равно значение "a" на четырех процессорной системе, после выполнения параллельной секции?
#pragma omp parallel for shared(a) private(i,j,sum) \ schedule (dynamic, CHUNK) ordered{ for (i=0; i < NMAX; i++) { sum = 0; for (j=i; j < NMAX; j++) sum += a[i][j]; #pragma omp ordered printf ("Сумма элементов строки %d равна %f\n",i,sum);}Будет ли суммирование происходить параллельно?
#pragma omp for(i = 0; i < 1000; i++) с += func(i);Каким образом можно добиться наилучшей балансировки вычислительной нагрузки между потоками?
omp_set_num_threads(4)(“%d”, omp_get_num_threads());#pragma omp parallel{…}Что выдаст программа на экран?
omp_set_num_threads(4)#pragma omp parallel num_threads(3){…}#pragma omp parallel{…}Сколько потоков будет создано в первой и во второй секции?
int a = 0;#pragma omp parallel{…#pragma omp mastera++;…}Чему равно значение "a" на четырех процессорной системе, после выполнения параллельной секции?
bool flag0 = true, flag1 = false;( true ){ while( !flagi ) ; CSi(); flagi = false; flag1-i = true; NCSi();}
int a = 0;#pragma omp parallel{…#pragma omp singlea++;…}Чему равно значение "a" на четырех процессорной системе, после выполнения параллельной секции?
int sum = 0;#pragma omp parallel for(int i = 0; i < 100; i++) #pragma omp critical sum++;Какие проблемы могут наблюдаться при выполнении параллельной программы?
int *a;= new int [10];#pragma omp parallel shared(a){…[num_th] = num_th;…}Какие проблемы могут наблюдаться при выполнении параллельной программы, если num_th это номер потока (потоков меньше 10)?
#pragma omp parallel for ordered{ for (i=5; i >= 0; i--) { #pragma omp ordered printf ("%d ",i);}В каком порядке выведутся числа?
Semaphore Empty = N; // Буфер содержит N записейM = unlocked;Full = 0;() { Empty.P(); M.Lock(); AddItemToBuffer(); M.Unlock(); Full.V();}() { full.P(); M.Lock(); RemoveItemFromBuffer(); M.Unlock(); empty.V();}
bool flag0 = false, flag1 = false;( true ){ flagi = true; while( flag1-i ) ; CSi(); flagi = false; NCSi();}
Semaphore Empty = N; // Буфер содержит N записейM = unlocked;Full = 0;() { M.Lock(); Empty.P(); AddItemToBuffer(); Full.V(); M.Unlock();}() { M.Lock(); full.P(); RemoveItemFromBuffer(); empty.V(); M.Unlock();}
int *a;#pragma omp parallel{…= new int [10];…}Какие проблемы могут наблюдаться при выполнении параллельной программы?
Semaphore Empty = N; // Буфер содержит N записейM = unlocked;Full = 0;() { Empty.P(); M.Lock(); AddItemToBuffer(); Full.V();}() { full.P(); M.Lock(); RemoveItemFromBuffer(); empty.V();}
Semaphore Empty = N; // Буфер содержит N записейFull = 0;() { Empty.P(); DisableInterrupts(); AddItemToBuffer(); EnableInterrupts(); Full.V();}() { Full.P(); DisableInterrupts(); RemoveItemFromBuffer(); EnableInterrupts(); Empty.V();}
#pragma omp parallel for for (i = 0; i < 1000; i++) for (j = 0; j < 1000; j++) с[i] += a[i][j] * b[j];Является ли данная параллельная реализация корректной?
double a = 10.0;#pragma omp parallel private(a){ ...}Можно ли средствами OpenMP сделать так, чтобы локальные копии переменной а в каждом потоке имели то же значение, что и исходная переменная a?
bool flag0 = false, flag1 = false;( true ){ while( flag1-i ) ; flagi = true; CSi(); flagi = false; NCSi();}
int *a;#pragma omp parallel{ #pragma omp sections { #pragma omp section { a = new int [10]; delete [] a; } #pragma omp section { a = new int [10]; delete [] a; } }}Какие проблемы могут наблюдаться при выполнении параллельной программы?
int sum = 0;#pragma omp parallel for for(int i = 0; i < 100; i++) sum++;Какие проблемы могут наблюдаться при выполнении параллельной программы?
#pragma omp parallel{ int *a; #pragma omp sections { #pragma omp section { a = new int [10]; delete [] a; } #pragma omp section { a = new int [10]; delete [] a; } }}Какие проблемы могут наблюдаться при выполнении параллельной программы?
int sum = 0;#pragma omp parallel for reduction (sum) for(int i = 0; i < 100; i++) sum++;Какие проблемы могут наблюдаться при выполнении параллельной программы?
int *a;= new int [10];#pragma omp parallel{…[num_th] = num_th;…}Какие проблемы могут наблюдаться при выполнении параллельной программы, если num_th это номер потока (потоков меньше 10)?
#pragma omp for(i = 0; i < 1000; i++) for (j = 0; j < 1000; j++) с[i] += a[i][j] * b[j];Является ли данная параллельная реализация корректной?
int sum = 0;#pragma omp parallel for(int i = 0; i < 100; i++) #pragma omp single sum++;Какие проблемы могут наблюдаться при выполнении параллельной программы?
int *a;#pragma omp parallel{…#pragma omp critical= new int [10];…}Какие проблемы могут наблюдаться при выполнении параллельной программы?