Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 97 • Страница 4 из 5<  1  2  3  4  5  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Advanced member
Статус: Не в сети
Регистрация: 27.02.2007
Откуда: Москва
Фото: 54
1 профильный конфиг, 52с с включенной многопоточностью.

З.Ы. дизассемблировал софтину в monodis, что-то мне этот алгоритм напоминает..
Добавлено спустя 25 минут, 17 секунд
Ну вот... Теперь понятно, что он мне напоминает. Вся основная работа выполняется с помощью класса Matrix:

Код:
internal class Matrix
{
    private int columns;
    private double[,] matrix;
    private int rows;

    public Matrix(int size)
    {
        this.matrix = new double[size, size];
    }

    public Matrix(int sizeA, int sizeB)
    {
        this.rows = sizeA;
        this.columns = sizeB;
        this.matrix = new double[sizeA, sizeB];
    }

    ~Matrix()
    {
        Console.WriteLine("Finalize");
    }

    public int Columns
    {
        get
        {
            return this.rows;
        }
    }

    public double this[int i, int j]
    {
        get
        {
            return this.matrix[i, j];
        }
        set
        {
            this.matrix[i, j] = value;
        }
    }

    public int Rows
    {
        get
        {
            return this.rows;
        }
    }
}



И методов Matmul и Matmul2:

Код:
private static void Matmul(Matrix A, Matrix B, Matrix C)
{
    int rows = A.Rows;
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < rows; j++)
        {
            double num5 = C[i, j];
            for (int k = 0; k < rows; k++)
            {
                num5 += A[i, k] * B[k, j];
            }
            C[i, j] = num5;
        }
    }
}


Код:
public void Matmul2(object matrixmassive)
{
    Matrix[] matrixArray = (Matrix[]) matrixmassive;
    Matrix matrix = matrixArray[0];
    Matrix matrix2 = matrixArray[1];
    Matrix matrix3 = matrixArray[2];
    Counter counter = new Counter();
    counter.Start();
    int rows = matrix.Rows;
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < rows; j++)
        {
            double num5 = matrix3[i, j];
            for (int k = 0; k < rows; k++)
            {
                num5 += matrix[i, k] * matrix2[k, j];
            }
            matrix3[i, j] = num5;
        }
    }
    counter.Stop();
    this.time2 = counter.ToString();
}



Подсчет времени выполняется с помощью обертки к NTшным счетчикам производительности:

Код:
internal class Counter
{
    private long freq = 0;
    private long startCount = 0;
    private long stopCount = 0;
    private long totalCount = 0;

    public double MFlops(double total_flops)
    {
        return (total_flops / (1000000.0 * this.TotalSeconds));
    }

    [System.Runtime.InteropServices.DllImport("KERNEL32")]
    private static extern bool QueryPerformanceCounter(ref long lpPerformanceCount);

    [System.Runtime.InteropServices.DllImport("KERNEL32")]
    private static extern bool QueryPerformanceFrequency(ref long lpFrequency);

    public void Reset()
    {
        this.totalCount = 0;
    }

    public void Start()
    {
        this.startCount = 0;
        QueryPerformanceCounter(ref this.startCount);
    }

    public void Stop()
    {
        this.stopCount = 0;
        QueryPerformanceCounter(ref this.stopCount);
        this.totalCount += this.stopCount - this.startCount;
    }

    public override string ToString()
    {
        return string.Format("{0:F3} sec", this.TotalSeconds);
    }

    public float TotalSeconds
    {
        get
        {
            this.freq = 0;
            QueryPerformanceFrequency(ref this.freq);
            return (((float) this.totalCount) / ((float) this.freq));
        }
    }
}




А теперь внимательно читаем статью:

http://msdn.microsoft.com/ru-ru/library/dd335957.aspx

И видим приведенный выше код в примерах. А в чем прикол? :insane: :spy:

Хоть бы врайтлайны убрали, что-ли.. Консоли-то нет. Да и не тест процессора это, это тест компилятора.

_________________
14900KS @ 6100/4800
96G Trident Z5 @ 7200 (34-42-42-53, ICE-RDT)
z790 Aorus Master X
RX 6900XT GAMING OC 16G+Bykski WB
macOS Sequia 15.5



Партнер
 

Member
Статус: Не в сети
Регистрация: 01.12.2007
Откуда: В.Новгород53рус
HertZ недалеко ушел от меня. 53 с копейками было в многопоточности.почему то твои 3.7 чуть быстрей моих 3.1.

