Мой процессор

Автор goran d, 04.02.2016 00:54:16

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Алексей Кириенко

А в чем собственно новизна проекта ?
Чуть больше конвейеров... чуть больше инструкций  исполняемых за такт ...
Экстнесив !

Мне кажется будущее   за чипами с изменяемой архитектурой !

Лет  десять назад читал о проекте финской команды пилившей современную видео карту на "программируемый логике" (не знаю что у них   в результате получилось но чисто технических  проблем вроде  у них не было )...

Еще читал о гибридном чипе российской разработки переключающегося из обычного "процессорного режима"  в режим аппаратной эмуляции нейросетей  ...
(Кажется NeuroMatrix http://studopedia.ru/3_174439_neyroprotsessor-NeuroMatrix-NM.html
                       http://www.pcweek.ru/pc/article/detail.php?ID=56946)

То есть   технология изменяемой архитектуры уже реально применяется . И я думаю именно за ней будущее !
Per aspera ad astra !

Кубик

http://vistanews.ru/science/63101  ,  http://ria.ru/science/20160628/1453742744.html
А вот это в принципе не новость, но..представьте стандартное ПО такого рода, доступное под любые ПК и ОС для решения не графических задач - не правда ли, многим хозяевам рынка это не понравится..
И бесы веруют... И - трепещут!

Kap

ЦитироватьКубик пишет:
стандартное ПО такого рода, доступное под любые ПК и ОС для решения не графических задач
CUDA.

Алексей Кириенко

#23
Кубик пишет:
Цитироватьhttp://vistanews.ru/science/63101 , http://ria.ru/science/20160628/1453742744.html
А вот это в принципе не новость, но..представьте стандартное ПО такого рода, доступное под любые ПК и ОС для решения не графических задач - не правда ли, многим хозяевам рынка это не понравится..
http://www.nvidia.ru/object/cuda-parallel-computing-ru.html

Увы, далеко не все расчеты можно ускорить подобным образом .... но всевозможное моделирование вполне потянет да и просто разрядность шины с частотами памяти в GPU разумеется опережает обычные CPU   ...
GPU
Интересно, а неросети с применением  GPU строить можно ? (Главное узкое место в моделях нейросетей в невозможности эмулировать реальный параллелизм для каждого нейрона, а с "виртуальными вычислительными боками" современных GPU  все может быть гораздо веселее   )
Per aspera ad astra !

Kap

ЦитироватьАлексей Кириенко пишет:
Интересно, а неросети с применениемGPU строить можно ?
Можно.

Not

ЦитироватьАлексей Кириенко пишет:

Интересно, а неросети с применением GPU строить можно ? (Главное узкое место в моделях нейросетей в невозможности эмулировать реальный параллелизм для каждого нейрона, а с "виртуальными вычислительными боками" современных GPU все может быть гораздо веселее )
Можно, и строят, причем весьма эффективные. Фокус в том, чтобы выбирать минимальную разрядность чисел: восьми или даже четырех разрядов обычно достаточно для весовой функции "нейрона". На такой разрядности GPU дают максимальную производительность.

Татарин

ЦитироватьNot пишет:
ЦитироватьАлексей Кириенко пишет:

Интересно, а неросети с применением GPU строить можно ? (Главное узкое место в моделях нейросетей в невозможности эмулировать реальный параллелизм для каждого нейрона, а с "виртуальными вычислительными боками" современных GPU все может быть гораздо веселее )
Можно, и строят, причем весьма эффективные. Фокус в том, чтобы выбирать минимальную разрядность чисел: восьми или даже четырех разрядов обычно достаточно для весовой функции "нейрона". На такой разрядности GPU дают максимальную производительность.
Никак не оспаривая применимость и эффективность GPU для нейросетей... 
Всё-таки 4 разряда - это должна быть какая-то очень специфичная сеть. Не представляю себе практической задачи, где этого было бы достаточно.

Not

ЦитироватьТатарин пишет:
Всё-таки 4 разряда - это должна быть какая-то очень специфичная сеть. Не представляю себе практической задачи, где этого было бы достаточно.
Достаточно для сетей применяемых в Deep Learning. Например здесь.

dmdimon

высокоуровневые языки для работы с GPU позволяют эффективно работать с полубайтовыми коэффициентами? Скажем даже шире - с менее, чем четверьтьрегистрами?
push the human race forward

Kap

Цитироватьdmdimon пишет:
высокоуровневые языки для работы с GPU позволяют эффективно работать с полубайтовыми коэффициентами?
Зачем если однобайтовые то-же канают?

dmdimon

#30
так вот же выше - 4 разряда типа для эффективности?


off/ я просто кой-чего оптимизировал под GPU и все оказалось очень нетривиально. В разы буквально зависимо от оптимизации под абсолютно конкретное железо - количество вычислительных ядер, ширина шины, размеры очередей, организация памяти, задержки, накладные расходы - в общем, полная опа. И вот неаккуратная работа с разрядностью памяти и шины - была просто атас как заметна.
push the human race forward

Алексей Кириенко

#31
Разрядность для неросети вообще-то  не очень актуальна ... Её относительно легко можно подкрутить увеличением числа входов упростив  вплоть до "однобитовых нейрон" ...  А там все же  аж 4 бита и каждое "виртуальное ядро"(как я понял вычислительный блоки в современном GPU могут иметь  довольно непрямое отношение к ядрам физическим  ) может "чуть" по больше чем отдельно  взятый "искусственный нейрон" . (То есть может эмулировать целый небольшой кластер нейросети ).
Per aspera ad astra !

dmdimon

не вопрос. Я говорю о том, что (из моего опыта) при нехорошей разрядности данных производительность падает в разы,  а выше написано, что 4 бита - для производительности. Меня это сильно смущает.
push the human race forward

Not

Цитироватьdmdimon пишет:
не вопрос. Я говорю о том, что (из моего опыта) при нехорошей разрядности данных производительность падает в разы, а выше написано, что 4 бита - для производительности. Меня это сильно смущает.
Все верно, использование битовых операций "в лоб" ухудшает производительность, поэтому для числа бит меньше чем 32 используют упаковку двух и более чисел в одно. Очевидно, что программирование усложняется, но производительность при этом растет линейно от количества упакованных чисел.

dmdimon

/offtop это само собой. Но в данном конкретном случае упаковать предлагается мультипликативные коэффициенты. Плюс писать все-таки желательно не на асме - иначе и так призрачная аппаратная независимость прикажет долго жить... Имхо результирующий гимор себя не оправдает. Но сугубое имхо.
push the human race forward

Not

фокус в специальных оптимизациях, например в запутывании:

Цитировать35.2.4 The Swizzle Operator
An easily overlooked or underutilized feature of GPU programming is the swizzle operator. Because all registers on the GPU are four-vectors but not all instructions take four-vectors as arguments, some mechanism for creating other-sized vectors out of these four-vector registers is necessary. The swizzle operator provides this functionality. It is syntactically similar to the C concept of a structure member access but has the additional interesting property that data members can be rearranged, duplicated, or omitted in arbitrary combinations, as shown in the following example:
 
float4
f = float4(1.0f, 2.0f, 3.0f, 4.0f);
float4
g = float4(5.0f, 6.0f, 7.0f, 8.0f);
float4 h = float4(0.1f, 0.2f, 0.3f, 0.4f);// note that h.w is syntactically equivalent to h.wwww
float4
out = f.xyyz * g.wyxz + h.w; // одна инструкция!
// multiply-and-accumulate again.
// result: out is (8.4f, 12.4f, 10.4f, 21.4f)