Grumbler_2002 0 12 мая, 2005 Опубликовано 12 мая, 2005 · Жалоба Пишу такой текст: for (i=0; i<N; i++) { Mas1=0; Mas2=0; } после компиляции с оптимизацией по скорости получается трехкомандный цикл, одной из команд является вычисление нуля. Как эту бодягу вылечить? Среда разработки VDSP4.0 SP1. Процессор SHARC 36x. Есть еще вопросы, связанные с оптимизацией по скорости, но пока некогда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vet 0 13 мая, 2005 Опубликовано 13 мая, 2005 · Жалоба memset ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bve 1 13 мая, 2005 Опубликовано 13 мая, 2005 · Жалоба А если: register int x; x=0; for (i=0; i<N; i++) { Mas1=x; Mas2=x; } Пройдет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grumbler_2002 0 14 мая, 2005 Опубликовано 14 мая, 2005 · Жалоба Косяк вылечился сам по себе. В отгрузке посмотрел - косяк есть:). Даже и не знаю, где искать причину. Буду по очереди править старый проект. Memset, к сожалению, не позволяет дальнейшую оптимизацию по скорости. То есть я поставил директиву #pragma vector_for перед циклом и компилятор загнал весь цикл в одну команду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grumbler_2002 0 18 мая, 2005 Опубликовано 18 мая, 2005 · Жалоба А никто не знает, как выделить память в pm? Я имею ввиду выделение динамической памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
olefil 0 19 мая, 2005 Опубликовано 19 мая, 2005 · Жалоба А есть вообще какой-то смысл выделять память в области программ. Во-первых e Sharc на это есть ограничения(см. по своему процу), а во-вторых логическая нагрузка такой операции? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grumbler_2002 0 19 мая, 2005 Опубликовано 19 мая, 2005 · Жалоба Смысл такой же, как и всегда - два операнда за команду перекидывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bve 1 20 мая, 2005 Опубликовано 20 мая, 2005 · Жалоба А никто не знает, как выделить память в pm? Я имею ввиду выделение динамической памяти. <{POST_SNAPBACK}> Динамически память выделяется, насколько припоминаю, из HEAP, который считается отображенным на DM. Для динамического распределения памяти в PM, Вам, скорее всего, необходимо дополнить RUNTIME куском кода, аналогичным *ALLOC и т.д. для выделения памяти в PM, плюс завести сегмент в PM, откуда будете черпать память. Проще кусок выделить статически с помощью соответствующего описателя массива, а к нему из разных мест программы обращаться через указатели. Если Вы еще их обзовете как REGISTER, то будут использоваться регистры второго DAG, что даст несомненный плюс... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grumbler_2002 0 20 мая, 2005 Опубликовано 20 мая, 2005 · Жалоба Ну дык я думал в том же ключе, а статику не хотелось использовать, чтобы зря память (не мою) не тратить. К сожалению, не штатными средствами лезть в память программ мне нельзя. Забьют сапогами:). Видимо, придется все-таки статику лепить:(( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
olefil 0 23 мая, 2005 Опубликовано 23 мая, 2005 · Жалоба Я, например, все не штатные алгоритмы на assembler делаю. И не надо возится с генерацией кода из С. А главное не надо пачить стандартные библиотеки. Хотя таким приходится заниматся не редко. Например выделять 2 сегмента heap. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grumbler_2002 0 1 июня, 2005 Опубликовано 1 июня, 2005 · Жалоба А почему получается разная скорость программы, если выделять массив в стеке, куче или глобально? Понять не могу, как лучше память выделить в смысле скорости. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться