LINUX.ORG.RU

История изменений

Исправление AntonI, (текущая версия) :

Все зависит от:

  1. того что хочется в этом цикле делать.

  2. хочется ли его делать параллельным.

  3. насколько тело цикла толстое (насколько критичны накладные расходы).

Варианты обственно такие:

  1. делаем один целочисленный счетчик по всей области и на каждой итерации переводим его в j0…3. Плюсы - это просто и хорошо параллелится. Минусы - это дорого (лишние телодвижения), но при условии что нужны j0…3. Если не нужны то это самый быстрый варинат.

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

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

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

Исправление AntonI, :

Все зависит от:

  1. того что хочется в этом цикле делать.

  2. хочется ли его делать параллельным.

  3. насколько тело цикла толстое (насколько критичны накладные расходы).

Варианты обственно такие:

  1. делаем один целочисленный счетчик по всей области и на каждой итерации переводим его в j0…3. Плюсы - это просто и хорошо параллелится. Минусы - это дорого (лишние телодвижения).

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

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

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

Исходная версия AntonI, :

Все зависит от:

  1. того что хочется в этом цикле делать.

  2. хочется ли его делать параллельным.

  3. насколько тело цикла толстое (насколько критичны накладные расходы).

Варианты обственно такие:

  1. делаем один целочисленный счетки по всей области и на каждой итерации переводим его в j0…3. Плюсы - это просто и хорошо параллелится. Минусы - это дорого (лишние телодвижения).

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

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

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