Я пытаюсь использовать Intel TBB в сегменте кода разгрузки Xeon Phi. Код не компилируется с ошибкой error : *MIC* cannot open source file "tbb\parallel_for.h"
У меня установлен стек MPSS, я запустил binutils.msi
Утилита, и мой включает в верхней части выгруженного файла кода выглядит следующим образом:
#include <offload.h>
#pragma offload_attribute(push, target(mic))
#include <tbb\parallel_for.h>
#pragma offload_attribute(pop)
//other includes and code follows
Почему это не удается?
Что мне нужно изменить, чтобы разгрузить и успешно запустить мой код?
РЕДАКТИРОВАТЬ :
После добавления -tbb
опцию «Дополнительные параметры для MIC Offload Compiler», компилятор нашел <tbb\parallel_for.h>
однако файл выдает несколько предупреждений и ошибок о том, что код библиотеки tbb не помечен как общий. следует мой выгруженный сегмент кода.
#pragma offload target(mic:0) in(nums) out(results)
tbb::parallel_for<int>(0,ARRAY_SIZE,1,[&](int i)
{
results[i] = findZero(nums[i]);
});
Компилятор разгрузки в основном состоит из двух (очень) разных компиляторов, вызываемых отдельно для одного и того же кода. Каждый из них обычно имеет свою собственную командную строку, include и пути к библиотекам; и не все параметры командной строки переведены с хоста на компилятор MIC. В случае TBB, компилятор имеет специальную опцию /Qtbb
или просто -tbb
который заботится обо всех путях для обоих компиляторов.
Пожалуйста, обратитесь к tbb\examples\GettingStarted\SUB_STRING_FINDER\sub_string_finder_extended.cpp
как использовать TBB из разгрузочного региона. И проверить Makefile
о том, как построить пример.
Для запуска кода из среды MSVC необходимо настроить ту же среду, что и для компилятора Intel, использованного для построения примера GettingStarted \ Sub_string_finder. Простой способ дублировать среду внутри MSVC — запустить ее из того же консольного окна, где работает пример:
Или, в частности, вам нужно установить MIC_LD_LIBRARY_PATH
переменная среды для указания на двоичные файлы MIC TBB, как показано здесь для других библиотек.