_________________
"х264 под AMD заточен".@Trump
"Получается ниша Intel Celeron G1610 определена-высокопроизводительная рабочая система".@Kost Troll


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 19.01.2006
Откуда: инет
#77


#77


:gun:

:)

_________________
"Не бойтесь делать то, что вы не умеете, помните - дилетант построил ковчег, а профессионалы Титаник..."


 

Member
Статус: Не в сети
Регистрация: 21.03.2008
1 поток-55.502
х поток-27.848

размерность 1000

Win XP Pro SP3


 

Member
Статус: Не в сети
Регистрация: 08.10.2008
Откуда: Россия, Москва
Win XP Pro SP3
QX9650-всё на авто без разгона
размерность 1000 multi-off = 57,414
размерность 1000 multi-on = 28,679


 

Vista sp1 x86
e8400 4.14
размерность 1000 multi-off = 115.835
размерность 1000 multi-on = 57.130


 

Member
Статус: Не в сети
Регистрация: 20.08.2005
Откуда: Москва
HertZ а я и не скрывал. но дело не в классах матрицы и таймере, это вещь стандарт. а реализации многопоточности и , главное, почему такие странные результаты. вот в чем прикол.
ЗЫ дизассемблировать для IL кода сильно сказано :haha:


 

Member
Статус: Не в сети
Регистрация: 08.10.2008
Откуда: Россия, Москва
Win XP Pro SP3
QX9650@3833
размерность 1000 multi-off = 45.319
размерность 1000 multi-on = 22.718 А вот с разгоном.


 

Advanced member
Статус: Не в сети
Регистрация: 27.02.2007
Откуда: Москва
Фото: 54
Ivanhoe писал(а):
ЗЫ дизассемблировать для IL кода сильно сказано Ха-ха

Правда? Тогда просвещайтесь:

http://msdn.microsoft.com/ru-ru/library/496e4ekx.aspx

Если непонятно по ссылке выше, то для любой виртуальной машины есть соответствующий ассемблер, так же как и для железной реалиации вычислительной машины. И перевод из двоичной формы в читабельную (в данном случае это MSIL) в любом случае называется дизассемблированием.

Ivanhoe, это я все к тому, что данный тест не предназначен для проверки железа, совершенно. Ну а лицензионные вопросы и ваша совесть-это не мое дело.

_________________
14900KS @ 6100/4800
96G Trident Z5 @ 7200 (34-42-42-53, ICE-RDT)
z790 Aorus Master X
RX 6900XT GAMING OC 16G+Bykski WB
macOS Sequia 15.5


Последний раз редактировалось HertZ 14.04.2009 11:01, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 20.08.2005
Откуда: Москва
HertZ просто вами было сказано очень пафосно дизассемблировать. для этого лучше всего подходит Рефлектор. ладно, не суть. Лицензия на что мне нужна? на матрицы?) а для чего этот тест предназначен? я его вообще писал из спортивного интереса и не более. я не претендую на его уникальность и гениальность.


 

Advanced member
Статус: Не в сети
Регистрация: 27.02.2007
Откуда: Москва
Фото: 54
Ivanhoe писал(а):
просто вами было сказано очень пафосно дизассемблировать

Ой да ладно, какой смысл в этом? Мне за это поднимут зарплату? :-D

Ivanhoe писал(а):
Лицензия на что мне нужна? на матрицы?)

Если в коде нет копирайтов и не оговорена лицензия, то любое использование его без письменного разрешения автора запрещено. Писать свою реализацию этих алгоритмов можно, а копировать в ноль нельзя. Все просто... В следущий раз будьте осторожны, вдруг злой автор какой-нибудь библиотеки попадется. Я-то автору ничего докладывать не собираюсь, да и ему скорее всего пофиг будет. )

Ivanhoe писал(а):
а для чего этот тест предназначен?

Для того, что написано в статье. Сравнения быстродействия кода, генерируемого JIT-компилятором с кодом, сгенерированным статически, выполняемого на той же системе. Для чего-либо другого его использовать бесмысленно просто потому, что например настройки уборщика мусора, или аллокатора памяти могут быть очень разные, либо вообще может использоваться статическая компиляция байткода (mono, dotgnu), или интерпретатор ассемблера CLR.

_________________
14900KS @ 6100/4800
96G Trident Z5 @ 7200 (34-42-42-53, ICE-RDT)
z790 Aorus Master X
RX 6900XT GAMING OC 16G+Bykski WB
macOS Sequia 15.5


 

