Android Clang 5.0 omp_in_parallel возвращает 0

Я пытаюсь запустить ниже кода OpenMP на Android, но это не работает. Может кто-нибудь объяснить, если мне что-то не хватает?

Я использую -fopenmp для компиляции и компоновки.

 CFLAGS += -fopenmp
 LDFLAGS += -fopenmp

Компилятор - Clang 5.0

Компоновщик - LLVM

Устройство - Nexus 7

Ос - Android 6.0.1

    omp_set_num_threads(4); //initialise thread count for 4 core cpu   
    #pragma omp parallel num_threads(4)
    for( int i = 1; i< 10; i++ )
    {
       std::string out = std::to_string( omp_in_parallel() );
       androidLog( out.c_str() );
    }                                                                                                                          

Это не ответ на вашу проблему, но проверьте, является ли функция androidLog потокобезопасной. Если нет, вам необходимо синхронизировать его вызовы, например, с помощью #pragma omp critical.

Daniel Langr 15.03.2018 09:39

Вы заставили это работать?

rpattabi 04.06.2018 07:53

@rpattabi нет, я до сих пор не знаю, почему это не сработало

Bharat Ahuja 04.06.2018 20:02

Пробовал сейчас, с недавним NDK r17 работает нормально. Я использую CMake, а -fopenmp для компоновщика не нужен. Вместо этого скомпонован с библиотекой omp.

rpattabi 06.06.2018 08:47

@rpattabi может быть я использовал старую руку abi lib с обновлением, это тоже работает для меня ..

Bharat Ahuja 09.06.2018 00:54
1
5
190
0

Другие вопросы по теме