IDE не будет создавать артефакты jar автоматически на основе файлов build.gradle.
Если вы хотите настроить некоторые специфические аспекты артефактов из сценариев Gradle, рассмотрите возможность использования gradle-idea-ext-plugin
. См. Артефакты DSL в разделе документации плагина.
OpenMP и OpenCL отличны, но могут быть сделаны сотрудничать. Ни один из них не должен "повреждать" другой.
Ради аргумента давайте предположим, что существует компромисс между уменьшением изменений в существующей кодовой базе и производительностью или вычислительной мощностью. OMP "легок" в этом, можно применить его "волшебно", чтобы смущающе быть параллельными проблемам с быстрой прагмой или два.
OpenCL представляет совершенно новые высокоуровневые понятия вне типичных моделей потоков ОС. Khronos, вероятно, не хочет заявлять это вслух, но его происхождение находится в CUDA NVIDIA. Если Вы хотите видеть, как это работает сегодня, загрузите SDK CUDA и начните играть. Если у Вас нет GPU NVIDIA, не волнуйтесь, существует программная возможность эмулятора GPU. OpenCL является удобной абстракцией GPU, который должен относиться к центральным процессорам, DSPS, "акселераторам" (псевдоним Khronos для CellBE IBM и вероятно Larrabee Intel).
OpenCL, как предполагается, "не записан непосредственно в C99". Это упоминается как расширение C99, так как его синтаксис подобен/идентичен C99 с некоторыми новыми ключевыми словами. Вы не можете назвать libc (или никакая другая библиотека) от ядра.
Вы могли использовать обоих, но теоретически, OpenCL должен быть "лучше" (в котором это портативно к большему количеству вычислительных устройств), если Вы готовы портировать свой код. Вы не можете использовать прагмы OpenMP в ядре OpenCL.
См. также:
По большей части OpenMP и OpenCL независимы друг от друга. Они - оба способы предоставить доступ разработчика к параллелизму на их платформе.
OpenMP разработан для работы хорошо с несколькими (идентичными) процессорами, где труд, который приблизительно равен, может быть (почти) автоматически сдан в аренду между ними.
OpenCL является несколько другим зверем, у которого это - действительно сияния при работе со специальными аппаратными средствами сопроцессора. Это позволит Вам разгружать часть усиленного перемалывания чисел к GPU или некоторому другому сопроцессору как в Ячейке. Однако это было также создано с идеей, что это могло использоваться для использования других главных процессоров, как теперь распространены в многоядерных компьютерах. Я полагал бы, что эта функция вторична, и если бы это - все, для чего Вы намереваетесь использовать OpenCL, я не рекомендовал бы использовать OpenCL.
Тем не менее я предположил бы, что это будет несколько сложно, хотя определенно не невозможный заставить OpenMP и OpenCL сотрудничать в той же проблеме.
Первая вещь думать о - то, что работает, Вы даете OpenCL. Это определенно было бы случаем, где Вы только захотите, чтобы OpenCL работал на GPU/Co-processor... не на других главных процессорах/ядрах, так как OpenMP является alreay, использующим их. Это не было бы (не был должен), ошибки приложения причины для выполнения OpenCL и OpenMP на том же главном процессоре но это вызовет планирование нежелательного, где и OpenMP и OpenCL, выполненный медленнее, потому что они тратят хороший блок своей временной коммутации назад и четвертый друг между другом. Это также произошло бы при выполнении какого-либо другого голодного процессора процесса на том же ядре одновременно.
Другая большая вещь думать о состоит в том, как Вы собираетесь запланировать задачи, которые действительно работают на Сопроцессоре. Его истинные, что можно подать большую работу в один из современных GPU, но существуют много вещей думать о с конвейером и использованием памяти. То, что Вы не хотели бы происходить, должно иметь 8 различных потоков OpenMP каждая попытка отправить их собственную работу на Сопроцессор одновременно. Я рекомендовал бы иметь только один поток, который управляет всеми взаимодействиями с Сопроцессором, таким образом, он может удостовериться, что подал его работа эффективным способом.
Тем не менее я уверен, что существуют программы, которые имеют несколько типов задач, происходящих одновременно, где один тип задачи мог всегда сдаваться в аренду к Сопроцессору, и другой вид задачи мог быть обработан многоядерным главным процессором. Это было бы прекрасным примером времени для смешивания OpenMP и OpenCL.
Удачи!
Кстати, есть работа об openMp для gpgpu с использованием CUDA.