Intel SSE命令に関連する質問がありますが、それはSIMDプログラミング/並列処理の一般的なものです。
たとえば、1Dフィルター/畳み込みを考えることができます。カーネルのサイズが3の場合、入力配列の最初と最後の要素には隣接要素がないため、回避する必要があります(はい、境界条件を設定する必要があります)。その「特殊なケース」を入力配列の残りの要素とは別に扱うのは簡単です(上記のリンクのコードをチェックして、さまざまな「if」ステートメントを確認してください)。
たとえば、8ビットデータでSSEを使用する場合、一度に16個の値を計算できます(128ビット/8ビット=16の同時操作)。しかし、境界条件をどのように管理すればよいですか?この場合、配列サイズが16の倍数であっても、最後の16個の値(実際には15個)に問題があります。
問題を正しく説明しているかどうかわかりません。重要なのは、配列やSIMD命令を処理するときに、境界をどのように処理する必要があるかということです。関連するソースコードを検索しましたが、IntelのWebサイトでも、この点を説明するものは見つかりませんでした。どんなアイデアでも大歓迎です。