1 / 1 / 0
Регистрация: 27.01.2011
Сообщений: 91

Немного из архитектуры ЭВМ

29.04.2011, 15:52. Показов 3147. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пусть заданы две квадратных матрицы A и B размером NxN.
Они созданы с помощью двух подходов:

1 подход:
C++
1
2
3
4
int **A;
A = new int*[N];
for(int i=0;i<N;i++)
A[i] = new int[N];
Доступ к элементу: A[i][j]

2 подход:
C++
1
2
int *A;
A = new int[N*N];
Доступ к элементу: A[i*N+j]

Необходимо сложить эти матрицы и сравнить время вычисления. Нужны выводы по этим подходам: количество обращений к памяти,
вычислений, теоретические оценки времени вычислений (можно считать, что
матрицы не загружаются в кэш, время доступа к одному элементу в памяти 10
тактов, арифметическая операция 2 такта), реальное время вычисления.

Кто свободен, может поможите?.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.04.2011, 15:52
Ответы с готовыми решениями:

Из архитектуры ЭВМ
Здравствуйте! Хотел бы попросить помочь вот с каким вопросом: описать механизм выбора банков памяти и мультиплексирования. Сам уже...

Первая ЭВМ сеть, то есть первое соединение ЭВМ было электротехническим (радиотехническим) или электронным?
Первая ЭВМ сеть, то есть первое соединение ЭВМ было электротехническим (радиотехническим) или электронным?

Структура "ЭВМ". Определить какая ЭВМ имеет минимальное отношение стоимость/быстродействие
Даны 3 ЭВМ , известны объемы памяти, цена и быстродействие. Определить какая ЭВМ имеет минимальное отношение стоимости/быстродействию и...

30
1 / 1 / 0
Регистрация: 27.01.2011
Сообщений: 91
29.04.2011, 18:54  [ТС]
Студворк — интернет-сервис помощи студентам
вот это libname.lib ?
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
29.04.2011, 18:56
Ну, как я и написал "С некоторой долей уверенности"... Поэтому, доверяй, но проверяй!
1
1 / 1 / 0
Регистрация: 27.01.2011
Сообщений: 91
29.04.2011, 19:48  [ТС]
спасибо Вам всем. Но что-то до меня мало что дошло. Код я поняла, но не пойму почему не работает.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
30.04.2011, 10:26
Цитата Сообщение от KuKu Посмотреть сообщение
12979 и 7427
Да как так вообще??? У тебя Спектрум что ли? У меня даже под отладчиком получилось 150 миллисекунд. И первый вариант чуть быстрее (как я и ожидал).
В любом случае, на таком коде проводить сравнение не корректно, т.к. компилятор может чего-нить на оптимизировать и результат будет искажённым. (это исходя из того, что релизная версия отработала за 100 миллисекунд. Малая разница в производительности настораживает)
0
1 / 1 / 0
Регистрация: 27.01.2011
Сообщений: 91
30.04.2011, 17:51  [ТС]
Слушайте, вот че я думаю. Количество обращений к памяти (запрос на чтение из памяти, запись в память или поиск в памяти заданной информации) = 3. Это обращение к массиву С, В и А.
Кол-во вычислений = 1. Только сложение.
Т.к. за один обход цикла обращений к памяти 3, то число тактов обращений 30. Число тактов вычислений - 2. Всего 32 такта за один обход цикла.
N*N*32 - число тактов за весь цикл.

Это правильно?

