1*9ae013d6SJames Wright // SPDX-FileCopyrightText: Copyright (c) 2017-2024, HONEE contributors. 2*9ae013d6SJames Wright // SPDX-License-Identifier: Apache-2.0 OR BSD-2-Clause 3*9ae013d6SJames Wright #pragma once 4*9ae013d6SJames Wright 5*9ae013d6SJames Wright #include <c_client.h> 6*9ae013d6SJames Wright #include <honee.h> 7*9ae013d6SJames Wright #include <petscsys.h> 8*9ae013d6SJames Wright #include <smartsim.h> 9*9ae013d6SJames Wright #include <sr_enums.h> 10*9ae013d6SJames Wright 11*9ae013d6SJames Wright #if defined(__clang_analyzer__) 12*9ae013d6SJames Wright void PetscCallSmartRedis(SRError); 13*9ae013d6SJames Wright #else 14*9ae013d6SJames Wright #define PetscCallSmartRedis(...) \ 15*9ae013d6SJames Wright do { \ 16*9ae013d6SJames Wright SRError ierr_smartredis_call_q_; \ 17*9ae013d6SJames Wright PetscBool disable_calls = PETSC_FALSE; \ 18*9ae013d6SJames Wright PetscStackUpdateLine; \ 19*9ae013d6SJames Wright PetscCall(PetscOptionsGetBool(NULL, NULL, "-smartsim_disable_calls", &disable_calls, NULL)); \ 20*9ae013d6SJames Wright if (disable_calls == PETSC_TRUE) break; \ 21*9ae013d6SJames Wright ierr_smartredis_call_q_ = __VA_ARGS__; \ 22*9ae013d6SJames Wright if (PetscUnlikely(ierr_smartredis_call_q_ != SRNoError)) \ 23*9ae013d6SJames Wright SETERRQ(PETSC_COMM_SELF, (PetscErrorCode)ierr_smartredis_call_q_, "SmartRedis Error (Code %d): %s", ierr_smartredis_call_q_, \ 24*9ae013d6SJames Wright SRGetLastError()); \ 25*9ae013d6SJames Wright } while (0) 26*9ae013d6SJames Wright #endif 27*9ae013d6SJames Wright 28*9ae013d6SJames Wright typedef struct { 29*9ae013d6SJames Wright void *client; 30*9ae013d6SJames Wright char rank_id_name[16]; 31*9ae013d6SJames Wright PetscInt collocated_database_num_ranks; 32*9ae013d6SJames Wright } *SmartSimData; 33*9ae013d6SJames Wright 34*9ae013d6SJames Wright PetscErrorCode HoneeGetSmartSimData(Honee honee, SmartSimData *smartsim); 35*9ae013d6SJames Wright 36*9ae013d6SJames Wright PetscErrorCode SmartRedisVerifyPutTensor(void *c_client, const char *name, const size_t name_length); 37