Microsoft представила открытую спецификацию GPU-вычислений на C++ с помощью C++ AMP

Microsoft представила свое видение в области инструментов разработки алгоритмов для GPU. Новое расширение C++ Accelerated Massive Parallelism или просто C++ AMP. Стандарт получит открытые спецификации и сможет в будущем использоваться на сторонних платформах и компиляторах. Предполагается применение C++ AMP для вычислений с помощью облачных служб, построенных на графических ускорителях.

Поддержка стандарта обещается в следующей версии Visual Studio. С подробностями относительно C++ AMP можно ознакомиться в блоге Дэвида Моса.

Когда Path.Combine не работает

Метод Path.Combine, предназначенный для облегчения жизни разработчика, в действительности, содержит подводный камень, не позволяющий его использовать так бездумно, как хотелось бы.  Нелогичность (логичность от Microsoft) замечена не только мною и заключается в том, что если второй путь является абсолютным, то возвращается только второй путь.

Например:

Path.Combine("dir1", @"dir2");

В Microsoft серьезно думают, что разработчик ожидает  получить dir2. Логичной  была  бы  проверка настоящего абсолютного пути(c именем диска c:dir2) , а не просто наличие слеша(Path.DirectorySeparatorChar) в начале.

Следующий вызов Path.Combine возвращает полную бессмыслицу «dir1.dir2»

String path = Path.Combine("dir1", @".dir2");

Мораль проста — помнить об этой особенности и писать свой костыльный Path.Combine.

3 000 000 $ за лучший алгоритм

4 мая 2011 года крупнейшая здравоохранительная организация штата Калифорния «Heritage Provider Network» сообщила о проведении конкурса на лучший алгоритм прогнозирования, благодаря которому станет возможным сократить расходы на здравоохранение.

Конкурс стартовал ещё 4 апреля 2011 года  и будет длиться почти 2 года — до 3 апреля 2013 года.

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

В качестве исходных данных предоставляются анонимные выборки аналогичных данных за минувшие 3 года.

Конкурс проходит в три этапа. На каждом этапе выбирается 2 победителя, каждый из которых получает гарантированный приз от 20 до 60 тыс. долларов США в соответствии с условиями акции. Победители каждого этапа будут оглашены на конференциях O’Reilly’s Strata Conference, которые пройдут в Нью-Йорке, а затем в Санта-Клара (Калифорния).

Дэдлайн первого этапа — 31 августа 2011 года.

В качестве оценки и сравнения результатов участников применяется метрика, описанная в правилах конкурса.

Правила конкурса и другую полезную информацию можно узнать на официальном сайте. Чтобы принять участие, достаточно просто зарегистрироваться, введя свой e-mail, и подтвердить согласие с правилами, после чего для скачивания будут доступны исходные данные в виде .csv файлов и спецификация к ним.

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

Превращаем картинку в звук

Попробуем заняться довольно бессмысленным занятием, а именно получением звука с определенной  спектрограммой. Вдруг ряды любителей  ЭГФ сократятся, не в обиду фанатам фильма «Белый шум» 🙂
Итак,  начнем с моделирования на Matlab. Хотим алгоритм, позволяющий переводить звук в картинку-спектрограмму и обратно. Логично будет начать с вычисления спектрограммы, по которой будет вычисляться изображение.

Читать далее Превращаем картинку в звук

10 способов проверить число на то, что оно является степенью двойки

В статье на сайте exploringbinary.com описаны алгоритмы определения, является ли число двойкой в какой-либо степени.

Самый быстрый способ:

int isPowerOfTwo (unsigned int x)
{
return ((x != 0) && ((x & (~x + 1)) == x));
}

Онлайн IDE

Сервис IDEOne.com представляет собой on-line среду разработки для множества языков программирования, включая C++, С#, Java,… Наиболее важной возможностью является функция выполнения программы, что может быть очень полезно при отсутствии под рукой необходимых средств разработки