Добавлено через 1 час 16 минут
хотя вот в принципе вроде прога.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "windows.h"
#define N 1024
 
 
void main(){
    LARGE_INTEGER b_start,b_stop,b_time,freq;
    QueryPerformanceFrequency(&freq);
    printf("t/sec=%lf*10^9\n\n",(double)(freq.QuadPart)/1000000000);
 
    //Первый подход
    int **A1;
    A1 = new int*[N];
    for(int i=0;i<N;i++){
        A1[i] = new int[N];
        for(int j=0;j<N;j++)
            A1[i][j]=j*N+i;
    }
    int **B1;
    B1 = new int*[N];
    for(int i=0;i<N;i++){
        B1[i] = new int[N];
        for(int j=0;j<N;j++)
            B1[i][j]=j*N+i;
    }
    int **C1;
    C1 = new int*[N];
    for(int i=0;i<N;i++)
        C1[i] = new int[N];
 
    QueryPerformanceCounter(&b_start);
    for(int i=0;i<N;i++){
        for(int j=0;j<N;j++){
            C1[i][j]=A1[i][j]+B1[i][j];
        }
    }
    QueryPerformanceCounter(&b_stop);
    b_time.QuadPart = b_stop.QuadPart - b_start.QuadPart;
 
    printf("t=%lf\n",(double)(b_time.QuadPart));
    printf("time= \t%lfms\n", (double)(b_time.QuadPart)*1000.0/(double)(freq.QuadPart));
 
 
 
    //Второй подход
    int *A;
    A = new int[N*N];
    for(int i=0;i<N;i++)
        for(int j=0;j<N;j++)
            A[i*N+j]=i*N+j;
    int *B;
    B = new int[N*N];
    for(int i=0;i<N;i++)
        for(int j=0;j<N;j++)
            B[i*N+j]=j*N+i;
    int *C;
    C = new int[N*N];
 
    
    QueryPerformanceCounter(&b_start);
    for(int i=0;i<N*N;i++){
        C[i]=A[i]+B[i];
    }
    QueryPerformanceCounter(&b_stop);
    b_time.QuadPart = b_stop.QuadPart - b_start.QuadPart;
 
    printf("t=%lf\n",(double)(b_time.QuadPart));
    printf("time= \t%lfms\n\n", (double)(b_time.QuadPart)*1000.0/(double)(freq.QuadPart));
 
    _getch();
}
 Комментарий модератора 
Используйте теги форматирования кода!
0
Программист
 Аватар для prZzZ
119 / 97 / 11
Регистрация: 22.03.2011
Сообщений: 244
30.04.2011, 18:19
Цитата Сообщение от oksanaBM Посмотреть сообщение
QueryPerformanceCounter
Кто так время измеряет? Или у вас Pentium II? Про счетчик меток реального времени никогда не слышали?
C++
1
2
3
4
unsigned __int64 GetCycleCount()
{
    _asm rdtsc
}
Правда его надо градуировать под каждый камень. Очень уж тут всё аппаратно зависимо
0
1 / 1 / 0
Регистрация: 27.01.2011
Сообщений: 91
30.04.2011, 18:25  [ТС]
по учебной программе нужно использовать QueryPerformanceCounter
0
Программист
 Аватар для prZzZ
119 / 97 / 11
Регистрация: 22.03.2011
Сообщений: 244
30.04.2011, 18:39
Точности большой тогда у вас не будет. Её и с вышеописанным методом не будет т.к. Windows НЕ является системой реального времени, но такты процессора (над этим, кстати, здесь смеялись) посчитать получилось бы. Извините...
0
1 / 1 / 0
Регистрация: 27.01.2011
Сообщений: 91
30.04.2011, 18:41  [ТС]
получается программа неверная?
0
Программист
 Аватар для prZzZ
119 / 97 / 11
Регистрация: 22.03.2011
Сообщений: 244
30.04.2011, 18:49
Да, нет... Теоретически верно...
А практически:
1)погрешность операционной системы (тут, увы, мы ничего сделать не можем)
2)погрешность компилятора (на уровень ассемблера опускаться тоже не входит в ваши планы)
3)погрешность инструментальных средств (описанных выше)

Всё поплюсуем... Истины добиться очень не просто...
1
30.04.2011, 19:01
 Комментарий модератора 
Поскольку от ТСа поступила информация о том, что на все интересующие его вопросы ответы получены - тему закрываю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.04.2011, 19:01

В наушник попало немного воды и он стал немного тише играть
В наушник попало немного воды и он стал немного тише играть. Это практически не заметно, но всё же раздражает. Так это пройдет со временем...

Статья 1280. Свободное воспроизведение программ для ЭВМ и баз данных. Декомпилирование программ для ЭВМ
И так уважаемая Администрация. Я вам могу сказать: Обсуждение реверса не является незаконным ;) Добавлено через 3 минуты Не...

Проектирование ОО архитектуры
Интересно мнение публики. &quot;Программирование в терминах интерфейсов&quot; Вопрос такой: как правильно конструировать едино-образный интерфейс? ...

Архитектуры процессоров
Здравствуйте, у меня есть один вопрос. Есть такие архитектуры, как CISC, RISC, MISC, VLIW etc. И как я понимаю это только их малая...

Реализация архитектуры
Задача такая. Есть класс строк ( десятичная , символьная и т.п.) и операции к ним. Я собрал архитектуру, и с помощью класса SWITCH я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Закрытая тема Создать тему
Опции темы

Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru