Как вычислить MIPS для алгоритма для процессора ARM

После сравнения необработанных HTTP-данных, сгенерированных curl, с данными, сгенерированными вашим кодом, я обнаружил следующие различия:

  • curl не генерирует составной запрос
  • curl генерирует заголовок Expect: 100-continue
  • curl использует преимущественную базовую аутентификацию

Следующий код должен быть эквивалентен этой команде curl, однако я не могу проверить ее с GeoServer. Я использовал свободный API apache-httpclient (то есть fluent-hc-4.5.7.jar ). Дайте мне знать, если это работает.

import java.io.File;
import org.apache.http.client.fluent.*;
import org.apache.http.entity.ContentType;

public class QuickStart {

    public static void main(String[] args) throws Exception {
        File file = new File("data.zip");
        Executor executor = Executor.newInstance()
                .auth("admin", "geoserver")
                .authPreemptive("172.16.17.86:9090");
        String response = executor.execute(Request.Put("http://172.16.17.86:9090/geoserver/rest/workspaces/IDIRA6/datastores/Murrindindi/file.shp")
                .useExpectContinue()
                .bodyFile(file, ContentType.create("application/zip")))
                .returnResponse()
                .toString();
        System.out.println(response);
    }

}

9
задан GS - Apologise to Monica 16 June 2014 в 00:00
поделиться

6 ответов

Я буду держать пари, что Ваш поставщик оборудования спрашивает, в скольких MIPS Вы нуждаетесь.

Как в "Вас нужны 1 000 процессоров MIPS или 2 000 процессоров MIPS?"

Который переводится управлением в "Сколько MIPS?"

Аппаратные средства предлагают MIPS. Программное обеспечение использует MIPS.

У Вас есть две степени свободы.

  • Свойственное предложение MIPS процессора.

  • Число секунд, в течение которых Вы используете это многие MIPS.

Если процессор не будет иметь достаточного количества MIPS, то Ваш алгоритм будет "медленным".

если процессор будет иметь достаточно MIPS, то Ваш алгоритм будет "быстр".

Я поместил "быстро" и "медленный" в кавычках, потому что у Вас должно быть требование к производительности решить "достаточно быстро встречать требование к производительности" или "слишком медленный для встречи требования к производительности".

На 2 000 процессоров MIPS Вы могли бы взять приемлемые 2 секунды. Но на 1 000 процессоров MIPS это взрывает к недопустимым 4 секунды.


В скольких MIPS Вы нуждаетесь?

  1. Получите официальный MIPS для своего процессора. См. http://en.wikipedia.org/wiki/Instructions_per_second

  2. Выполните свой алгоритм на некоторых данных.

  3. Измерьте точное время выполнения. Насчитайте набор образцов для сокращения неуверенности.

  4. Отчет. 3 секунды на 750 процессорах MIPS - хорошо - 3 секунды в 750 MIPS. MIPS является уровнем. Время время. Расстояние является продуктом уровня * время. 3 секунды в 750 MIPS являются 750*3 миллионами инструкций.

Помните Уровень (в Инструкциях в секунду) *, Время (в секундах) дает Вам Инструкции.

Не говорите, что это - 3*750 MIPS. Это не; это - 2 250 миллионов Инструкций.

9
ответ дан 4 December 2019 в 12:21
поделиться

MIPS обычно используется для измерения возможности процессора.

Алгоритмы обычно берут также:

  1. определенное количество времени (при работе определенного процессора)
  2. определенное число инструкций (в зависимости от архитектуры)

Описание алгоритма с точки зрения инструкций в секунду походило бы на странную меру, но конечно я не знаю то, что делает Ваш алгоритм.

Для предложения значимой меры я предположил бы, что Вы настраиваете тест, который позволяет Вам измерять среднее время, потраченное, чтобы Ваш алгоритм завершился. Количество инструкций по сборке было бы разумной мерой, но может быть трудно считать их! Ваш лучший выбор - что-то вроде этого (псевдокод):

const num_trials = 1000000
start_time = timer()
for (i = 1 to num_trials)
{
    runAlgorithm(randomData)
}
time_taken = timer() - start_time
average_time = time_taken / num_trials
2
ответ дан 4 December 2019 в 12:21
поделиться

MIPS является мерой скорости ЦП, не производительностью алгоритма. Я могу только принять где-нибудь вдоль строки, кто-то немного смущен. Что они пытаются узнать? Единственный вероятный сценарий, о котором я могу думать, они пытаются помочь Вам определить, как быстро процессор они должны дать Вам для запущения программы удовлетворительно.

