Согласен с Вами, только хочу добавить несколько своих мыслей по этому вопросу. Выходит, что есть продукты (по-сути живые организмы в виде растений), ход эволюции которых, человек старательно направляет в угодное себе русло. Есть разные инструменты: селекция, создание специальных условий...., и вот теперь появились механизмы ГМО.
Я не сторонник мракобесов или тех, кто кричит, что «ГМО — абсолютно безопасно», и поэтому у меня возникает следующий вопрос. Не может ли быть так, что старые методы по природе своей неспособны ни при каких обстоятельствах дать результаты доступные ГМО, которые каким-то неизученным способом могут навредить человеку. На математическом примере: обычные методы действуют в вещественных числах, а вот ГМО нас выводит в комплексную плоскость. То есть, как я понимаю, традиционно кукурузу с рыбой не совокупишь.
И тут же возникает мысль, что современные стандарты безопасности и лабораторные тесты могут быть «переобучены» именно на эту область вещественных чисел, доступную только традиционным методам.
Рассказываю мой личный опыт. Участвовал я в этом конкурсе: http://www.dislab.org/GraphHPC-2015/en/contest.php Суть конкурса кратко: есть 3 вида систем: 2xCPU, CPU+GPU, какой-то суперкомпьютер, нужно: реализовать наиболее эффективный алгоритм построения минимального остовного дерева в графе.
В один момент я решил воспользоваться мощью CUDA. Все написал, исправил баги, работает правильно… но в 4 раза медленней чем на CPU в 8 потоков. Как же так? А вот в CUDA каждое ветвление в коде (if, for, while) работает не как на обычном CPU: группы потоков в CUDA выполняет одни и те же операции с разными данными. В случае ветвлений группы приходится делить на части по ветви условий. Причем группы сопоставляются каким-то вычислительным частям, которых ограниченное количество. В итоге все начинает дико тормозить. Сейчас точно всех тонкостей не помню, т.ч. выше могу где-то быть не прав.
В общем: CUDA поддается для изучения даже школьникам — там нет сложного API. Но написать алгоритм так, чтобы он всеми инструментами мог эффективно воспользоваться — нетривиально. В качестве примера можете посмотреть стандартные вещи — нахождения максимума в массиве, подсчет суммы элементов или перемножение матриц. Это довольно простые вещи, но чтобы работали эффективно на CUDA приходится придумывать нетривиальные приемы.
Господа, я не могу понять, почему статья снова вызвала такой шквал саркастического негодования в духе «Ахаха, русские ученые только-только добрались до CUDA»? Прослушав несколько курсов по этой технологии, я пришел к выводу: написать эффективную программу на CUDA не так-то просто, как кажется. В CUDA нетривиальная модель памяти, потоки далеки от потоков в смысле CPU + миллион тонкостей с кэшами, константной памятью, ветвлениями и циклами. Это не openMP, где можно тупо расставить #pragma omp parallel for и добиться ускорения. Часто алгоритм приходится почти полностью перерабатывать или даже создавать новый, учитывающий особенности архитектуры. Безусловно, без глубокого понимания уравнений, которые решали авторы статьи, невозможно создать эффективный численный метод решения.
Т.е. если кратко: идея использовать GPU для вычисления — далеко не новая, а вот сама адаптация каждого конкретного алгоритма под графические карты — это уже достижение.
Я конечно понимаю, что статья про японский, но обилие слов паразитов типа «собсно» и каких-то очевидных опечаток типа «начать ими писать было не можно» затрудняет чтение. Да и манера изложения со всякими «Фух», «Ну и наконец» создает впечатление будто вы статью из-под палки пишете (ИМХО).
Я не сторонник мракобесов или тех, кто кричит, что «ГМО — абсолютно безопасно», и поэтому у меня возникает следующий вопрос. Не может ли быть так, что старые методы по природе своей неспособны ни при каких обстоятельствах дать результаты доступные ГМО, которые каким-то неизученным способом могут навредить человеку. На математическом примере: обычные методы действуют в вещественных числах, а вот ГМО нас выводит в комплексную плоскость. То есть, как я понимаю, традиционно кукурузу с рыбой не совокупишь.
И тут же возникает мысль, что современные стандарты безопасности и лабораторные тесты могут быть «переобучены» именно на эту область вещественных чисел, доступную только традиционным методам.
В один момент я решил воспользоваться мощью CUDA. Все написал, исправил баги, работает правильно… но в 4 раза медленней чем на CPU в 8 потоков. Как же так? А вот в CUDA каждое ветвление в коде (if, for, while) работает не как на обычном CPU: группы потоков в CUDA выполняет одни и те же операции с разными данными. В случае ветвлений группы приходится делить на части по ветви условий. Причем группы сопоставляются каким-то вычислительным частям, которых ограниченное количество. В итоге все начинает дико тормозить. Сейчас точно всех тонкостей не помню, т.ч. выше могу где-то быть не прав.
В общем: CUDA поддается для изучения даже школьникам — там нет сложного API. Но написать алгоритм так, чтобы он всеми инструментами мог эффективно воспользоваться — нетривиально. В качестве примера можете посмотреть стандартные вещи — нахождения максимума в массиве, подсчет суммы элементов или перемножение матриц. Это довольно простые вещи, но чтобы работали эффективно на CUDA приходится придумывать нетривиальные приемы.
Т.е. если кратко: идея использовать GPU для вычисления — далеко не новая, а вот сама адаптация каждого конкретного алгоритма под графические карты — это уже достижение.