Member
Статус: Не в сети
Регистрация: 20.08.2005
Откуда: Москва
HertZ вообще там речь идет в статье немного о другом, о вообще возможностей Нет для математики. ну и дается сравнение далее. Согласен, этот тест не отражает реальной расстановки сил,это ясно. но кое какие результаты тем не менее имеются интересные. почему они такие разные? неясно, надо алгоритм совершенствовать. и я вообще сомневаюсь что настройки могут хоть как-то значимо повлиять на этот тест. хотя..)


 

Advanced member
Статус: Не в сети
Регистрация: 27.02.2007
Откуда: Москва
Фото: 54
Ivanhoe писал(а):
я его вообще писал из спортивного интереса и не более. я не претендую на его уникальность и гениальность.

Вы неправильно поняли, я не имею ничего против... Просто результаты, к сожалению, ни о чем не говорят.

Ivanhoe писал(а):
и я вообще сомневаюсь что настройки могут хоть как-то значимо повлиять на этот тест. хотя..)

Вечером продемонстрирую, ЧТО будет, если запустить эту программку, отключив JIT :-D Будет Phenom со скоростью 486... :hitrost:

_________________
14900KS @ 6100/4800
96G Trident Z5 @ 7200 (34-42-42-53, ICE-RDT)
z790 Aorus Master X
RX 6900XT GAMING OC 16G+Bykski WB
macOS Sequia 15.5


Последний раз редактировалось HertZ 14.04.2009 11:16, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 23.08.2008
Откуда: Пермь
Vista sp1 x86
e6300@1866(без разгона)
Multi-off 90.326
Multi-on 103.562

Ерунда какая-то,что при мульти, что без, грузит 1 ядро.

_________________
That night gonna be a good nigth... I can feel it!


 

Member
Статус: Не в сети
Регистрация: 20.08.2005
Откуда: Москва
HertZ писал(а):
Вы неправильно поняли, я не имею ничего против... Просто результаты, к сожалению, ни о чем не говорят.

это я уже понял. вот в этом и вопрос! вот и подтверждение:
Цитата:
Vista sp1 x86
e6300@1866(без разгона)
Multi-off 90.326
Multi-on 103.562

Ерунда какая-то,что при мульти, что без, грузит 1 ядро.


Очень любопытно, а если еще раз провести? У всех многоядерников судя по статистике мультипоточность дает ощутимый результат.


 

Advanced member
Статус: Не в сети
Регистрация: 27.02.2007
Откуда: Москва
Фото: 54
Ivanhoe, если писать на c# бенчмарки для процессора, то надо использовать указатели, unsafe и самостоятельно выделять память под данные, используя методы Marshal.AllocHGlobal, Marshal.FreeHGlobal и другие для работы с памятью.. Ну и естественно классы вроде тех что в статье использовать по-минимуму. Таким образом можно будет преодолеть попытки CLR проявить сообразительность и сделать результаты более-менее адекватными..

_________________
14900KS @ 6100/4800
96G Trident Z5 @ 7200 (34-42-42-53, ICE-RDT)
z790 Aorus Master X
RX 6900XT GAMING OC 16G+Bykski WB
macOS Sequia 15.5


 

Member
Статус: Не в сети
Регистрация: 20.08.2005
Откуда: Москва
HertZ была такая мысль конечно, тогда правда все прелести c# нах идут). Хотя попробывать можно. Но я думаю дело не в этом, это скорее ОС чудит то дает приоритет то нет. а что CLR то? Тогда вообще лучше с++ вспомнить...


 

Advanced member
Статус: Не в сети
Регистрация: 27.02.2007
Откуда: Москва
Фото: 54
Ivanhoe писал(а):
тогда правда все прелести c# нах идут)

Не-а, если не использовать нативные библиотеки, то это не помешает программе запускаться на разных платформах.. Ну и плюс к тому, на х86 и амд64 будет собираться 32 и 64-разрядный код соответственно..

_________________
14900KS @ 6100/4800
96G Trident Z5 @ 7200 (34-42-42-53, ICE-RDT)
z790 Aorus Master X
RX 6900XT GAMING OC 16G+Bykski WB
macOS Sequia 15.5


 

Member
Статус: Не в сети
Регистрация: 23.08.2008
Откуда: Пермь
Ivanhoe я проводил тест раз по 5 точно и для достоверности результатов перезагружал комп, но результаты не особенно то сильно изменились! При включённом multi результат всегда был хуже, в среднем, на 8-12 секунд, чем результат с отключённым multi! Причину подобного явления сам не знаю.


 

Member
Статус: Не в сети
Регистрация: 20.08.2005
Откуда: Москва
Android511 вот это вообще нечто... о_О.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 97 • Страница 4 из 5<  1  2  3  4  5  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan