Skip to content

Move -fPIC insertion to subconfigs' make_defs.mk.#738

Merged
fgvanzee merged 2 commits intomasterfrom
fpic_reloc
Mar 29, 2023
Merged

Move -fPIC insertion to subconfigs' make_defs.mk.#738
fgvanzee merged 2 commits intomasterfrom
fpic_reloc

Conversation

@fgvanzee
Copy link
Copy Markdown
Member

Details:

  • Previously, common.mk was appending -fPIC to the CPICFLAGS variables set within the various subconfigurations' make_defs.mk files. This seemed somewhat unintuitive, and so now the -fPIC flag is assigned to the various subconfigs' CPICFLAGS variables in the respective make_defs.mk files.
  • This also commit changes the logic in common.mk so that instead of appending, the variable is overwritten, but now only in the case of Windows (since apparently -fPIC needs to be omitted there). Thanks to Nick Knight for catching and reporting this weirdness.

@nick-knight

Details:
- Previously, common.mk was appending -fPIC to the CPICFLAGS variables
  set within the various subconfigurations' make_defs.mk files. This
  seemed somewhat unintuitive, and so now the -fPIC flag is assigned to
  the various subconfigs' CPICFLAGS variables in the respective
  make_defs.mk files.
- This also commit changes the logic in common.mk so that instead of
  appending, the variable is overwritten, but now *only* in the case
  of Windows (since apparently -fPIC needs to be omitted there). Thanks
  to Nick Knight for catching and reporting this weirdness.
Copy link
Copy Markdown

@nick-knight nick-knight left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks-- this makes much more sense to me than it did before. But, seeing the changes you've made to essentially everyone's make_defs, it seems like I'm the only one who was confused by this, and I feel a bit guilty.

@fgvanzee
Copy link
Copy Markdown
Member Author

@nick-knight No, you should feel the opposite of guilty. Nobody else caught it, going back at least five years!

@fgvanzee fgvanzee merged commit 9d778e0 into master Mar 29, 2023
@fgvanzee fgvanzee deleted the fpic_reloc branch March 29, 2023 22:36
leekillough added a commit to leekillough/blis that referenced this pull request Apr 12, 2023
fgvanzee pushed a commit that referenced this pull request Apr 12, 2023
Details:
- PR #738 -- which moved -fPIC flag insertion responsibilities from
  common.mk to the subconfigs' individual make_defs.mk files -- was 
  merged shortly before the introduction of new RISC-V subconfigs in 
  #693. This commit brings those RISC-V subconfigs up to date with the 
  new -fPIC conventions.
leekillough pushed a commit to leekillough/blis that referenced this pull request Jun 7, 2023
* Move -fPIC insertion to subconfigs' make_defs.mk.

Details:
- Previously, common.mk was appending -fPIC to the CPICFLAGS variables
  set within the various subconfigurations' make_defs.mk files. This
  seemed somewhat unintuitive, and so now the -fPIC flag is assigned to
  the various subconfigs' CPICFLAGS variables in the respective
  make_defs.mk files.
- This also commit changes the logic in common.mk so that instead of
  appending, the variable is overwritten, but now *only* in the case
  of Windows (since apparently -fPIC needs to be omitted there). Thanks
  to Nick Knight for catching and reporting this weirdness.
leekillough added a commit to leekillough/blis that referenced this pull request Jun 7, 2023
ct-clmsn pushed a commit to ct-clmsn/blis that referenced this pull request Jul 29, 2023
* Move -fPIC insertion to subconfigs' make_defs.mk.

Details:
- Previously, common.mk was appending -fPIC to the CPICFLAGS variables
  set within the various subconfigurations' make_defs.mk files. This
  seemed somewhat unintuitive, and so now the -fPIC flag is assigned to
  the various subconfigs' CPICFLAGS variables in the respective
  make_defs.mk files.
- This also commit changes the logic in common.mk so that instead of
  appending, the variable is overwritten, but now *only* in the case
  of Windows (since apparently -fPIC needs to be omitted there). Thanks
  to Nick Knight for catching and reporting this weirdness.
ct-clmsn pushed a commit to ct-clmsn/blis that referenced this pull request Jul 29, 2023
Details:
- PR flame#738 -- which moved -fPIC flag insertion responsibilities from
  common.mk to the subconfigs' individual make_defs.mk files -- was 
  merged shortly before the introduction of new RISC-V subconfigs in 
  flame#693. This commit brings those RISC-V subconfigs up to date with the 
  new -fPIC conventions.
fgvanzee added a commit that referenced this pull request May 22, 2024
- (cherry picked from 593d017)

CREDITS file update.

Details:
- Added attributions associated with commits:
  - 98d4678 9b1beec: @bartoldeman
  - 2b05948 059f151: @ct-clmsn
- Reordered attirubtion for @decandia50.
- (cherry picked from 259f684)

