Summary
macOS is the one platform where RandBLAS cannot be built against a 64-bit-integer BLAS, and the reason is upstream rather than anything in this repository. The installer currently refuses --blas-int=ilp64 with Accelerate for that reason. This issue tracks lifting the restriction when BLAS++ gains support.
Why it is blocked
Apple has shipped an ILP64 BLAS/LAPACK interface since macOS 13.3, selected by compiling with -DACCELERATE_NEW_LAPACK -DACCELERATE_LAPACK_ILP64. macOS 13.3 actually ships three interfaces: the legacy LP64 (LAPACK 3.2.1, from 2009), a new LP64 (LAPACK 3.9.1), and a new ILP64.
BLAS++ implements only the legacy one. cmake/BLASFinder.cmake emits nothing but:
list( APPEND blas_libs_list "-framework Accelerate" )
and there is no reference to ACCELERATE_NEW_LAPACK or ACCELERATE_LAPACK_ILP64 anywhere in the tree. Adoption of the new interface is tracked upstream as icl-utk-edu/lapackpp#43, still open.
Why it matters here
RandBLAS's own API is int64_t regardless of the BLAS underneath, so most users are unaffected. It matters in two places:
- Sparse work with
nnz > 2^31, and the MKL sparse path, which requires MKL_INT to match RandBLAS's int64_t sparse indices.
- Consistency with RandLAPACK. Both projects can default to ILP64 on Linux and Windows. macOS is the only platform where they are forced apart, and only because of this gap.
Note this also means macOS gets the 2009-vintage LAPACK 3.2.1 semantics by default, which is a separate correctness consideration worth its own look.
Done when
Meanwhile
install/install.sh refuses the combination at argument parsing with a message citing the upstream issue, rather than letting it fail obscurely inside BLAS++.
Summary
macOS is the one platform where RandBLAS cannot be built against a 64-bit-integer BLAS, and the reason is upstream rather than anything in this repository. The installer currently refuses
--blas-int=ilp64with Accelerate for that reason. This issue tracks lifting the restriction when BLAS++ gains support.Why it is blocked
Apple has shipped an ILP64 BLAS/LAPACK interface since macOS 13.3, selected by compiling with
-DACCELERATE_NEW_LAPACK -DACCELERATE_LAPACK_ILP64. macOS 13.3 actually ships three interfaces: the legacy LP64 (LAPACK 3.2.1, from 2009), a new LP64 (LAPACK 3.9.1), and a new ILP64.BLAS++ implements only the legacy one.
cmake/BLASFinder.cmakeemits nothing but:and there is no reference to
ACCELERATE_NEW_LAPACKorACCELERATE_LAPACK_ILP64anywhere in the tree. Adoption of the new interface is tracked upstream as icl-utk-edu/lapackpp#43, still open.Why it matters here
RandBLAS's own API is
int64_tregardless of the BLAS underneath, so most users are unaffected. It matters in two places:nnz > 2^31, and the MKL sparse path, which requiresMKL_INTto match RandBLAS'sint64_tsparse indices.Note this also means macOS gets the 2009-vintage LAPACK 3.2.1 semantics by default, which is a separate correctness consideration worth its own look.
Done when
lapackpp#43or equivalent)install/install.shstops refusing--blas-int=ilp64for--blas=accelerateINSTALL.md's tested-configuration table records the width for macOSMeanwhile
install/install.shrefuses the combination at argument parsing with a message citing the upstream issue, rather than letting it fail obscurely inside BLAS++.