Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 0
Регистрация: 27.01.2011
Сообщений: 91

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

29.04.2011, 15:52. Показов 3110. Ответов 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
Закрытая тема Создать тему
Новые блоги и статьи
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru