Что делает программирование для Процессора Ячейки PS3, влекут за собой?

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

подход может быть лучшим в зависимости от другого расположения rerquirements, и предложенный подход здесь является просто возможной альтернативой.

<table cellspacing="0">  
    <tr>    
        <td>no border</td>    
        <td>no border here either</td>  
    </tr>  
    <tr>
        <td>
             <table style="border: thin solid black">
                  <tr>    
                        <td>one</td>    
                        <td>two</td>  
                  </tr>  
                  <tr>    
                      <td>three</td>    
                      <td>four</td>  
                  </tr>  
             </table>
         </td>
    </tr>
    <tr>    
         <td colspan="2">once again no borders</td>  
    </tr>  
    <tr>
        <td>
             <table style="border: thin solid black">
                  <tr>    
                        <td>hello</td>  
                   </tr>
             </table>
         </td>
    </tr>
    <tr>    
         <td colspan="2">world</td>  
    </tr>
</table>
11
задан KingNestor 31 August 2009 в 05:09
поделиться

4 ответа

В дополнение ко всему, что упоминает Джордж, SPU действительно лучше рассматривать как потоковые векторные процессоры. Они работают лучше всего, когда у вас есть алгоритм, который работает с длинными последовательностями числовых данных, которые могут передаваться через ограниченную память SPU через DMA, вместо того, чтобы загружать блок памяти SPU, пытаться работать с ним, обнаруживая, что ему нужно чтобы следовать по указателю куда-то за пределами его памяти, загрузить этот , продолжить движение, найти еще один и т. д.

Итак, программирование для них - это не простая модель параллелизма и потоков; это больше похоже на высокопроизводительные численные или научные вычисления. Это также неравномерный доступ к памяти, доведенный до крайности.

Кроме того, каждый процессор работает с глубокими конвейерами, поэтому программист должен быть более осведомлен об опасностях данных, пузырях инструкций и всех многочисленных микрооптимизациях, о которых нам говорят, что компилятор «должен» позаботиться о нас (но на самом деле это не так). Такие вещи, как неверно предсказанные переходы, загрузка-попадания-хранилища, промахи в кэше и т. Д., Вредят намного больше, чем они могут причинить неработающий процессор, который может манипулировать порядком операций, чтобы скрыть такие задержки.

Для конкретных примеров. посетите блог Майка Эктона CellPerformance . Майк - мой любимый скряга в бизнесе старой школы, довольный сборками, и он действительно заслужил свое внимание в этом вопросе.

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

Для конкретных примеров, посмотрите Майка Эктона CellPerformance ] блог. Майк - мой любимый скряга в бизнесе старой школы, довольный сборками, и он действительно заслужил свое внимание в этом вопросе.

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

Для конкретных примеров, посмотрите Майка Эктона CellPerformance ] блог. Майк - мой любимый скряга в бизнесе старой школы, довольный сборками, и он действительно заслужил свое внимание в этом вопросе.

18
ответ дан 3 December 2019 в 01:39
поделиться

Полностью согласен с Джорджем Филипсом и Crashworks. Единственное, что я бы добавил, это то, что программирование SPU в основном связано с управлением заданиями. Чтобы получить максимальную отдачу от SPU, вам нужно, чтобы они работали и возвращали результаты. Нет смысла заставлять один SPU перебирать сложную постобработку, если вам нужно сидеть и ждать результатов для кадра, а остальные ваши SPU простаивают. Так что то, как вы распределяете свои рабочие места, требует много размышлений, и это имеет большое влияние на то, как вы разбиваете свои данные.

3
ответ дан 3 December 2019 в 01:39
поделиться

Ячейка PS3 состоит из 6 процессоров SPU. Каждый из них имеет 256 КБ не разделяемой памяти и подключается через высокоскоростное кольцо, которое обеспечивает DMA между собой и хост-процессором PowerPC. Они не передаются по конвейеру и не кэшируются. Это отличает его от многоядерного процессора x86 с общей памятью, конвейерной обработкой и кэшированием. Кроме того, процессоры SPU не используют тот же набор инструкций, что и PowerPC, поэтому у вас есть некоторая асимметрия.

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

