Jump to content

    

Alexey_Rostov

Свой
  • Content Count

    263
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Alexey_Rostov

  • Rank
    Местный
  • Birthday 04/03/1985

Контакты

  • Сайт
    https://www.linkedin.com/in/alexey-rostov/
  • ICQ
    0

Информация

  • Город
    Минск, Беларусь

Старые поля

  • skype
    farbius85

Recent Profile Visitors

1849 profile views
  1. OpenMP + ARM Linux нет увеличения скорости for loop

    Добрый день! DART-MX8M :NXP i.MX8M https://www.variscite.com/product/system-on-module-som/cortex-a53-krait/dart-mx8m-nxp-imx-8m/
  2. OpenMP + ARM Linux нет увеличения скорости for loop

    Спасибо еще раз! Заработало!
  3. OpenMP + ARM Linux нет увеличения скорости for loop

    Спасибо, уже понял, что некорректно ее использовать: в VS по точкам дебага временные затраты другие иллюстрируются....
  4. OpenMP + ARM Linux нет увеличения скорости for loop

    Разницу между start и end. На Винде с клоком тоже работает... cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC; Вот вывод консоли для Windows Start programm Time taken by for_loop: 0.401 seconds Time taken by for_loop with openmp: 0.143 seconds Done ! Размер массивов задал 8192х8192. Выйгрыш во времени более чем в два раза
  5. OpenMP + ARM Linux нет увеличения скорости for loop

    Запускаю на Windows в VS 2019, программа работает как и ожидается: использование OpenMP позволило ускорить for в несколько раз. На Ubuntu и на ARM Linux не получается ....
  6. OpenMP + ARM Linux нет увеличения скорости for loop

    Исправил, вынес инициализацию вне for root@imx8m-var-dart:~/test# ./a.out Start programm Time taken by for_loop: 0.05834 seconds Time taken by for_loop with openmp: 0.100663 seconds root@imx8m-var-dart:~/test# без изменений... Запускаю эту же программу под Ubuntu 16.04 alexey@ubuntu:~/test$ g++ main.cpp -fopenmp -I /usr/include/opencv2 -L /usr/lib -lopencv_core alexey@ubuntu:~/test$ ./a.out Start programm Time taken by for_loop: 0.091176 seconds Time taken by for_loop with openmp: 0.017327 seconds alexey@ubuntu:~/test$
  7. OpenMP + ARM Linux нет увеличения скорости for loop

    Я понимаю что вы имеете в виду, но у меня в задаче 4 канала и в каждом канале набор последовательных арифметических действий (умножение\деление\фильтрация) над массивами (изображениями). Вот и пытаюсь оптимизировать программу по быстродействию. Увеличил размер перемножаемых массивов до 2048 х 2048 результат root@imx8m-var-dart:~/test# ./a.out Start programm Time taken by for_loop: 0.931792 seconds Time taken by for_loop with openmp: 1.80278 seconds root@imx8m-var-dart:~/test# С openmp время увеличилось в два раза...
  8. OpenMP + ARM Linux нет увеличения скорости for loop

    Но в каждой итерации у меня перемножаются по два массива... Как я понимаю каждое ядро выполняет по одной итерации. Более того, запускаю программу на Windows в Visual studio, прирост в производительности есть.
  9. Здравствуйте! Подскажите пожалуйста почему при подключении openmp не удается уменьшить время работы программы. Плата imx8 с Cortex A53 Содержимое файла main.cpp #include <iostream> #include <opencv2/opencv.hpp> #include <vector> #include <math.h> #include <time.h> #include <omp.h> #define CHANNELS 4 using namespace std; using namespace cv; int main() { cout << "Start programm" << endl; vector<Mat> matrix_1(CHANNELS); vector<Mat> matrix_2(CHANNELS); vector<Mat> result(CHANNELS); Mat rnd_image = Mat(32, 32, CV_32FC1, Scalar(0)); // matrix initialization clock_t start, end; double cpu_time_used; start = clock(); for (int i = 0; i < CHANNELS; i++) { randn(rnd_image, Scalar(0), Scalar(16000)); rnd_image.copyTo(matrix_1[i]); randn(rnd_image, Scalar(0), Scalar(16000)); rnd_image.copyTo(matrix_2[i]); multiply(matrix_1[i], matrix_2[i], result[i]); } end = clock(); cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC; cout << "Time taken by for_loop: " << cpu_time_used << " seconds " << endl; start = clock(); #pragma omp parallel num_threads(2) for (int i = 0; i < CHANNELS; i++) { randn(rnd_image, Scalar(0), Scalar(16000)); rnd_image.copyTo(matrix_1[i]); randn(rnd_image, Scalar(0), Scalar(16000)); rnd_image.copyTo(matrix_2[i]); multiply(matrix_1[i], matrix_2[i], result[i]); } end = clock(); cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC; cout << "Time taken by for_loop with openmp: " << cpu_time_used << " seconds " << endl; return 0; } Команда для компиляции (флаг -fopenmp добавлен) g++ main.cpp -fopenmp -I /usr/include/opencv2 -L /usr/lib -lopencv_core Прописал переменную root@imx8m-var-dart:~/test# printenv OMP_NUM_THREADS 2 root@imx8m-var-dart:~/test# Компилирую и запускаю программу root@imx8m-var-dart:~/test# g++ main.cpp -fopenmp -I /usr/include/opencv2 -L /usr/lib -lopencv_core root@imx8m-var-dart:~/test# ./a.out Start programm Time taken by for_loop: 0.000802 seconds Time taken by for_loop with openmp: 0.000789 seconds root@imx8m-var-dart:~/test# По идее время на выполнение должно быть в два раза меньше... Что делаю не так?
  10. Тоже не получилось зашить флеш в данной версии Вивадо. Решение: пересобрал проект и SDK в другой версии.
  11. Спасибо, проблему решил. Подсети на imx8 разные выставил: root@imx8m-var-dart:~# ip route 192.168.1.0/24 dev usb0 proto kernel scope link src 192.168.1.99 192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.33 На ПК IP выставил 192.168.2.2. Теперь пинг проходит по каждому интерфейсу root@imx8m-var-dart:~# ping -I eth0 192.168.2.2 PING 192.168.2.2 (192.168.2.2) from 192.168.2.33 eth0: 56(84) bytes of data. 64 bytes from 192.168.2.2: icmp_seq=1 ttl=128 time=2.44 ms --- 192.168.2.2 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms root@imx8m-var-dart:~# ping -I usb0 192.168.1.100 PING 192.168.1.100 (192.168.1.100) from 192.168.1.99 usb0: 56(84) bytes of data. 64 bytes from 192.168.1.100: icmp_seq=1 ttl=64 time=0.699 ms 64 bytes from 192.168.1.100: icmp_seq=2 ttl=64 time=0.641 ms --- 192.168.1.100 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1028ms
  12. root@imx8m-var-dart:~# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 usb0 root@imx8m-var-dart:~# ip route 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.33 192.168.1.0/24 dev usb0 proto kernel scope link src 192.168.1.99 Интерфейс usb0 имеет статический ip 192.168.1.99 для соединения с сервером с ip 192.168.1.100 port 0x5555, интерфейс eth0 используется пока для удаленной компиляции на плате imx8 c ПК. После reboot и назначения ip для usb0 и eth0 пинг проходит только по интерфейсу eth0. При дебаге кода (тестовый tcp клиент), программа не выполняет connect() для usb0 интерфейса
  13. изменил IP и скопировал. правильно 192.168.2.0/24 Я понимаю, что что-то неправильно делаю при реализации двух сетевых интерфейсов под linux. Обязательно должно быть: - разные роут для каждого интерфейса
  14. Добрый день! Запускаю на arm64 imx8 board сеть с использованием RNDIS интерфейса и eth0. root@imx8m-var-dart:~# ifconfig eth0 Link encap:Ethernet HWaddr f8:dc:7a:1b:f1:ae inet addr:192.168.2.33 Bcast:192.168.2.255 Mask:255.255.255.0 inet6 addr: fe80::fadc:7aff:fe1b:f1ae/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3917 errors:0 dropped:0 overruns:0 frame:0 TX packets:945 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:300204 (293.1 KiB) TX bytes:233024 (227.5 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:138 errors:0 dropped:0 overruns:0 frame:0 TX packets:138 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:12968 (12.6 KiB) TX bytes:12968 (12.6 KiB) usb0 Link encap:Ethernet HWaddr 26:16:ff:7d:bb:80 inet addr:192.168.1.99 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::2416:ffff:fe7d:bb80/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:52 errors:0 dropped:0 overruns:0 frame:0 TX packets:587 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:3416 (3.3 KiB) TX bytes:131753 (128.6 KiB) Включаю интерфейсы по отдельности, пинг проходит. как только запускаю два интерфейса одновременно, то пингуется только тот, который был запущен первым Роут у них общий root@imx8m-var-dart:~# ip route 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.33 192.168.1.0/24 dev usb0 proto kernel scope link src 192.168.1.99 разносил на разные подсети, проблема не решилась. Что необходимо для корректной работы двух интерфейсов одновременно?
  15. Здравствуйте! Уважаемые форумчане, возможно кто нибудь подскажет, как подключить opencv при удаленной компиляции в Microsoft Visual Studio с помощью расширения Linux development with C++ ? Есть отладочный набор DART-MX8M development board. На ARM поставил собранный с помощью yocto образ Linux. В VS2017 с помощью расширения Linux development with C++ выполняю удаленную компиляцию. Helloword запускается, но при попытке запустить код с объявленным Mat выдает ошибку 'Mat' was not declared in this scope. Как компоновщику указать на opencv в DART-MX8M development board?