LINUX.ORG.RU

Выигрыш от перехода 32бит -> 64бит для вычислительного кода

 


1

2

Поделитесь историями успеха об ускорении вычислительных программ при переходе 32 -> 64 бит. Какого прироста в производительности можно ожидать? Интересует прежде всего Python (NumPy), но и чистый Си-код тоже.

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 2)

Я конечно не в курсе, но от чего должен быть выигрыш? Это всё равно, что спрашивать, что будет быстрее ездить: телега на трёх или четырёх колёсах? Без особой математически-вычислительной магии выигрыша (в плане скорости) скорей всего нет никакого.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Но про них и софт в курсе быть должен. Точнее gcc, asm-вставки (!), fortran-comliler и т.д. и т.п. (Та самая математически-вычислительная магия под конкретную архитектуру.) Да и выигрыш бутет (если) только на каких-то определённых задачах. (А то и проигрыш. Тут сравнивать надо.)

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)

есть очевидное(на доли процента) замедление .

ускорение только в случае расшивания узких мест по причине уменьшения вываливания стека из кэша по причине увеличения регистров общего назначения и их битности если компиляторы их используют и в других мелочах .

если прога не число дробилка скорость особе не меняется - на i/o паузах время влюбом случае просерается.

qulinxao ★★☆
()
Ответ на: комментарий от tailgunner

В 2 раза больше регистров.

Наверное ускорения можно ожидать от 64 -> 32. В смысле double -> float?

ebantrop
()

С какого хера производительность-то должна расти? Это только при обработке 64 битных данных.

yvv ★★☆
()

Зависит от задач. От 10 до 40%.

redgremlin ★★★★★
()

А вообще, у меня под столом как раз стоит машинка с дебианом 7 в двух вариантах. Давай код, проверю.

redgremlin ★★★★★
()
Ответ на: комментарий от Ford_Focus

Ох уж этот фороникс. У меня в тестах lame в трёх режимах (insane, standard, cbr) показал 96min@64 vs 100min@32, причём insane в 64битах оказался даже медленнее, standard был в пределах погрешности и заметный выигрыш был только в cbr.

redgremlin ★★★★★
()

Если ты до сих пор сидел на 32х битах, значит тебя пока не волнуют проблемы производительности;-)

AIv ★★★★★
()

код, мапающий 4G файл, стал работать намного быстрее.

anonymous
()

boinc сойдёт за вычислительный код? в сравнении с 32 битами на 64 производительность почти удваивается

anonymous
()
Ответ на: комментарий от beastie

Но про них и софт в курсе быть должен. Точнее gcc, asm-вставки (!), fortran-comliler

Они в курсе

fang
()
Ответ на: комментарий от beastie

Больше регистров, меньше спиллов. Ускорить можно в паталогических случаях в разы.

anonymous
()
Ответ на: комментарий от AIv

Если ты до сих пор сидел на 32х битах, значит тебя пока не волнуют проблемы производительности;-)

Да. Но скоро начнут.

tailgunner ★★★★★
() автор топика
Ответ на: комментарий от anonymous

boinc сойдёт за вычислительный код?

В общем, да.

в сравнении с 32 битами на 64 производительность почти удваивается

Спасибо, именно это я и надеялся услышать.

tailgunner ★★★★★
() автор топика
Ответ на: комментарий от redgremlin

Давай код, проверю.

Код дать не могу, но, если у тебя есть numpy, сравнительная скорость вот этого фрагмента меня тоже очень интересует.

#!/usr/bin/python

from numpy import random
from timeit import Timer

def test():
  shape = (102400,)
  t1 = random.standard_normal(shape)
  t2 = random.standard_normal(shape) * 1j

if __name__ == "__main__":
  print Timer("test()", "from __main__ import test").timeit(number=10)
tailgunner ★★★★★
() автор топика

Поделитесь историями успеха об ускорении вычислительных программ при переходе 32 -> 64 бит. Какого прироста в производительности можно ожидать?

0

откуда там прирост в математике? Думаешь SSE как-то по другому на 64х битах работает?

Прирост можно ждать только если у тебя твоя математическая программа жрёт >>4Gb оперативной памяти, причём рандомно. Да и то не слишком и сильный.

drBatty ★★
()
Ответ на: комментарий от anonymous

boinc сойдёт за вычислительный код? в сравнении с 32 битами на 64 производительность почти удваивается

у тебя наверное клиент собран под i80486. Откуда и разница.

drBatty ★★
()

возьми и собери openssl под 32 и 64 бита, погоняй встроенные тесты, сравни

Harald ★★★★★
()

В 2009 году я писал магистерский дисер по похожей теме. Я там среди прочего сравнивал производительность разных реализаций лапака на разных операционках. 64 было чуууть медленнее чем 32, но в пределах погрешности.

morse ★★★★★
()
Ответ на: комментарий от redgremlin

Теперь было бы интересно ещё и x32 для полноты.

gag ★★★★★
()

ускорении вычислительных программ

прироста в производительности

Python

wat

vasily_pupkin ★★★★★
()
Ответ на: комментарий от drBatty

