CnD

Скриншот программы:
CnD
Детали программы:
Версия: 2012.1
Дата загрузки: 14 Apr 15
Разработчик: Andreas Kloeckner
Тип распространения: Бесплатная
Популярность: 11

Rating: nan/5 (Total Votes: 0)

CnD является Python источник-источник переводчик, делает использование п-мерных массивов в C более приятным и NBSP; Это будет превратить этот код.:
недействительными sgemm (поплавок * а, поплавок * б, поплавок * с, Int N)
{
& NBSP; измерение "Фортран" а [п, п];
& NBSP; измерение "Фортран" б [N, N];
& NBSP; Размер C [N, N];
& NBSP; для (INT I = 1; я <= N; ++ я)
& NBSP; для (INT = 1; J <= N; ++ J)
& NBSP; {
& NBSP; поплавок TMP = 0;
& NBSP; для (INT = 1; к <= N; ++ K)
& NBSP; ТМР + = а [я, к] * б [K, J];
& NBSP; С [я-1, J-1] = TMP;
& NBSP;}
}
в этом:
недействительными sgemm (поплавок * а, поплавок * б, поплавок * с, Int N)
{
& NBSP; для (INT I = 1; я <= N; ++ я)
& NBSP; для (INT = 1; J <= N; ++ J)
& NBSP; {
& NBSP; поплавок TMP = 0;
& NBSP; для (INT = 1; к <= N; ++ K)
& NBSP; ТМР + = а [((- 1) * ((п - 1) + 1)) + (я - 1)] * б [((J - 1) * ((п - 1) + 1) ) + (- 1)];
& NBSP; С [((я - 1) * п) + (J - 1)] = TMP;
& NBSP;}
}
Вы также можете взглянуть на более комплексной, например, что показывает несколько лишних наворотов.
Единственный эффект размерности декларации изменить интерпретацию массива (IDX) оператора индекса. Заявления измерения подчиняются регулярные правила видимости C.
Я также хотел бы отметить, что CnD это надежный, анализатор на основе переводчик, не слоеное инструмент текст замены. Он понимает все C99, плюс многие GNU расширений.
Каждая спецификация оси в размерности декларации имеет следующий вид:
Начало: Конец: шаг: leading_dimension
начало может быть опущен. конец и шаг может быть опущено, но если данные после них должны быть указаны, их конечные двоеточия должны оставаться на месте. Например, спецификация ось: 5 просто указывает на шаг 5. шаг просто действует как множитель по индексу. Нет достоверности проверки вообще не делается на декларации размерности. Вы можете стрелять себе в ногу, как вам нравится.
Если макет дается как "С" или не дали вообще, следующие вещи верны:
- Массив выложил в строке-майор порядке.
- Конец индекс берется эксклюзивные, если он указан.
- В начало индекса по умолчанию 0.
Если макет дается как "Фортран", следующие вещи верны:
- Массив выложен в графе-майор порядке.
- Конец индекс берется включительно, если он указан.
- В начало индекс по умолчанию 1.
(Большинство) знаний, содержащихся в декларации размерности может быть reobtained программно по follwing функций:
- Rankof (а)
- Nitemsof (а)
- Lboundof (а, ось)
- Uboundof (а, ось) (возвращает указанный пользователем верхняя граница)
- Puboundof (а, ось) (возвращает индекс только в конце прошлого оси)
- Ldimof (а, ось)
- Strideof (а, ось)
В каждом случае ось должна быть постоянной целое число (не константа выражение, простое целое число).
Установка / Использование
Вы можете получить CND, загрузив архив с индексом пакета или из GitHub:
& NBSP; мерзавец клон Git: //github.com/inducer/cnd.git
& NBSP; кд CND
 Git подмодуль инициализации
& NBSP; мерзавец обновление подмодуль
Чтобы использовать CND, просто добавьте распределение-DIR / бен к вашему PATH.
Для начала, просто запустите (от в корне КНС):
и NBSP; примеры CD
& NBSP; ../ бен / cndcc GCC -std = c99 basic.c
& NBSP; ./ a.out
Если вы хотите получить более точный контроль над процессом перевода, команда CND выставляет только перевод источника к источнику. Обратите внимание, что CND ожидает препроцессированный источник. Вы можете передать опцию -E, чтобы иметь CND запуска препроцессора от источника для вас. Бег:
& NBSP; CND -h
чтобы получить полную справку по интерфейсу командной строки. Вы можете установить переменную окружения CND_CPP препроцессору вы хотите использовать.

Что нового В этом выпуске:

  • Синтаксис переход от [I, J] к [I, J] .
  • Еще более парсер поддержка реальных заголовков.

Требования

  • Python

Другие программы разработчика Andreas Kloeckner

PuDB
PuDB

20 Feb 15

PyOpenCL
PyOpenCL

28 Sep 15

Комментарии к CnD

Комментарии не найдены
добавить комментарий
Включите картинки!