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

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

Правильные ответы выделены зелёным цветом.
Все ответы: Курс раскрывает возможности компилятора Intel Visual Fortran в создании программ, которые основаны на объектно-ориентированном подходе, выполняют параллельные вычисления и используют готовые пакеты библиотек. Курс ориентирован на подготовленных пользователей, желающих узнать о последних достижениях языка Fortran, реализованных в среде Intel Parallel Studio.
Смотрите также:
Основные назначения модулей
(1) раздельное написание программ
(2) ясность и читаемость исходного текста программы
(3) инкапсуляция данных и процедур
(4) возможность использования процедур
(5) организация взаимодействия процедур
Укажите оператор, используемый для задания производного типа
(1) class
(2) type
(3) record
(4) extends
(5) select type
Перечислите возможности 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
Какие компоненты входят в состав MKL ?
(1) базовые операции линейной алгебры
(2) дискретные преобразования Фурье
(3) решатели обыкновенных дифференциальных уравнений
(4) построители расчетных сеток
(5) библиотека статистики
В каких разделах "Свойства проекта" можно выполнить настройку оптимизации ?
(1) General
(2) Output Files
(3) Data
(4) Libraries
(5) Debugging
Процедуры, описанные атрибутом public
(1) доступны модульным процедурам при несовпадении имен
(2) доступны в головной программе
(3) недоступны в головной программе
(4) доступны в головной программе, но их нельзя изменять
(5) нельзя объявлять
Финальные процедуры объявляются при помощи атрибута
(1) procedure
(2) final
(3) deferred
(4) non_overridable
(5) extends
Какие из циклов не подходят для параллелизации с использованием опции компилятора /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
В каком разделе находится описание функции asum ?
(1) BLAS level 1
(2) BLAS level 2
(3) BLAS level 3
Укажите параметр компиляции означающий максимизацию скорости выполнения
(1) /Od
(2) /O1
(3) /O2
(4) /Ob0
(5) /Ob1
Укажите атрибут позволяющий модульным переменным менять значения в головной программе
(1) private
(2) public
(3) save
(4) protected
(5) automatic
Перегрузка операции деления реализуется при помощи оператора
(1) extends
(2) interface operator
(3) operator
(4) interface assignment
(5) procedure
Выберите верные утверждения
(1) в CoArray Fortran используется модель параллельного программирования Partitioned Global Address Space
(2) в CoArray Fortran используется Single Program Multiple Data
Напишите имя функции (синтаксис Fortran 95), которая вычисляет выражение math , где math и math векторы - векторы типа complex.
dotc
Укажите параметр компиляции запрещающий оптимизацию
(1) /Od
(2) /Ov
(3) /Oo
(4) /No
(5) /Ox
Объявлен следующий модуль module matrix integer :: A=100, B=200, C=300 integer, private :: S=9 integer, protected :: P=8 private integer :: Q=100, W=200 integer :: N=500 end module matrix Какие из перечисленных модульных переменных могут быть использованы в качестве границ размещаемых массивов в вызывающей головной программе?
(1) A
(2) B
(3) C
(4) S
(5) P
(6) Q
(7) W
(8) N
(9) нет вариантов
В программе объявлены типы и переменная type point complex x,y end type point type NewType integer a type (point) z(3) character(4) border(2) end type NewType type (NewType) pt(10) Укажите верные варианты инициализации элемента pt(5)
(1) pt(5)=NewType(50,[(1.0,1.0),(2.0,2.0)],'A101')
(2) pt(5)=NewType(50,[point((1.0,1.0),(2.0,2.0)), & point((0.0,1.0),(3.0,8.0)), & point((0.0,0.0),(3.0,0.0))],['A101','B120'])
(3) pt(5)=NewType(50,0.0,['A101','B120'])
(4) pt(5)=NewType(50,point(0.0),['A101','B120'])
(5) pt(5)=NewType(50,point(0.0,0.0),['A101','B120'])
Укажите функцию, которая возвращает количество созданных копий CAF-программы
(1) imagesize
(2) this_image
(3) image_index
(4) num_images
(5) inmax
Какой раздел библиотеки Intel ® Math Kernel Library содержит процедуру, которая выполняет решение уравнения Лапласа \dfrac{\partial ^2 T}{\partial x^2} + \dfrac{\partial ^2 T}{\partial y^2} = 0?
(1) BLAS
(2) DFT
(3) VML
(4) PDES
(5) VSL
Укажите параметр компиляции, который создает приложение для конкретного типа процессора
(1) /Qx
(2) /Qax
(3) /Qp
(4) /Qsx
(5) /Qt
Объявлен модуль и головная программа module matrix real :: M=1000 real, private :: MP=3000 real, protected :: MT = 5000 integer, public :: S1=50 integer, protected :: S2=70 end module matrix PROGRAM prog use matrix, only : M, MT implicit none integer :: MP=5000 integer :: S1=10, S2=30 ... Какие из вариантов выражений допустимы в головной программе ?
(1) MT=M+S1
(2) S1=MP*MT
(3) M=MT+1+MP
(4) call random_number(MT)
(5) нет вариантов
Дан модуль, который используется в головной программе module mod_1 type maps integer x,y integer color logical, private :: status end type maps type, extends (maps) :: e_maps integer segment character, private :: code end type e_maps end module mod_1

В головной программе объявлена переменная

type (e_maps) EM Укажите верные варианты доступа к полям производного типа из головной программы.
(1) EM.code
(2) EM.segment
(3) EM.color
(4) EM.status
(5) EM.maps
Чему равна верхняя граница coarray-переменной CF, если caf-программа была скомпилирована для двухъядерного процессора и в настройках проекта указано значение Coarray Images = 64. CoArray-переменная CF, объявлена как type (flow) CF[-4:*]
59
Используя процедуры MKL вычислите выражение math. Данные находятся в файле data1.txt. В ответ введите целую часть суммы модулей полученного вектора.
179
Укажите директиву, которая позволяет использовать расширения Intel Visual Fortran
(1) !DEC$STRICT
(2) !DEC$NOSTRICT
(3) !DEC$FREEFORM
(4) !DEC$DEFINE
(5) !DEC$DECLARE
Описан модуль, который подключен к головной программе module mod_1 integer, private :: A,B,C private SetA public F, init contains subroutine SetA(X) integer X A=X+1 end subroutine SetA subroutine init() call SetA(500); B=20; C=10 end subroutine integer function F F=A+B+C end function F end module mod_1 Какой результат вернет функция F после вызова процедуры init в головной программе ?
531
Объявлены следующие типы и переменные. type sma real p(100) real mid(100) logical res end type sma type, extends (sma) :: ssma real middle end type ssma type uma type (sma) sm(100) complex p(100) logical ret character bis end type uma class (sma), pointer :: polym type (uma), target :: um1 type (ssma), target :: ssm1 Какие справедливы прикрепления ссылки polym?
(1) polym=>um1.sm(50)
(2) polym=>um1
(3) polym=>ssm1
(4) polym=>um1.sm(1:100:4)
(5) polym=>null()
Укажите верные объявления 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:*]
Используя процедуры MKL вычислите скалярное произведение двух векторов math и math. Данные находятся в файле data6.txt. В ответ введите целую часть результата.
74
Выберите допустимые объявления модульных переменных для данного варианта программы module mod_A implicit none ! здесь следует объявить модульные переменные public init_solver contains subroutine init_solver(val) real val x=val*1.0E-10 end subroutine init_solver end module mod_A PROGRAM prog use mod_A, Anew => A, Bnew => B implicit none Anew = Anew + 1 write(*,*) Bnew+1 call init_solver(-1.0) Anew=Bnew+1 end
(1) integer, private :: A
(2) integer, public :: A
(3) integer, protected :: B
(4) real, private :: X
(5) character, public :: B

В головной программе используется модуль geom, который содержит только тип triangle и модульную процедуру Square. Головная программа использует модуль geom. В головной программе объявлена переменная type (triangle) TR.

Укажите верное описание типа triangle и процедуры Square, для организации вызова write(*,*) TR.Square() из головной программы

