| ceed-vector.c (ff90b007c3dd968e763cc6a82bde1e90c117acbc) | ceed-vector.c (b1a610ef203ae2e2bf8a9bddcc192eaf0a166984) |
|---|---|
| 1// Copyright (c) 2017-2025, 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#include <ceed-impl.h> --- 353 unchanged lines hidden (view full) --- 362 @param[in] step Stride between indices to set 363 @param[in] value Value to be used 364 365 @return An error code: 0 - success, otherwise - failure 366 367 @ref User 368**/ 369int CeedVectorSetValueStrided(CeedVector vec, CeedSize start, CeedSize stop, CeedSize step, CeedScalar value) { | 1// Copyright (c) 2017-2025, 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#include <ceed-impl.h> --- 353 unchanged lines hidden (view full) --- 362 @param[in] step Stride between indices to set 363 @param[in] value Value to be used 364 365 @return An error code: 0 - success, otherwise - failure 366 367 @ref User 368**/ 369int CeedVectorSetValueStrided(CeedVector vec, CeedSize start, CeedSize stop, CeedSize step, CeedScalar value) { |
| 370 CeedSize length; 371 |
|
| 370 CeedCheck(vec->state % 2 == 0, CeedVectorReturnCeed(vec), CEED_ERROR_ACCESS, 371 "Cannot grant CeedVector array access, the access lock is already in use"); 372 CeedCheck(vec->num_readers == 0, CeedVectorReturnCeed(vec), CEED_ERROR_ACCESS, "Cannot grant CeedVector array access, a process has read access"); | 372 CeedCheck(vec->state % 2 == 0, CeedVectorReturnCeed(vec), CEED_ERROR_ACCESS, 373 "Cannot grant CeedVector array access, the access lock is already in use"); 374 CeedCheck(vec->num_readers == 0, CeedVectorReturnCeed(vec), CEED_ERROR_ACCESS, "Cannot grant CeedVector array access, a process has read access"); |
| 375 CeedCall(CeedVectorGetLength(vec, &length)); 376 CeedCheck(stop >= -1 && stop <= length, CeedVectorReturnCeed(vec), CEED_ERROR_ACCESS, "Invalid value for stop, must be in the range [-1, length]"); |
|
| 373 374 if (vec->SetValueStrided) { 375 CeedCall(vec->SetValueStrided(vec, start, stop, step, value)); 376 vec->state += 2; 377 } else { | 377 378 if (vec->SetValueStrided) { 379 CeedCall(vec->SetValueStrided(vec, start, stop, step, value)); 380 vec->state += 2; 381 } else { |
| 378 CeedSize length; | |
| 379 CeedScalar *array; 380 | 382 CeedScalar *array; 383 |
| 381 CeedCall(CeedVectorGetLength(vec, &length)); | |
| 382 if (length <= 0) return CEED_ERROR_SUCCESS; 383 if (stop == -1) stop = length; 384 CeedCall(CeedVectorGetArray(vec, CEED_MEM_HOST, &array)); 385 for (CeedSize i = start; i < stop; i += step) array[i] = value; 386 CeedCall(CeedVectorRestoreArray(vec, &array)); 387 } 388 return CEED_ERROR_SUCCESS; 389} --- 723 unchanged lines hidden --- | 384 if (length <= 0) return CEED_ERROR_SUCCESS; 385 if (stop == -1) stop = length; 386 CeedCall(CeedVectorGetArray(vec, CEED_MEM_HOST, &array)); 387 for (CeedSize i = start; i < stop; i += step) array[i] = value; 388 CeedCall(CeedVectorRestoreArray(vec, &array)); 389 } 390 return CEED_ERROR_SUCCESS; 391} --- 723 unchanged lines hidden --- |