Skip to content

Commit

Permalink
CI job generator: generate for each SYCL job a CPU and FPGA version
Browse files Browse the repository at this point in the history
  • Loading branch information
SimeonEhrig committed Feb 4, 2025
1 parent 9909e00 commit d6bb036
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 7 deletions.
5 changes: 5 additions & 0 deletions script/job_generator/alpaka_globals.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,8 @@

# enable mdspan support
MDSPAN: str = "mdspan"

# enabled device for Intel SYCL backend
SYCL_DEVICE: str = "sycl_device"
SYCL_CPU: str = "sycl_cpu"
SYCL_FPGA: str = "sycl_fpga"
19 changes: 13 additions & 6 deletions script/job_generator/generate_job_yaml.py
Original file line number Diff line number Diff line change
Expand Up @@ -389,12 +389,14 @@ def job_variables(job: Dict[str, Tuple[str, str]]) -> Dict[str, str]:
variables["ALPAKA_CI_CLANG_VER"] = "19"
variables["ALPAKA_CI_STDLIB"] = "libstdc++"
variables["ALPAKA_CI_ONEAPI_VERSION"] = job[DEVICE_COMPILER][VERSION]
variables["alpaka_SYCL_ONEAPI_CPU"] = "ON"
variables["alpaka_SYCL_ONEAPI_CPU_ISA"] = "avx2"
variables["alpaka_SYCL_ONEAPI_FPGA"] = "ON"
variables["alpaka_SYCL_ONEAPI_FPGA_MODE"] = "emulation"
variables["alpaka_SYCL_ONEAPI_FPGA_BOARD"] = ""
variables["alpaka_SYCL_ONEAPI_FPGA_BSP"] = ""
if job[SYCL_DEVICE][NAME] == SYCL_CPU:
variables["alpaka_SYCL_ONEAPI_CPU"] = "ON"
variables["alpaka_SYCL_ONEAPI_CPU_ISA"] = "avx2"
if job[SYCL_DEVICE][NAME] == SYCL_FPGA:
variables["alpaka_SYCL_ONEAPI_FPGA"] = "ON"
variables["alpaka_SYCL_ONEAPI_FPGA_MODE"] = "emulation"
variables["alpaka_SYCL_ONEAPI_FPGA_BOARD"] = ""
variables["alpaka_SYCL_ONEAPI_FPGA_BSP"] = ""

return variables

Expand Down Expand Up @@ -487,6 +489,11 @@ def create_job(job: Dict[str, Tuple[str, str]], container_version: float, gitlab
if job[DEVICE_COMPILER][NAME] == CLANG_CUDA:
job_name = job_name + "-cuda" + job[ALPAKA_ACC_GPU_CUDA_ENABLE][VERSION]

if job[SYCL_DEVICE][NAME] == SYCL_CPU:
job_name = job_name + "-cpu"
if job[SYCL_DEVICE][NAME] == SYCL_FPGA:
job_name = job_name + "-fpga"

if job[JOB_EXECUTION_TYPE][VERSION] == JOB_EXECUTION_COMPILE_ONLY:
job_name += "_compile_only"

Expand Down
4 changes: 3 additions & 1 deletion script/job_generator/job_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
JOB_UNKNOWN,
WAVE_GROUP_NAMES,
)
from job_modifier import add_job_parameters
from job_modifier import add_job_parameters, add_sycl_fpga_jobs
from verify import verify, verify_parameters
from util import print_warn

Expand Down Expand Up @@ -139,6 +139,8 @@ def get_args() -> argparse.Namespace:
)

add_job_parameters(job_matrix)

job_matrix = add_sycl_fpga_jobs(job_matrix)

if args.print_combinations or args.all:
print(f"number of combinations before reorder: {len(job_matrix)}")
Expand Down
28 changes: 28 additions & 0 deletions script/job_generator/job_modifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,3 +135,31 @@ def add_job_parameters(job_matrix: List[Dict[str, Tuple[str, str]]]):
for job in job_matrix:
if job[DEVICE_COMPILER][NAME] in [GCC, CLANG, ICPX]:
job[JOB_EXECUTION_TYPE] = (JOB_EXECUTION_TYPE, JOB_EXECUTION_RUNTIME)


def add_sycl_fpga_jobs(job_matrix: List[Dict[str, Tuple[str, str]]]) -> List[Dict[str, Tuple[str, str]]]:
"""Duplicate each job with enabled backend ALPAKA_ACC_SYCL_ENABLE and set
the SYCL_DEVICE to SYCL_CPU for the first and SYCL_FPGA for the second job.
All other jobs get a neutral SYCL_DEVICE entry.
Args:
job_matrix (List[Dict[str, Tuple[str, str]]]): Job matrix
Return:
(List[Dict[str, Tuple[str, str]]]): Job matrix with duplicated and
extended jobs
"""
extended_job_matrix = []

for job in job_matrix:
if ALPAKA_ACC_SYCL_ENABLE in job:
for enabled_device in (SYCL_CPU, SYCL_FPGA):
extended_job = job.copy()
extended_job[SYCL_DEVICE] = (enabled_device, ON)
extended_job_matrix.append(extended_job)
else:
job[SYCL_DEVICE] = ("", "")
extended_job_matrix.append(job)



return extended_job_matrix

0 comments on commit d6bb036

Please sign in to comment.