Відповідь:
Векторний тип даних описується як ім'я базового типу плюс кількість вимірів, наприклад float4. Даний запис означає, що буде виділена пам'ять під чотири змінні типу float, котрі у оперативній пам'яті будуть розташовані підряд. Над векторними типами можна проводити базові математичні операції типу +,-,*,/ також можна проводити операцію присвоєння. Доступ до певного компоненту типу векторна змінна можна отримати через символ «.» після чого вказується ім'я компоненту.
Використання
OpenCL
У OpenCL векторні типи даних можуть будуватися на основі наступних базових типів даних: [u]char, [u]short, [u]int, [u]long, float, double, half [1]. Стандарт визначає наступну кількість вимірів для векторного типу: 2, 4, 8 та 16. У таблиці нижче наведені імена компонентів з вказаними порядком [2].
Ім'я\N 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
floatN v v.x, v.s0 v.y, v.s1 v.z, v.s2 v.w, v.s3 v.s4 v.s5 v.s6 v.s7 v.s8 v.s9 v.sa, v.sA v.sb, v.sB v.sc, v.sC v.sd, v.sD v.se, v.sE v.sf, v.sF
Імена v.x, v.y, v.z, v.w, можуть використовуватися лише у векторах розмірністю 2 та 4.
CUDA
У CUDA векторні типи даних розмірності 2, 3 та 4 можуть будуватися на основі наступних базових типів даних: [u]char, [u]short, [u]int, [u]long, float, а також розмірністю 2 на основі типів: [u]longlong, double[3].
Посилання
OpenCL Vector Data Types. OpenCL documentation. Khronos Group.
OpenCL Vector Dimension. OpenCL quick reference card. Khronos Group.
CUDA Vector Data Types.
Див. також
Добуток Адамара
Структура даних
Пояснення:
ДАНО
a = 4 м - длина
b = 3.5 м - ширина
c = 2.8 м - высота
Sокна = 1,5*1,2 м - площадь окна
Sдвери = 0,9*2 м - площадь двери.
Sрулона = 10*0,5
Nрулонов = ? - число рулонов
РЕШЕНИЕ
Вариант 1 - НЕ правильный.
Площадь стен по формуле:
Sстен = 2*(a+b)*c = 2*(4+ 3.5) * 2.8 = 7,5*5,6 = 42 м²
Sокна = 1,5*1,2 = 1,8 м² - площадь окна - не клеим.
Sдвери = 2*0,9 = 1,8 м² - площадь двери - не клеим.
Sрулона = 10*0,5 = 5 м² - площадь рулона
Осталось поклеить:
Sобоев = 42 - 1,8 - 1,8 = 38,4 м² - нужно поклеить.
N = 38.4 : 5 = 7.68 ≈ 8 рулонов - ОТВЕТ (с избытком)
Вариант 2. ТОЧНЫЙ.
Сколько полотен (целых) можно получить из рулона:
n = 10 : 2.8 = 3 - три целых полотна)
Останутся обрезки от каждого рулона
10 - 3*2,8 = 10 - 8,4 = 1,6 м - обрезки.
Делаем развертку стен.
Периметр стен без окна и двери.
Р = 2*(a+b) - 1.5 (окно) - 0.9 (дверь) = 2*(4+3,5) - 2,4 = 12,6 м
Делим на ЦЕЛЫЕ полотна
N = 12.6 : 0.5 = 25,2 ≈ 26 полотен - на стены.
26 : 3 = 8 2/3 ≈ 9 рулонов - ОТВЕТ
Рисунок к задаче - в приложении.
ВЫВОД:
Покупаем 9 рулонов и будет красиво :)