Optionally disable thread-local storage. (#735)

Details:
- Implemented a new configure option, --disable-tls, which allows the
  user to optionally disable the use of thread-local storage qualifiers
  on static variables in BLIS. This option will rarely be needed, but
  in some situations may allow BLIS to compile when TLS is unavailable.
  Thanks to Nick Knight for suggesting this option.
- Unlike the --disable-system option, --disable-tls does not forcibly
  disable threading. Instead, warnings of the possible consequences of
  using threading with TLS disabled are added to:
  - the output of './configure --help';
  - the output of 'configure' the --disable-tls option is parsed;
  - the informational header output by the testsuite.
  Thanks to Minh Quan Ho for suggesting these warnings.
- Modified frame/include/bli_lang_defs.h so that BLIS_THREAD_LOCAL is
  defined to nothing when BLIS_ENABLE_TLS is not defined.
- Defined bli_info_get_enable_tls(), which returns whether the cpp macro
  BLIS_ENABLE_TLS was defined.
- Edited --disable-system configure status output for clarity.
- Whitespace updates.
- (cherry picked from aea8e1d)

Add output.testsuite to .gitignore (#736)

Details:
- Added `output.testsuite` to .gitignore since it was previously not
  being matched by `output.testsuite.*`.
- (cherry picked from 3f1432a)

Added mm_algorithm pdf files (bp and pb).

Details:
- Added PDF versions of the PowerPoint files added in 17cd260.
- (cherry picked from 38fc523)

Added mm_algorithm pptx files (bp and pb).

Details:
- Added two PowerPoint files that contain slides depicting the classic
  Goto algorithm for matrix multiplication as well as its sister
  "panel-block" algorithm. These files reside in docs/diagrams.
- (cherry picked from 17cd260)

Move -fPIC insertion to subconfigs' make_defs.mk. (#738)

Details:
- Previously, common.mk was appending -fPIC to the CPICFLAGS variables
  set within the various subconfigurations' make_defs.mk files. This
  seemed somewhat unintuitive, and so now the -fPIC flag is assigned to
  the various subconfigs' CPICFLAGS variables in the respective
  make_defs.mk files.
- This also commit changes the logic in common.mk so that instead of
  appending, the variable is overwritten, but now *only* in the case
  of Windows (since apparently -fPIC needs to be omitted there). Thanks
  to Nick Knight for catching and reporting this weirdness.
- (cherry picked from 9d778e0)
fgvanzee added a commit that referenced this pull request May 22, 2024
Details:
- This commit fixes issue #746, in which the _access() function (called
  from within blastest/f2c/open.c) is undeclared when compiling on
  Windows with clang 16.
- (cherry picked from commit ef9d3e6)

Fix bug in detecting Fortran compiler vendor (#745)

`FC` was used instead of `found_fc`.
- (cherry picked from 6fd9aab)

Apply #738 to make_defs.mk of RISC-V subconfigs. (#740)

Details:
- PR #738 -- which moved -fPIC flag insertion responsibilities from
  common.mk to the subconfigs' individual make_defs.mk files -- was
  merged shortly before the introduction of new RISC-V subconfigs in
  #693. This commit brings those RISC-V subconfigs up to date with the
  new -fPIC conventions.
- (cherry picked from 8215b02)

Add RISC-V target (#693)

Details:
- There are four RISC-V base configurations: 'rv32i', 'rv32iv', 'rv64i',
  and 'rv64iv', namely the 32-bit and 64-bit implementations with and
  without the 'V' vector extension. Additional extensions such as 'M'
  (multiplication), 'A' (atomics), 'F' ('float' hardware support), 'D'
  ('double' hardware support), and 'C' (compressed-length instructions),
  are automatically used when available. If they are not available, then
  software equivalents (e.g., softfloat and -latomic) are used.
- './configure auto' can be invoked on a RISC-V build platform, and will
  automatically detect RISC-V CPU extensions through the RISC-V C API:
  https://github.com/riscv-non-isa/riscv-c-api-doc/blob/master/riscv-c-api.md
- The assembly kernels assume the presence of the vector extension
  RVV 1.0.
- It is possible to build 'rv[32,64]iv' for any value of VLEN.
  However, if VLEN < 128, the targets will fall back to the generic
  kernels and blocksizes.
- The vector microkernels are vector-length agnostic and work with
  every VLEN >=128, but are expected to work best with smaller vector
  lengths, i.e., VLEN <= 512.
- The assembly kernels cover column major storage (rs_c == 1).
- The blocksizes aim at being a good generic choice for out-of-order
  cores. They are not tuned to a specific RISC-V HPC core.
- The vector kernels have been tested using vlen={128,256,512}.
- The single- and double-precision assembly code routines for 'sgemm'
  and 'dgemm', or for 'cgemm' and 'zgemm', are combined in their RISC-V
  vector assembly source code, and are differentiated only with macros.
- The XLEN=32 and XLEN=64 versions of the RISC-V assembly code are
  identical, except that callee-saved registers are saved and restored
  differently. There are RISC-V assembly code #include files for
  handling the saving and restoring of callee-saved registers, and they
  are future-proof if ever XLEN=128.
- Multiplications, such as computing array strides and offsets, are
  performed in C, and later passed to the RISC-V assembly kernels. This
  is so that the compiler can determine whether the 'M' (multiply)
  extension is available and use multiplication instructions, or call
  library helper functions instead.
- A new macro called bli_static_assert() has been added to perform
  static assertions at compile-time, regardless of the C/C++ dialect of
  the compiler. The original motivation of this was to ensure that
  calling RISC-V assembly kernels would not silently truncate arguments
  of type 'dim_t' or 'inc_t' (so-called "narrowing conversions").
- RISC-V CI tests have been added to Travis CI, using the
  riscv-gnu-toolchain cross-compiler, and qemu simulator.
- Thanks to Lee Killough for collaborating on this commit.
- (cherry picked from 6b38c5a)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants