Skip to content

Commit

Permalink
solved memory allocation issues in init_masters + added support for i…
Browse files Browse the repository at this point in the history
…ntel and amd drivers beside acpi-cpufreq
  • Loading branch information
cpt-harlock committed Feb 20, 2025
1 parent 254c696 commit f007dc5
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 23 deletions.
4 changes: 3 additions & 1 deletion src/arch.c
Original file line number Diff line number Diff line change
Expand Up @@ -799,7 +799,9 @@ HIDDEN int read_nom_freq()
"/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver",
driver_name);
if (!strncmp(driver_name, "acpi-cpufreq",
strlen("acpi-cpufreq"))) {
strlen("acpi-cpufreq")) || !strncmp(driver_name,
"intel_pstate",
strlen("intel_pstate")) || !strncmp(driver_name, "amd-pstate-epp", strlen("amd-pstate-epp"))) {
char line[STRING_SIZE];

read_str_from_file(
Expand Down
39 changes: 18 additions & 21 deletions src/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -216,10 +216,10 @@ static void read_env()
PMPI_Barrier(MPI_COMM_WORLD);
}

static void init_masters()
static void init_masters_shmem()
{
int i;
int world_rank, local_rank, world_size;
int world_rank, local_rank, world_size, local_size;
char hostname[STRING_SIZE];
char postfix[STRING_SIZE], shmem_name[STRING_SIZE];

Expand Down Expand Up @@ -250,26 +250,21 @@ static void init_masters()
&cntd->comm_local);
PMPI_Comm_rank(cntd->comm_local, &local_rank);

PMPI_Comm_size(cntd->comm_local, &cntd->rank->local_size);
cntd->rank->world_size = world_size;

PMPI_Barrier(MPI_COMM_WORLD);
PMPI_Comm_size(cntd->comm_local, &local_size);

cntd->rank->world_rank = world_rank;
cntd->rank->local_rank = local_rank;
}

static void init_shmem()
{
char postfix[STRING_SIZE], shmem_name[STRING_SIZE];

// Init shared memory
get_rand_postfix(postfix, STRING_SIZE);
snprintf(shmem_name, sizeof(shmem_name), SHM_FILE,
cntd->rank->local_rank, postfix);
cntd->local_ranks[cntd->rank->local_rank] =
local_rank, postfix);
cntd->local_ranks[local_rank] =
create_shmem_rank(shmem_name, 1);
cntd->rank = cntd->local_ranks[cntd->rank->local_rank];
cntd->rank = cntd->local_ranks[local_rank];

cntd->rank->world_size = world_size;
cntd->rank->local_size = local_size;

PMPI_Barrier(MPI_COMM_WORLD);

// Get shared memory for other local tasks
for (int i = 0; i < cntd->rank->local_size; i++) {
Expand All @@ -281,7 +276,12 @@ static void init_shmem()
cntd->local_ranks[i] = get_shmem_cpu(shmem_name, 1);
}
}

cntd->rank->world_rank = world_rank;
cntd->rank->local_rank = local_rank;
}


static void finalize_shmem()
{
char postfix[STRING_SIZE], shmem_name[STRING_SIZE];
Expand All @@ -296,11 +296,8 @@ HIDDEN void start_cntd()
{
cntd = (CNTD_t *)calloc(1, sizeof(CNTD_t));

// Init local masters
init_masters();

// Init shared memory
init_shmem();
// Init local masters and shared memory
init_masters_shmem();

// Read environment variables
read_env();
Expand Down
2 changes: 1 addition & 1 deletion unit-test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ target_include_directories(hello PRIVATE ${MPI_INCLUDE_PATH})
# add test to run the executable with mpirun
#add_test(NAME Unit-test COMMAND "srun" "${CMAKE_BINARY_DIR}/unit-test/hello")
add_test(NAME Unit-test COMMAND "mpirun" "${CMAKE_BINARY_DIR}/unit-test/hello")
set_property(TEST Unit-test PROPERTY ENVIRONMENT LD_PRELOAD=/leonardo/home/userinternal/amonteru/countdown/build/src/libcntd.so)
set_property(TEST Unit-test PROPERTY ENVIRONMENT LD_PRELOAD=${CMAKE_BINARY_DIR}/src/libcntd.so)

0 comments on commit f007dc5

Please sign in to comment.