Так как можно измерить алгоритм в количестве инструкций (который несомненно собирается зависеть от входных данных, таким образом, это нетривиально), Вам затем нужна некоторая мера времени, чтобы получить MIPS - например, сказать, что "Я должен вызвать его 1000 раз в секунду". Если Ваш алгоритм будет 1 000 инструкций для того особого случая, то Вы закончите с:

1000 instructions / (1/1000) seconds = 1000000 instructions per second = 1 MIPS.

Я все еще думаю, что это - действительно нечетный способ попытаться сделать вещи, таким образом, можно хотеть попросить разъяснение. Что касается Ваших конкретных вопросов, я оставлю это кому-то более знакомым с Visual Studio.

1
ответ дан 4 December 2019 в 12:21
поделиться

Для первой оценки сравнительный тест на ПК может быть полезным.

Однако перед согласием на определенное устройство и тактовую частоту, необходимо ли получить плату разработчика (или некоторый КПК?) для целевой архитектуры ARM и сравнительного теста это там.

Существует много факторов, влияющих на скорость на сегодняшних машинах (кэширование, конвейеры, различные системы команд ...), таким образом, Ваши сравнительные тесты на ПК могут быть путем от w.r.t. ARM.

0
ответ дан 4 December 2019 в 12:21
поделиться

Also remember that different compilers and compiler options make a HUGE difference. The same source code can run at many different speeds. So instead of buying the 2mips processor you may be able to use the 1/2mips processor and use a compiler option. Or spend the money on a better compiler and use the cheaper processor.

Benchmarking is flawed at best. As a hobby I used to compile the same dhrystone (and whetstone) code on various compilers from various vendors for the same hardware and the numbers were all over the place, orders of magnitude. Same source code same processor, dhrystone didnt mean a thing, not useful as a baseline. What matters in benchmarking is how fast does YOUR algorithm run, it had better be as fast or faster than it needs to. Depending on how close to the finish line you are allow for plenty of slop. Early on on probably want to be running 5 or 10 or 100 times faster than you need to so that by the end of the project you are at least slightly faster than you need to be.

I agree with what I think S. Lott is saying, this is all sales and marketing and management talk. Being the one that management has put between a rock and the hard place then what you need to do is get them to buy the fastest processor and best tools that they are willing to spend based on the colorful pie charts and graphs that you are going to generate from thin air as justification. If near the end of the road it doesnt quite meet performance, then you could return to stackoverflow, but at the same time management will be forced to buy a different toolchain at almost any price or swap processors and respin the board. By then you should know how close to the target you are, we need 1.0 and we are at 1.25 if we buy the processor that is twice as fast as the one we bought we should make it.

Whether or not you can automate these kinds of things or simulate them depends on the tools, sometimes yes, sometimes no. I am not familiar with the tools you are talking about so I cant speak to them directly.

1
ответ дан 4 December 2019 в 12:21
поделиться

Некоторые примечания:

  1. MIPS часто используется в качестве общей меры «емкости» для процессоров, особенно в области программного обеспечения реального времени / встроенного ПО, где вы хотите убедиться, что вы не перегружать процессор работой. Обратите внимание, что это IS инструкций в секунду, так как время очень важно!

  2. MIPS, используемый таким образом, является совершенно ненаучным.

  3. MIPS, используемый таким образом, по-прежнему часто является лучшим приближением для определения размера системы и определения скорость процессора. Вполне может быть на 25% меньше, но ничего ...

  4. Для подсчета MIPS требуется процессор, близкий к тому, что вы используете. Правильный набор инструкций, очевидно, имеет решающее значение для захвата фактического потока инструкций от реального используемого компилятора.

Вы не можете приблизиться к этому на ПК. Чтобы сделать это правильно, вам нужно задействовать один из нескольких инструментов:

  1. Используйте имитатор набора инструкций для целевого архива, такой как Qemu, собственные инструменты ARM, Synopsys, CoWare, Virtutech или VaST. Они быстрые, но могут довольно хорошо считать инструкции и поддерживают правильный набор инструкций. За исключением широкого использования дорогостоящих инструкций, таких как целочисленное деление (и, пожалуйста, без чисел с плавающей запятой), эти числа, как правило, очень близки.

  2. Найдите точный симулятор тактового цикла для вашего целевого процессора (или чего-то близкого), который даст довольно хорошие оценка эффектов конвейера и т. д. Еще раз, получите это от ARM или от Carbon SoCDesigner.

  3. Получите отладочную плату для семейства процессоров, на которое вы нацеливаетесь, или ARM, близкий к этому дизайну, и профилируйте приложение там. Вы не используете ARM9 для профилирования ARM11, но ARM11 может быть хорошим приближением, например, для ARM Cortex-A8 / A9.

3
ответ дан 4 December 2019 в 12:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: