From 9859be58bdac978e8c7bcbf0b032149f5962ddcd Mon Sep 17 00:00:00 2001 From: Carsten Bauer Date: Wed, 12 Oct 2022 12:05:32 +0200 Subject: [PATCH] use preferences to set liblikwid path --- Project.toml | 2 ++ docs/make.jl | 1 + docs/src/references/preferences.md | 16 ++++++++++++++++ src/LIKWID.jl | 18 ++++++++++-------- src/preferences.jl | 23 +++++++++++++++++++++++ 5 files changed, 52 insertions(+), 8 deletions(-) create mode 100644 docs/src/references/preferences.md create mode 100644 src/preferences.jl diff --git a/Project.toml b/Project.toml index aa4ee3e0..ab162e91 100644 --- a/Project.toml +++ b/Project.toml @@ -7,12 +7,14 @@ version = "0.4.2" CEnum = "fa961155-64e5-5f13-b03f-caf6b980ea82" Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" OrderedCollections = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +Preferences = "21216c6a-2e73-6563-6e65-726566657250" PrettyTables = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" [compat] CEnum = "0.4" OrderedCollections = "1.4" +Preferences = "1" PrettyTables = "1.3, 2" Unitful = "1.9" julia = "1" diff --git a/docs/make.jl b/docs/make.jl index 3cdef0a1..85f5467f 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -60,6 +60,7 @@ makedocs( "Affinity" => "references/affinity.md", "HPM / Access" => "references/access.md", "Miscellaneous" => "references/misc.md", + "Preferences" => "references/preferences.md", ], ], # assets = ["assets/custom.css", "assets/custom.js"] diff --git a/docs/src/references/preferences.md b/docs/src/references/preferences.md new file mode 100644 index 00000000..897003a1 --- /dev/null +++ b/docs/src/references/preferences.md @@ -0,0 +1,16 @@ +# Preferences + +By default, LIKWID.jl will assume that LIKWID is available as `liblikwid` on the system (i.e. present in `LD_LOAD_PATH`). You can overwrite this default and (permanently) specify the path to `liblikwid` as a [Julia preference](https://github.com/JuliaPackaging/Preferences.jl) by using the tools below (`LIKWID.Prefs.set_likwid` in particular). + +## Index + +```@index +Pages = ["preferences.md"] +Order = [:function, :type] +``` + +### Functions + +```@autodocs +Modules = [LIKWID.Prefs] +``` \ No newline at end of file diff --git a/src/LIKWID.jl b/src/LIKWID.jl index 4d5ed07c..d53c34bf 100644 --- a/src/LIKWID.jl +++ b/src/LIKWID.jl @@ -4,11 +4,11 @@ using Libdl using Unitful using OrderedCollections using PrettyTables - -export OrderedDict +using Preferences # liblikwid -const liblikwid = "liblikwid" +include("preferences.jl") +const liblikwid = @load_preference("liblikwid", "liblikwid") include("LibLikwid.jl") # Julia types @@ -55,24 +55,19 @@ include("prettyprinting.jl") include("perfmon.jl") import .PerfMon import .PerfMon: perfmon, @perfmon -export PerfMon, perfmon, @perfmon include("misc.jl") include("markerfile.jl") import .MarkerFile -export MarkerFile include("marker.jl") import .Marker import .Marker: marker, @marker, @parallelmarker, perfmon_marker, @perfmon_marker -export Marker, marker, @marker, @parallelmarker, perfmon_marker, @perfmon_marker include("topology_gpu.jl") include("nvmon.jl") import .NvMon import .NvMon: nvmon, @nvmon -export NvMon, nvmon, @nvmon include("marker_gpu.jl") import .GPUMarker import .GPUMarker: gpumarker, @gpumarker -export GPUMarker, gpumarker, @gpumarker include("frequency.jl") function __init__() @@ -121,4 +116,11 @@ function finalize(; gpu=true) return nothing end +export OrderedDict +export PerfMon, perfmon, @perfmon +export MarkerFile +export Marker, marker, @marker, @parallelmarker, perfmon_marker, @perfmon_marker +export NvMon, nvmon, @nvmon +export GPUMarker, gpumarker, @gpumarker + end diff --git a/src/preferences.jl b/src/preferences.jl new file mode 100644 index 00000000..50c78a7f --- /dev/null +++ b/src/preferences.jl @@ -0,0 +1,23 @@ +module Prefs + +using Preferences + +"Clear all LIKWID.jl related preferences" +function clear() + @delete_preferences!("liblikwid") + @info("Done. Please restart Julia. Package might automatically recompile afterwards.") +end + +"Set the path of the LIKWID library (`liblikwid`)." +function set_liblikwid(liblikwid::AbstractString) + @set_preferences!("liblikwid" => liblikwid) + @info("Done. Please restart Julia. Package might automatically recompile afterwards.") + return nothing +end + +"Query the value of the `liblikwid` preference. Returns `nothing` if not set." +function get_liblikwid() + @load_preference("liblikwid") +end + +end