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); } } }
Ioann_
То есть, код такой - самый что ни на есть примитивный. Размеры матриц - степени двойки, т.е выходы за границы нету
Anonymous
А какой ты компилятор задаешь?
Он должен адекватно детектить и добавлять флаг для GCC/Clang.
Ioann_
Видимо, скорее всего да, кеш. И префетч, видимо надо делать руками. Просто проблема в том, что там где он делается, а это уже asm код, тоже самое по прыгучести.
Berkus
clang из brew
а где ты эти переменные ставишь, до project() или после?
Andrey
до
Andrey
а компилятор через командную строку
Stanislav
Berkus
до
все что ставится до - выкидывается
Stanislav
> cmake -DCMAKE_C_COMPILER и -DCMAKE_CXX_COMPILER т
Andrey
то есть для каждого проекта прописывать CXX_STANDARD?
Anonymous
то есть для каждого проекта прописывать CXX_STANDARD?
Было бы неплохо не создавать кучу проектов, если логическии это компоненты одного.
Andrey
мне так надо
Berkus
то есть для каждого проекта прописывать CXX_STANDARD?
у тебя в одном цмейке вдруг куча проектов?
Berkus
ну сделай макро
Andrey
у меня 10+ смейков
Berkus
у меня 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 издевается
Berkus
цмейк работает как надо λ cmake -G Ninja -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc .. — The C compiler identification is AppleClang 9.0.0.9000039 — The CXX compiler identification is AppleClang 9.0.0.9000039 — Check for working C compiler: /usr/bin/gcc — Check for working C compiler: /usr/bin/gcc — works — Detecting C compiler ABI info — Detecting C compiler ABI info - done — Detecting C compile features — Detecting C compile features - done — Check for working CXX compiler: /usr/bin/g++ — Check for working CXX compiler: /usr/bin/g++ — works — Detecting CXX compiler ABI info — Detecting CXX compiler ABI info - done — Detecting CXX compile features — Detecting CXX compile features - done — Configuring done — Generating done — Build files have been written to: /Users/berkus/Hobby/test-land/testlib/_build_ berkus@aramaki ~/H/t/t/_build_ (master=) λ ninja -v [1/2] /usr/bin/g++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -std=gnu++1z -MD -MT CMakeFiles/foo.dir/foo.cpp.o -MF CMakeFiles/foo.dir/foo.cpp.o.d -o CMakeFiles/foo.dir/foo.cpp.o -c ../foo.cpp
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
toolchain file попробовал использовать?
плюсую что лучше это юзать
Stanislav
а потом -DCMAKE_TOOLCHAIN_FILE и поехали
Berkus
ну да, если какой-то компилер другой то лучше полноценный тулчейн файл делать
Berkus
тем более что у clang из brew может быть другой FIND_PATH и прочие переменные
Andrey
смейк детектит фичи и все хорошо, но при вызове не передает флаг стандарта
Andrey
3.10
Berkus
кланг дефолтный из брю?
Andrey
да
Andrey
5ю1
Berkus
через brew install llvm?
Andrey
да
Berkus
оке, ща
Andrey
почему я не могу вставить текст здесь?
Berkus
да
ага, не передает
Berkus
фичи не находит
Andrey
блин, в смейке баг
Stanislav
блин, в смейке баг
пулреквест херач если это баг)
Andrey
да знать бы как пофиксить
Andrey
багу ГОД!
Andrey
ровно
Stanislav
https://gitlab.kitware.com/cmake/cmake
Andrey
даже два
Stanislav
в ишьюзах и PR ничо не пишут?
Andrey
воркэраунд предлагают но он вроде бы не о том
Berkus
ща брэда будем пушить
Andrey
и он не работает (ожидаемо). Ладно, пойду читать переписки. два года блин, это печально.
Andrey
я не могу ничего копировать сюда
Andrey
даже текст из буфера запрещен
Stanislav
я не могу ничего копировать сюда
ну это не проблема чата
Andrey
The admin of this group has restricted you from sedning media here
Stanislav
Stanislav
@berkus кинь потом в нас )