| ceed.c (5ba4e83e9b1c3504427ca38afe780fb47d34b172) | ceed.c (d04bbc78fb1f4c986969af2fa56bdcf94e57fde9) |
|---|---|
| 1// Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors. 2// All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 3// 4// SPDX-License-Identifier: BSD-2-Clause 5// 6// This file is part of CEED: http://github.com/ceed 7 8#define _POSIX_C_SOURCE 200112 --- 491 unchanged lines hidden (view full) --- 500 @return An error code: 0 - success, otherwise - failure 501 502 @ref Backend 503**/ 504 505int CeedGetOperatorFallbackCeed(Ceed ceed, Ceed *fallback_ceed) { 506 int ierr; 507 | 1// Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors. 2// All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 3// 4// SPDX-License-Identifier: BSD-2-Clause 5// 6// This file is part of CEED: http://github.com/ceed 7 8#define _POSIX_C_SOURCE 200112 --- 491 unchanged lines hidden (view full) --- 500 @return An error code: 0 - success, otherwise - failure 501 502 @ref Backend 503**/ 504 505int CeedGetOperatorFallbackCeed(Ceed ceed, Ceed *fallback_ceed) { 506 int ierr; 507 |
| 508 if (ceed->has_valid_op_fallback_resource) { 509 CeedDebug256(ceed, 1, "---------- CeedOperator Fallback ----------\n"); 510 CeedDebug256(ceed, 255, "Getting fallback from %s to %s\n", ceed->resource, 511 ceed->op_fallback_resource); 512 } 513 |
|
| 508 // Create fallback Ceed if uninitalized | 514 // Create fallback Ceed if uninitalized |
| 509 if (!ceed->op_fallback_ceed) { 510 // Check resource 511 const char *resource, *fallback_resource; 512 ierr = CeedGetResource(ceed, &resource); CeedChk(ierr); 513 ierr = CeedGetOperatorFallbackResource(ceed, &fallback_resource); CeedChk(ierr); 514 if (!strcmp(resource, fallback_resource)) 515 // LCOV_EXCL_START 516 return CeedError(ceed, CEED_ERROR_UNSUPPORTED, 517 "Backend %s cannot create an operator" 518 "fallback to resource %s", resource, fallback_resource); 519 // LCOV_EXCL_STOP | 515 if (!ceed->op_fallback_ceed && ceed->has_valid_op_fallback_resource) { 516 CeedDebug256(ceed, 255, "Creating fallback Ceed"); |
| 520 | 517 |
| 521 // Create fallback | |
| 522 Ceed fallback_ceed; | 518 Ceed fallback_ceed; |
| 519 const char *fallback_resource; 520 521 ierr = CeedGetOperatorFallbackResource(ceed, &fallback_resource); CeedChk(ierr); |
|
| 523 ierr = CeedInit(fallback_resource, &fallback_ceed); CeedChk(ierr); 524 fallback_ceed->op_fallback_parent = ceed; 525 fallback_ceed->Error = ceed->Error; 526 ceed->op_fallback_ceed = fallback_ceed; 527 } 528 *fallback_ceed = ceed->op_fallback_ceed; 529 530 return CEED_ERROR_SUCCESS; --- 16 unchanged lines hidden (view full) --- 547 int ierr; 548 549 // Free old 550 ierr = CeedFree(&ceed->op_fallback_resource); CeedChk(ierr); 551 552 // Set new 553 ierr = CeedStringAllocCopy(resource, (char **)&ceed->op_fallback_resource); 554 CeedChk(ierr); | 522 ierr = CeedInit(fallback_resource, &fallback_ceed); CeedChk(ierr); 523 fallback_ceed->op_fallback_parent = ceed; 524 fallback_ceed->Error = ceed->Error; 525 ceed->op_fallback_ceed = fallback_ceed; 526 } 527 *fallback_ceed = ceed->op_fallback_ceed; 528 529 return CEED_ERROR_SUCCESS; --- 16 unchanged lines hidden (view full) --- 546 int ierr; 547 548 // Free old 549 ierr = CeedFree(&ceed->op_fallback_resource); CeedChk(ierr); 550 551 // Set new 552 ierr = CeedStringAllocCopy(resource, (char **)&ceed->op_fallback_resource); 553 CeedChk(ierr); |
| 554 555 // Check validity 556 ceed->has_valid_op_fallback_resource = strlen(ceed->op_fallback_resource) > 0 && 557 strcmp(ceed->op_fallback_resource, ceed->resource); 558 |
|
| 555 return CEED_ERROR_SUCCESS; 556} 557 558/** 559 @brief Get the parent Ceed context associated with a fallback Ceed context 560 for a CeedOperator 561 562 @param ceed Ceed context --- 377 unchanged lines hidden (view full) --- 940 const char fallbackresource[] = ""; 941 ierr = CeedSetOperatorFallbackResource(*ceed, fallbackresource); 942 CeedChk(ierr); 943 944 // Record env variables CEED_DEBUG or DBG 945 (*ceed)->is_debug = !!getenv("CEED_DEBUG") || !!getenv("DEBUG") || 946 !!getenv("DBG"); 947 | 559 return CEED_ERROR_SUCCESS; 560} 561 562/** 563 @brief Get the parent Ceed context associated with a fallback Ceed context 564 for a CeedOperator 565 566 @param ceed Ceed context --- 377 unchanged lines hidden (view full) --- 944 const char fallbackresource[] = ""; 945 ierr = CeedSetOperatorFallbackResource(*ceed, fallbackresource); 946 CeedChk(ierr); 947 948 // Record env variables CEED_DEBUG or DBG 949 (*ceed)->is_debug = !!getenv("CEED_DEBUG") || !!getenv("DEBUG") || 950 !!getenv("DBG"); 951 |
| 948 // Backend specific setup 949 ierr = backends[match_index].init(&resource[match_help], *ceed); CeedChk(ierr); 950 | |
| 951 // Copy resource prefix, if backend setup successful 952 ierr = CeedStringAllocCopy(backends[match_index].prefix, 953 (char **)&(*ceed)->resource); 954 CeedChk(ierr); 955 956 // Set default JiT source root 957 // Note: there will always be the default root for every Ceed 958 // but all additional paths are added to the top-most parent 959 ierr = CeedAddJitSourceRoot(*ceed, (char *)CeedJitSourceRootDefault); 960 CeedChk(ierr); 961 | 952 // Copy resource prefix, if backend setup successful 953 ierr = CeedStringAllocCopy(backends[match_index].prefix, 954 (char **)&(*ceed)->resource); 955 CeedChk(ierr); 956 957 // Set default JiT source root 958 // Note: there will always be the default root for every Ceed 959 // but all additional paths are added to the top-most parent 960 ierr = CeedAddJitSourceRoot(*ceed, (char *)CeedJitSourceRootDefault); 961 CeedChk(ierr); 962 |
| 963 // Backend specific setup 964 ierr = backends[match_index].init(&resource[match_help], *ceed); CeedChk(ierr); 965 |
|
| 962 return CEED_ERROR_SUCCESS; 963} 964 965/** 966 @brief Copy the pointer to a Ceed context. Both pointers should 967 be destroyed with `CeedDestroy()`; 968 Note: If `*ceed_copy` is non-NULL, then it is assumed that 969 `*ceed_copy` is a pointer to a Ceed context. This Ceed --- 383 unchanged lines hidden --- | 966 return CEED_ERROR_SUCCESS; 967} 968 969/** 970 @brief Copy the pointer to a Ceed context. Both pointers should 971 be destroyed with `CeedDestroy()`; 972 Note: If `*ceed_copy` is non-NULL, then it is assumed that 973 `*ceed_copy` is a pointer to a Ceed context. This Ceed --- 383 unchanged lines hidden --- |