На высоком уровне программа должна быть разбита на задачи, которые вписываются в ячейку ' жесткий предел памяти. Они могут выполняться параллельно, и каждая подзадача может быть упорядочена для доступного процессора Cell. На низком уровне компилятору (или программисту на сборке) нужно будет усерднее работать, чтобы сгенерировать код, который быстро запускается на процессоре - никаких уловок во время выполнения для ускорения работы недоступно. Теория состоит в том, что эти дружественные к программисту / компилятору функции требуют микросхемы и скорости, которые можно лучше потратить, давая вам больше и быстрее SPU. Конечно, вы не получите больше SPU на PS3, но в общем случае вы получите больше SPU на количество транзисторов, доступных на чипе.

компилятору (или программисту на сборке) нужно будет усерднее работать, чтобы сгенерировать код, который быстро работает на процессоре - никаких уловок во время выполнения для ускорения работы недоступно. Теоретически эти удобные для программиста / компилятора функции требуют затрат кремния и скорости, которые лучше потратить на предоставление большего количества и более быстрых SPU. Конечно, вы не получите больше SPU на PS3, но в общем случае вы получите больше SPU на количество транзисторов, доступных на чипе.

компилятору (или программисту на сборке) нужно будет усерднее работать, чтобы сгенерировать код, который быстро работает на процессоре - никаких уловок во время выполнения для ускорения работы недоступно. Теоретически эти удобные для программиста / компилятора функции требуют затрат кремния и скорости, которые лучше потратить на предоставление большего количества и более быстрых SPU. Конечно, вы не получите больше SPU на PS3, но в общем случае вы получите больше SPU на количество транзисторов, доступных на чипе.

14
ответ дан 3 December 2019 в 01:39
поделиться

«Во всех статьях, которые я слышу о разработке для PS3, обсуждается« Обучение программированию на клеточном процессоре ». Что это на самом деле означает, помимо размахивания руками? "

Что ж, вещи, с которыми вам приходится иметь дело с SPU ...

  • Атомарные операции (стиль попытка-сброс без блокировки).
  • Сильное различие между областями памяти . Вы должны знать, какой указатель указывает на какую область памяти, или вы все испортите.
  • Нет принудительного аппаратного различия между данными и кодом. Это на самом деле забавная вещь, вы можете настроить динамическую загрузку кода и, по сути, потоковое выполнение подпрограмм. Самомодифицирующийся код возможен, но не обязательно практичен на SPU.
  • Отсутствие аппаратных средств отладки.
  • Ограниченный размер памяти.
  • Быстрый доступ к памяти.
  • Набор инструкций сбалансирован по отношению к операциям SIMD.
  • Ошибки с плавающей точкой.

В идеале, вы хотите, чтобы SPU все время выполняли полезную работу, но это действительно сложно. Они не только плохо подходят для решения некоторых типов проблем, но часто перевод системы для повышения эффективности на SPU может включать в себя полную переработку. Отладка проблем, которые было бы легко обнаружить с помощью PPU, иногда может занять несколько дней с SPU.

Я думаю, что когда люди используют фразу «обучение программированию ячейки», они в основном машут руками. Вы можете изучить основы за неделю, проблема заключается в том, чтобы попытаться применить эти знания к реальному коду ... который часто уже существует и не находится в форме, хорошо подходящей для использования в SPU.

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

Я думаю, что когда люди используют фразу «обучение программированию ячейки», они в основном машут руками. Вы можете изучить основы за неделю, проблема заключается в том, чтобы попытаться применить эти знания к реальному коду ... который часто уже существует и не находится в форме, хорошо подходящей для использования в SPU.

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

Я думаю, когда люди используют фразу «обучение программированию ячейки», они в основном машут руками. Вы можете изучить основы за неделю, проблема заключается в том, чтобы попытаться применить эти знания к реальному коду ... который часто уже существует и не находится в форме, хорошо подходящей для использования в SPU.

в основном они машут руками. Вы можете изучить основы за неделю, проблема заключается в том, чтобы попытаться применить эти знания к реальному коду ... который часто уже существует и не находится в форме, хорошо подходящей для использования в SPU.

в основном они машут руками. Вы можете изучить основы за неделю, проблема заключается в том, чтобы попытаться применить эти знания к реальному коду ... который часто уже существует и не находится в форме, хорошо подходящей для использования в SPU.

3
ответ дан 3 December 2019 в 01:39
поделиться