(1) type triangle real x1,y1,x2,y2,x3,y3 contains procedure, pass :: Square end type triangle
(2) real function Square(tr) type(triangle) tr Square=abs((tr.x1-tr.x2)*(tr.y3-tr.y2)-(tr.y1-tr.y2)*(tr.x3-tr.x2))/2 end function Square
(3) type triangle real x1,y1,x2,y2,x3,y3 contains procedure, nopass :: Square end type triangle
(4) subroutine Square type(triangle) tr write(*,*) abs((tr.x1-tr.x2)*(tr.y3-tr.y2)-(tr.y1-tr.y2)*(tr.x3-tr.x2))/2 end subroutine Square
(5) real function Square(tr) class(triangle) tr Square=abs((tr.x1-tr.x2)*(tr.y3-tr.y2)-(tr.y1-tr.y2)*(tr.x3-tr.x2))/2 end function Square
Выберите оператор выполняющий барьерную синхронизацию.
(1) sync images(1)
(2) sync all
(3) critical
(4) this_image
(5) sync memory
Используя процедуры MKL, вычислите Евклидову норму вектора math. Данные находятся в файле data11.txt. В ответ введите целую часть результата.
10
Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру init из модуля A module mod_A contains subroutine init write(*,*) "Initializing A" end subroutine init end module mod_A module mod_B contains subroutine init write(*,*) "Initializing B" end subroutine init end module mod_B PROGRAM prog use mod_A use mod_B implicit none call init() ! вызываем процедуру из модуля A end
(1) в головной программе записать use mod_B, init_B => init
(2) в модуле A указать protected init
(3) в модуле B указать private init
(4) в модуле A указать public A
(5) в головной программе записать use mod_A, init_A => init
(6) в головной программе записать use mod_B, only :
Какие имена являются процедуры привязанными к типу по имени в следующем фрагменте программы ? use graph type(plot) PLT, PLTA, PLTB ... call PLT.Create(10,10,200,200) PLT=.INVERSE.PLT write(*,*) PLTA.xcenter write(*,*) PLT.Radius() call VerifyPlot(PLTB.coords) write(*,*) finish(PLTA.start()) PLT=PLTA.UNION.PLTB ...
(1) Create
(2) NVERSE
(3) xcenter
(4) Radius
(5) VerifyPlot
(6) coords
(7) finish
(8) start
(9) UNION
Используя процедуры MKL, вычислите произведение math, где math- квадратная матрица, math-вектор. Данные находятся в файле записана по строкам). В ответ введите номер минимального по модулю элемента вектора math.
11
Какие функции используются в выражении res=sin(2.0)*cos(2.0) module mod_F contains real function sin(x) sin=sqrt(sqrt(sqrt(x))) end function sin real function cos(x) cos=x**2.0**2.0 end function cos end module mod_F PROGRAM prog use mod_F implicit none real res res=sin(2.0)*cos(1.0) end
(1) стандартная функция вычисления синуса
(2) стандартная функция вычисления косинуса
(3) функция cos из модуля mod_F
(4) функция sin из модуля mod_F
Даны два типа type person character(64) name character(64) lastname end type person type robot character(32) mech integer(8) period end type robot Создайте тип office, который
  • наследует тип person
  • содержит поле типа robot, в виде одномерного динамического массива
  • содержит поле типа character(64), являющееся ссылкой
  • В ответ введите размер в байтах переменной типа office
    168
    Используя процедуры MKL, вычислите произведение math, где math- треугольная квадратная матрица,math-квадратная матрица. Данные находятся в файле и math записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы math.
    8107
    Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно. module mod_E interface point module procedure pnt1, pnt2, pnt3 end interface contains real function pnt1(x,y) real x,y pnt1=x+y end function pnt1 real function pnt2(x,y) integer x,y pnt2=x+y end function pnt2 character function pnt3(x,y) real x integer y pnt3=achar(mod(int(x),20)*mod(y,2)) end function pnt3 end module mod_E
    (1) pnt1 и pnt2
    (2) pnt1 и pnt3
    (3) pnt2 и pnt3
    (4) конфликты отсутствуют
    (5) pnt1 и pnt2 и pnt3
    Для типа point выберите правильный код финальной процедуры DeletePoint module flow integer, private :: INDEX type point integer x,y,z integer color logical stat contains final :: DeletePoint end type point CONTAINS ... subroutine InitFlow() INDEX=0 end subroutine InitFlow end module flow
    (1) subroutine DeletePoint(pt) type(point) pt write(*,*) pt write(*,*) "Point is deleted...." INDEX=INDEX+1 end subroutine
    (2) subroutine DeletePoint(pt) class(point) pt write(*,*) pt write(*,*) "Point is deleted...." INDEX=INDEX+1 end subroutine
    (3) subroutine DeletePoint() class(point) pt write(*,*) pt write(*,*) "Point is deleted...." INDEX=INDEX+1 end subroutine
    (4) subroutine DeletePoint() type(point) pt write(*,*) pt write(*,*) "Point is deleted...." INDEX=INDEX+1 end subroutine
    (5) subroutine DeletePoint() write(*,*) pt write(*,*) "Point is deleted...." INDEX=INDEX+1 end subroutine
    Используя процедуры MKL, вычислите произведение math, где math- прямоугольная матрица,math-квадратная матрица. Данные находятся в файле и math записаны по строкам). В ответ введите целое значение от суммы элементов матрицы math.
    -106227
    Модуль может содержать
    (1) константы
    (2) модульные процедуры
    (3) внешние процедуры
    (4) типы данных
    (5) модульные переменные
    Укажите оператор, который указывает какие процедуры привязаны к типу по имени
    (1) contains
    (2) private
    (3) type
    (4) class
    (5) select type
    Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.
    (1) Cilk Plus
    (2) CoArray
    (3) директива !DEC$ PARALLEL
    (4) библиотека Intel Integrated Performance Primitives
    (5) OpenMP
    Какие компоненты входят в состав IMSL ?
    (1) кластерные дискретные преобразования Фурье
    (2) построители расчетных сеток
    (3) сортировка и поиск данных
    (4) интерполяция
    (5) дифференцирование и интегрирование
    В каких разделах "Свойства проекта" указывается количество байт отводимых для хранения целых данных по умолчанию?
    (1) Data
    (2) General
    (3) Libraries
    (4) Diagnostics
    (5) Code Generation
    Процедуры, описанные атрибутом private
    (1) доступны модульным процедурам при несовпадении имен
    (2) доступны в головной программе
    (3) недоступны в головной программе
    (4) доступны в головной программе, но их нельзя изменять
    (5) нельзя объявлять
    Какие из циклов не подходят для параллелизации с использованием опции компилятора /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
    В каком разделе находится описание функции ddot
    (1) BLAS level 1
    (2) BLAS level 2
    (3) BLAS level 3
    Укажите параметр компиляции устанавливающий максимальное число раскруток цикла
    (1) /Qunroll
    (2) /Qparallel
    (3) /Qipo
    (4) /Qopt-prefetch=1
    (5) /Ob1
    Укажите атрибут используемый для инкапсуляции данных модуля
    (1) private
    (2) public
    (3) save
    (4) protected
    (5) automatic
    Перегрузка операции присваивания реализуется при помощи оператора
    (1) extends
    (2) interface operator
    (3) operator
    (4) interface assignment
    (5) procedure
    Какое количество копий CAF-программы можно создать на двухядерном процессоре ?
    (1) 2
    (2) 4
    (3) определяется параметром Coarray Images в свойствах проекта
    (4) 8
    (5) 1
    Напишите имя функции (синтаксис Fortran 95), которая вычисляет скалярное произведение двух вещественных вектор двойной точности.
    dot
    Укажите параметр компиляции, который устанавливает порог для автопараллелизации циклов
    (1) /Qpar-threshold
    (2) /Qparallel
    (3) /Qvec-threshold
    (4) /Qopt-prefetch
    (5) /O3
    Объявлен следующий модуль module matrix integer :: A=100, B=200, C=300 integer, private :: S=9 integer, protected :: P=8 private, integer :: Q=100, W=200 integer :: N=500 end module matrix Какие из перечисленных модульных переменных могут быть использованы в качестве границ размещаемых массивов в вызывающей головной программе?
    (1) A
    (2) B
    (3) C
    (4) S
    (5) P
    (6) Q
    (7) W
    (8) N
    (9) нет вариантов
    Модуль module mod_1 type region integer x1,y1,x2,y2 end type region type blk logical st(3) character(5), private :: name end type blk type NewType type (region) reg type (blk) bee end type NewType end module mod_1

    используется в головной программе.

    Описан массив

    type (NewType) matrix(10,10,100) Укажите верные варианты инициализации элемента matrix(1:5:2,:,20)
    (1) matrix(1:5:2,:,20)=NewType(region(1,2,3,4),blk(.TRUE.,'TERMO'))
    (2) matrix(1:5:2,:,20)=NewType(region(0),blk('TERMO',.FALSE.))
    (3) matrix(1:5:2,:,20)=NewType((1,2,3,4),blk(.FALSE.,'TERMO'))
    (4) matrix(1:5:2,:,20)=NewType(region(0,0,0,0),blk(.FALSE.,'TERMO'))
    (5) matrix(1:5:2,:,20)=NewType(region(0,0,0,0),blk('TER','TER'))
    Укажите функцию, которая позволит определить количество байт памяти отведенное под coarray-переменную?
    (1) this_image
    (2) imagesize
    (3) num_images
    (4) size
    (5) sizeof
    Какой раздел библиотеки Intel ® Math Kernel Library содержит процедуры, которые выполняют умножение треугольной матрицы на вектор ?
    (1) BLAS
    (2) DFT
    (3) VML
    (4) PDES
    (5) VSL
    Укажите параметр компиляции, который создает приложение не привязанное к конкретному типу процессора
    (1) /Qx
    (2) /Qax
    (3) /Qp
    (4) /Qs
    (5) /Qt
    Объявлен модуль и головная программа module matrix real :: A=1000 real, private :: B=3000 real, protected :: C=5000 integer, public :: D=50 integer, protected :: F=70 end module matrix PROGRAM prog use matrix, only : D, F, A implicit none real :: C=5000, B=10 ... Какие из вариантов выражений допустимы в головной программе ?
    (1) D=C*F+B
    (2) call random_number(A)
    (3) call random_number(F)
    (4) F=F+A
    (5) нет вариантов
    Дан модуль, который используется в головной программе module mod_1 type rectangle integer x1,y1,x2,y2 integer color character, private :: name end type rectangle type, extends (rectangle) :: roundrect integer radius real, public :: center end type roundrect end module mod_1

    В головной программе объявлена переменная

    type (rectangle) rct Укажите верные варианты доступа к полям производного типа из головной программы.
    (1) rct.roundrect
    (2) rct.name
    (3) rct.center
    (4) rct.rectangle
    (5) rct.x1
    Чему равна верхняя граница третьего измерения coarray-переменной CF, если caf-программа скомпилирована для восьмиядерного процессора и в настройках проекта указано значение Coarray Images = 32. CoArray-переменная CF, объявлена как type (grid) CF[2,3,4:*]
    14
    Используя процедуры MKL вычислите выражение math. Данные находятся в файле data2.txt. В ответ введите целую часть суммы модулей вещественной части полученного вектора.
    77
    Укажите директиву, которая предупреждает о необъявленных переменных
    (1) !DEC$DECLARE
    (2) !DEC$STRICT
    (3) !DEC$DEFINE
    (4) !DEC$NODECLARE
    (5) !DEC$DEC!MESSAGE
    Описан модуль, который подключен к головной программе module mod_1 integer, private :: A=1,B=1,C=1 integer, protected :: D, E private SetA public F, init contains subroutine SetA(X) integer X A=X+1 end subroutine SetA subroutine init_D_E(x,y) integer x,y D=X*10; E=Y*2 end subroutine init_D_E integer function F F=A+D+E end function F end module mod_1 Какой результат вернет функция F после вызова процедуры init_D_E(2,3) в головной программе ?
    27
    Объявлены следующие типы и переменные. type cell real next real prev logical stat end type cell type, extends (cell) :: object integer code real dist real radius end type object type grid type (object) object integer n integer xa,xb,ya,yb end type grid class (*), pointer :: polym class (cell), pointer :: ptc type (grid), target :: ptg Какие справедливы прикрепления ссылок ?
    (1) polym => ptc
    (2) ptc => ptg.object
    (3) polym => ptg.object
    (4) polym=>um1.sm(1:100:4)
    (5) polym => ptg
    Укажите верные объявления 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)
    Используя процедуры MKL вычислите скалярное произведение двух векторов math и math. Данные находятся в файле data7.txt. В ответ введите целую часть результата.
    -25
    Выберите допустимые объявления модульных переменных для данного варианта программы module mod_A implicit none ! здесь следует объявить модульные переменные public init_solver contains subroutine init_solver(val) real val x=val*sin(val)+A end subroutine init_solver end module mod_A PROGRAM prog use mod_A, Anew => A, Bnew => B implicit none Bnew=1+Anew write(*,*) Bnew+Anew+X call init_solver(-1.0) end
    (1) real, protected :: X
    (2) integer, private :: A
    (3) integer, protected :: A
    (4) integer, protected :: B
    (5) integer, public :: B

    В головной программе используется модуль geom, который содержит только тип circle и модульную процедуру IncRadius. Головная программа использует модуль geom. В головной программе объявлена переменная type (circle) CR.

    Укажите верное описание типа circle и процедуры IncRadius, чтобы при вызове call CR.IncRadius(10.0) из головной программы, поле R переменной CR было изменено.

    (1) subroutine IncRadius(dR) type(circle) cr real dR cr.R=cr.R + dR end subroutine IncRadius
    (2) subroutine IncRadius(cr, dR) class(circle) cr real dR cr.R=cr.R + dR end subroutine IncRadius
    (3) type circle real, public :: x,y real, private :: R contains procedure, nopass :: IncRadius end type circle
    (4) type circle real, public :: x,y real, private :: R contains procedure :: IncRadius end type circle
    (5) subroutine IncRadius(cr,dR) type(circle) cr real dR cr.R=cr.R + dR end subroutine IncRadius
    Выберите оператор выполняющий синхронизацию избранных копий программы
    (1) sync images
    (2) sync all
    (3) critical
    (4) this_image
    (5) sync memory
    Используя процедуры MKL, вычислите Евклидову норму вектора math. Данные находятся в файле data12.txt. В ответ введите целую часть результата.
    355
    Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру init из модуля B module mod_A contains subroutine init write(*,*) "Initializing A" end subroutine init end module mod_A module mod_B contains subroutine init write(*,*) "Initializing B" end subroutine init end module mod_B PROGRAM prog use mod_A use mod_B implicit none call init() ! вызываем процедуру из модуля B end
    (1) в головной программе записать use mod_B, only :
    (2) в модуле A указать public init
    (3) в модуле B указать private init
    (4) в модуле A указать private init
    (5) в головной программе записать use mod_A, init_A => init
    (6) в головной программе записать use mod_B, init_B => init
    В следующем фрагменте программы, какие имена являются процедурами привязанными к типу по имени ? use algebra type (matrix) MTR, MTR1, MTR2 real det ... call MTR.Create(10,10) call MTR.Random() call MTR1.Transpose() det=MTR1.determinant ... MTR=MTR1.CONVERT.MTR2 write(*,*) MTR.value(10,2:10,10) ...
    (1) Create
    (2) Random
    (3) Transpose
    (4) determinant
    (5) CONVERT
    (6) value
    Используя процедуры MKL, вычислите произведение math, где math- квадратная матрица, math-вектор. Данные находятся в файле записана по строкам). В ответ введите номер минимального по модулю элемента вектора math.
    54
    Какие функции используются в выражении res=sin(2.0)*cos(2.0) module mod_F contains real function sin(x) sin=sqrt(sqrt(sqrt(x))) end function sin real function cos(x) cos=x**2.0**2.0 end function cos end module mod_F PROGRAM prog use mod_F, only : sin implicit none real res res=sin(2.0)*cos(1.0) end
    (1) стандартная функция вычисления синуса
    (2) стандартная функция вычисления косинуса
    (3) функция cos из модуля mod_F
    (4) функция sin из модуля mod_F
    Даны два типа type grid real(8) x1,y1,x2,y2 integer(8) adr end type grid type point real(8) x real(8) y end type point Создайте тип region, который содержит поля:
  • типа point, в виде одномерного динамического массива
  • типа real(8), в виде трехмерного динамического массива
  • В ответ введите размер в байтах переменной типа region
    98
    Используя процедуры MKL, вычислите произведение math, где math- треугольная квадратная матрица,math-квадратная матрица. Данные находятся в файле и math записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы math.
    10574
    Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно. module mod_E interface point module procedure pnt1, pnt2, pnt3 end interface contains real function pnt1(x,y) real x integer y pnt1=x+y end function pnt1 real function pnt2(x,y) integer x,y pnt2=x+y end function pnt2 character function pnt3(x,y) real x integer y pnt3=achar(mod(int(x),20)*mod(y,2)) end function pnt3 end module mod_E
    (1) pnt1 и pnt2
    (2) pnt1 и pnt3
    (3) pnt2 и pnt3
    (4) конфликты отсутствуют
    (5) pnt1 и pnt2 и pnt3
    В головной программе используется модуль flow. Объявлена переменная PT типа point. Какие из процедур в типе point могут изменить приватную часть переменной PT ? module flow type point integer x integer y real, private :: cp contains procedure, nopass :: proc1 procedure proc2 procedure, pass :: proc3 procedure, nopass :: proc4 procedure proc5 procedure show end type point contains subroutine proc1(pt,val) type(point) pt real val pt.cp = val end subroutine proc1 subroutine proc2(pt) class(point) pt pt.cp=real(pt.x+pt.y) end subroutine proc2 subroutine proc3(pt) class(point) pt integer tmp tmp=pt.x; pt.x=pt.y; pt.y=tmp end subroutine proc3 subroutine proc4(pt) type(point) pt if (pt.cp<=0) write(*,*) "ERROR" end subroutine proc4 subroutine proc5(pt,M,N,S) class(point) pt integer M,N real, optional :: S pt.x=pt.x+N pt.y=pt.y+M if (present(S)) call random_number(pt.cp) end subroutine proc5 end module flow
    (1) proc1
    (2) proc2
    (3) proc3
    (4) proc4
    (5) proc5
    Используя процедуры MKL, вычислите произведение math, где math- прямоугольная матрица,math-квадратная матрица. Данные находятся в файле и math записаны по строкам). В ответ введите целое значение от суммы элементов матрицы math.
    89831
    Переменные, объявленные как public
    (1) доступны модульным процедурам при несовпадении имен
    (2) доступны в головной программе
    (3) недоступны в головной программе
    (4) доступны в головной программе, но их нельзя изменять
    (5) недоступны модульным процедурам
    Процедурные указатели объявляются при помощи оператора
    (1) procedure
    (2) contains
    (3) class
    (4) final
    (5) pass
    Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.
    (1) программа Intel Inspector
    (2) библиотека Intel Math Kernel Library
    (3) оператор associate
    (4) оператор do concurrent
    (5) режим компиляции /debug:parallel
    Какие опции компилятора отвечают за использование библиотеки MKL ?
    (1) /Qmkl:sequential
    (2) /Qmkl:blas
    (3) /Qmkl:cluster
    (4) /Qmkl:thread
    (5) /Qmkl:parallel
    В каких разделах "Свойства проекта" указывается создание файла листинга программы ?
    (1) Run time
    (2) Libraries
    (3) Output Files
    (4) Language
    (5) Compatibility
    Процедуры, описанные атрибутом protected
    (1) доступны модульным процедурам при несовпадении имен
    (2) доступны в головной программе
    (3) недоступны в головной программе
    (4) доступны в головной программе, но их нельзя изменять
    (5) нельзя объявлять
    Выберите верные утверждения касающиеся конструктора
    (1) имя конструктора совпадает с именем типа
    (2) конструктор может вызываться только при объявлении переменной
    (3) все параметры конструктора являются optional-параметрами
    (4) конструктор можно использовать в операторе allocate
    (5) конструктор должен объявляться внутри типа при помощи атрибута deferred
    Какие из циклов не подходят для параллелизации с использованием опции компилятора /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
    В каком разделе находится описание подпрограммы symv ?
    (1) BLAS level 1
    (2) BLAS level 2
    (3) BLAS level 3
    Укажите параметр компиляции устанавливающий размер памяти для типа double precision
    (1) /double_size:128
    (2) /double_kind:128
    (3) /double_kind:16
    (4) /double_size:8
    (5) /double:128
    Укажите оператор используемый для инкапсуляции процедур модуля
    (1) private
    (2) public
    (3) save
    (4) protected
    (5) automatic
    Выберите верное задание операции EXTRACT для производного типа
    (1) interface operator (EXTRACT) module procedure ext end interface
    (2) interface operator (.EXTRACT.) module procedure ext end interface
    (3) interface assignment (EXTRACT) module procedure ext end interface
    (4) interface operator :: EXTRACT module procedure ext end interface
    (5) interface operator => .EXTRACT. module procedure ext end interface
    Выберите верные утверждения
    (1) каждая копия программы обрабатывает свои локальные данные
    (2) каждая копия программы обрабатывает общие глобальные данные
    (3) для пересылки данных между копиями программы используются coarray-переменные
    (4) пересылка данных от 1-й к 2-й копии caf-программы происходит только по завершению работы 1-й копии
    (5) каждая копия caf-программы имеет уникальный номер
    Напишите имя подпрограммы (синтаксис Fortran 95), которая вычисляет матрично-векторное произведение math, где math -матрица общего вида,math и math векторы, math и math числа.
    gemv
    Укажите параметр компиляции, который задействует создание кода на базе директив OpenMP
    (1) /Qopenmp
    (2) /Qparallel
    (3) /Qpar-report
    (4) /Qtprofile
    (5) /Qtcheck
    Объявлен следующий модуль module matrix private integer :: A=100, B=200, C=300 complex, private :: S=9 integer, protected :: P=8 integer :: Q=100, W=200 integer, public :: N=500 end module matrix Какие из перечисленных модульных переменных могут быть использованы качестве границ размещаемых массивов в вызывающей головной программе?
    (1) A
    (2) B
    (3) C
    (4) S
    (5) P
    (6) Q
    (7) W
    (8) N
    (9) нет вариантов
    Модуль module mod_1 type region integer x(4) real R end type region type blk logical st(3) character(5), public :: name(2) end type blk type NewType type (region) reg(20) type (blk) bee(30) end type NewType end module mod_1

    используется в головной программе.

    Объявлена переменная

    type(NewType) NT Укажите верные варианты доступа к полям производного типа.
    (1) NT.reg(10).x(2)
    (2) NT.reg.x
    (3) NT.reg.x(3)
    (4) NT.bee(1::2).name(1)
    (5) NT.bee(2:20:5).name(1)(1:3)
    Укажите функцию, которая возвращает номер копии caf-программы
    (1) getgid
    (2) getimage
    (3) this_image
    (4) num_images
    (5) imagesize
    Какой раздел библиотеки Intel ® Math Kernel Library содержит процедуры, которые выполняют тригонометрические функции над векторам ?
    (1) Sparse BLAS
    (2) DFT
    (3) VML
    (4) PDES
    (5) VSL
    Укажите параметр компиляции, который управляет отчетом о возможности векторизации циклов
    (1) /Qvec-report
    (2) /Qpar-report
    (3) /warn:declarations
    (4) /warn:stderrors
    (5) /Qguide
    Объявлен модуль и головная программа module matrix real, public :: A=1.6 real, protected :: B=5.8 real, private :: C=1.0E+10 integer, protected :: X=50 integer, private :: Y=70 end module matrix PROGRAM prog use matrix, only : X, BN => B implicit none real :: C=5000, B=10 integer :: Y=800 ... Какие из вариантов выражений допустимы в головной программе ?
    (1) call random_number(X)
    (2) call random_number(BN)
    (3) X=Y+C*B
    (4) do X=1,10 end do
    (5) нет вариантов
    Дан модуль, который используется в головной программе module mod_1 type person integer year character(64), private :: name="ABC" character(64), private :: sname="DEF" end type person type, extends (person) :: student logical, private :: status character, public :: group end type student end module mod_1

    В головной программе объявлена переменная

    type (person) ps type (student) st Укажите верные варианты доступа к полям производного типа из головной программы.
    (1) ps.year
    (2) st.person
    (3) st.group
    (4) st.status
    (5) ps.status
    Чему равна верхняя граница третьего измерения coarray-переменной CF, если caf-программа скомпилирована для восьмиядерного процессора и в настройках проекта указано значение Coarray Images = 64. CoArray-переменная CF, объявлена как type (plot) CF [2,-1,2:*]
    33
    Используя процедуры MKL вычислите выражение math. Данные находятся в файле data3.txt. В ответ введите целую часть суммы модулей мнимой части полученного вектора.
    81
    Укажите директиву, которая указывает сколько байт следует отводить для целого типа по умолчанию
    (1) !DEC$INTEGER
    (2) !DEC$DEFINE
    (3) !DEC$STRICT
    (4) !DEC$DECLARE
    (5) !DEC$REAL
    Описан модуль, который подключен к головной программе module mod_1 integer, protected :: A=1,B=1,C=1 integer, private :: D, E private SetA public F, init contains subroutine SetA(X) integer X A=X-1 end subroutine SetA subroutine init_D_E(x,y) integer x,y D=X*10; E=Y*2; call SetA(0) end subroutine init_D_E integer function F F=A+D+E end function F end module mod_1 Какой результат вернет функция F после вызова процедуры init_D_E(4,5) в головной программе ?
    49
    Объявлены следующие типы и переменные. type grid integer adr real alfa real beta end type grid type, extends (grid) :: flow integer coord real dist real param end type flow type regime type (flow) flw real, allocatable :: ux(:,:,:), uy(:,:,:), uz(:,:,:) real R1, R2, R3 end type regime class(*), pointer :: polym class(regime), pointer :: pol_reg type(flow), target :: pol_flw Какие справедливы прикрепления ссылок ?
    (1) polym => pol_flw.grid
    (2) pol_reg => pol_flw.flw
    (3) polym => pol_reg
    (4) pol_reg => pol_flw
    (5) polym => pol_flw
    Укажите верные объявления 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)
    Используя процедуры MKL вычислите скалярное произведение двух векторов math и math. Данные находятся в файлеdata8.txt. В ответ введите целую часть результата.
    13
    Выберите допустимые объявления модульных переменных для данного варианта программы module mod_A implicit none ! здесь следует объявить модульные переменные public init_solver contains subroutine init_solver(x) real x A=A*0.001 B=x+A end subroutine init_solver end module mod_A PROGRAM prog use mod_A, Bnew => B implicit none Bnew=A*2 write(*,*) x+2 call init_solver(0.0) end
    (1) real, protected :: X = 2
    (2) real, private :: X = 2
    (3) integer, protected :: A = 2
    (4) integer, public :: B = 3
    (5) integer, private :: A = 2

    В головной программе используется модуль peoples, который содержит только тип person и модульную процедуру PrintInfo. Головная программа использует модуль peoples. В головной программе объявлена переменная type (person) PS.

    Укажите верное описание типа person и процедуры PrintInfo, чтобы при вызове call PS.PrintInfo() из головной программы, отображалась информация, содержащаяся в полях переменной PS.

    (1) subroutine PrintInfo(PS) class(person) PS write(*,*) "FIO = ", PS.fio write(*,*) "flag = ", PS.flag write(*,*) "year = ", PS.year end subroutine PrintInfo
    (2) subroutine PrintInfo(PS) type(person) PS write(*,*) "FIO = ", PS.fio write(*,*) "flag = ", PS.flag write(*,*) "year = ", PS.year end subroutine PrintInfo
    (3) type person character(128) fio logical, private :: flag integer, private :: year contains procedure, pass :: PrintInfo end type person
    (4) type person character(128) fio logical, private :: flag integer, private :: year contains procedure, nopass :: PrintInfo end type person
    (5) type person character(128) fio logical :: flag integer :: year contains procedure, nopass :: PrintInfo end type person
    Каждая копия программы генерирует массив из случайных чисел. Каждая копия программы должна записать массив целиком в файл C:\datа.txt. Какой оператор следует использовать при записи данных в файл ?
    (1) sync images
    (2) sync all
    (3) critical
    (4) this_image
    (5) sync memory
    Используя процедуры MKL, вычислите Евклидову норму вектора math. Данные находятся в файле data13.txt. В ответ введите целую часть результата.
    12
    Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру init из модуля B module mod_A contains subroutine init write(*,*) "Initializing A" end subroutine init end module mod_A module mod_B contains subroutine init write(*,*) "Initializing B" end subroutine init end module mod_B PROGRAM prog use mod_A use mod_B implicit none call init() ! вызываем процедуру из модуля B end
    (1) в головной программе записать use mod_A, only :
    (2) в модуле A указать protected init
    (3) в модуле B указать public init
    (4) закомментировать use mod_A
    (5) в головной программе записать use mod_B, B => init
    В приведенном фрагменте программы перечислите имена пользовательских операций. use math type (matrix) MTR, MTR1, MTR2 type (set) S1, S2, S3 ... call MTR.Create(Mi,Mj) MTR = MTR1 + MTR2 * (MTR.Inverse()) S2 = S1.CROSS.S3 call MTR1.Transpose() det = MTR1.determinant ... S1 = S2.UNION.S3 write(*,*) S1.value(1:100:2) ...
    (1) Create
    (2) Inverse
    (3) Transpose
    (4) determinant
    (5) INDEX
    (6) UNION
    (7) CROSS
    (8) value
    Используя процедуры MKL, вычислите произведение math, где math- квадратная матрица, math-вектор. Данные находятся в файле записана по строкам). В ответ введите номер минимального по модулю элемента вектора math.
    14
    Какие функции используются в выражении res=sin(2.0)*cos(2.0) module mod_F contains real function sin(x) sin=sqrt(sqrt(sqrt(x))) end function sin real function cos(x) cos=x**2.0**2.0 end function cos end module mod_F PROGRAM prog use mod_F, only : cos implicit none real res res=sin(2.0)*cos(1.0) end
    (1) стандартная функция вычисления синуса
    (2) стандартная функция вычисления косинуса
    (3) функция cos из модуля mod_F
    (4) функция sin из модуля mod_F
    Даны два типа описанных в модуле hydro module hydro type point real(8) x real(8) y end type point type, extends (point) :: expoint real(16), allocatable :: x1,y1,x2,y2 character(8) code end type expoint ... end module hydro В тип expoint добавляются две модульные процедуры procA и procB. Процедуры не имеют формальных параметров. На сколько изменится размер в байтах переменной типа expoint после добавления процедур ?
    0
    Используя процедуры MKL, вычислите произведение math, где math- треугольная квадратная матрица,math-квадратная матрица. Данные находятся в файле и math записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы math.
    905
    Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно. module mod_E interface point module procedure pnt1, pnt2, pnt3 end interface contains real function pnt1(x,y) integer x,y pnt1=x+y end function pnt1 logical function pnt2(x,y) integer x,y pnt2=x+y<1000 end function pnt2 character function pnt3(x,y) real x integer y pnt3=achar(mod(int(x),20)*mod(y,2)) end function pnt3 end module mod_E
    (1) pnt1 и pnt2
    (2) pnt1 и pnt3
    (3) pnt2 и pnt3
    (4) конфликты отсутствуют
    (5) pnt1 и pnt2 и pnt3
    Какое значение будет присвоено переменной k в результате выполнения оператора select type в следующем фрагменте программы ? type point integer x, y end type point type, extends(point) :: point_ex integer z integer color logical error end type point_ex type, extends(point_ex) :: point_phys real vx real vy real vz real tm end type point_phys type, extends(point_phys) :: point_mech character(32) name character(8) code end type point_mech integer k class (*), pointer :: ptr type (point_ex), target :: pt_ex class (point_phys), allocatable, target :: pt_ph class (point_mech), allocatable, target :: pt_mh allocate(pt_ph,source=point_phys(1,2,3,4,.true.,0.0,0.0,0.0,0.0)) allocate(pt_mh,source=point_mech(5,6,7,8,.true.,0.0,0.0,0.0,0.0,"A","B")) ptr=>pt_ph select type (ptr) type is (point_ex); k=ptr.x class is (point); k=ptr.y class is (point_mech); k=ptr.color class default; k=0 end select ...
    2
    Используя процедуры MKL, вычислите произведение math, где math- прямоугольная матрица,math-квадратная матрица. Данные находятся в файле и math записаны по строкам). В ответ введите целое значение от суммы элементов матрицы math.
    -75395
    Переменные, объявленные как private
    (1) доступны модульным процедурам при несовпадении имен
    (2) доступны в головной программе
    (3) недоступны в головной программе
    (4) доступны в головной программе, но их нельзя изменять
    (5) недоступны модульным процедурам
    Наследование производных типов осуществляется при помощи атрибута
    (1) pass
    (2) extends
    (3) extend
    (4) class
    (5) select type
    Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.
    (1) программа Intel Advisor
    (2) библиотека Intel Threading Building Blocks
    (3) CoArray
    (4) директива !DEC$ DEFINE
    (5) сечения массивов
    Укажите верные имена *.mod файлов входящих в состав MKL
    (1) blas95.mod
    (2) mkl95_lapack.mod
    (3) mkl_service.mod
    (4) lapack95.mod
    (5) lapack.mod
    В каких разделах "Свойства проекта" указывается создание файла листинга программы ?
    (1) Language
    (2) Compatibility
    (3) General
    (4) Code Generation
    (5) Libraries
    Подключение модуля к головной программе происходит посредством оператора
    (1) contains
    (2) use
    (3) module
    (4) public
    (5) interface
    Определение типа полиморфной переменной происходит посредством оператора
    (1) class(*)
    (2) select case
    (3) type is
    (4) class is
    (5) select type
    Какие из циклов не подходят для параллелизации с использованием опции компилятора /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
    В каком разделе находится описание подпрограммы trmv ?
    (1) BLAS level 1
    (2) BLAS level 2
    (3) BLAS level 3
    Укажите параметр компиляции разрешающий округление результатов с плавающей точкой в присваиваниях
    (1) /Qfp-speculation=fast
    (2) /Qftz
    (3) /Qfp-stack-check
    (4) /Qfp_port
    (5) /fpconstant
    Перегрузка процедур объявляется при помощи операторов
    (1) interface и module procedure
    (2) interface и contains
    (3) use и private
    (4) use и module procedure
    (5) private и contains
    Полиморфная переменная объявляется оператором
    (1) class
    (2) type
    (3) record
    (4) extends
    (5) select type
    Выберите верные утверждения
    (1) количество копий caf-программы может быть установлено в настройках проекта
    (2) количество копий caf-программы всегда соответствует количеству процессоров (ядер)
    (3) каждая копия сaf-программы обрабатывает общие глобальные данные
    (4) в CoArray Fortran используется разделенное глобальное адресное пространство
    (5) пересылка данных происходит посредством обычных массивов с использованием специальных функций
    Напишите имя подпрограммы (синтаксис Fortran 95), которая вычисляет матрично-матричное произведение math, где math - симметричная матрица, math и math прямоугольные матрицы, math-число.
    symm
    Укажите параметр компиляции, который управляет уровнями диагностики автоматического распараллеливания
    (1) /Qpar-report
    (2) /Qparallel
    (3) /Qpar
    (4) /Qtprofile
    (5) /Qtcheck
    Объявлен следующий модуль module matrix public integer :: A=100, B=200, C=300 complex, private :: S=9 integer, protected :: P=8 integer :: Q=100, W=200 integer, private :: N=500 end module matrix Какие из перечисленных модульных переменных могут быть использованы в качестве границ размещаемых массивов в вызывающей головной программе?
    (1) A
    (2) B
    (3) C
    (4) S
    (5) P
    (6) Q
    (7) W
    (8) N
    (9) нет вариантов
    Модуль module mod_1 type plot integer x1,y1,x2,y2 integer color(255) end type plot type indicator type (plot) plt logical, private :: free character(4) date end type indicator type card type (indicator) indic integer fparam integer sparam end type card end module mod_1

    используется в головной программе.

    Объявлена переменная

    type(card) cd Укажите верные варианты доступа к полям производного типа.
    (1) cd.indic.plt.color(200)
    (2) cd.indic.date(1:3)
    (3) cd.indic
    (4) cd.indic.free
    (5) cd.indic.plot
    Укажите функцию, которая вычисляет верхнюю границу coarray-переменной
    (1) cobound
    (2) ucobound
    (3) ubound
    (4) lcobound
    (5) codimension
    Какой раздел библиотеки Intel ® Math Kernel Library содержит генераторы квазислучайных чисел ?
    (1) BLAS
    (2) Cluster DFT
    (3) VML
    (4) PDES
    (5) VSL
    Укажите параметр компиляции, который разрешает подстановку функций внутри текущего исходного файла на усмотрение компилятора
    (1) /Ob2
    (2) /Ob1
    (3) /Qprof-gen
    (4) /Qipo-jobs
    (5) /Qx
    Объявлен модуль и головная программа module matrix real, private :: A=1.6 real, public :: B=5.8 real, protected :: C=1.0E+10 private integer :: X=50 integer :: Y=70 end module matrix PROGRAM prog use matrix, only : BNEW => B implicit none real :: C=5000, B=10 integer :: Y=800 ... Какие из вариантов выражений допустимы в головной программе ?
    (1) call random_number(X)
    (2) call random_number(BN)
    (3) C=Y*B
    (4) BNEW=B+1
    (5) нет вариантов
    Дан модуль, который используется в головной программе module mod_1 type person integer, public :: year character(64), private :: name="ABC" character(64), public :: sname="DEF" end type person private person type, extends (person) :: student logical, public :: status character, private :: group end type student end module mod_1

    В головной программе объявлена переменная

    type (student) st Укажите верные варианты доступа к полям производного типа из головной программы.
    (1) st.person
    (2) st.person.name
    (3) st.year
    (4) st.status
    (5) st.person.year
    Чему равна нижняя граница первого измерения coarray-переменной CF, если caf-программа скомпилирована для восьмиядерного процессора и в настройках проекта указано значение Coarray Images = 0. CoArray-переменная CF, объявлена как type (cell) CF [2,2:*]
    1
    Используя процедуры MKL вычислите выражение math. Данные находятся в файле data4.txt. В ответ введите целую часть суммы модулей мнимой части полученного вектора.
    275
    Укажите директиву, которая подключает имя библиотеки в процессе сборки программы
    (1) !DEC$OBJCOMMENT LIB
    (2) !DEC$OBJ
    (3) !DEC$LIB
    (4) !DEC$OBJ LIB
    (5) !DEC$OBJCOMMENT
    Описан модуль, который подключен к головной программе module mod_1 integer, public :: A=1,B=1,C=1 integer, protected :: D=5, E public F, init contains subroutine init_D_E(x,y) integer x,y D=X*10; E=Y*2 end subroutine init_D_E integer function F F=A+D+E end function F end module mod_1 Какой результат вернет функция F после выполнения операции присваивания A=A+D в головной программе ?
    11
    Объявлены следующие типы и переменные. type cell real next real prev logical stat end type cell type object integer code real dist real radius end type object type grid type (object) object type (cell) cell integer xa,xb,ya,yb end type grid class (*), pointer :: polym class (cell), pointer :: ptc type (grid), target :: ptg Какие справедливы прикрепления ссылок ?
    (1) polym => ptg.cell
    (2) ptc => ptg.cell
    (3) ptc => ptg.object
    (4) ptc => ptg.cell.next
    (5) polym => ptg.cell.next
    Укажите верные объявления coarray-переменных
    (1) integer, allocatable :: vx(:,:,:)[:]
    (2) integer :: par[*]=1000
    (3) class (grid) :: G1[*]
    (4) real, pointer :: TMP[*]
    (5) type(grid) as[*,*]
    Используя процедуры MKL вычислите скалярное произведение двух векторов math и math. Данные находятся в файле data9.txt. В ответ введите целую часть результата.
    -2370
    Выберите допустимые объявления модульных переменных для данного варианта программы module mod_A implicit none ! здесь следует объявить модульные переменные public init_solver contains subroutine init_solver(x) real x A=A**2 B=x+A end subroutine init_solver end module mod_A PROGRAM prog use mod_A, Anew => A implicit none x=1.5 Anew=x+1 write(*,*) Anew+B call init_solver(1.6) end
    (1) integer, public :: A = 2
    (2) real, public :: X = 2
    (3) real, private :: X = 2
    (4) integer, protected :: A = 2
    (5) integer, protected :: B = 3

    В головной программе используется модуль farm, который содержит только тип animal и модульную процедуру PrintTitle. Головная программа использует модуль farm. В головной программе объявлена переменная type (animal) AN.

    Укажите верное описание типа animal и процедуры PrintTitle, для организации вызова call AN.PrintTitle() из головной программы.

    (1) type animal character(64) name logical, private :: status integer, private :: age contains procedure, nopass :: PrintTitle end type animal
    (2) type animal character(64) name logical, private :: status integer, private :: age contains procedure, pass :: PrintTitle end type animal
    (3) subroutine PrintTitle() type (animal) an write(*,*) "****************" write(*,*) "* ANIMAL *" write(*,*) "****************" end subroutine PrintTitle
    (4) subroutine PrintTitle() write(*,*) "****************" write(*,*) "* ANIMAL *" write(*,*) "****************" end subroutine PrintTitle
    (5) type animal character(64) name logical :: status integer :: age contains procedure :: PrintTitle end type animal
    Используя процедуры MKL, вычислите Евклидову норму вектора math. Данные находятся в файле data14.txt. В ответ введите целую часть результата.
    2789
    Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру init из модуля A module mod_A contains subroutine init write(*,*) "Initializing A" end subroutine init end module mod_A module mod_B contains subroutine init write(*,*) "Initializing B" end subroutine init end module mod_B PROGRAM prog use mod_A use mod_B implicit none call init() ! вызываем процедуру из модуля A end
    (1) закомментировать use mod_B
    (2) в модуле A указать private init
    (3) в модуле B указать public init
    (4) в модуле A указать public A
    (5) в головной программе записать use mod_A, B => init
    (6) в головной программе записать use mod_B, only :
    В следующем фрагменте программы, какие имена не являются и могут не являться процедурами, привязанными к типу по имени? use grids type (grid_MKE) GR type (point) pt call GR.Init() call GR.PrintInfo() write(*,*) GR.coordinates(10,20) write(*,*) GR.next() write(*,*) GR.values(2,2) if (.NOT.GR.err) then ... pt = GR.points + pt ...
    (1) Init
    (2) PrintInfo
    (3) coordinates
    (4) next
    (5) values
    (6) err
    (7) points
    Используя процедуры MKL, вычислите произведение math, где math- квадратная матрица, math-вектор. Данные находятся в файле записана по строкам). В ответ введите номер минимального по модулю элемента вектора math.
    140
    Какие функции используются в выражении res=sin(2.0)*cos(2.0) module mod_F contains real function sin(x) sin=sqrt(sqrt(sqrt(x))) end function sin real function cos(x) cos=x**2.0**2.0 end function cos end module mod_F PROGRAM prog use mod_F, only : sin, cos implicit none real res res=sin(2.0)*cos(1.0) end
    (1) стандартная функция вычисления синуса
    (2) стандартная функция вычисления косинуса
    (3) функция cos из модуля mod_F
    (4) в модуле A указать public A
    Даны два типа описанных в модуле gas_dynamics module gas_dynamics type grid real(8), allocatable :: dat(:,:,:) real(8), allocatable :: xcoord(:) real(8), allocatable :: ycoord(:) real(8), allocatable :: zcoord(:) end type grid type particle real(8), allocatable, private :: ux(:,:,:) real(8), allocatable, private :: uy(:,:,:) real(8), allocatable, private :: uz(:,:,:) real(8), allocatable, private :: tm(:,:,:) end type particle ... end module gas_dynamics Создайте тип plot, который:
  • наследует поля типа grid
  • содержит поле типа particle, в виде одномерного динамического массива
  • содержит два поля типа complex(8), в виде одномерных динамических массивов
  • В ответ введите размер в байтах переменной типа plot
    276
    Используя процедуры MKL, вычислите произведение math, где math- треугольная квадратная матрица,math-квадратная матрица. Данные находятся в файле и math записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы math.
    -10
    Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно. module mod_E interface point module procedure pnt1, pnt2, pnt3 end interface contains logical function pnt1(x,y) integer x,y pnt1=x+y<1000 end function pnt1 real function pnt2(x,y) real x real y pnt2=x+y end function pnt2 real function pnt3(x,y) real y real x pnt3=x*y+x**y end function pnt3 end module mod_E
    (1) pnt1 и pnt2
    (2) pnt1 и pnt3
    (3) pnt2 и pnt3
    (4) конфликты отсутствуют
    (5) pnt1 и pnt2 и pnt3
    Какое значение будет присвоено переменной k в результате выполнения оператора select type в следующем фрагменте программы ? type point integer x, y end type point type, extends(point) :: point_ex integer z end type point_ex type, extends(point_ex) :: point_phys real vx real tm end type point_phys type, extends(point_phys) :: point_mech character(32) name end type point_mech class (point_ex), pointer :: poly class (point), target, allocatable :: pt class (point_ex), target, allocatable :: pt_ex class (point_phys), target, allocatable :: pt_ph class (point_mech), target, allocatable :: pt_mh integer k allocate (pt, source=point(1,2)) allocate (pt_ex, source=point_ex(3,4,5)) allocate (pt_ph, source=point_phys(6,7,8,0.0,9.0)) allocate (pt_mh, source=point_mech(9,10,11,0.0,0.0,"ABC")) poly=>pt_mh select type (poly) class is (point_ex); k=poly.x class is (point_phys); k=poly.z class default; k=0 end select ...
    11
    Используя процедуры MKL, вычислите произведение math, где math- прямоугольная матрица,math-квадратная матрица. Данные находятся в файле и math записаны по строкам). В ответ введите целое значение от суммы элементов матрицы math.
    -679
    Переменные, объявленные как protected
    (1) доступны модульным процедурам при несовпадении имен
    (2) доступны в головной программе
    (3) недоступны в головной программе
    (4) доступны в головной программе, но их нельзя изменять
    (5) недоступны модульным процедурам
    Неограниченно полиморфная переменная объявляется при помощи оператора
    (1) class
    (2) class(*)
    (3) class()
    (4) class*
    (5) *class
    Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.
    (1) режим компиляции /Qpar-threshold
    (2) асинхронный ввод/вывод
    (3) CoArray
    (4) сечения массивов
    (5) библиотека Intel Threading Building Blocks
    Внешние процедуры объявляются после оператора
    (1) mkl_lapack95.lib
    (2) mkl_pdes.lib
    (3) mkl_core.lib
    (4) mkl_blas95.lib
    (5) mkl_solver.lib
    В каких разделах "Свойства проекта" указывается использование библиотеки Math Kernel Library ?
    (1) Libraries
    (2) Language
    (3) Compatibility
    (4) Output Files
    (5) Preprocessor
    Подключение модуля к внешней процедуре происходит посредством оператора
    (1) contains
    (2) use
    (3) module
    (4) public
    (5) interface
    Каким атрибутом следует описать процедуру, привязанную к типу по имени, чтобы получить доступ к переменной, посредством которой вызывалась данная процедура ?
    (1) final
    (2) pass
    (3) nopass
    (4) deferred
    (5) procedure
    Какие из циклов не подходят для параллелизации с использованием опции компилятора /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
    В каком разделе находится описание подпрограммы trsm ?
    (1) BLAS level 1
    (2) BLAS level 2
    (3) BLAS level 3
    Укажите параметр компиляции позволяющий проверять неинициализированные переменные
    (1) /check:format
    (2) /check:arg_temp_created
    (3) /check:uninit
    (4) /check:bounds
    (5) /ccdefault:fortran
    В программе используется модуль math_M. Чтобы подключить еще один модуль graph_M к головной программе следует
    (1) использовать еще один оператор use
    (2) записать use math_M, graph_M
    (3) запсиать use math_M : graph_M
    (4) использовать оператор contains
    (5) использовать оператор interface
    Для запрещения прямого обращения к полю производного типа используется атрибут
    (1) public
    (2) protected
    (3) private
    (4) extends
    (5) pass
    Какой режим компиляции позволяет использовать CoArray
    (1) /Qcoarray
    (2) /CAF
    (3) /CoArray
    (4) /Qcoarray images = 0
    (5) /Qcoarray:shared
    Напишите имя подпрограммы (синтаксис Fortran 95), которая решает матричное уравнение math, где math - верхняя треугольная матрица,math и math прямоугольные матрицы.
    trsm
    Укажите параметр компиляции, который не использует методов оптимизации, увеличивающие размер кода
    (1) /O1
    (2) /O2
    (3) /O3
    (4) /Ob1
    (5) /Ob2
    Объявлен следующий модуль module matrix private integer :: A=100, B=200, C=300 complex, private :: S=9 integer, protected :: P=8 integer :: Q=100, W=200 integer, private :: N=500 end module matrix Какие из перечисленных модульных переменных могут быть использованы в качестве границ размещаемых массивов в вызывающей головной программе?
    (1) A
    (2) B
    (3) C
    (4) S
    (5) P
    (6) Q
    (7) W
    (8) N
    (9) нет вариантов
    Модуль module mod_1 type plot integer x1,y1,x2,y2 integer, private :: color(255) end type plot type indicator type (plot) plt logical :: free character(4), public :: date end type indicator type card type (indicator) indic integer fparam integer, private :: sparam end type card end module mod_1

    используется в головной программе.

    Объявлена переменная

    type(card) cd Укажите верные варианты доступа к полям производного типа.
    (1) cd.sparam
    (2) cd.fparam
    (3) cd.indicator.free
    (4) cd.indic.plt.x1
    (5) cd.indic.plt.color(1:100:4)
    Укажите функцию, которая вычисляет нижнюю границу coarray-переменной
    (1) cobound
    (2) ucobound
    (3) lbound
    (4) lcobound
    (5) codimension
    Какой раздел библиотеки Intel ® Math Kernel Library содержит процедуру PARDISO ?
    (1) BLAS
    (2) DFT
    (3) Sparse Solver Routines
    (4) PDES
    (5) LAPACK
    Укажите параметр компиляции, который позволяет получить информацию для диагностики ошибок в параллельной части параллельного приложения
    (1) /Qtcheck
    (2) /Qx
    (3) /Qb2
    (4) /Od
    (5) /Qpar
    Объявлен модуль и головная программа module matrix public real, private :: A=1.6 real, public :: B=5.8 real, protected :: C=1.0E+10 integer :: X=50 integer :: Y=70 end module matrix PROGRAM prog use matrix, BNEW => B, CNEW => C implicit none integer XP, YP ... Какие из вариантов выражений допустимы в головной программе ?
    (1) call random_number(CNEW)
    (2) X=X+1
    (3) A=X*CNEW
    (4) BNEW=B*X
    (5) нет вариантов
    Дан модуль, который используется в головной программе module mod_1 type rectangle integer x1,y1,x2,y2 integer, private :: color character(16), private :: name = "REC_0001" end type rectangle type, extends (rectangle) :: roundrect integer r1, r2 real center end type roundrect end module mod_1

    В головной программе объявлена переменная

    type (roundrect) rc Укажите верные варианты доступа к полям производного типа из головной программы.
    (1) rc.x1
    (2) rc.name
    (3) rc.rectangle
    (4) rc.color
    (5) rc.center
    Чему равна нижняя граница второго измерения coarray-переменной CF, если caf-программа скомпилирована для восьмиядерного процессора и в настройках проекта указано значение Coarray Images = 256. CoArray-переменная CF, объявлена как type (cell) CF [2,2,3,4*]
    1
    Используя процедуры MKL вычислите выражение math. Данные находятся в файле data5.txt. В ответ введите целую часть суммы модулей полученного вектора.
    496
    Укажите директиву, которая задает идентификатор объектного файла
    (1) !DEC$IDENT
    (2) !DEC$PACK
    (3) !DEC$OPTIONAL
    (4) !DEC$MESSAGE
    (5) !DECSIMD
    Описан модуль, который подключен к головной программе module mod_1 integer, protected :: A=1,B=2,C=3 integer, public :: D=7, E=8 public F, init contains subroutine init(x,y) integer x,y A=x+y end subroutine init integer function F F=A+D+E-C end function F end module mod_1 Какой результат вернет функция F после вызова процедуры callinit(1,2) и выполнения операции присваивания E=A+B в головной программе ?
    12
    Объявлены следующие типы и переменные. type grid integer adr real alfa real beta end type grid type, extends (grid) :: flow integer coord real dist real param end type flow type, extends (flow) :: regime real, allocatable :: ux(:,:,:), uy(:,:,:), uz(:,:,:) real R1, R2, R3 end type regime class(*), pointer :: polym class(grid), pointer :: pol_grd type(flow), target :: flw Какие справедливы прикрепления ссылок ?
    (1) pol_grd=>flw
    (2) polym => flw.dist
    (3) pol_grd => flw.param
    (4) pol_grd => flw.grid
    (5) polym => flw.grid.beta
    Укажите верные объявления 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.)
    Используя процедуры MKL вычислите скалярное произведение двух векторов math и math. Данные находятся в файле data10.txt. В ответ введите целую часть результата.
    -365
    Выберите допустимые объявления модульных переменных для данного варианта программы module mod_A implicit none ! здесь следует объявить модульные переменные public init_solver contains subroutine init_solver(val) real val B=val*A end subroutine init_solver end module mod_A PROGRAM prog use mod_A, Anew => A, Xnew => X implicit none Xnew=2.0 write(*,*) B+Anew+Xnew call init_solver(0.0) end
    (1) real, protected :: X
    (2) real, public :: X
    (3) integer, public :: B
    (4) integer, protected :: A
    (5) integer, private :: B

    В головной программе используется модуль geom, который содержит только тип figure и модульную процедуру Modify. Головная программа использует модуль geom. В головной программе объявлена переменная class (figure), allocatable :: FG.

    Укажите верное описание типа figure и процедуры Modify, чтобы при вызове call FG.Modify(10) из головной программы, происходило изменение поля points в переменной FG.

    (1) type figure integer, private :: points(5) integer, private :: color contains procedure :: Modify end type figure
    (2) subroutine Modify(fg, scale) class(figure) fg integer scale fg.points=fg.points*scale end subroutine Modify
    (3) subroutine Modify(fg, scale) type(figure) fg integer scale fg.points=fg.points*scale end subroutine Modify
    (4) type figure integer, private :: points(5) integer, private :: color contains procedure, nopass :: Modify end type figure
    (5) type figure integer :: points(5) integer, private :: color contains procedure, nopass :: Modify end type figure
    Используя процедуры MKL, вычислите Евклидову норму вектора math. Данные находятся в файле data15.txt. В ответ введите целую часть результата.
    144
    Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру init из модуля A module mod_A contains subroutine init write(*,*) "Initializing A" end subroutine init end module mod_A module mod_B contains subroutine init write(*,*) "Initializing B" end subroutine init end module mod_B PROGRAM prog use mod_A use mod_B implicit none call init() ! вызываем процедуру из модуля A end
    (1) закомментировать use mod_A
    (2) в модуле A указать private init
    (3) в модуле B указать private init
    (4) в модуле A указать public A
    (5) в головной программе записать use mod_A, A => init
    (6) в головной программе записать use mod_B, only :
    В следующем фрагменте программы, укажите имена перегруженных процедур и операций. use flow type (grid) GRD type (velocity) VX, VY, VZ ... GRID.Init() call GRD.Add(VX) call GRD.Add(VY,VZ) call GRD.Build(X1=0.0,Y1=0.0,X2=2.0,Y2=1.0) write(1,*) VX + VY, VX - VZ ... call GRD.Draw() ... call VX.VectorField(GRD)
    (1) Init
    (2) Add
    (3) Draw
    (4) операция " + "
    (5) операция " - "
    (6) VectorField
    (7) Build
    Используя процедуры MKL, вычислите произведение math, где math- квадратная матрица, math-вектор. Данные находятся в файле записана по строкам). В ответ введите номер минимального по модулю элемента вектора math.
    393469
    Какие функции используются в выражении res=sin(2.0)*cos(2.0) module mod_F contains real function sin(x) sin=sqrt(sqrt(sqrt(x))) end function sin real function cos(x) cos=x**2.0**2.0 end function cos end module mod_F PROGRAM prog use mod_F, only : cos, sinx=>sin implicit none real res res=sin(256.0) write(*,*) res end
    (1) стандартная функция вычисления синуса
    (2) стандартная функция вычисления косинуса
    (3) функция cos из модуля mod_F
    (4) функция sin из модуля mod_F
    Даны два типа описанных в модуле gas_dynamics type base complex(8), allocatable :: points(:) logical, allocatable :: errors(:) integer, private :: size end type base type, extends(base) :: baseX character(32) file character(32) name logical stat end type baseX Создайте тип composite, который:
  • содержит поле типа baseX, в виде динамической переменной
  • содержит поле типа integer(2), в виде ссылки
  • содержит поле типа integer(8)
  • В ответ введите размер в байтах переменной типа composite
    16
    Используя процедуры MKL, вычислите произведение math, где math- треугольная квадратная матрица,math-квадратная матрица. Данные находятся в файле и math записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы math.
    624
    Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно. module mod_E interface point module procedure pnt1, pnt2, pnt3 end interface contains logical function pnt1(x,y) real x,y pnt1=x+y<1000 end function pnt1 real function pnt2(x,y) real x real y pnt2=x+y end function pnt2 real function pnt3(x,y) real y real x pnt3=x*y+x**y end function pnt3 end module mod_E
    (1) pnt1 и pnt2
    (2) pnt1 и pnt3
    (3) pnt2 и pnt3
    (4) конфликты отсутствуют
    (5) pnt1 и pnt2 и pnt3
    Какое значение будет находиться в поле a переменной ex1 после вызова call ex1.solve() в следующей программе ? module mod_1 abstract interface integer function func(x) integer x end function func end interface type region integer, private :: a integer, private :: b procedure (func), pointer, nopass :: funct contains procedure solve end type region contains subroutine solve(rg) class(region) rg rg.a=rg.funct(rg.a) end subroutine solve end module mod_1 program prog use mod_1 type (region) ex1 ex1.a=2; ex1.b=3; ex1.funct=>F call ex1.solve() contains integer function F(x) integer x F=x*x+x end function F END
    6
    Используя процедуры MKL, вычислите произведение math, где math- прямоугольная матрица,math-квадратная матрица. Данные находятся в файле и math записаны по строкам). В ответ введите целое значение от суммы элементов матрицы math.
    -442
    В каком разделе находится описание подпрограммы hemm ?
    (1) BLAS level 1
    (2) BLAS level 2
    (3) BLAS level 3