Где я могу найти информацию об общих приемах SIMD? Я имею систему команд и знаю, как написать нехитрый код SIMD, но я знаю, SIMD теперь намного более мощен. Это может содержать сложный условный код без веток.
Например (ARMv6
), следующая последовательность инструкций устанавливает каждый байт Ул., равной неподписанному минимуму соответствующих байтов Ra и Rb:
USUB8 Rd, Ra, Rb
SEL Rd, Rb, Ra
Ссылки на учебные руководства / редкие методы SIMD хороши также, :) ARMv6 является самым интересным для меня, но x86 (SSE...) / Неон (в ARMv7) / другие хороши также.
Один из лучших ресурсов Simd когда-либо был старый список рассылки Altivec. Хотя PowerPC / Altivec-специфический, я подозреваю, что многие материал в этом списке будут иметь общего интереса для тех, кто работает с другими архитектурами SIMD. К сожалению, этот список, похоже, теперь будет несуществительным после переезда на форум на Power.org, но вы можете найти архивированные версии этого. (Если нет, то дайте мне знать - у меня есть в значительной степени все сообщения от 2000 - 2007 гг.)
Также есть много потенциально полезной информации на Altivec, SSE, SIMD векторных и производительность в целом в http: //developer.apple.com/hardwaredrivers/ve/index.html, хорошая часть которого может быть передана на другие архитектуры SIMD.