реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
Grumbler_2002
сообщение May 12 2005, 20:26
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 5-01-05
Из: г. Зеленоград
Пользователь №: 1 817



Пишу такой текст:
for (i=0; i<N; i++)
{
Mas1[i]=0;
Mas2[i]=0;
}

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

Среда разработки VDSP4.0 SP1. Процессор SHARC 36x. Есть еще вопросы, связанные с оптимизацией по скорости, но пока некогда.
Go to the top of the page
 
+Quote Post
vet
сообщение May 13 2005, 05:17
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



memset ?


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
bve
сообщение May 13 2005, 07:12
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 316
Регистрация: 20-02-05
Из: Ленинградская обл.
Пользователь №: 2 765



А если:
register int x;
x=0;
for (i=0; i<N; i++)
{
Mas1[i]=x;
Mas2[i]=x;
}

Пройдет?
Go to the top of the page
 
+Quote Post
Grumbler_2002
сообщение May 14 2005, 20:43
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 5-01-05
Из: г. Зеленоград
Пользователь №: 1 817



Косяк вылечился сам по себе. В отгрузке посмотрел - косяк естьsmile.gif. Даже и не знаю, где искать причину. Буду по очереди править старый проект. Memset, к сожалению, не позволяет дальнейшую оптимизацию по скорости. То есть я поставил директиву #pragma vector_for перед циклом и компилятор загнал весь цикл в одну команду.
Go to the top of the page
 
+Quote Post
Grumbler_2002
сообщение May 18 2005, 16:49
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 5-01-05
Из: г. Зеленоград
Пользователь №: 1 817



А никто не знает, как выделить память в pm? Я имею ввиду выделение динамической памяти.
Go to the top of the page
 
+Quote Post
olefil
сообщение May 19 2005, 05:59
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 8-12-04
Пользователь №: 1 407



А есть вообще какой-то смысл выделять память в области программ. Во-первых e Sharc на это есть ограничения(см. по своему процу), а во-вторых логическая нагрузка такой операции?
Go to the top of the page
 
+Quote Post
Grumbler_2002
сообщение May 19 2005, 18:10
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 5-01-05
Из: г. Зеленоград
Пользователь №: 1 817



Смысл такой же, как и всегда - два операнда за команду перекидывать.
Go to the top of the page
 
+Quote Post
bve
сообщение May 20 2005, 07:34
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 316
Регистрация: 20-02-05
Из: Ленинградская обл.
Пользователь №: 2 765



Цитата(Grumbler_2002 @ May 18 2005, 19:49)
А никто не знает, как выделить память в pm? Я имею ввиду выделение динамической памяти.
*

Динамически память выделяется, насколько припоминаю, из HEAP, который
считается отображенным на DM. Для динамического распределения памяти в PM,
Вам, скорее всего, необходимо дополнить RUNTIME куском кода, аналогичным
*ALLOC и т.д. для выделения памяти в PM, плюс завести сегмент в PM, откуда будете
черпать память. Проще кусок выделить статически с помощью соответствующего
описателя массива, а к нему из разных мест программы обращаться через указатели.
Если Вы еще их обзовете как REGISTER, то будут использоваться регистры второго
DAG, что даст несомненный плюс...
Go to the top of the page
 
+Quote Post
Grumbler_2002
сообщение May 20 2005, 14:53
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 5-01-05
Из: г. Зеленоград
Пользователь №: 1 817



Ну дык я думал в том же ключе, а статику не хотелось использовать, чтобы зря память (не мою) не тратить. К сожалению, не штатными средствами лезть в память программ мне нельзя. Забьют сапогамиsmile.gif. Видимо, придется все-таки статику лепитьsad.gif(
Go to the top of the page
 
+Quote Post
olefil
сообщение May 23 2005, 05:21
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 8-12-04
Пользователь №: 1 407



Я, например, все не штатные алгоритмы на assembler делаю. И не надо возится с генерацией кода из С. А главное не надо пачить стандартные библиотеки. Хотя таким приходится заниматся не редко. Например выделять 2 сегмента heap.
Go to the top of the page
 
+Quote Post
Grumbler_2002
сообщение Jun 1 2005, 19:17
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 5-01-05
Из: г. Зеленоград
Пользователь №: 1 817



А почему получается разная скорость программы, если выделять массив в стеке, куче или глобально? Понять не могу, как лучше память выделить в смысле скорости.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 10:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01451 секунд с 7
ELECTRONIX ©2004-2016