Я пытаюсь запустить ниже кода 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() );
}
Вы заставили это работать?
@rpattabi нет, я до сих пор не знаю, почему это не сработало
Пробовал сейчас, с недавним NDK r17 работает нормально. Я использую CMake, а -fopenmp для компоновщика не нужен. Вместо этого скомпонован с библиотекой omp.
@rpattabi может быть я использовал старую руку abi lib с обновлением, это тоже работает для меня ..
Это не ответ на вашу проблему, но проверьте, является ли функция
androidLogпотокобезопасной. Если нет, вам необходимо синхронизировать его вызовы, например, с помощью#pragma omp critical.