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

Количество вопросов - 209

Укажите директиву, которая позволяет использовать расширения Intel Visual Fortran

Внешние процедуры объявляются после оператора

Какой раздел библиотеки Intel ® Math Kernel Library содержит процедуру, которая выполняет решение уравнения Лапласа \dfrac{\partial ^2  T}{\partial x^2}  + \dfrac{\partial ^2  T}{\partial y^2}= 0?

Объявлен модуль и головная программа
module matrix  real :: M=1000  real, private :: MP=3000  real, protected :: MT = 5000  integer, public :: S1=50  integer, protected :: S2=70end module matrixPROGRAM prog  use matrix, only : M, MT  implicit none  integer :: MP=5000  integer :: S1=10, S2=30  ...        
Какие из вариантов выражений допустимы в головной программе ?

Каким атрибутом следует описать процедуру, привязанную к типу по имени, чтобы получить доступ к переменной, посредством которой вызывалась данная процедура ?

В программе используется модуль math_M. Чтобы подключить ещеодин модуль graph_M к головной программе следует

Дан модуль, который используется в головной программе
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 roundrectend module mod_1        

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

type (rectangle) rctУкажите верные варианты доступа к полям производного типа из головной программы.

Основные назначения модулей

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

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

Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно.
module mod_E interface point   module procedure pnt1, pnt2, pnt3 end interfacecontains   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 pnt3end module mod_E  

Объявлены следующие типы и переменные.
  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        
Какие справедливы прикрепления ссылок ?

Полиморфная переменная объявляется оператором

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

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

Укажите параметр компиляции, который устанавливает порог для автопараллелизации циклов

Модуль
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 cardend module mod_1        

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

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

type(card) cdУкажите верные варианты доступа к полям производного типа.

Укажите параметр компиляции, который разрешает подстановку функций внутри текущего исходного файла на усмотрение компилятора

Процедуры, описанные атрибутом public

Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру init из модуля A
module mod_A contains   subroutine init     write(*,*) "Initializing A"   end subroutine initend module mod_Amodule mod_B contains   subroutine init     write(*,*) "Initializing B"   end subroutine initend module mod_BPROGRAM prog use mod_A use mod_B implicit none call init() ! вызываем процедуру из модуля Aend    

Выберите допустимые объявления модульных переменных для данного варианта программы
module mod_Aimplicit none! здесь следует объявить модульные переменные public init_solver contains   subroutine init_solver(x)     real x     A=A**2     B=x+A   end subroutine init_solverend module mod_APROGRAM prog use mod_A, Anew => A implicit none x=1.5 Anew=x+1 write(*,*) Anew+B call init_solver(1.6)end        

В каком разделе находится описание подпрограммы trsm ?

В каких разделах "Свойства проекта" указывается использование библиотеки Math Kernel Library ?

Модуль может содержать

Подключение модуля к внешней процедуре происходит посредствомоператора

Укажите атрибут позволяющий модульным переменным менять значенияв головной программе

Объявлен следующий модуль
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=500end module matrix        
Какие из перечисленных модульных переменных могут быть использованы вкачестве границ размещаемых массивов в вызывающей головной программе?

Объявлен модуль и головная программа
module matrix public real, private   :: A=1.6 real, public    :: B=5.8 real, protected :: C=1.0E+10 integer :: X=50 integer :: Y=70end module matrixPROGRAM prog use matrix, BNEW => B, CNEW => C implicit none integer XP, YP ...        
Какие из вариантов выражений допустимы в головной программе ?

Выберите допустимые объявления модульных переменных для данного варианта программы
module mod_Aimplicit none! здесь следует объявить модульные переменные public init_solver contains   subroutine init_solver(x)     real x     A=A*0.001     B=x+A   end subroutine init_solverend module mod_APROGRAM prog use mod_A, Bnew => B implicit none Bnew=A*2 write(*,*) x+2 call init_solver(0.0)end        

Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру init из модуля A
module mod_A contains   subroutine init     write(*,*) "Initializing A"   end subroutine initend module mod_Amodule mod_B contains   subroutine init     write(*,*) "Initializing B"   end subroutine initend module mod_BPROGRAM prog use mod_A use mod_B implicit none call init() ! вызываем процедуру из модуля Aend        

