Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2013, 11:37   #1
arm9n
Пользователь
 
Регистрация: 24.07.2013
Сообщений: 19
Вопрос Работа с огромным массивом.

Есть байтовый массив размером пордяка 6 млн. элементов, и над каждым элементом в цикле нужно выполнить довольно ресурсоемкие операции, рассчитав значения n-ого элемента исходя из значений элементов n-k..n+k, причем k может врьироваться от 1 до 1000. Каким образом можно оптимизировать этот процесс под обычный среднестатистический пк, чтобы процесс занимал не более 2 сек? Мб писать в асме?
arm9n вне форума Ответить с цитированием
Старый 07.08.2013, 12:34   #2
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

GPU, OpenCL. Два слова, а подразуевают так много что афигеть можно. Ну или цитирую: "Небольшое изменение алгоритма может способствовать увеличению скорость в разы ато и сотни раз", также можно попробовать второй поток подключить.
do not use your brain
Кащей вне форума Ответить с цитированием
Старый 07.08.2013, 12:36   #3
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Ну или цитирую: "Небольшое изменение алгоритма может способствовать увеличению скорость в разы ато и сотни раз"
кого цитируешь, бессмертный?
rrrFer вне форума Ответить с цитированием
Старый 07.08.2013, 12:57   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,372
По умолчанию

Если елемент зависит от n-k..n+k то как тогда вообще вычислисть n+k елемент? Разве не получается circular reference?

А по теме, если хотите, чтоб вам подсказали как оптимизировать алгоритм, тогда надо озвучить сам алгоритм.
waleri вне форума Ответить с цитированием
Старый 07.08.2013, 16:13   #5
arm9n
Пользователь
 
Регистрация: 24.07.2013
Сообщений: 19
По умолчанию

Цитата:
Если елемент зависит от n-k..n+k то как тогда вообще вычислисть n+k елемент? Разве не получается circular reference?
Действительно, прошу прощения, стоит добавить, что формируется второй массив такого же размера, на основе первого
arm9n вне форума Ответить с цитированием
Старый 07.08.2013, 16:19   #6
arm9n
Пользователь
 
Регистрация: 24.07.2013
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Кащей Посмотреть сообщение
GPU, OpenCL....
Насколько я знаю, нет единого стандарта для использования ГПУ - у NVidia это CUDA, есть ещё какие то технологии, поэтому нет желания писать кроссGPUшное приложение.
Ну а опеКЛ же как то оптимизирует ресурсоёмкие процессы с помощью только ЦПУ? Я тоже хочу знать, как он это делает.
Поправьте меня, если я в чём-то ошибся

Последний раз редактировалось arm9n; 07.08.2013 в 16:22.
arm9n вне форума Ответить с цитированием
Старый 07.08.2013, 16:21   #7
arm9n
Пользователь
 
Регистрация: 24.07.2013
Сообщений: 19
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
А по теме, если хотите, чтоб вам подсказали как оптимизировать алгоритм, тогда надо озвучить сам алгоритм.
Так мой вопрос состоит только в оптимизации всего, кроме самого алгоритма, насколько это возможно
arm9n вне форума Ответить с цитированием
Старый 07.08.2013, 20:42   #8
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
кого цитируешь, бессмертный?
А чёрт его знает.
do not use your brain
Кащей вне форума Ответить с цитированием
Старый 07.08.2013, 21:14   #9
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Цитата:
Сообщение от arm9n Посмотреть сообщение
Насколько я знаю, нет единого стандарта для использования ГПУ - у NVidia это CUDA, есть ещё какие то технологии, поэтому нет желания писать кроссGPUшное приложение.
Ну а опеКЛ же как то оптимизирует ресурсоёмкие процессы с помощью только ЦПУ? Я тоже хочу знать, как он это делает.
Поправьте меня, если я в чём-то ошибся
OpenCL... если я не ошибаюсь ничего не оптимизирует с помощью ЦПУ а только разбивает на потоки программу и массивы рвёт на куски. ЦПУ щас одноядерными вроде не делают, наверное по етому тебе кажется что чтото оптимизируется.
И вопрос, нахрена тебе именно 2 секунды скорость выполнения, а не 10?
do not use your brain

Последний раз редактировалось Кащей; 07.08.2013 в 21:23.
Кащей вне форума Ответить с цитированием
Старый 07.08.2013, 22:41   #10
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,372
По умолчанию

Цитата:
Сообщение от arm9n Посмотреть сообщение
Так мой вопрос состоит только в оптимизации всего, кроме самого алгоритма, насколько это возможно
Ну это особого ускорения не даст.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивом ReMicroN Помощь студентам 1 06.05.2012 11:05
Работа с массивом Aleks2215 Microsoft Office Excel 10 04.11.2010 23:38
Работа с массивом ZOHAN Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 16.04.2010 01:20
работа с массивом Андрей.12 Помощь студентам 2 22.10.2009 00:25
работа с массивом begemotikdin Паскаль, Turbo Pascal, PascalABC.NET 2 21.06.2008 21:40