https://github.com/JuliaLang/julia
Raw File
Tip revision: b5e6c78c480b78c72ab0aeaffdda6c8b9edc91ac authored by KristofferC on 26 April 2021, 15:13:29 UTC
remove some unnecessary stat calls
Tip revision: b5e6c78
SuiteSparse_wrapper.c
/*
  SuiteSparse_wrapper.c: Changes made to this file in the Julia repo
  in deps/SuiteSparse_wrapper.c should be also made in
  Yggdrasil/S/SuiteSparse and vice versa.
*/

#include <string.h>
#include <cholmod.h>

extern size_t jl_cholmod_sizeof_long(void) {
    return sizeof(SuiteSparse_long);
}

extern int jl_cholmod_version(int *ver) {
    if (ver != (int*) NULL) {
        ver[0] = CHOLMOD_MAIN_VERSION;
        ver[1] = CHOLMOD_SUB_VERSION;
        ver[2] = CHOLMOD_SUBSUB_VERSION;
    }
    return CHOLMOD_VERSION;
}

// Keep this synchronized with https://github.com/JuliaLang/julia/blob/master/stdlib/SuiteSparse/src/cholmod.jl
extern void jl_cholmod_method_offsets(size_t *v) {
    size_t offset = offsetof(cholmod_common, method[0]);
    v[ 0] = offsetof(cholmod_common, method[0].lnz) - offset;
    v[ 1] = offsetof(cholmod_common, method[0].fl) - offset;
    v[ 2] = offsetof(cholmod_common, method[0].prune_dense) - offset;
    v[ 3] = offsetof(cholmod_common, method[0].prune_dense2) - offset;
    v[ 4] = offsetof(cholmod_common, method[0].nd_oksep) - offset;
    v[ 5] = offsetof(cholmod_common, method[0].other_1) - offset;
    v[ 6] = offsetof(cholmod_common, method[0].nd_small) - offset;
    v[ 7] = offsetof(cholmod_common, method[0].other_2) - offset;
    v[ 8] = offsetof(cholmod_common, method[0].aggressive) - offset;
    v[ 9] = offsetof(cholmod_common, method[0].order_for_lu) - offset;
    v[10] = offsetof(cholmod_common, method[0].nd_compress) - offset;
    v[11] = offsetof(cholmod_common, method[0].nd_camd) - offset;
    v[12] = offsetof(cholmod_common, method[0].nd_components) - offset;
    v[13] = offsetof(cholmod_common, method[0].ordering) - offset;
    v[14] = offsetof(cholmod_common, method[0].other_3) - offset;
}

// Keep this synchronized with https://github.com/JuliaLang/julia/blob/master/stdlib/SuiteSparse/src/cholmod.jl
extern void jl_cholmod_common_offsets(size_t *v) {
    v[  0] = offsetof(cholmod_common, dbound);
    v[  1] = offsetof(cholmod_common, grow0);
    v[  2] = offsetof(cholmod_common, grow1);
    v[  3] = offsetof(cholmod_common, grow2);
    v[  4] = offsetof(cholmod_common, maxrank);
    v[  5] = offsetof(cholmod_common, supernodal_switch);
    v[  6] = offsetof(cholmod_common, supernodal);
    v[  7] = offsetof(cholmod_common, final_asis);
    v[  8] = offsetof(cholmod_common, final_super);
    v[  9] = offsetof(cholmod_common, final_ll);
    v[ 10] = offsetof(cholmod_common, final_pack);
    v[ 11] = offsetof(cholmod_common, final_monotonic);
    v[ 12] = offsetof(cholmod_common, final_resymbol);
    v[ 13] = offsetof(cholmod_common, zrelax);
    v[ 14] = offsetof(cholmod_common, nrelax);
    v[ 15] = offsetof(cholmod_common, prefer_zomplex);
    v[ 16] = offsetof(cholmod_common, prefer_upper);
    v[ 17] = offsetof(cholmod_common, quick_return_if_not_posdef);
    v[ 18] = offsetof(cholmod_common, prefer_binary);
    v[ 19] = offsetof(cholmod_common, print);
    v[ 20] = offsetof(cholmod_common, precise);
    v[ 21] = offsetof(cholmod_common, try_catch);
    v[ 22] = offsetof(cholmod_common, error_handler);
    v[ 23] = offsetof(cholmod_common, nmethods);
    v[ 24] = offsetof(cholmod_common, current);
    v[ 25] = offsetof(cholmod_common, selected);
    v[ 26] = offsetof(cholmod_common, method);
    v[ 27] = offsetof(cholmod_common, postorder);
    v[ 28] = offsetof(cholmod_common, default_nesdis);
    v[ 29] = offsetof(cholmod_common, metis_memory);
    v[ 30] = offsetof(cholmod_common, metis_dswitch);
    v[ 31] = offsetof(cholmod_common, metis_nswitch);
    v[ 32] = offsetof(cholmod_common, nrow);
    v[ 33] = offsetof(cholmod_common, mark);
    v[ 34] = offsetof(cholmod_common, iworksize);
    v[ 35] = offsetof(cholmod_common, xworksize);
    v[ 36] = offsetof(cholmod_common, Flag);
    v[ 37] = offsetof(cholmod_common, Head);
    v[ 38] = offsetof(cholmod_common, Xwork);
    v[ 39] = offsetof(cholmod_common, Iwork);
    v[ 40] = offsetof(cholmod_common, itype);
    v[ 41] = offsetof(cholmod_common, dtype);
    v[ 42] = offsetof(cholmod_common, no_workspace_reallocate);
    v[ 43] = offsetof(cholmod_common, status);
    v[ 44] = offsetof(cholmod_common, fl);
    v[ 45] = offsetof(cholmod_common, lnz);
    v[ 46] = offsetof(cholmod_common, anz);
    v[ 47] = offsetof(cholmod_common, modfl);
    v[ 48] = offsetof(cholmod_common, malloc_count);
    v[ 49] = offsetof(cholmod_common, memory_usage);
    v[ 50] = offsetof(cholmod_common, memory_inuse);
    v[ 51] = offsetof(cholmod_common, nrealloc_col);
    v[ 52] = offsetof(cholmod_common, nrealloc_factor);
    v[ 53] = offsetof(cholmod_common, ndbounds_hit);
    v[ 54] = offsetof(cholmod_common, rowfacfl);
    v[ 55] = offsetof(cholmod_common, aatfl);
    v[ 56] = offsetof(cholmod_common, called_nd);
    v[ 57] = offsetof(cholmod_common, blas_ok);
    v[ 58] = offsetof(cholmod_common, SPQR_grain);
    v[ 59] = offsetof(cholmod_common, SPQR_small);
    v[ 60] = offsetof(cholmod_common, SPQR_shrink);
    v[ 61] = offsetof(cholmod_common, SPQR_nthreads);
    v[ 62] = offsetof(cholmod_common, SPQR_flopcount);
    v[ 63] = offsetof(cholmod_common, SPQR_analyze_time);
    v[ 64] = offsetof(cholmod_common, SPQR_factorize_time);
    v[ 65] = offsetof(cholmod_common, SPQR_solve_time);
    v[ 66] = offsetof(cholmod_common, SPQR_flopcount_bound);
    v[ 67] = offsetof(cholmod_common, SPQR_tol_used);
    v[ 68] = offsetof(cholmod_common, SPQR_norm_E_fro);
    v[ 69] = offsetof(cholmod_common, SPQR_istat);
    v[ 70] = offsetof(cholmod_common, useGPU);
    v[ 71] = offsetof(cholmod_common, maxGpuMemBytes);
    v[ 72] = offsetof(cholmod_common, maxGpuMemFraction);
    v[ 73] = offsetof(cholmod_common, gpuMemorySize);
    v[ 74] = offsetof(cholmod_common, gpuKernelTime);
    v[ 75] = offsetof(cholmod_common, gpuFlops);
    v[ 76] = offsetof(cholmod_common, gpuNumKernelLaunches);
    v[ 77] = offsetof(cholmod_common, cublasHandle);
    v[ 78] = offsetof(cholmod_common, gpuStream);
    v[ 79] = offsetof(cholmod_common, cublasEventPotrf);
    v[ 80] = offsetof(cholmod_common, updateCKernelsComplete);
    v[ 81] = offsetof(cholmod_common, updateCBuffersFree);
    v[ 82] = offsetof(cholmod_common, dev_mempool);
    v[ 83] = offsetof(cholmod_common, dev_mempool_size);
    v[ 84] = offsetof(cholmod_common, host_pinned_mempool);
    v[ 85] = offsetof(cholmod_common, host_pinned_mempool_size);
    v[ 86] = offsetof(cholmod_common, devBuffSize);
    v[ 87] = offsetof(cholmod_common, ibuffer);
    v[ 88] = offsetof(cholmod_common, syrkStart);
    v[ 89] = offsetof(cholmod_common, cholmod_cpu_gemm_time);
    v[ 90] = offsetof(cholmod_common, cholmod_cpu_syrk_time);
    v[ 91] = offsetof(cholmod_common, cholmod_cpu_trsm_time);
    v[ 92] = offsetof(cholmod_common, cholmod_cpu_potrf_time);
    v[ 93] = offsetof(cholmod_common, cholmod_gpu_gemm_time);
    v[ 94] = offsetof(cholmod_common, cholmod_gpu_syrk_time);
    v[ 95] = offsetof(cholmod_common, cholmod_gpu_trsm_time);
    v[ 96] = offsetof(cholmod_common, cholmod_gpu_potrf_time);
    v[ 97] = offsetof(cholmod_common, cholmod_assemble_time);
    v[ 98] = offsetof(cholmod_common, cholmod_assemble_time2);
    v[ 99] = offsetof(cholmod_common, cholmod_cpu_gemm_calls);
    v[100] = offsetof(cholmod_common, cholmod_cpu_syrk_calls);
    v[101] = offsetof(cholmod_common, cholmod_cpu_trsm_calls);
    v[102] = offsetof(cholmod_common, cholmod_cpu_potrf_calls);
    v[103] = offsetof(cholmod_common, cholmod_gpu_gemm_calls);
    v[104] = offsetof(cholmod_common, cholmod_gpu_syrk_calls);
    v[105] = offsetof(cholmod_common, cholmod_gpu_trsm_calls);
    v[106] = offsetof(cholmod_common, cholmod_gpu_potrf_calls);
}

extern size_t jl_cholmod_common_size() {
    return sizeof(cholmod_common);
}
back to top