откуда там прирост в математике?

Смотря какая математика. Ради разнообразия рекомендую посмотреть в набор SSE

vasily_pupkin ★★★★★
()
Ответ на: комментарий от drBatty

А если без SSE?

Про 4гб оперативной памяти - это такая лживая байда для домохозяек, ибо не 4гб оперативной, а 4гб виртуальной памяти в чем фейл думаю поймёшь.

superhackkiller1997
()
Ответ на: комментарий от tailgunner

SSE, AVX, нормальное распараллеливание и организация доступа к данным. Разрядность тут ИМНО дело десятое, просто действительно большие объемы данных (где действительно стоит остро вопрос с производительностью) на 32х битах не обрабатывают и за проблем с адресацией.

AIv ★★★★★
()
Ответ на: комментарий от AIv

SSE, AVX, нормальное распараллеливание и организация доступа к данным.

Это общие советы по повышению производительности или это всё лучше работает на 64бит?

tailgunner ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Это общие советы, причем доступ к данным (организация данных и действий обеспечивающая локальность данных) является основным способом оптимизации. Остальное способно ускорить код в разы, а кривой доступ тормозит на порядки. Но ты наверное не хуже меня про все это знаешь.

Я ХЗ про 32бита - за последние 7 лет я с ними ни сталкивался ни разу, если только на телефоне своем... но я на нем не считаю.

AIv ★★★★★
()
Последнее исправление: AIv (всего исправлений: 1)
Ответ на: комментарий от AIv

Ну, SSE и AVX - это наверняка сделано в используемых библиотеках, а локальность мы пока оптимизировать не можем, ибо NumPy. Я даже не уверен, что следует пытаться - в распараллеленном виде наша задача на i7-2600 считается в 5 раз быстрее, чем в чисто последовательном.

tailgunner ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Хорошо сделать векторизацию в общем виде не думаю что возможно. Насчет параллелизма аналогично. Но м.б. на ваших задачах оно и прокатывает. Другое дело, что оптимизировать надо только тогда, когда без этого совсем никак. Если готовые решения вас устраивают, так о чем еще парится?;-)

AIv ★★★★★
()
Ответ на: комментарий от AIv

Если готовые решения вас устраивают, так о чем еще парится?;-)

Для меня использование 64бит - это одно из «готовых решений».

tailgunner ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

я бы не стал ждать тут каких то чудес.

AIv ★★★★★
()
Ответ на: комментарий от nerdogeek

дополнительные регистры добавили в i386, назвали как-нибудь i786/whatever.

А для вас, Козлов, придумали x32 %)

tailgunner ★★★★★
() автор топика
Ответ на: комментарий от superhackkiller1997

А если без SSE?

а где ты сейчас найдёшь десктопный/серверный процессор без SSE? Напомню, оно в конце 90х появилось.

Про 4гб оперативной памяти - это такая лживая байда для домохозяек, ибо не 4гб оперативной, а 4гб виртуальной памяти в чем фейл думаю поймёшь.

нет, мне это непонятно. 4гб виртуальной памяти твоей домохозяйке мало? Расскажи, зачем ей больше. А то я не понимаю. (и дело тут да, не в физической, а именно в виртуальной).

PS: или вы тут про что сейчас? Про мобильные телефоны?

drBatty ★★
()
Ответ на: комментарий от tailgunner

Для меня использование 64бит - это одно из «готовых решений».

если стоит вопрос «надо-ли переходить на 64 бита?», я отвечу КОНЕЧНО НАДО! Хотя дело тут совсем НЕ в быстродействии. Просто возможна ситуация, когда 32 бита останутся только во всяких холодильниках, и тогда на них просто положат болт. Тогда и производительность упадёт. Телега с кобылой сейчас ничем не лучше, чем 100 лет назад. Просто потому, что никому не нужна.

drBatty ★★
()
Ответ на: комментарий от drBatty

а где ты сейчас найдёшь десктопный/серверный процессор без SSE? Напомню, оно в конце 90х появилось.

А причем тут когда оно появилось? Я про не юзанье его. Не юзаю SSE я могу писать более понтовые вещи под амд64, даже не расчихляя sse, уж не буду говорить про их фичастость в конце 90-х.

нет, мне это непонятно. 4гб виртуальной памяти твоей домохозяйке мало? Расскажи, зачем ей больше. А то я не понимаю. (и дело тут да, не в физической, а именно в виртуальной).

Нет, не понятно, ибо для тебя фиртуальная~=физическая. Заммапил 2гига - прощай оператива, чтобы ты смог заюзать все свои 4гига( да даже 3) - тебе надо сделать это через жопу, а зачем что-то делать через жопу, когда проще выкинуть 32битное убожество? Именно по этим причинам и пошло поверье, что маллок выделяет память, а маллок оперативасайз делать нельзя. Сейчас это можно, нужно - это красиво. Поэтому чем быстрее вымрет это 32битное убожество, тем легче мне будет.

Вобщем в сегодняшних реалиях 4недогб виртпамяти мало. 32бита убого. Смысла юзать нету.

superhackkiller1997
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.