Главная /
Программирование больших вычислительных задач на современном Фортране с использованием компиляторов Intel
Программирование больших вычислительных задач на современном Фортране с использованием компиляторов Intel - ответы на тесты Интуит
Курс раскрывает возможности компилятора Intel Visual Fortran в создании программ, которые основаны на объектно-ориентированном подходе, выполняют параллельные вычисления и используют готовые пакеты библиотек. Курс ориентирован на подготовленных пользователей, желающих узнать о последних достижениях языка Fortran, реализованных в среде Intel Parallel Studio.
Список вопросов:
- # Основные назначения модулей
- # Модуль может содержать
- # Переменные, объявленные как public
- # Переменные, объявленные как private
- # Переменные, объявленные как protected
- # Процедуры, описанные атрибутом public
- # Процедуры, описанные атрибутом private
- # Процедуры, описанные атрибутом protected
- # Подключение модуля к головной программе происходит посредством оператора
- # Подключение модуля к внешней процедуре происходит посредством оператора
- # Укажите атрибут позволяющий модульным переменным менять значения в головной программе
- # Укажите атрибут используемый для инкапсуляции данных модуля
- # Укажите оператор используемый для инкапсуляции процедур модуля
- # Перегрузка процедур объявляется при помощи операторов
- # В программе используется модуль math_M. Чтобы подключить еще один модуль graph_M к головной программе следует
- # Объявлен следующий модуль 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 Какие из перечисленных модульных переменных могут быть использованы в качестве границ размещаемых массивов в вызывающей головной программе?
- # Объявлен следующий модуль 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 Какие из перечисленных модульных переменных могут быть использованы в качестве границ размещаемых массивов в вызывающей головной программе?
- # Объявлен следующий модуль 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 Какие из перечисленных модульных переменных могут быть использованы качестве границ размещаемых массивов в вызывающей головной программе?
- # Объявлен следующий модуль 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 Какие из перечисленных модульных переменных могут быть использованы в качестве границ размещаемых массивов в вызывающей головной программе?
- # Объявлен следующий модуль 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 Какие из перечисленных модульных переменных могут быть использованы в качестве границ размещаемых массивов в вызывающей головной программе?
- # Объявлен модуль и головная программа 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 ... Какие из вариантов выражений допустимы в головной программе ?
- # Объявлен модуль и головная программа 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 ... Какие из вариантов выражений допустимы в головной программе ?
- # Объявлен модуль и головная программа 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 ... Какие из вариантов выражений допустимы в головной программе ?
- # Объявлен модуль и головная программа 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 ... Какие из вариантов выражений допустимы в головной программе ?
- # Объявлен модуль и головная программа 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 ... Какие из вариантов выражений допустимы в головной программе ?
- # Описан модуль, который подключен к головной программе 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 в головной программе ?
- # Описан модуль, который подключен к головной программе 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) в головной программе ?
- # Описан модуль, который подключен к головной программе 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) в головной программе ?
- # Описан модуль, который подключен к головной программе 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 в головной программе ?
- # Описан модуль, который подключен к головной программе 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 в головной программе ?
- # Выберите допустимые объявления модульных переменных для данного варианта программы 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
- # Выберите допустимые объявления модульных переменных для данного варианта программы 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
- # Выберите допустимые объявления модульных переменных для данного варианта программы 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
- # Выберите допустимые объявления модульных переменных для данного варианта программы 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
- # Выберите допустимые объявления модульных переменных для данного варианта программы 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
- # Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру 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
- # Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру 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
- # Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру 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
- # Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру 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
- # Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру 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
- # Какие функции используются в выражении 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
- # Какие функции используются в выражении 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
- # Какие функции используются в выражении 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
- # Какие функции используются в выражении 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
- # Какие функции используются в выражении 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
- # Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно. 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
- # Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно. 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
- # Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно. 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
- # Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно. 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
- # Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно. 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
- # Укажите оператор, используемый для задания производного типа
- # Укажите оператор, который указывает какие процедуры привязаны к типу по имени
- # Процедурные указатели объявляются при помощи оператора
- # Наследование производных типов осуществляется при помощи атрибута
- # Неограниченно полиморфная переменная объявляется при помощи оператора
- # Финальные процедуры объявляются при помощи атрибута
- # Выберите верные утверждения касающиеся конструктора
- # Определение типа полиморфной переменной происходит посредством оператора
- # Каким атрибутом следует описать процедуру, привязанную к типу по имени, чтобы получить доступ к переменной, посредством которой вызывалась данная процедура ?
- # Перегрузка операции деления реализуется при помощи оператора
- # Перегрузка операции присваивания реализуется при помощи оператора
- # Выберите верное задание операции EXTRACT для производного типа
- # Полиморфная переменная объявляется оператором
- # Для запрещения прямого обращения к полю производного типа используется атрибут
- # В программе объявлены типы и переменная 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)
- # Модуль 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)
- # Модуль 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 Укажите верные варианты доступа к полям производного типа.
- # Модуль 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 Укажите верные варианты доступа к полям производного типа.
- # Модуль 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 Укажите верные варианты доступа к полям производного типа.
- # Дан модуль, который используется в головной программе 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 Укажите верные варианты доступа к полям производного типа из головной программы.
- # Дан модуль, который используется в головной программе 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 Укажите верные варианты доступа к полям производного типа из головной программы.
- # Дан модуль, который используется в головной программе 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 Укажите верные варианты доступа к полям производного типа из головной программы.
- # Дан модуль, который используется в головной программе 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 Укажите верные варианты доступа к полям производного типа из головной программы.
- # Дан модуль, который используется в головной программе 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 Укажите верные варианты доступа к полям производного типа из головной программы.
- # Объявлены следующие типы и переменные. 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?
- # Объявлены следующие типы и переменные. 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 Какие справедливы прикрепления ссылок ?
- # Объявлены следующие типы и переменные. 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 Какие справедливы прикрепления ссылок ?
- # Объявлены следующие типы и переменные. 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 Какие справедливы прикрепления ссылок ?
- # Объявлены следующие типы и переменные. 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 Какие справедливы прикрепления ссылок ?
- # В головной программе используется модуль geom, который содержит только тип triangle и модульную процедуру Square. Головная программа использует модуль geom. В головной программе объявлена переменная type (triangle) TR. Укажите верное описание типа triangle и процедуры Square, для организации вызова write(*,*) TR.Square() из головной программы
- # В головной программе используется модуль geom, который содержит только тип circle и модульную процедуру IncRadius. Головная программа использует модуль geom. В головной программе объявлена переменная type (circle) CR. Укажите верное описание типа circle и процедуры IncRadius, чтобы при вызове call CR.IncRadius(10.0) из головной программы, поле R переменной CR было изменено.
- # В головной программе используется модуль peoples, который содержит только тип person и модульную процедуру PrintInfo. Головная программа использует модуль peoples. В головной программе объявлена переменная type (person) PS. Укажите верное описание типа person и процедуры PrintInfo, чтобы при вызове call PS.PrintInfo() из головной программы, отображалась информация, содержащаяся в полях переменной PS.
- # В головной программе используется модуль farm, который содержит только тип animal и модульную процедуру PrintTitle. Головная программа использует модуль farm. В головной программе объявлена переменная type (animal) AN. Укажите верное описание типа animal и процедуры PrintTitle, для организации вызова call AN.PrintTitle() из головной программы.
- # В головной программе используется модуль geom, который содержит только тип figure и модульную процедуру Modify. Головная программа использует модуль geom. В головной программе объявлена переменная class (figure), allocatable :: FG. Укажите верное описание типа figure и процедуры Modify, чтобы при вызове call FG.Modify(10) из головной программы, происходило изменение поля points в переменной FG.
- # Какие имена являются процедуры привязанными к типу по имени в следующем фрагменте программы ? 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 ...
- # В следующем фрагменте программы, какие имена являются процедурами привязанными к типу по имени ? 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) ...
- # В приведенном фрагменте программы перечислите имена пользовательских операций. 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) ...
- # В следующем фрагменте программы, какие имена не являются и могут не являться процедурами, привязанными к типу по имени? 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 ...
- # В следующем фрагменте программы, укажите имена перегруженных процедур и операций. 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 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
- # Даны два типа 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
- # Даны два типа описанных в модуле 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 после добавления процедур ?
- # Даны два типа описанных в модуле 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
- # Даны два типа описанных в модуле 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
- # Для типа 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
- # В головной программе используется модуль 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
- # Какое значение будет присвоено переменной 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 ...
- # Какое значение будет присвоено переменной 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 ...
- # Какое значение будет находиться в поле 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
- # Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.
- # Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.
- # Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.
- # Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.
- # Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.
- # Какие из циклов не подходят для параллелизации с использованием опции компилятора /Qparallel
- # Какие из циклов не подходят для параллелизации с использованием опции компилятора /Qparallel
- # Какие из циклов не подходят для параллелизации с использованием опции компилятора /Qparallel
- # Какие из циклов не подходят для параллелизации с использованием опции компилятора /Qparallel
- # Какие из циклов не подходят для параллелизации с использованием опции компилятора /Qparallel
- # Выберите верные утверждения
- # Какое количество копий CAF-программы можно создать на двухядерном процессоре ?
- # Выберите верные утверждения
- # Выберите верные утверждения
- # Какой режим компиляции позволяет использовать CoArray
- # Укажите функцию, которая возвращает количество созданных копий CAF-программы
- # Укажите функцию, которая позволит определить количество байт памяти отведенное под coarray-переменную?
- # Укажите функцию, которая возвращает номер копии caf-программы
- # Укажите функцию, которая вычисляет верхнюю границу coarray-переменной
- # Укажите функцию, которая вычисляет нижнюю границу coarray-переменной
- # Чему равна верхняя граница coarray-переменной CF, если caf-программа была скомпилирована для двухъядерного процессора и в настройках проекта указано значение Coarray Images = 64. CoArray-переменная CF, объявлена как type (flow) CF[-4:*]
- # Чему равна верхняя граница третьего измерения coarray-переменной CF, если caf-программа скомпилирована для восьмиядерного процессора и в настройках проекта указано значение Coarray Images = 32. CoArray-переменная CF, объявлена как type (grid) CF[2,3,4:*]
- # Чему равна верхняя граница третьего измерения coarray-переменной CF, если caf-программа скомпилирована для восьмиядерного процессора и в настройках проекта указано значение Coarray Images = 64. CoArray-переменная CF, объявлена как type (plot) CF [2,-1,2:*]
- # Чему равна нижняя граница первого измерения coarray-переменной CF, если caf-программа скомпилирована для восьмиядерного процессора и в настройках проекта указано значение Coarray Images = 0. CoArray-переменная CF, объявлена как type (cell) CF [2,2:*]
- # Чему равна нижняя граница второго измерения coarray-переменной CF, если caf-программа скомпилирована для восьмиядерного процессора и в настройках проекта указано значение Coarray Images = 256. CoArray-переменная CF, объявлена как type (cell) CF [2,2,3,4*]
- # Укажите верные объявления coarray-переменных
- # Укажите верные объявления coarray-переменных
- # Укажите верные объявления coarray-переменных
- # Укажите верные объявления coarray-переменных
- # Укажите верные объявления coarray-переменных
- # Выберите оператор выполняющий барьерную синхронизацию.
- # Выберите оператор выполняющий синхронизацию избранных копий программы
- # Каждая копия программы генерирует массив из случайных чисел. Каждая копия программы должна записать массив целиком в файл C:\datа.txt. Какой оператор следует использовать при записи данных в файл ?
- # Какие компоненты входят в состав MKL ?
- # Какие компоненты входят в состав IMSL ?
- # Какие опции компилятора отвечают за использование библиотеки MKL ?
- # Укажите верные имена *.mod файлов входящих в состав MKL
- # Внешние процедуры объявляются после оператора
- # В каком разделе находится описание функции asum ?
- # В каком разделе находится описание функции ddot
- # В каком разделе находится описание подпрограммы symv ?
- # В каком разделе находится описание подпрограммы trmv ?
- # В каком разделе находится описание подпрограммы trsm ?
- # В каком разделе находится описание подпрограммы hemm ?
- # Напишите имя функции (синтаксис Fortran 95), которая вычисляет выражение , где и векторы - векторы типа complex.
- # Напишите имя функции (синтаксис Fortran 95), которая вычисляет скалярное произведение двух вещественных вектор двойной точности.
- # Напишите имя подпрограммы (синтаксис Fortran 95), которая вычисляет матрично-векторное произведение , где -матрица общего вида, и векторы, и числа.
- # Напишите имя подпрограммы (синтаксис Fortran 95), которая вычисляет матрично-матричное произведение , где - симметричная матрица, и прямоугольные матрицы, -число.
- # Напишите имя подпрограммы (синтаксис Fortran 95), которая решает матричное уравнение , где - верхняя треугольная матрица, и прямоугольные матрицы.
- # Какой раздел библиотеки Intel ® Math Kernel Library содержит процедуру, которая выполняет решение уравнения Лапласа \dfrac{\partial ^2 T}{\partial x^2} + \dfrac{\partial ^2 T}{\partial y^2} = 0?
- # Какой раздел библиотеки Intel ® Math Kernel Library содержит процедуры, которые выполняют умножение треугольной матрицы на вектор ?
- # Какой раздел библиотеки Intel ® Math Kernel Library содержит процедуры, которые выполняют тригонометрические функции над векторам ?
- # Какой раздел библиотеки Intel ® Math Kernel Library содержит генераторы квазислучайных чисел ?
- # Какой раздел библиотеки Intel ® Math Kernel Library содержит процедуру PARDISO ?
- # Используя процедуры MKL вычислите выражение . Данные находятся в файле data1.txt. В ответ введите целую часть суммы модулей полученного вектора.
- # Используя процедуры MKL вычислите выражение . Данные находятся в файле data2.txt. В ответ введите целую часть суммы модулей вещественной части полученного вектора.
- # Используя процедуры MKL вычислите выражение . Данные находятся в файле data3.txt. В ответ введите целую часть суммы модулей мнимой части полученного вектора.
- # Используя процедуры MKL вычислите выражение . Данные находятся в файле data4.txt. В ответ введите целую часть суммы модулей мнимой части полученного вектора.
- # Используя процедуры MKL вычислите выражение . Данные находятся в файле data5.txt. В ответ введите целую часть суммы модулей полученного вектора.
- # Используя процедуры MKL вычислите скалярное произведение двух векторов и . Данные находятся в файле data6.txt. В ответ введите целую часть результата.
- # Используя процедуры MKL вычислите скалярное произведение двух векторов и . Данные находятся в файле data7.txt. В ответ введите целую часть результата.
- # Используя процедуры MKL вычислите скалярное произведение двух векторов и . Данные находятся в файлеdata8.txt. В ответ введите целую часть результата.
- # Используя процедуры MKL вычислите скалярное произведение двух векторов и . Данные находятся в файле data9.txt. В ответ введите целую часть результата.
- # Используя процедуры MKL вычислите скалярное произведение двух векторов и . Данные находятся в файле data10.txt. В ответ введите целую часть результата.
- # Используя процедуры MKL, вычислите Евклидову норму вектора . Данные находятся в файле data11.txt. В ответ введите целую часть результата.
- # Используя процедуры MKL, вычислите Евклидову норму вектора . Данные находятся в файле data12.txt. В ответ введите целую часть результата.
- # Используя процедуры MKL, вычислите Евклидову норму вектора . Данные находятся в файле data13.txt. В ответ введите целую часть результата.
- # Используя процедуры MKL, вычислите Евклидову норму вектора . Данные находятся в файле data14.txt. В ответ введите целую часть результата.
- # Используя процедуры MKL, вычислите Евклидову норму вектора . Данные находятся в файле data15.txt. В ответ введите целую часть результата.
- # Используя процедуры MKL, вычислите произведение , где - квадратная матрица, -вектор. Данные находятся в файле записана по строкам). В ответ введите номер минимального по модулю элемента вектора .
- # Используя процедуры MKL, вычислите произведение , где - квадратная матрица, -вектор. Данные находятся в файле записана по строкам). В ответ введите номер минимального по модулю элемента вектора .
- # Используя процедуры MKL, вычислите произведение , где - квадратная матрица, -вектор. Данные находятся в файле записана по строкам). В ответ введите номер минимального по модулю элемента вектора .
- # Используя процедуры MKL, вычислите произведение , где - квадратная матрица, -вектор. Данные находятся в файле записана по строкам). В ответ введите номер минимального по модулю элемента вектора .
- # Используя процедуры MKL, вычислите произведение , где - квадратная матрица, -вектор. Данные находятся в файле записана по строкам). В ответ введите номер минимального по модулю элемента вектора .
- # Используя процедуры MKL, вычислите произведение , где - треугольная квадратная матрица,-квадратная матрица. Данные находятся в файле и записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы .
- # Используя процедуры MKL, вычислите произведение , где - треугольная квадратная матрица,-квадратная матрица. Данные находятся в файле и записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы .
- # Используя процедуры MKL, вычислите произведение , где - треугольная квадратная матрица,-квадратная матрица. Данные находятся в файле и записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы .
- # Используя процедуры MKL, вычислите произведение , где - треугольная квадратная матрица,-квадратная матрица. Данные находятся в файле и записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы .
- # Используя процедуры MKL, вычислите произведение , где - треугольная квадратная матрица,-квадратная матрица. Данные находятся в файле и записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы .
- # Используя процедуры MKL, вычислите произведение , где - прямоугольная матрица,-квадратная матрица. Данные находятся в файле и записаны по строкам). В ответ введите целое значение от суммы элементов матрицы .
- # Используя процедуры MKL, вычислите произведение , где - прямоугольная матрица,-квадратная матрица. Данные находятся в файле и записаны по строкам). В ответ введите целое значение от суммы элементов матрицы .
- # Используя процедуры MKL, вычислите произведение , где - прямоугольная матрица,-квадратная матрица. Данные находятся в файле и записаны по строкам). В ответ введите целое значение от суммы элементов матрицы .
- # Используя процедуры MKL, вычислите произведение , где - прямоугольная матрица,-квадратная матрица. Данные находятся в файле и записаны по строкам). В ответ введите целое значение от суммы элементов матрицы .
- # Используя процедуры MKL, вычислите произведение , где - прямоугольная матрица,-квадратная матрица. Данные находятся в файле и записаны по строкам). В ответ введите целое значение от суммы элементов матрицы .
- # В каких разделах "Свойства проекта" можно выполнить настройку оптимизации ?
- # В каких разделах "Свойства проекта" указывается количество байт отводимых для хранения целых данных по умолчанию?
- # В каких разделах "Свойства проекта" указывается создание файла листинга программы ?
- # В каких разделах "Свойства проекта" указывается создание файла листинга программы ?
- # В каких разделах "Свойства проекта" указывается использование библиотеки Math Kernel Library ?
- # Укажите параметр компиляции означающий максимизацию скорости выполнения
- # Укажите параметр компиляции устанавливающий максимальное число раскруток цикла
- # Укажите параметр компиляции устанавливающий размер памяти для типа double precision
- # Укажите параметр компиляции разрешающий округление результатов с плавающей точкой в присваиваниях
- # Укажите параметр компиляции позволяющий проверять неинициализированные переменные
- # Укажите параметр компиляции запрещающий оптимизацию
- # Укажите параметр компиляции, который устанавливает порог для автопараллелизации циклов
- # Укажите параметр компиляции, который задействует создание кода на базе директив OpenMP
- # Укажите параметр компиляции, который управляет уровнями диагностики автоматического распараллеливания
- # Укажите параметр компиляции, который не использует методов оптимизации, увеличивающие размер кода
- # Укажите параметр компиляции, который создает приложение для конкретного типа процессора
- # Укажите параметр компиляции, который создает приложение не привязанное к конкретному типу процессора
- # Укажите параметр компиляции, который управляет отчетом о возможности векторизации циклов
- # Укажите параметр компиляции, который разрешает подстановку функций внутри текущего исходного файла на усмотрение компилятора
- # Укажите параметр компиляции, который позволяет получить информацию для диагностики ошибок в параллельной части параллельного приложения
- # Укажите директиву, которая позволяет использовать расширения Intel Visual Fortran
- # Укажите директиву, которая предупреждает о необъявленных переменных
- # Укажите директиву, которая указывает сколько байт следует отводить для целого типа по умолчанию
- # Укажите директиву, которая подключает имя библиотеки в процессе сборки программы
- # Укажите директиву, которая задает идентификатор объектного файла