Какие функции используются в выражении 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 cosend module mod_FPROGRAM prog use mod_F, only : cos, sinx=>sin implicit none real res res=sin(256.0)   write(*,*) resend        

Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно.
module mod_E interface point   module procedure pnt1, pnt2, pnt3 end interfacecontains   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 pnt3end module mod_E        

Неограниченно полиморфная переменная объявляется при помощи оператора

Определение типа полиморфной переменной происходит посредством оператора

Для запрещения прямого обращения к полю производного типа используется атрибут

Дан модуль, который используется в головной программе
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 studentend module mod_1        

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

type (student) stУкажите верные варианты доступа к полям производного типа из головной программы.

Объявлены следующие типы и переменные.
  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        
Какие справедливы прикрепления ссылок ?

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

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

В следующем фрагменте программы, какие имена не являются и могут не являться процедурами, привязанными к типу по имени?
  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  ...        

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

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

Выберите верные утверждения

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

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

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

Укажите верные имена *.mod файлов входящих в состав MKL

В каком разделе находится описание подпрограммы trmv ?

Какой раздел библиотеки Intel ® Math Kernel Library содержит процедуры, которые выполняют умножение треугольной матрицы на вектор ?

В каких разделах "Свойства проекта" указывается создание файла листинга программы ?

Укажите параметр компиляции позволяющий проверять неинициализированные переменные

Укажите параметр компиляции, который создает приложение не привязанное к конкретному типу процессора

Дан модуль, который используется в головной программе
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 studentend module mod_1        

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

type (person) pstype (student) st
Укажите верные варианты доступа к полям производного типа из головной программы.

Укажите параметр компиляции, который создает приложение для конкретного типа процессора

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

Модуль
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 NewTypeend module mod_1        

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

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

type(NewType) NTУкажите верные варианты доступа к полям производного типа.

Объявлен следующий модуль
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=500end module matrix        
Какие из перечисленных модульных переменных могут быть использованы вкачестве границ размещаемых массивов в вызывающей головной программе?

Выберите допустимые объявления модульных переменных для данного варианта программы
module mod_Aimplicit none! здесь следует объявить модульные переменные public init_solver contains   subroutine init_solver(val)     real val     x=val*1.0E-10   end subroutine init_solverend module mod_APROGRAM prog use mod_A, Anew => A, Bnew => B implicit none Anew = Anew + 1 write(*,*) Bnew+1 call init_solver(-1.0) Anew=Bnew+1end        

Процедуры, описанные атрибутом protected

Объявлены следующие типы и переменные.
  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        
Какие справедливы прикрепления ссылок ?

Объявлен следующий модуль
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=500end module matrix        
Какие из перечисленных модульных переменных могут быть использованы вкачестве границ размещаемых массивов в вызывающей головной программе?
(Ответ считается верным, если отмечены все правильные варианты ответов.)

Описан модуль, который подключен к головной программе
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 Fend module mod_1        
Какой результат вернет функция F после выполнения операции присваивания A=A+D в головной программе ?

Используя процедуры MKL вычислите выражение Y= \alpha \cdot X+Y. Данные находятся в файле data1.txt. В ответ введите целую часть суммы модулей полученного вектора.

Используя процедуры MKL, вычислите произведение Y= A \cdot X, где A- квадратная матрица, X-вектор. Данные находятся в файле data19.txt (матрица A записана по строкам). В ответ введите номер минимального по модулю элемента вектора Y.
(Ответ необходимо ввести в поле ввода.)

Используя процедуры MKL, вычислите произведение C= A \cdot B, где A- прямоугольная матрица,B-квадратная матрица. Данные находятся в файле data26.txt (матрицы A и B записаны по строкам). В ответ введите целое значение от суммы элементов матрицы C.
(Ответ необходимо ввести в поле ввода.)

Используя процедуры MKL, вычислите Евклидову норму вектора X. Данные находятся в файле data13.txt. В ответ введите целую часть результата.
(Ответ необходимо ввести в поле ввода.)

