Перейти к содержанию
    

моделирование на многих ядрах

Контора закупила зверь-машину для всяких задач (x86, windows, linux), которые долго выполняются на обычном компе.

В связи с этим интересует: можно ли процесс моделирования (Verilog, SystemVerilog) разнести на несколько ядер параллельно, учитывая что тесты будут активно использовать много параллельных нитей ввиде множества initial begin, fork join и так далее?

 

Тут например пишут: the simulation will occupy one processor core, while the GUI operations will run on the other, и это огорчает. Если нет так нет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мы чтобы ускорить моделирование разбивали дизайн на узлы и использовали режим "маггнитофона".

Берем первый узел моделируем нужное время, записываем выходные сигналы.

Затем второй узел моделируем используя входные воздействия записанные сигналы.

Скорость моделирования возрастает неограниченно и никак не связана с мощностью компа в принципе.

Так как дробить можно сколько угодно :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мы чтобы ускорить моделирование разбивали дизайн на узлы и использовали режим "маггнитофона".

Берем первый узел моделируем нужное время, записываем выходные сигналы.

Затем второй узел моделируем используя входные воздействия записанные сигналы.

Это у вас обратных связей нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мы чтобы ускорить моделирование разбивали дизайн на узлы и использовали режим "маггнитофона".

Не катит...

 

Я мог бы просто запускать N экземпляров в параллель, каждый бы отрабатывал свою часть возможных сценариев тестов.

 

Еще один симулятор пишет что у них "Multi-Core simulation which supports all design languages and constructs and either automatically or manually partitions the design to run in parallel while maintaining a single database for debug and coverage", это Questa - насколько это правда или врут? Почему они смогли а другие пока нет? Собираюсь попробовать этот симулятор...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Контора закупила зверь-машину для всяких задач (x86, windows, linux), которые долго выполняются на обычном компе.

 

У Xilinx симуляция на одном ядре. В Vivado P&R (но не синтез) наконец научился загружать все, до чего дотянется. Приятно смотреть.

Единственный способ заметно ускорить симуляцию и синтез - собрать игровой компьютер (без графики - хотя если есть бюджет то и поиграть можно ;-)

и разгонять по мегагерцах сколько получится. У нас получилось ощутимо сократить время сборки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У нас верификаторы для ускорения моделирования использовали VCS вместо modelsim и все это дело запускалось без графики - только трасса в текстовике.

PS. Слышал, что для modelsim вроде как отдельная утилита есть, которая позволяет распаралелить задачи за бешенные деньги.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

использовали VCS вместо modelsim

Про него тоже пишут что он типа многопоточный. Его тоже проверю, запущу 10 потоков в fork-join и посмотрю как ядра грузит, и насколько быстрее чем на одном ядре.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще один симулятор пишет что у них "Multi-Core simulation which supports all design languages and constructs and either automatically or manually partitions the design to run in parallel while maintaining a single database for debug and coverage", это Questa - насколько это правда или врут? Почему они смогли а другие пока нет? Собираюсь попробовать этот симулятор...

Попробовал в QuestaSim просимулить, посмотрите пожалуйста код, корректно ли я попытался загрузить много ядер тестом?

А то QuestaSim крутит это всё на одном ядре, чуть еще одного ядра занимает по всей видимости принтинг $display.

В документации (мануале) на QuestaSim единственное что пишут что одного ядро для симуляции, второе логи принимает и графики рисует - но это же отстой, это не соответствует заявлению на их сайте "Multi-Core simulation which supports all design languages and constructs and either automatically or manually partitions the design to run in parallel while maintaining a single database for debug and coverage"...

 

Версия QuestaSim очень старая (10.2c ревизия 2013.07), но все равно - корректно ли я написал тест что жду от него параллельности?

Где можно узнать какая конкретно версия QuestaSim самая новая и вообще узнать её возможности, скачать отдельно доки? Может у кого стоит уже, вышлите, пожалуйста, мануал.

 

