Berkus
в single-user mode тестируешь?
Andrey
вопрос по cmake. перед проектом задаю set(CMAKE_CXX_STANDARD 17) и set(CMAKE_CXX_STANDARD_REQUIRED ON). Если собирать с компилятором по умолчанию (xcode toolchain on macos) то все хорошо и компилятору передается флаг -std=gnu++1z. но если указать другой компилятор через опции cmake -DCMAKE_C_COMPILER и -DCMAKE_CXX_COMPILER то флаг не передается и ничего не комплируется. Как указать cmake чтобы он вызывал мой компилятор с нужным флагом?
Ioann_
если просто три цикла то cache скорее всего, prefetch используешь?
for (int i_3 = 0; i_3 < nColumnA; i_3 += BLOCK_STRIDE_ROW)
{
for (int i_1 = 0; i_1 < nRowA; i_1 += BLOCK_STRIDE_COL)
{
for (int i_2 = 0; i_2 < nColumnB; ++i_2)
{
C(i_1, i_3) += A(i_2, i_3) * B(i_1, i_2);
C(i_1 + 1, i_3) += A(i_2, i_3) * B(i_1 + 1, i_2);
C(i_1 + 2, i_3) += A(i_2, i_3) * B(i_1 + 2, i_2);
C(i_1 + 3, i_3) += A(i_2, i_3) * B(i_1 + 3, i_2);
}
}
}
Anonymous
Ioann_
То есть, код такой - самый что ни на есть примитивный. Размеры матриц - степени двойки, т.е выходы за границы нету
Berkus
Andrey
Ioann_
Видимо, скорее всего да, кеш. И префетч, видимо надо делать руками. Просто проблема в том, что там где он делается, а это уже asm код, тоже самое по прыгучести.
Berkus
clang из brew
а где ты эти переменные ставишь, до project() или после?
Andrey
до
Andrey
а компилятор через командную строку
Stanislav
Berkus
до
все что ставится до - выкидывается
Stanislav
> cmake -DCMAKE_C_COMPILER и -DCMAKE_CXX_COMPILER т
Berkus
Andrey
то есть для каждого проекта прописывать CXX_STANDARD?
Andrey
мне так надо
Berkus
Berkus
ну сделай макро
Andrey
у меня 10+ смейков
Andrey
10+ проектов, то есть фалйов cmakelists.txt
Berkus
у меня в одном проекте 15 файлов cmakelists.txt ЧЯДНТ?
Berkus
то что они лежат в подкаталогах не значит что это отдельные проекты
Andrey
10+ project(bla)
Andrey
но это не важно
Andrey
важно что при указании компялтора извне внутренние опции смейка игнорируются
Andrey
и это очень странно
Berkus
да не должны, он точно так же детектится
Berkus
ты уже попробовал их ВНУТРЬ project перенести?
Berkus
toolchain file попробовал использовать?
Berkus
мне реально лень это делать, тем более у тебя все файлы под рукой
Andrey
проовал внутрь, не работает
Andrey
хоят я через таргет проперти делал
Andrey
как в документации указано
Berkus
ты издеваешься
Andrey
это cmake издевается
Stanislav
смейк хорошо работает да
Andrey
покажи смейклист
Berkus
— Detecting CXX compile features
— Detecting CXX compile features - done
вот здесь определяется поддержка стандарта
Berkus
λ cat ../CMakeLists.txt
project(Foo)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(foo foo.cpp)
Stanislav
Stanislav
а потом -DCMAKE_TOOLCHAIN_FILE и поехали
Berkus
ну да, если какой-то компилер другой то лучше полноценный тулчейн файл делать
Berkus
тем более что у clang из brew может быть другой FIND_PATH и прочие переменные
Berkus
Andrey
смейк детектит фичи и все хорошо, но при вызове не передает флаг стандарта
Berkus
Andrey
3.10
Berkus
кланг дефолтный из брю?
Andrey
да
Andrey
5ю1
Berkus
через brew install llvm?
Andrey
да
Berkus
оке, ща
Andrey
почему я не могу вставить текст здесь?
Berkus
Berkus
фичи не находит
Andrey
блин, в смейке баг
Andrey
да знать бы как пофиксить
Andrey
багу ГОД!
Andrey
ровно
Stanislav
https://gitlab.kitware.com/cmake/cmake
Andrey
даже два
Stanislav
в ишьюзах и PR ничо не пишут?
Surreal
Andrey
воркэраунд предлагают но он вроде бы не о том
Berkus
Berkus
ща брэда будем пушить
Andrey
и он не работает (ожидаемо). Ладно, пойду читать переписки. два года блин, это печально.
Andrey
я не могу ничего копировать сюда
Andrey
даже текст из буфера запрещен
Stanislav
Andrey
The admin of this group has restricted you from sedning media here
Stanislav
Stanislav
@berkus кинь потом в нас )