Используя процедуры MKL, вычислите произведение C= A \cdot B, где A- треугольная квадратная матрица,B-квадратная матрица. Данные находятся в файле data25.txt (матрицы A и B записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы C.

Какое значение будет присвоено переменной k в результате выполнения оператора select type в следующем фрагменте программы ?
type point  integer x, yend type pointtype, extends(point) :: point_ex  integer z  integer color  logical errorend type point_extype, extends(point_ex) :: point_phys  real vx  real vy  real vz  real tmend type point_phystype, extends(point_phys) :: point_mech  character(32) name  character(8)  codeend type point_mechinteger kclass (*), pointer :: ptrtype  (point_ex), target :: pt_exclass (point_phys), allocatable, target :: pt_phclass (point_mech), allocatable, target :: pt_mhallocate(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 ...

Описан модуль, который подключен к головной программе
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 Fend module mod_1        
Какой результат вернет функция F после вызова процедуры init_D_E(2,3) в головной программе ?

Даны два типа описанных в модуле 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

    Какое значение будет находиться в поле 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 regioncontains  subroutine solve(rg)    class(region) rg    rg.a=rg.funct(rg.a)  end subroutine solveend module mod_1program proguse mod_1type (region) ex1ex1.a=2; ex1.b=3; ex1.funct=>Fcall ex1.solve()containsinteger function F(x)  integer x  F=x*x+xend function FEND

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

    Напишите имя функции (синтаксис Fortran 95), которая вычисляет скалярное произведение двух вещественных вектор двойной точности.

    Используя процедуры MKL вычислите скалярное произведение двух векторов X и Y. Данные находятся в файле data7.txt. В ответ введите целую часть результата.
    (Ответ необходимо ввести в поле ввода.)

    Используя процедуры MKL, вычислите произведение C= A \cdot B, где A- треугольная квадратная матрица,B-квадратная матрица. Данные находятся в файле data21.txt (матрицы A и B записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы C.
    (Ответ необходимо ввести в поле ввода.)

    Используя процедуры MKL, вычислите произведение C= A \cdot B, где A- прямоугольная матрица,B-квадратная матрица. Данные находятся в файле data28.txt (матрицы A и B записаны по строкам). В ответ введите целое значение от суммы элементов матрицы C.
    (Ответ необходимо ввести в поле ввода.)

    Используя процедуры MKL, вычислите произведение Y= A \cdot X, где A- квадратная матрица, X-вектор. Данные находятся в файле data16.txt (матрица A записана по строкам). В ответ введите номер минимального по модулю элемента вектора Y.

    Используя процедуры MKL вычислите выражение Y= \alpha \cdot X+Y. Данные находятся в файле data4.txt. В ответ введите целую часть суммы модулей мнимой части полученного вектора.
    (Ответ необходимо ввести в поле ввода.)

    Укажите оператор используемый для инкапсуляции процедур модуля

    Используя процедуры MKL, вычислите Евклидову норму вектора X. Данные находятся в файле data14.txt. В ответ введите целую часть результата.

    Перегрузка операции присваивания реализуется при помощи оператора

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

    Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно.
    module mod_E interface point   module procedure pnt1, pnt2, pnt3 end interfacecontains   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 pnt3end module mod_E        

    Для типа point выберите правильный код финальной процедуры DeletePoint
    module flowinteger, 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 InitFlowend module flow  

    Какой раздел библиотеки Intel ® Math Kernel Library содержит процедуры, которые выполняют тригонометрические функции над векторам ?

    Напишите имя подпрограммы (синтаксис Fortran 95), которая решает матричное уравнение A \cdot X = \alpha \cdot B, где A - верхняя треугольная матрица,B и X прямоугольные матрицы.

    Используя процедуры MKL, вычислите произведение C= A \cdot B, где A- прямоугольная матрица,B-квадратная матрица. Данные находятся в файле data30.txt (матрицы A и B записаны по строкам). В ответ введите целое значение от суммы элементов матрицы C.

    Используя процедуры MKL вычислите скалярное произведение двух векторов X и Y. Данные находятся в файлеdata8.txt. В ответ введите целую часть результата.

    Какие имена являются процедуры привязанными к типу по имени в следующем фрагменте программы ?
      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  ...  

    Укажите параметр компиляции, который управляет уровнями диагностики автоматического распараллеливания

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

    Какие функции используются в выражении 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 cosend module mod_FPROGRAM prog use mod_F, only : cos implicit none real res res=sin(2.0)*cos(1.0)  end        

    Даны два типа
      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

    Укажите параметр компиляции означающий максимизацию скорости выполнения

    Переменные, объявленные как private

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

    Объявлен модуль и головная программа
    module matrix real :: A=1000 real, private   :: B=3000 real, protected :: C=5000 integer, public :: D=50 integer, protected :: F=70end module matrixPROGRAM prog use matrix, only : D, F, A implicit none real :: C=5000, B=10 ...        
    Какие из вариантов выражений допустимы в головной программе ?

    Процедуры, описанные атрибутом private

    Объявлен следующий модуль
    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=500end module matrix        
    Какие из перечисленных модульных переменных могут быть использованы вкачестве границ размещаемых массивов в вызывающей головной программе?

    Объявлен модуль и головная программа
    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=70end module matrixPROGRAM prog use matrix, only : X, BN => B implicit none real :: C=5000, B=10 integer :: Y=800 ...        
    Какие из вариантов выражений допустимы в головной программе ?

    Выберите допустимые объявления модульных переменных для данного варианта программы
    module mod_Aimplicit none! здесь следует объявить модульные переменные public init_solver contains   subroutine init_solver(val)     real val     B=val*A   end subroutine init_solverend module mod_APROGRAM prog use mod_A, Anew => A, Xnew => X implicit none Xnew=2.0 write(*,*) B+Anew+Xnew call init_solver(0.0)end        

    Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру init из модуля B
    module mod_A contains   subroutine init     write(*,*) "Initializing A"   end subroutine initend module mod_Amodule mod_B contains   subroutine init     write(*,*) "Initializing B"   end subroutine initend module mod_BPROGRAM prog use mod_A use mod_B implicit none call init() ! вызываем процедуру из модуля Bend        

    Какие функции используются в выражении 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 cosend module mod_FPROGRAM prog use mod_F implicit none real res res=sin(2.0)*cos(1.0)  end  

    Выберите верное задание операции EXTRACT для производного типа

    Модуль
    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 cardend module mod_1        

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

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

    type(card) cdУкажите верные варианты доступа к полям производного типа.

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

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

    В приведенном фрагменте программы перечислите имена пользовательских операций.
      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)  ...        

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

    Выберите верные утверждения

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

    Какие опции компилятора отвечают за использование библиотеки MKL ?

    В каком разделе находится описание подпрограммы symv ?

    Используя процедуры MKL вычислите скалярное произведение двух векторов X и Y. Данные находятся в файле data10.txt. В ответ введите целую часть результата.

    Используя процедуры MKL, вычислите Евклидову норму вектора X. Данные находятся в файле data11.txt. В ответ введите целую часть результата.

    Используя процедуры MKL, вычислите произведение C= A \cdot B, где A- треугольная квадратная матрица,B-квадратная матрица. Данные находятся в файле data23.txt (матрицы A и B записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы C.

    Используя процедуры MKL, вычислите произведение C= A \cdot B, где A- прямоугольная матрица,B-квадратная матрица. Данные находятся в файле data27.txt (матрицы A и B записаны по строкам). В ответ введите целое значение от суммы элементов матрицы C.

    Укажите параметр компиляции запрещающий оптимизацию

    Укажите параметр компиляции устанавливающий максимальное число раскруток цикла

    Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно.
    module mod_E interface point   module procedure pnt1, pnt2, pnt3 end interfacecontains   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 pnt3end module mod_E        

    Укажите директиву, которая предупреждает о необъявленных переменных

    В каких разделах "Свойства проекта" можно выполнить настройку оптимизации ?

    Используя процедуры MKL вычислите выражение Y= \alpha \cdot X+Y. Данные находятся в файле data5.txt. В ответ введите целую часть суммы модулей полученного вектора.

    Описан модуль, который подключен к головной программе
    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 Fend module mod_1        
    Какой результат вернет функция F после вызова процедуры init_D_E(4,5) в головной программе ?

    В каком разделе находится описание функции ddot

    Подключение модуля к головной программе происходит посредствомоператора

    В следующем фрагменте программы, укажите имена перегруженных процедур и операций.
      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)        

    Объявлены следующие типы и переменные.
      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        
    Какие справедливы прикрепления ссылок ?

    Объявлен модуль и головная программа
    module matrix real, private   :: A=1.6 real, public    :: B=5.8 real, protected :: C=1.0E+10 private integer :: X=50 integer :: Y=70end module matrixPROGRAM prog use matrix, only : BNEW => B implicit none real :: C=5000, B=10 integer :: Y=800 ...        
    Какие из вариантов выражений допустимы в головной программе ?

    Дан модуль, который используется в головной программе
    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_mapsend module mod_1        

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

    type (e_maps) EMУкажите верные варианты доступа к полям производного типа из головной программы.

    Выберите оператор выполняющий барьерную синхронизацию.

    Описан модуль, который подключен к головной программе
    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 Fend module mod_1        
    Какой результат вернет функция F после вызова процедуры init в головной программе ?

    Напишите имя подпрограммы (синтаксис Fortran 95), которая вычисляет матрично-векторное произведение Y= \beta \cdot A^T \cdot X+\gamma \cdot Y, где A -матрица общего вида,X и Y векторы, \beta и \gamma числа.

    В каком разделе находится описание подпрограммы hemm ?

    Какой раздел библиотеки Intel ® Math Kernel Library содержит генераторы квазислучайных чисел ?

    Переменные, объявленные как protected

    Используя процедуры MKL, вычислите произведение C= A \cdot B, где A- треугольная квадратная матрица,B-квадратная матрица. Данные находятся в файле data22.txt (матрицы A и B записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы C.

    Укажите параметр компиляции, который управляет отчетом о возможности векторизации циклов

    Выберите допустимые объявления модульных переменных для данного варианта программы
    module mod_Aimplicit none! здесь следует объявить модульные переменные public init_solver contains   subroutine init_solver(val)     real val     x=val*sin(val)+A   end subroutine init_solverend module mod_APROGRAM prog use mod_A, Anew => A, Bnew => B implicit none Bnew=1+Anew write(*,*) Bnew+Anew+X call init_solver(-1.0)end        

    В каких разделах "Свойства проекта" указывается количество байт отводимых для хранения целых данных по умолчанию?

    Укажите директиву, которая указывает сколько байт следует отводить для целого типа по умолчанию

    Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру init из модуля B
    module mod_A contains   subroutine init     write(*,*) "Initializing A"   end subroutine initend module mod_Amodule mod_B contains   subroutine init     write(*,*) "Initializing B"   end subroutine initend module mod_BPROGRAM prog use mod_A use mod_B implicit none call init() ! вызываем процедуру из модуля Bend        

    Перегрузка операции деления реализуется при помощи оператора

    Модуль
    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 NewTypeend module mod_1        

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

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

    type (NewType) matrix(10,10,100)Укажите верные варианты инициализации элемента matrix(1:5:2,:,20)

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

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

    Даны два типа описанных в модуле 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 после добавления процедур ?

    Выберите верные утверждения

    В каком разделе находится описание функции asum ?

    Какой раздел библиотеки Intel ® Math Kernel Library содержит процедуру PARDISO ?

    Используя процедуры MKL вычислите скалярное произведение двух векторов X и Y. Данные находятся в файле data9.txt. В ответ введите целую часть результата.

    Используя процедуры MKL, вычислите Евклидову норму вектора X. Данные находятся в файле data12.txt. В ответ введите целую часть результата.

    Используя процедуры MKL, вычислите произведение C= A \cdot B, где A- треугольная квадратная матрица,B-квадратная матрица. Данные находятся в файле data24.txtt (матрицы A и B записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы C.

    В каких разделах "Свойства проекта" указывается создание файла листинга программы ?

    Укажите директиву, которая задает идентификатор объектного файла

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

    Наследование производных типов осуществляется при помощи атрибута

    Укажите атрибут используемый для инкапсуляции данных модуля

    Какие компоненты входят в состав MKL ?

    Используя процедуры MKL, вычислите произведение Y= A \cdot X, где A- квадратная матрица, X-вектор. Данные находятся в файле data18.txt (матрица A записана по строкам). В ответ введите номер минимального по модулю элемента вектора Y.

    Финальные процедуры объявляются при помощи атрибута

    Укажите параметр компиляции разрешающий округление результатов с плавающей точкой в присваиваниях

    Какие функции используются в выражении 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 cosend module mod_FPROGRAM prog use mod_F, only : sin, cos implicit none real res res=sin(2.0)*cos(1.0)  end        

    В головной программе используется модуль 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 proc5end module flow        

    Напишите имя функции (синтаксис Fortran 95), которая вычисляет выражение \sum(congj (x)\cdot y) , где X и Y векторы - векторы типа complex.

    Используя процедуры MKL, вычислите произведение Y= A \cdot X, где A- квадратная матрица, X-вектор. Данные находятся в файле data20.txt (матрица A записана по строкам). В ответ введите номер минимального по модулю элемента вектора Y.

    Какое значение будет присвоено переменной k в результате выполнения оператора select type в следующем фрагменте программы ?
    type point  integer x, yend type pointtype, extends(point) :: point_ex  integer zend type point_extype, extends(point_ex) :: point_phys  real vx  real tmend type point_phystype, extends(point_phys) :: point_mech  character(32) nameend type point_mechclass (point_ex), pointer :: polyclass (point), target, allocatable :: ptclass (point_ex), target, allocatable  :: pt_exclass (point_phys), target, allocatable  :: pt_phclass (point_mech), target, allocatable  :: pt_mhinteger kallocate (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 ...

    Выберите верные утверждения касающиеся конструктора

    Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно.
    module mod_E interface point   module procedure pnt1, pnt2, pnt3 end interfacecontains   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 pnt3end module mod_E        

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

    Какие функции используются в выражении 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 cosend module mod_FPROGRAM prog use mod_F, only : sin implicit none real res res=sin(2.0)*cos(1.0)  end        

    Процедуры, описанные атрибутом private

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

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

    Объявлен следующий модуль
    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=500end module matrix        
    Какие из перечисленных модульных переменных могут быть использованыкачестве границ размещаемых массивов в вызывающей головной программе?

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

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

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

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

    Дан модуль, который используется в головной программе
    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 roundrectend module mod_1        

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

    type (roundrect) rcУкажите верные варианты доступа к полям производного типа из головной программы.

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

    Объявлены следующие типы и переменные.
      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?

    Даны два типа описанных в модуле 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

    Переменные, объявленные как public

    Укажите оператор, который указывает какие процедуры привязаны к типу по имени

    В программе объявлены типы и переменная
      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)

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

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

    Напишите имя подпрограммы (синтаксис Fortran 95), которая вычисляет матрично-матричное произведение C= B \cdot A - \alpha \cdot C, где A - симметричная матрица, B и C прямоугольные матрицы, \alpha-число.

    Используя процедуры MKL вычислите выражение Y= \alpha \cdot X+Y. Данные находятся в файле data2.txt. В ответ введите целую часть суммы модулей вещественной части полученного вектора.

    Используя процедуры MKL, вычислите произведение Y= A \cdot X, где A- квадратная матрица, X-вектор. Данные находятся в файле data17.txt (матрица A записана по строкам). В ответ введите номер минимального по модулю элемента вектора Y.

    Укажите параметр компиляции, который позволяет получить информацию для диагностики ошибок в параллельной части параллельного приложения

    Укажите параметр компиляции, который не использует методов оптимизации, увеличивающие размер кода

    Используя процедуры MKL, вычислите произведение C= A \cdot B, где A- прямоугольная матрица,B-квадратная матрица. Данные находятся в файле data29.txt (матрицы A и B записаны по строкам). В ответ введите целое значение от суммы элементов матрицы C.

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

    Используя процедуры MKL вычислите выражение Y= \alpha \cdot X+Y. Данные находятся в файле data3.txt. В ответ введите целую часть суммы модулей мнимой части полученного вектора.

    Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру init из модуля A
    module mod_A contains   subroutine init     write(*,*) "Initializing A"   end subroutine initend module mod_Amodule mod_B contains   subroutine init     write(*,*) "Initializing B"   end subroutine initend module mod_BPROGRAM prog use mod_A use mod_B implicit none call init() ! вызываем процедуру из модуля Aend        

    Укажите оператор, используемый для задания производного типа

    В следующем фрагменте программы, какие имена являются процедурами привязанными к типу по имени ?
      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)  ...        

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

    Какие компоненты входят в состав IMSL ?

    Укажите параметр компиляции устанавливающий размер памяти для типа double precision

    Даны два типа
      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 вычислите скалярное произведение двух векторов X и Y. Данные находятся в файле data6.txt. В ответ введите целую часть результата.

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

    Укажите параметр компиляции, который задействует создание кода на базе директив OpenMP

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

    Перегрузка процедур объявляется при помощи операторов

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

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

    Используя процедуры MKL, вычислите Евклидову норму вектора X. Данные находятся в файле data15.txt. В ответ введите целую часть результата.

    Процедурные указатели объявляются при помощи оператора

    Описан модуль, который подключен к головной программе
    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 Fend module mod_1        
    Какой результат вернет функция F после вызова процедуры callinit(1,2) и выполнения операции присваивания E=A+B в головной программе ?