Графики не вывожу и данные потом никуда не идут, может оно оптимизировало то что не отображается и никуда не поступает?..

 

`timescale 1ns / 1ps

module test_mt;

reg [127:0] a, b, c, d;
reg clock1, clock2;
reg [31:0] x, y;

initial begin
    clock1 = 0;
    clock2 = 0;
    x = 0;
    y = 0;
    a = 0;
    b = 0;
    c = 0;
    d = 0;
end

always #(5) clock1 = !clock1;
always #(2) clock2 = !clock2;

always @(posedge clock1) x <= x + 1;
always @(posedge clock2) y <= y - 1;

initial fork

forever begin
    #1;
    $display("thread 1");
    c += 2;
end

forever begin
    #2;
    $display("thread 2");
    d += 5;
end

forever begin
    #1;
    $display("thread 3");
    a++;
end

forever begin
    #1;
    $display("thread 4");
    b--;
end

join

endmodule

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В квесте есть отдельная документация на многопроцессорную симуляцию:

"Questa ® SIM Multi-core Simulation User’s Guide" (смотреть в папке docs\pdfdocs)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В квесте есть отдельная документация на многопроцессорную симуляцию:

"Questa ® SIM Multi-core Simulation User’s Guide" (смотреть в папке docs\pdfdocs)

Прочитайте, пожалуйста, личку/PM. Написал конфиденциальный вопрос :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

> мог бы просто запускать N экземпляров в параллель,

 

ну так это одна из причин для создания всяких методологий типа UVM VMM и многих конструкций языка SV

если написано с возможностью запуска N экземпляров, то никаким чудо-тулом не поднимете производительность выше этого , распараллеливая один экземпляр (думаю, что даже для N равно 2)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В квесте есть отдельная документация на многопроцессорную симуляцию:

"Questa ® SIM Multi-core Simulation User’s Guide" (смотреть в папке docs\pdfdocs)

Прогресс по теме: действительно, Questa Sim умеет многоядерную симуляцию (и даже многосерверную симуляцию!), там есть специальные утилиты для этого, есть примеры ручного разбиения проекта (если это вообще возможно для данного проекта).

 

Работает такая возможность лишь под Linux 64-bit (мне как линуксоиду приятно). Пока что эксперименты временно отложены. Как появятся результаты - обязательно отпишусь в данной теме :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В квесте есть отдельная документация на многопроцессорную симуляцию:

"Questa ® SIM Multi-core Simulation User’s Guide" (смотреть в папке docs\pdfdocs)

можно выложить?

просто пользуюсь ModelSim - заинтересовало...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Простой скриптик раскидывает симуляцию на 8 ядер

#!/bin/bash

clear 

opt=0
ts_param="1ns/1ps"

if [ $opt == 1 ]; then 
    opt_param="-O1"
else 
    opt_param="-novopt"
fi

vlib work

vlog -sv -timescale $ts_param $opt_param -f ./source.list

mc2com tb_top -o top_opt -mc2numpart 8

vsim -mc2 top_opt

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 01.03.2016 в 12:42, akorud сказал:

 

У Xilinx симуляция на одном ядре. В Vivado P&R (но не синтез) наконец научился загружать все, до чего дотянется. Приятно смотреть.

Единственный способ заметно ускорить симуляцию и синтез - собрать игровой компьютер (без графики - хотя если есть бюджет то и поиграть можно ;-)

и разгонять по мегагерцах сколько получится. У нас получилось ощутимо сократить время сборки.

Как показала практика: чем выше частота ядра - тем быстрее моделирование и P&R. На работе простенький Процессор Intel® Core™ i7-8700 дома  AMD ryzen 5 3600. Хоть по всем тестам AMD и впереди. Однако  P&R Intel делает быстрее. Хотя дома и ОЗУ боле быстрое...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...