игра брюс 2048
Главная / Программирование / Программирование больших вычислительных задач на современном Фортране с использованием компиляторов Intel / Тест 3

Программирование больших вычислительных задач на современном Фортране с использованием компиляторов Intel - тест 3

Упражнение 1:
Номер 1
Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.

Ответ:

 (1) библиотека Intel Integrated Performance Primitives 

 (2) библиотека Intel Math Kernel Library 

 (3) режим компиляции /Qparallel 

 (4) библиотека Message Passing Interface 

 (5) директива !DEC$ DECLARE 


Номер 2
Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.

Ответ:

 (1) Cilk Plus 

 (2) CoArray 

 (3) директива !DEC$ PARALLEL 

 (4) библиотека Intel Integrated Performance Primitives 

 (5) OpenMP 


Номер 3
Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.

Ответ:

 (1) программа Intel Inspector 

 (2) библиотека Intel Math Kernel Library 

 (3) оператор associate 

 (4) оператор do concurrent 

 (5) режим компиляции /debug:parallel 


Номер 4
Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.

Ответ:

 (1) программа Intel Advisor 

 (2) библиотека Intel Threading Building Blocks 

 (3) CoArray 

 (4) директива !DEC$ DEFINE 

 (5) сечения массивов 


Номер 5
Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.

Ответ:

 (1) режим компиляции /Qpar-threshold 

 (2) асинхронный ввод/вывод 

 (3) CoArray 

 (4) сечения массивов 

 (5) библиотека Intel Threading Building Blocks 


Упражнение 2:
Номер 1
Какие из циклов не подходят для параллелизации с использованием опции компилятора /Qparallel

Ответ:

 (1) while (cx > eps) do cx=cx+A(k)*B(k) A(k)=C(k)-D(k) end do  

 (2) do k=1,M A(k)=B(k+1)*C(k+1) end do  

 (3) do k=1,1000 A(k)=sin(B(k)) B(k)=B(k-1)**2+B(k+1)+B(k) end do  

 (4) do s=1,M A(s,s)=B(s,s+1)*C(s-1) end do  

 (5) do if (s<100) exit A(s)=B(s)*C(s) s=V(s)+W(s-1) end do  


Номер 2
Какие из циклов не подходят для параллелизации с использованием опции компилятора /Qparallel

Ответ:

 (1) do sum=sum+A(k) val=val-B(k) if (sum > period) exit end do  

 (2) do j=1,Mj A(j)=(A(j+1)-2*A(j)+A(j-1))*koef end do  

 (3) do k=1,1000 V(k)=W(k-1)*S(k) R(k)=X(k)**2-S(k-1) end do  

 (4) do p=1,M A(p,s)=B(s,p+1)*B(p-1,s)*p end do  

 (5) do i=1,100 do j=1,100 if ((i<50).AND.(j<30)) continue A(i,j)=B(i,j)-C(i,j) end do end do  


Номер 3
Какие из циклов не подходят для параллелизации с использованием опции компилятора /Qparallel

Ответ:

 (1) do j=1,100 A(i,2)=B(2,i)*C(i,2) end do  

 (2) do j=1,Mj C(j)=C(j-1)*C(j+1) end do  

 (3) do k=1,1000 R(k)=W(k)-A(k-1) A(k+1)=A(k)*A(k+1) end do  

 (4) do if (A(s)<eps) exit A(s)=A(s)*A(s-1) end do  

 (5) do j=1,100 do k=1,200 do i=1,100 A(i,k,j)=B(i,k,j)+C(j,k,i) end do end do end do  


Номер 4
Какие из циклов не подходят для параллелизации с использованием опции компилятора /Qparallel

Ответ:

 (1) do k=Mk,Mx A(k,:)=B(:,k)+C(:,k+1) end do  

 (2) do i=1,100 C(i)=A(i+1)*A(i-1) A(i)=C(i)-B(i+1)*A(i) end do  

 (3) do ch=gectharqq() if (ch='Q') exit A(k)=B(k-1)+C(k+2) end do  

 (4) do k=1,1000 V(k)=W(k-1)*S(k) R(k)=X(k)**2-S(k-1) end do  

 (5) while (cx > eps) do cx=cx+A(k)*B(k) A(k)=C(k)-D(k) end do  


Номер 5
Какие из циклов не подходят для параллелизации с использованием опции компилятора /Qparallel

Ответ:

 (1) do k=1,M A(k)=B(k+1)*C(k+1) end do  

 (2) do sum=sum+A(k) val=val-B(k) if (sum > period) exit end do  

 (3) do j=1,100 A(i,2)=B(2,i)*C(i,2) end do  

 (4) do k=1,1000 V(k)=W(k-1)*S(k) R(k)=X(k)**2-S(k-1) end do  

 (5) while (cx > eps) do cx=cx+A(k)*B(k) A(k)=C(k)-D(k) end do  


Упражнение 3:
Номер 1
Выберите верные утверждения

Ответ:

 (1) в CoArray Fortran используется модель параллельного программирования Partitioned Global Address Space 

 (2) в CoArray Fortran используется Single Program Multiple Data  


Номер 2
Какое количество копий CAF-программы можно создать на двухядерном процессоре ?

Ответ:

 (1)

 (2)

 (3) определяется параметром Coarray Images в свойствах проекта 

 (4)

 (5)


Номер 3
Выберите верные утверждения

Ответ:

 (1) каждая копия программы обрабатывает свои локальные данные 

 (2) каждая копия программы обрабатывает общие глобальные данные 

 (3) для пересылки данных между копиями программы используются coarray-переменные 

 (4) пересылка данных от 1-й к 2-й копии caf-программы происходит только по завершению работы 1-й копии 

 (5) каждая копия caf-программы имеет уникальный номер 


Номер 4
Выберите верные утверждения

Ответ:

 (1) количество копий caf-программы может быть установлено в настройках проекта 

 (2) количество копий caf-программы всегда соответствует количеству процессоров (ядер) 

 (3) каждая копия сaf-программы обрабатывает общие глобальные данные 

 (4) в CoArray Fortran используется разделенное глобальное адресное пространство 

 (5) пересылка данных происходит посредством обычных массивов с использованием специальных функций 


Номер 5
Какой режим компиляции позволяет использовать CoArray

Ответ:

 (1) /Qcoarray 

 (2) /CAF 

 (3) /CoArray 

 (4) /Qcoarray images = 0 

 (5) /Qcoarray:shared 


Упражнение 4:
Номер 1
Укажите функцию, которая возвращает количество созданных копий CAF-программы

Ответ:

 (1) imagesize 

 (2) this_image 

 (3) image_index 

 (4) num_images 

 (5) inmax 


Номер 2
Укажите функцию, которая позволит определить количество байт памяти отведенное под coarray-переменную?

Ответ:

 (1) this_image 

 (2) imagesize 

 (3) num_images 

 (4) size 

 (5) sizeof 


Номер 3
Укажите функцию, которая возвращает номер копии caf-программы

Ответ:

 (1) getgid 

 (2) getimage 

 (3) this_image 

 (4) num_images 

 (5) imagesize 


Номер 4
Укажите функцию, которая вычисляет верхнюю границу coarray-переменной

Ответ:

 (1) cobound 

 (2) ucobound 

 (3) ubound 

 (4) lcobound 

 (5) codimension 


Номер 5
Укажите функцию, которая вычисляет нижнюю границу coarray-переменной

Ответ:

 (1) cobound 

 (2) ucobound 

 (3) lbound 

 (4) lcobound 

 (5) codimension 


Упражнение 5:
Номер 1
Чему равна верхняя граница coarray-переменной CF, если caf-программа была скомпилирована для двухъядерного процессора и в настройках проекта указано значение Coarray Images = 64. 
CoArray-переменная CF, объявлена как type (flow) CF[-4:*]

Ответ:

 59 


Номер 2
Чему равна верхняя граница третьего измерения coarray-переменной CF, если caf-программа скомпилирована для восьмиядерного процессора и в настройках проекта указано значение Coarray Images = 32. 
CoArray-переменная CF, объявлена как type (grid) CF[2,3,4:*]

Ответ:

 14 


Номер 3
Чему равна верхняя граница третьего измерения coarray-переменной CF, если caf-программа скомпилирована для восьмиядерного процессора и в настройках проекта указано значение Coarray Images = 64. 
CoArray-переменная CF, объявлена как type (plot) CF [2,-1,2:*]

Ответ:

 33 


Номер 4
Чему равна нижняя граница первого измерения coarray-переменной CF, если caf-программа скомпилирована для восьмиядерного процессора и в настройках проекта указано значение Coarray Images = 0. 
CoArray-переменная CF, объявлена как type (cell) CF [2,2:*]

Ответ:

 1 


Номер 5
Чему равна нижняя граница второго измерения coarray-переменной CF, если caf-программа скомпилирована для восьмиядерного процессора и в настройках проекта указано значение Coarray Images = 256. 
CoArray-переменная CF, объявлена как type (cell) CF [2,2,3,4*]

Ответ:

 1 


Упражнение 6:
Номер 1
Укажите верные объявления coarray-переменных

Ответ:

 (1) integer, allocatable :: a[:,:] 

 (2) integer, pointer :: b[*] 

 (3) complex(16), allocatable :: TM(:,:)[:,:] 

 (4) real(8) TMP[1:10,2:5,1:*] 

 (5) real(8), allocatable :: UX[0:100,0:100,0:*] 


Номер 2
Укажите верные объявления coarray-переменных

Ответ:

 (1) type(point), allocatable :: TM(:)[:,:] 

 (2) type(point), allocatable :: TM(100)[:,:] 

 (3) class(point), allocatable :: pt[:] 

 (4) class(point), pointer :: pt[] 

 (5) real nt(1:*,10,10) 


Номер 3
Укажите верные объявления coarray-переменных

Ответ:

 (1) type(particle) TM[1:4,5:10,0:10,0:*] 

 (2) logical, allocatable :: stat(:)[:,:] 

 (3) class(particle), allocatable :: pt[*] 

 (4) class(particle) pt[*] 

 (5) character ft(10,10:*,10) 


Номер 4
Укажите верные объявления coarray-переменных

Ответ:

 (1) integer, allocatable :: vx(:,:,:)[:] 

 (2) integer :: par[*]=1000 

 (3) class (grid) :: G1[*] 

 (4) real, pointer :: TMP[*] 

 (5) type(grid) as[*,*] 


Номер 5
Укажите верные объявления coarray-переменных

Ответ:

 (1) type (flow) :: pt[*]=flow(0.0,0.0,0.0,0.0) 

 (2) integer, allocatable :: A(:,:,:)[:] 

 (3) !complex(16), pointer :: B[:] 

 (4) real(4) :: AX(5)[*]=[1.0,2.0,0.0,5.0,0.0] 

 (5) !class(flow) :: pt[*]=spec(1.0,2.0,.FALSE.) 


Упражнение 7:
Номер 1
Выберите оператор выполняющий барьерную синхронизацию.

Ответ:

 (1) sync images(1) 

 (2) sync all 

 (3) critical 

 (4) this_image 

 (5) sync memory 


Номер 2
Выберите оператор выполняющий синхронизацию избранных копий программы

Ответ:

 (1) sync images 

 (2) sync all 

 (3) critical 

 (4) this_image 

 (5) sync memory 


Номер 3
Каждая копия программы генерирует массив из случайных чисел. Каждая копия программы должна записать массив целиком в файл C:\datа.txt.
Какой оператор следует использовать при записи данных в файл ?

Ответ:

 (1) sync images 

 (2) sync all 

 (3) critical 

 (4) this_image 

 (5) sync memory 




Главная / Программирование / Программирование больших вычислительных задач на современном Фортране с использованием компиляторов Intel / Тест 3