Основные назначения модулей
(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), которая вычисляет выражение
, где
и
векторы - векторы типа complex.
Укажите параметр компиляции запрещающий оптимизацию
(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 содержит процедуру, которая выполняет решение уравнения Лапласа ?
(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:*]
Используя процедуры MKL вычислите выражение
. Данные находятся в файле
[data1.txt]. В ответ введите целую часть суммы модулей полученного вектора.
Укажите директиву, которая позволяет использовать расширения 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
в головной программе ?
Объявлены следующие типы и переменные.
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 вычислите скалярное произведение двух векторов
и
. Данные находятся в файле
[data6.txt]. В ответ введите целую часть результата.
Выберите допустимые объявления модульных переменных для данного варианта программы
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, вычислите Евклидову норму вектора
. Данные находятся в файле
[data11.txt]. В ответ введите целую часть результата.
Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру 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, вычислите произведение
, где
- квадратная матрица,
-вектор. Данные находятся в файле
[ записана по строкам). В ответ введите номер минимального по модулю элемента вектора .
]
Какие функции используются в выражении 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
Используя процедуры MKL, вычислите произведение
, где
- треугольная квадратная матрица,
-квадратная матрица. Данные находятся в файле
[ и записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы .]
Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно.
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, вычислите произведение
, где
- прямоугольная матрица,
-квадратная матрица. Данные находятся в файле
[ и записаны по строкам). В ответ введите целое значение от суммы элементов матрицы .
]
Модуль может содержать
(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), которая вычисляет скалярное произведение двух вещественных вектор двойной точности.
Укажите параметр компиляции, который устанавливает порог для автопараллелизации циклов
(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:*]
Используя процедуры MKL вычислите выражение
. Данные находятся в файле
[data2.txt]. В ответ введите целую часть суммы модулей вещественной части полученного вектора.
Укажите директиву, которая предупреждает о необъявленных переменных
(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)
в головной программе ?
Объявлены следующие типы и переменные.
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 вычислите скалярное произведение двух векторов
и
. Данные находятся в файле
[data7.txt]. В ответ введите целую часть результата.
Выберите допустимые объявления модульных переменных для данного варианта программы
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, вычислите Евклидову норму вектора
. Данные находятся в файле
[data12.txt]. В ответ введите целую часть результата.
Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру 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, вычислите произведение
, где
- квадратная матрица,
-вектор. Данные находятся в файле
[ записана по строкам). В ответ введите номер минимального по модулю элемента вектора .
]
Какие функции используются в выражении 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
Используя процедуры MKL, вычислите произведение
, где
- треугольная квадратная матрица,
-квадратная матрица. Данные находятся в файле
[ и записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы .]
Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно.
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, вычислите произведение
, где
- прямоугольная матрица,
-квадратная матрица. Данные находятся в файле
[ и записаны по строкам). В ответ введите целое значение от суммы элементов матрицы .
]
Переменные, объявленные как 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), которая вычисляет матрично-векторное произведение
, где
-матрица общего вида,
и
векторы,
и
числа.
Укажите параметр компиляции, который задействует создание кода на базе директив 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:*]
Используя процедуры MKL вычислите выражение
. Данные находятся в файле
[data3.txt]. В ответ введите целую часть суммы модулей мнимой части полученного вектора.
Укажите директиву, которая указывает сколько байт следует отводить для целого типа по умолчанию
(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)
в головной программе ?
Объявлены следующие типы и переменные.
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 вычислите скалярное произведение двух векторов
и
. Данные находятся в файле
[data8.txt]. В ответ введите целую часть результата.
Выберите допустимые объявления модульных переменных для данного варианта программы
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, вычислите Евклидову норму вектора
. Данные находятся в файле
[data13.txt]. В ответ введите целую часть результата.
Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру 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, вычислите произведение
, где
- квадратная матрица,
-вектор. Данные находятся в файле
[ записана по строкам). В ответ введите номер минимального по модулю элемента вектора .
]
Какие функции используются в выражении 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 после добавления процедур ?
Используя процедуры MKL, вычислите произведение
, где
- треугольная квадратная матрица,
-квадратная матрица. Данные находятся в файле
[ и записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы .]
Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно.
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
...
Используя процедуры MKL, вычислите произведение
, где
- прямоугольная матрица,
-квадратная матрица. Данные находятся в файле
[ и записаны по строкам). В ответ введите целое значение от суммы элементов матрицы .
]
Переменные, объявленные как 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), которая вычисляет матрично-матричное произведение
, где
- симметричная матрица,
и
прямоугольные матрицы,
-число.
Укажите параметр компиляции, который управляет уровнями диагностики автоматического распараллеливания
(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:*]
Используя процедуры MKL вычислите выражение
. Данные находятся в файле
[data4.txt]. В ответ введите целую часть суммы модулей мнимой части полученного вектора.
Укажите директиву, которая подключает имя библиотеки в процессе сборки программы
(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
в головной программе ?
Объявлены следующие типы и переменные.
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 вычислите скалярное произведение двух векторов
и
. Данные находятся в файле
[data9.txt]. В ответ введите целую часть результата.
Выберите допустимые объявления модульных переменных для данного варианта программы
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, вычислите Евклидову норму вектора
. Данные находятся в файле
[data14.txt]. В ответ введите целую часть результата.
Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру 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, вычислите произведение
, где
- квадратная матрица,
-вектор. Данные находятся в файле
[ записана по строкам). В ответ введите номер минимального по модулю элемента вектора .
]
Какие функции используются в выражении 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
Используя процедуры MKL, вычислите произведение
, где
- треугольная квадратная матрица,
-квадратная матрица. Данные находятся в файле
[ и записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы .]
Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно.
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
...
Используя процедуры MKL, вычислите произведение
, где
- прямоугольная матрица,
-квадратная матрица. Данные находятся в файле
[ и записаны по строкам). В ответ введите целое значение от суммы элементов матрицы .
]
Переменные, объявленные как 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), которая решает матричное уравнение
, где
- верхняя треугольная матрица,
и
прямоугольные матрицы.
Укажите параметр компиляции, который не использует методов оптимизации, увеличивающие размер кода
(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*]
Используя процедуры MKL вычислите выражение
. Данные находятся в файле
[data5.txt]. В ответ введите целую часть суммы модулей полученного вектора.
Укажите директиву, которая задает идентификатор объектного файла
(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
в головной программе ?
Объявлены следующие типы и переменные.
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 вычислите скалярное произведение двух векторов
и
. Данные находятся в файле
[data10.txt]. В ответ введите целую часть результата.
Выберите допустимые объявления модульных переменных для данного варианта программы
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, вычислите Евклидову норму вектора
. Данные находятся в файле
[data15.txt]. В ответ введите целую часть результата.
Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру 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, вычислите произведение
, где
- квадратная матрица,
-вектор. Данные находятся в файле
[ записана по строкам). В ответ введите номер минимального по модулю элемента вектора .
]
Какие функции используются в выражении 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
Используя процедуры MKL, вычислите произведение
, где
- треугольная квадратная матрица,
-квадратная матрица. Данные находятся в файле
[ и записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы .]
Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно.
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
Используя процедуры MKL, вычислите произведение
, где
- прямоугольная матрица,
-квадратная матрица. Данные находятся в файле
[ и записаны по строкам). В ответ введите целое значение от суммы элементов матрицы .
]