Нет, нет, вы путаете. У GPU, грубо говоря, один поток команд на ядро, который выполняется множеством АЛУ одновременно + магия ветвления. А здесь наоборот, много потоков команд на ядро. И в ядре один детектор команд и один алу и множество контекстов потоков. В этом случае тысячи уже не ядер, а потоков не могут обратиться к памяти одновременно, а только один поток. И пока ожидается ответ памяти, ядро переключается на другой поток. Так понимаю, может пригодиться в специфических задачах, где не нужна большая скорость одного потока, а распараллеленность и низкое потребление.
Любой блок занимает место на кристалле и потребляет энергию.
Только если он работает. В современных процессорах отключаются блоки, которые не активны в данный момент, что позволяет экономить энергию. А кеш используется всегда.
Тут все критикуют статью, но есть тут одна идея, над которой думал ещё лет 15 назад, и вроде ещё ни где не видел реализованной: Это 1) отказаться от кеша (он занимает много места на кристалле и потребляет энергию) и 2) одно ядро будет выполнять много потоков по мере того, как данные будут приходить из памяти. В результате каждый поток будет очень медленным, но количество потоков будет очень большое и канал работы с памятью будет полностью нагруженным, в чём возможно будет выгода. Но это будет довольно специфический процессор далеко не для всех задач, но в чём-то особенный.
1) Когда это в одном файле на одном компьютере — это легко, а когда множество проектов, это не так быстро.
2) Это всё будут костыли, которые не везде и не всегда будут работать.
Ответ есть в той статье. Если считать поляризацию фотона, а потом обратно вернуть, то следующее считывание может дать другой результат с вероятностью 50 процентов. То открытие больше подходит для квантовых компьютеров. Проделывая одно вычисление на нём можно было считать несколько разных результатов. Реально сейчас можно сделать только одно считывание за одно вычисление.
object *b_ptr = a[xx];
b_ptr->ref_count++; — В этом случае то что передался указатель на объект, у которого счётчик ссылок уже нул уже является ошибкой.
Нет, для двойки тоже можно будет получить решение. Например для первого числа достаточно будет найти первую двойку, по номеру бита взять троичное число и вычесть его из общей суммы — результат представить как двоичное — первое число.
Входные числа:
10
01
11
Суммы по битам
1 21
2 12
Общая сумма
22
Если не будет ни одной единицы, и число двоек будет больше двух, то точного решения нельзя получить.
Решение не будет слишком отличаться от оригинального, вместо сложения по модулю два (xor), нужно будет использовать сложение по модулю три. И реализовать тритичный регистр.
Однако я удивлён, почему столько минусов моему комментарию. Похоже их ставят люди, которые не знают, не имели практики использования существующего применения CRC. Хотя в школе\университете и книгах всё подробно рассказывается. И коррекция ошибок на аппаратном уровне очень легко реализуется. И в большинстве случаев её бывает достаточно.
Ещё было бы интересно (и немного проще в использовании) написание данного "расширения" на PHP с использованием FFI.
Интересный проект. Если бы был выложен исходный код, дал бы детям на изучение.
Будет ли эта функция бесплатной? Или бесплатной функция будет только для одного глаза?
Нет, нет, вы путаете. У GPU, грубо говоря, один поток команд на ядро, который выполняется множеством АЛУ одновременно + магия ветвления. А здесь наоборот, много потоков команд на ядро. И в ядре один детектор команд и один алу и множество контекстов потоков. В этом случае тысячи уже не ядер, а потоков не могут обратиться к памяти одновременно, а только один поток. И пока ожидается ответ памяти, ядро переключается на другой поток. Так понимаю, может пригодиться в специфических задачах, где не нужна большая скорость одного потока, а распараллеленность и низкое потребление.
Любой блок занимает место на кристалле и потребляет энергию.
Только если он работает. В современных процессорах отключаются блоки, которые не активны в данный момент, что позволяет экономить энергию. А кеш используется всегда.
Тут все критикуют статью, но есть тут одна идея, над которой думал ещё лет 15 назад, и вроде ещё ни где не видел реализованной: Это 1) отказаться от кеша (он занимает много места на кристалле и потребляет энергию) и 2) одно ядро будет выполнять много потоков по мере того, как данные будут приходить из памяти. В результате каждый поток будет очень медленным, но количество потоков будет очень большое и канал работы с памятью будет полностью нагруженным, в чём возможно будет выгода. Но это будет довольно специфический процессор далеко не для всех задач, но в чём-то особенный.
2) Это всё будут костыли, которые не везде и не всегда будут работать.
И такого кода было много.
2) Очень не хватает многопоточности, хотя бы в cli
b_ptr->ref_count++; — В этом случае то что передался указатель на объект, у которого счётчик ссылок уже нул уже является ошибкой.
10
01
11
Суммы по битам
1 21
2 12
Общая сумма
22
Если не будет ни одной единицы, и число двоек будет больше двух, то точного решения нельзя получить.