Odpowiedz

6

Możesz użyć DSP do wszystkich rodzajów obliczeń. Jest to procesor ogólnego przeznaczenia zoptymalizowany pod kątem aplikacji DSP. Więc tak, nawet rzeczy zmiennoprzecinkowe będą działać, ale wydajność nie będzie świetna.

Procesor DSP naprawdę świeci, jeśli wykonujesz obliczenia całkowite na dużych tablicach danych. Tutaj DSP może łatwo obliczyć tak szybko, że czas na transfer danych zi do pamięci staje się wąskim gardłem.

Aby podać liczbę możliwych elementów: Mam algorytm uruchamiający przetwarzanie danych z kamery (w procesie rozplatania). Mam 8-bitowe obrazy wejściowe i 24-bitowe obrazy wyjściowe. Wydajność, którą archiwizuję na beagleboard DSP przy ~ 350Mhz, to 144 miliony pikseli na sekundę. Odpowiada to około pół gigabajtowi przetworzonych danych na sekundę.

Przygotowanie i uruchomienie programu DSP oraz kompilowanie programu Hello World nie jest jednak proste. Musisz zintegrować sterownik jądra DSP (korzystam z DSPLINK). Musisz nauczyć się korzystać z (ogromnych) bibliotek interopowych DSP/ARM, jak korzystać z toolchain tylko dla prostego świata hello. Planuj przynajmniej dwa tygodnie.

Gdy to działa, zaczyna się prawdziwa praca, ucząc się, jak pisać szybki kod dla DSP, jak zarządzać wewnętrznymi pamięciami, DMA, przerywnikami i wszystkimi takimi rzeczami.

W końcu warto, ponieważ odblokowujesz niesamowicie szybki procesor DSP, który z łatwością może osiągnąć lepsze wyniki niż Cortex-A8, jeśli zostanie mu przydzielona odpowiednia praca.Oprócz tego uzyskujesz dostęp do koprocesorów obrazu, co pozwala jeszcze bardziej wyładować obliczenia. A następnie jest kompletny procesor ARM9 ściśle sprzężony z DSP, który siedzi tam bezczynnie i czeka, aż zostanie użyty.

+0

Jak mogę zintegrować sterownik kernala DSP? proszę wyjaśnić kroki –

+0

Zajmie to pół tygodnia, aby wykonać całą pracę integracyjną, jeśli wiesz, co robisz. Nie możesz po prostu wyjaśnić wszystkich tych kroków w paragrafie lub dwóch. –

1

Model programowania w heterogenicznej platformie, np. W desce Beagle, zwykle polega na odciążeniu części obliczeniowej aplikacji z GPP (ARM) na DSP. Będziesz potrzebował sterownika i kompilatora jądra dsp dla c64x. Szczegółowe informacje spojrzeć na DSP BIOS przewodnika programowego: http://omappedia.org/wiki/DSPBridge_Project

Jeśli nie uznały go już, polecam dając NEON na cortex A8 szansę dla swojego algorytmu przetwarzania obrazu i zobaczyć, jakie można uzyskać wzrost wydajności . Jest to dość proste do zaprogramowania w C bez potrzeby sterownika/kompilatora DSP.

3

Tak, możesz, ale jeśli nie jest częścią this OpenCV port project, musisz sam wdrożyć algorytm.

Procesor DSP BeagleBoard powinien być wystarczająco mocny, aby rozmiary zdjęć nie były zbyt duże (320x240, może 640x480), ale w swojej implementacji trzeba radzić sobie z ustaloną arytmetyką punktów, jeśli zależy nam na optymalnej przepustowości.

EDIT: Dlaczego stałym punktem

TI C6xxx DSP są w dwóch smakach: mniejsze numery (C64xx) nie mają sprzętu koprocesor, podczas gdy wyższe numery (C67xx) mają jeden. Jest to przeciwieństwo procesorów stacjonarnych, takich jak Intel.

Moduł BeagleBoard-xm zawiera kod C64xx bez jednostki zmiennoprzecinkowej. Tak więc, gdy wywołasz funkcję matematyczną, która działa na zmiennych, obliczenia zmiennoprzecinkowe są emulowane przez urządzenie, które jest wolne. Zamiast tego maksymalna przepustowość jest uzyskiwana podczas implementowania tych operacji w arytmetyce punktów stałych, ponieważ wywołujesz rodzime operacje na typach całkowitych.

+0

dlaczego arytmetyki punktów stałych mieć optymalną przepustowość? –

0

Nie dotyczy urządzeń ARM, ale dla osób lądujących tutaj po wyszukaniu "DSP" i "OpenCV", dla wysokiej wydajności w serwerach opartych na procesorze x86 dobrym wyborem jest seria procesorów TI c66x, która ma zarówno 32-bitowe stałe, jak i instrukcje zmiennoprzecinkowe. OpenCV została przeniesiona do c66x karty akceleratora i przebiega bez problemów:

http://processors.wiki.ti.com/index.php/C66x_opencv

Powiązane problemy