Skip to content
Merged
10 changes: 3 additions & 7 deletions .github/workflows/darshan-3.4.2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
fail-fast: false
matrix:
os: ["ubuntu-latest", "macos-latest"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
python-version: ["3.9", "3.10", "3.11"]

timeout-minutes: 20

Expand All @@ -41,7 +41,7 @@ jobs:
- name: Build Darshan
run: |
cd darshan
git checkout darshan-3.4.0
git checkout darshan-3.4.2
bash prepare.sh
cd darshan-util
./configure
Expand All @@ -57,7 +57,7 @@ jobs:
run: |
python -m ensurepip --upgrade
pip install --upgrade setuptools
pip install darshan==3.4.0.1
pip install darshan==3.4.2
pip install -r requirements.txt
pip install .

Expand Down Expand Up @@ -125,10 +125,6 @@ jobs:
run: |
dxt-explorer --debug --start 3.7 --end 3.9 --from 1 --to 100 sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Setup upterm session
if: ${{ failure() }}
uses: owenthereal/action-upterm@v1

- name: Upload Artifact
if: always()
uses: actions/upload-artifact@v4
Expand Down
6 changes: 1 addition & 5 deletions .github/workflows/darshan-3.4.4.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
fail-fast: false
matrix:
os: ["ubuntu-latest", "macos-latest"]
python-version: ["3.8", "3.9", "3.10", "3.11"]
python-version: ["3.9", "3.10", "3.11"]

timeout-minutes: 20

Expand Down Expand Up @@ -125,10 +125,6 @@ jobs:
run: |
dxt-explorer --debug --start 3.7 --end 3.9 --from 1 --to 100 sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Setup upterm session
if: ${{ failure() }}
uses: owenthereal/action-upterm@v1

- name: Upload Artifact
if: always()
uses: actions/upload-artifact@v4
Expand Down
6 changes: 1 addition & 5 deletions .github/workflows/darshan-3.4.6.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
fail-fast: false
matrix:
os: ["ubuntu-latest", "macos-latest"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
python-version: ["3.9", "3.10", "3.11", "3.12"]

timeout-minutes: 20

Expand Down Expand Up @@ -125,10 +125,6 @@ jobs:
run: |
dxt-explorer --debug --start 3.7 --end 3.9 --from 1 --to 100 sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Setup upterm session
if: ${{ failure() }}
uses: owenthereal/action-upterm@v1

- name: Upload Artifact
if: always()
uses: actions/upload-artifact@v4
Expand Down
6 changes: 1 addition & 5 deletions .github/workflows/darshan-3.4.7.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
fail-fast: false
matrix:
os: ["ubuntu-latest", "macos-latest"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
python-version: ["3.9", "3.10", "3.11", "3.12"]

timeout-minutes: 20

Expand Down Expand Up @@ -125,10 +125,6 @@ jobs:
run: |
dxt-explorer --debug --start 3.7 --end 3.9 --from 1 --to 100 sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Setup upterm session
if: ${{ failure() }}
uses: owenthereal/action-upterm@v1

- name: Upload Artifact
if: always()
uses: actions/upload-artifact@v4
Expand Down
136 changes: 136 additions & 0 deletions .github/workflows/darshan-3.5.0.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
name: DXT Explorer (Darshan 3.5.0)

on:
pull_request:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
explorer:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest", "macos-latest"]
python-version: ["3.11", "3.12", "3.13", "3.14"]

timeout-minutes: 20

steps:
- uses: actions/checkout@v4
with:
submodules: true

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Dependencies
run: |
git clone https://github.com/darshan-hpc/darshan.git

- name: Install macOS Dependencies
if: runner.os == 'macOS'
run: |
brew install libtool autoconf automake

- name: Build Darshan
run: |
cd darshan
git checkout 3.5.0
bash prepare.sh
cd darshan-util
./configure
make
sudo make install

- name: Configure Linux
if: runner.os == 'Linux'
run: |
sudo ldconfig

- name: Install DXT Explorer
run: |
python -m ensurepip --upgrade
pip install --upgrade setuptools
pip install darshan==3.5.0
pip install -r requirements.txt
pip install .

- name: Run DXT Explorer (help)
run: |
dxt-explorer -h

- name: Run DXT Explorer (list)
run: |
dxt-explorer --debug --list sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Run DXT Explorer (operation)
run: |
dxt-explorer --debug sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Run DXT Explorer (transfer)
run: |
dxt-explorer --debug --transfer sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Run DXT Explorer (spatiality)
run: |
dxt-explorer --debug --spatiality sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Run DXT Explorer (io phase)
run: |
dxt-explorer --debug --io_phase sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Run DXT Explorer (ost usage operation)
run: |
dxt-explorer --debug --ost_usage_operation sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Run DXT Explorer (ost usage transfer)
run: |
dxt-explorer --debug --ost_usage_transfer sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Run DXT Explorer (rank zero workload)
run: |
dxt-explorer --debug --rank_zero_workload sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Run DXT Explorer (unbalanced workload)
run: |
dxt-explorer --debug --unbalanced_workload sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Run DXT Explorer (stragglers)
run: |
dxt-explorer --debug --stragglers sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Run DXT Explorer (truncate runtime)
run: |
dxt-explorer --debug --start 3.7 sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Run DXT Explorer (truncate runtime)
run: |
dxt-explorer --debug --end 3.9 sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Run DXT Explorer (truncate rank)
run: |
dxt-explorer --debug --from 1 sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Run DXT Explorer (truncate rank)
run: |
dxt-explorer --debug --to 100 sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Run DXT Explorer (truncate both)
run: |
dxt-explorer --debug --start 3.7 --end 3.9 --from 1 --to 100 sample/jeanbez_8_benchmark_parallel_id45195555_8-6-50011-11681279140261054765_1628283217.darshan

- name: Upload Artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: tests-${{ matrix.os }}-${{ matrix.python-version }}
path: sample/**
retention-days: 1


2 changes: 1 addition & 1 deletion docs/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==2.0.0
sphinxcontrib-serializinghtml==2.0.0
sphinxemoji==0.3.1
urllib3==2.5.0
urllib3==2.6.3
27 changes: 14 additions & 13 deletions explorer/dxt.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,12 @@
import subprocess
import webbrowser
import pandas as pd
import pkg_resources
import pyranges as pr
import logging.handlers
import pyarrow.feather as feather
# import darshan.backend.cffi_backend as darshanll

from importlib import resources
from explorer import version as dxt_version
from packaging import version

Expand Down Expand Up @@ -298,7 +298,7 @@ def create_dataframe(
temp_result["end"] = temp_result["end"].round(decimals=4)

temp_result.index.name = "segment"
temp_result.reset_index(inplace=True)
temp_result = temp_result.reset_index()
temp_result = temp_result.reindex(columns=column_names)

df.append(temp_result)
Expand Down Expand Up @@ -327,7 +327,7 @@ def create_dataframe(
temp_result["end"] = temp_result["end"].round(decimals=4)

temp_result.index.name = "segment"
temp_result.reset_index(inplace=True)
temp_result = temp_result.reset_index()
temp_result = temp_result.reindex(columns=column_names)

df.append(temp_result)
Expand Down Expand Up @@ -422,8 +422,8 @@ def merge_overlapping_io_phases(self, overlapping_df, df, module):
]
)

overlapping_df_end = overlapping_df[["End"]].to_numpy()
overlapping_df_start = overlapping_df[["Start"]].to_numpy()
overlapping_df_end = overlapping_df["End"].to_numpy()
overlapping_df_start = overlapping_df["Start"].to_numpy()
interval_duration = 0

for i in range(len(overlapping_df_end) - 1):
Expand Down Expand Up @@ -513,7 +513,8 @@ def merge_overlapping_io_phases(self, overlapping_df, df, module):
threshold,
]

io_phases_df.dropna(inplace=True)
io_phases_df = io_phases_df.dropna()

return io_phases_df

def calculate_io_phases(
Expand Down Expand Up @@ -730,7 +731,7 @@ def generate_plot(self, file, report):
self.prefix, file_id, "snapshot", snapshot, "operation"
)
path = "plots/operation.py"
script = pkg_resources.resource_filename(__name__, path)
script = str(resources.files(__package__ or __name__).joinpath(path))

command = "python3 {} -f {}.{}.{}-{}.dxt -i {}.{}.{}-{}.io_phases {} {} -o {} -x {} -t {} -r {}".format(
script,
Expand Down Expand Up @@ -792,7 +793,7 @@ def generate_plot(self, file, report):
self.prefix, file_id, "operation"
)
path = "plots/operation.py"
script = pkg_resources.resource_filename(__name__, path)
script = str(resources.files(__package__ or __name__).joinpath(path))

command = "python3 {} -f {}.{}.dxt -i {}.{}.io_phases{} {} -o {} -x {}".format(
script,
Expand Down Expand Up @@ -864,7 +865,7 @@ def generate_transfer_plot(self, file, report):
output_file = "{}/{}-{}.html".format(self.prefix, file_id, "transfer")

path = "plots/transfer.py"
script = pkg_resources.resource_filename(__name__, path)
script = str(resources.files(__package__ or __name__).joinpath(path))

command = "python3 {} -f {}.{}.dxt {} -o {} -x {}".format(
script, file, file_id, limits, output_file, file_name
Expand Down Expand Up @@ -912,7 +913,7 @@ def generate_spatiality_plot(self, file, report):
output_file = "{}/{}-{}.html".format(self.prefix, file_id, "spatiality")

path = "plots/spatiality.py"
script = pkg_resources.resource_filename(__name__, path)
script = str(resources.files(__package__ or __name__).joinpath(path))

command = "python3 {} -f {}.{}.dxt -o {} -x {}".format(
script, file, file_id, output_file, file_name
Expand Down Expand Up @@ -959,7 +960,7 @@ def generate_phase_plot(self, file, report):
for file_id, file_name in file_ids.items():
output_file = "{}/{}-{}.html".format(self.prefix, file_id, "io_phase")
path = "plots/io_phase.py"
script = pkg_resources.resource_filename(__name__, path)
script = str(resources.files(__package__ or __name__).joinpath(path))

command = "python3 {} -f {}.{}.io_phases -o {} -x {}".format(
script, file, file_id, output_file, file_name
Expand Down Expand Up @@ -1007,7 +1008,7 @@ def generate_ost_usage_operation_plot(self, file, report):
self.prefix, file_id, "ost_usage_operation"
)
path = "plots/ost_usage_operation.py"
script = pkg_resources.resource_filename(__name__, path)
script = str(resources.files(__package__ or __name__).joinpath(path))

command = "python3 {} -f {}.{}.dxt -o {} -x {}".format(
script, file, file_id, output_file, file_name
Expand Down Expand Up @@ -1057,7 +1058,7 @@ def generate_ost_usage_transfer_plot(self, file, report):
self.prefix, file_id, "ost_usage_transfer"
)
path = "plots/ost_usage_transfer.py"
script = pkg_resources.resource_filename(__name__, path)
script = str(resources.files(__package__ or __name__).joinpath(path))

command = "python3 {} -f {}.{}.dxt -o {} -x {}".format(
script, file, file_id, output_file, file_name
Expand Down
Loading